openapi: 3.0.1
servers:
    - url: "https://staging.crossmint.com/api"
      description: "Staging environment (testnets)"
    - url: "https://www.crossmint.com/api"
      description: "Production environment (mainnets)"
security:
    - apiKey: []
info:
    description: >-
        N/A
    version: 1.0.0
    title: Wallets
    contact:
        name: Crossmint Wallets APIs
        url: https://www.crossmint.com
        email: support@crossmint.com
tags:
    - name: metadata
      description: Find out about the data sets
    - name: search
      description: Search a data set
paths:
    ################################################
    ### WALLETS
    ################################################

    /v1-alpha1/wallets:
        post:
            responses:
                200:
                    description: Wallet already exists
                    content:
                        application/json:
                            schema:
                                type: object
                                properties:
                                    chain:
                                        type: string
                                        example: polygon
                                        description: The blockchain the wallet is on
                                    publicKey:
                                        type: string
                                        example: "0xB364346FDb52e42CcC186b3BA3730cb4A87bF5B0"
                                        description: "The address of the created wallet"
                201:
                    description: Wallet created
                    content:
                        application/json:
                            schema:
                                type: object
                                properties:
                                    chain:
                                        type: string
                                        example: polygon
                                    publicKey:
                                        type: string
                                        example: "0xB364346FDb52e42CcC186b3BA3730cb4A87bF5B0"
                400:
                    description: Bad request. Most likely the parameters `userId` and `chain` were not included, or were not provided in the proper format
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/Error"
                401:
                    description: |
                        Unauthorized. The API key may not exist, or does not have the proper scopes to perform this action (`wallets.create`)
            tags:
                - Wallet
            summary: Create Wallet
            description: |
                Create a new Crossmint custodial wallet for a user

                **API scope required**: `wallets.create`
            operationId: create-wallet
            x-openai-isConsequential: true
            requestBody:
                content:
                    application/json:
                        schema:
                            oneOf:
                                - title: email
                                  type: object
                                  properties:
                                      email:
                                          type: string
                                          description: Provide an email for this wallet to be associated to
                                      chain:
                                          $ref: "#/components/schemas/Chains"
                                  required:
                                      - email
                                      - chain
                                - title: userId
                                  type: object
                                  properties:
                                      userId:
                                          type: string
                                          description: Provide an arbitrary ID for this wallet to be associated to
                                      chain:
                                          $ref: "#/components/schemas/Chains"
                                  required:
                                      - userId
                                      - chain
                                # - title: phoneNumber
                                #   type: object
                                #   properties:
                                #     phoneNumber:
                                #       type: string
                                #       description: Provide a phone number for this wallet to be associated with, including country code
                                #       example: "+16465551234"
                                #     chain:
                                #       $ref: "#/components/schemas/Chains"
                                #   required:
                                #     - phoneNumber
                                #     - chain
        get: # Get Wallets for User
            responses:
                200:
                    description: Success
                    content:
                        application/json:
                            schema:
                                type: array
                                example:
                                    - chain: ethereum
                                      publicKey: "0xB364346FDb52e42CcC186b3BA3730cb4A87bF5B0"
                                    - chain: polygon
                                      publicKey: "0x30E3E8feEc68d5Cb5424113E9d161611c7fc7290"
                                    - chain: solana
                                      publicKey: A9vzqFSxKVasf55GdZCAFKhKW9zckzx6ekhhsQTretTa
                                items:
                                    $ref: "#/components/schemas/Wallet"
                400:
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/Error"
                401:
                    description: |
                        Unauthorized. The API key may not exist, or does not have the proper scopes to perform this action (`wallets.read`)
            tags:
                - Wallet
            summary: Get Wallets for User
            description: |
                Fetch the addresses of a user's Crossmint custodial wallets

                **API scope required**: `wallets.read`
            operationId: fetch-wallet
            x-openai-isConsequential: true
            parameters:
                - name: userId
                  description: Unique identifier for your user. Any arbitrary string can be passed here.
                  in: query
                  schema:
                      type: string
                - name: email
                  description: The email used when creating the wallet
                  in: query
                  schema:
                      type: string
                # - name: phoneNumber
                #   in: query
                #   schema:
                #     type: string
    /2022-06-09/wallets/{identifier}/nfts:
        get: # Get NFTs from Wallet
            # Mintlify (our docs tool) doesn't support `oneOf` in the responses. These are overridden in the mdx file for this route
            responses:
                200:
                    description: Success
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: "#/components/schemas/NFTEVM"
                                    - $ref: "#/components/schemas/NFTSOL"
                                    - $ref: "#/components/schemas/NFTCAR"
                400:
                    description: "Bad request. Either the blockchain prefix is incorrect, the address does not exist, or the locator is malformed"
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/Error"
            tags:
                - Wallet
            summary: Get NFTs from Wallet
            description: |
                Fetch the NFTs in a provided wallet

                **API scope required**: `wallets:nfts.read`
            operationId: fetch-content-from-wallet
            x-openai-isConsequential: true
            parameters:
                - name: identifier
                  in: path
                  description: "The wallet identifier in the format of `<chain>:<address>`, `email:<email_address>:<chain>` or `userId:<userId>:<chain>`."
                  required: true
                  schema:
                      type: string
                - name: page
                  in: query
                  description: "Page index"
                  required: true
                  schema:
                      type: string
                      default: "1"
                - name: perPage
                  in: query
                  description: "Number of items to display per page"
                  required: true
                  schema:
                      type: string
                      default: "20"
    /v1-alpha1/wallets/{chain}:{address}/signMessage:
        post: # Sign message
            responses:
                200:
                    description: Message has been successfully signed
                    content:
                        application/json:
                            schema:
                                type: object
                                properties:
                                    signedMessage:
                                        type: string
                                        description: "This is the result of `ethers.Signer.signMessage`"
                                        example: 0x00000000...
                400:
                    description: The blockchain requested is not supported
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/Error"
                404:
                    description: The specified wallet is not found
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/Error"
                401:
                    description: |
                        Unauthorized. The API key may not exist, or does not have the proper scopes to perform this action
            tags:
                - Sign
            summary: Sign Message
            description: |
                Sign a message using a custodial wallet's key

                **API scope required**: `wallets:messages.sign`
            operationId: sign-message
            x-openai-isConsequential: true
            parameters:
                - name: chain
                  in: path
                  description: "The blockchain network you are using. For Base, Optimism or Arbitrum support, please reach out to us."
                  required: true
                  schema:
                      type: string
                      enum:
                          - aptos
                          - arbitrum
                          - arbitrum-sepolia
                          - astar-zkevm
                          - avalanche
                          - avalanche-fuji
                          - base
                          - base-sepolia
                          - bsc
                          - chiliz
                          - chiliz-spicy-testnet
                          #- bsc-testnet
                          - ethereum
                          - ethereum-sepolia
                          - optimism
                          - optimism-sepolia
                          - polygon
                          - polygon-amoy
                          - shape
                          - shape-sepolia
                          - skale-nebula
                          - skale-nebula-testnet
                          - solana
                          - soneium-minato-testnet
                          - soneium
                          - xai
                          - xai-sepolia-testnet
                          - zkyoto
                          - zora
                          - zora-sepolia
                      default: polygon
                - name: address
                  in: path
                  description: "The wallet address you want to sign the message with"
                  required: true
                  schema:
                      type: string
                      pattern: "^(0x)?[0-9a-fA-F]{40}$"
            requestBody:
                content:
                    application/json:
                        schema:
                            type: object
                            required:
                                - message
                            properties:
                                message:
                                    type: string
                                    description: "The message to be signed"
    /v1-alpha1/wallets/transfer:
        post:
            responses:
                # 200:
                #   description: Export started. Status updates for this export are returned through the Exports Webhook.
                202:
                    description: Verification request sent to user. Status updates for this export are returned through the transfers webhook.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/VerificationRequestSent"
                303:
                    description: More info needed to start export. This will happen when the operation has a high fraud risk.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/TransferPendingVerification"
                400:
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/Error"
                401:
                    description: |
                        Unauthorized. The API key may not exist, or does not have the proper scopes to perform this action (`wallets:nfts.transfer`)
                404:
                    description: The specified wallet cannot be found.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/Error"
            tags:
                - Transfer
            summary: Transfer NFT (email)
            description: |
                Transfer NFTs from one wallet to another wallet. Intended for wallets created using `email` option.

                **API scope required**: `wallets:nfts.transfer`
            operationId: transfer
            x-openai-isConsequential: true
            requestBody:
                content:
                    application/json:
                        schema:
                            oneOf:
                                - title: EVM
                                  type: object
                                  properties:
                                      chain:
                                          type: string
                                          enum:
                                              - aptos
                                              - arbitrum
                                              - arbitrum-sepolia
                                              - astar-zkevm
                                              - avalanche
                                              - avalanche-fuji
                                              - base
                                              - base-sepolia
                                              - bsc
                                              - chiliz
                                              - chiliz-spicy-testnet
                                              #- bsc-testnet
                                              - ethereum
                                              - ethereum-sepolia
                                              - optimism
                                              - optimism-sepolia
                                              - polygon
                                              - polygon-amoy
                                              - shape
                                              - shape-sepolia
                                              - skale-nebula
                                              - skale-nebula-testnet
                                              - solana
                                              - soneium-minato-testnet
                                              - soneium
                                              - xai
                                              - xai-sepolia-testnet
                                              - zkyoto
                                              - zora
                                              - zora-sepolia
                                      from:
                                          type: string
                                          description: "The wallet address for the current owner"
                                      to:
                                          type: string
                                          description: "The wallet address the token should be transferred to"
                                      contractAddress:
                                          type: string
                                          description: "The contract address of the token to transfer"
                                      tokenId:
                                          type: string
                                          description: "The numeric tokenId of the token to be transferred"
                                      quantity:
                                          type: string
                                          description: "Required for ERC-1155 only, not relevant for ERC-721 tokens"
                                - title: Solana
                                  type: object
                                  properties:
                                      chain:
                                          type: string
                                          enum:
                                              - solana
                                              #- solana-devnet
                                          default: solana
                                      from:
                                          type: string
                                          description: "The wallet address for the current owner"
                                      to:
                                          type: string
                                          description: "The wallet address the token should be transferred to"
                                      tokenMintAddress:
                                          type: string
                                          description: "The mintHash of the token to transfer"
    /v1-alpha1/transfer:
        post:
            responses:
                200:
                    description: Export started. Status updates for this export are returned through the Exports Webhook.
                303:
                    description: More info needed to start export. This will happen when the operation has a high fraud risk.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/TransferPendingVerification"
                400:
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/Error"
                401:
                    description: |
                        Unauthorized. The API key may not exist, or does not have the proper scopes to perform this action (`wallets:nfts.transfer`)
            tags:
                - Transfer
            summary: Transfer NFT (userId)
            description: |
                Transfer NFTs from one wallet to another wallet. Intended for wallets created with `userId` option.

                **API scope required**: `wallets:nfts.transfer`
            operationId: transfer
            x-openai-isConsequential: true
            requestBody:
                content:
                    application/json:
                        schema:
                            type: object
                            properties:
                                chain:
                                    type: string
                                    enum:
                                        - aptos
                                        - arbitrum
                                        - arbitrum-sepolia
                                        - astar-zkevm
                                        - avalanche
                                        - avalanche-fuji
                                        - base
                                        - base-sepolia
                                        - bsc
                                        - chiliz
                                        - chiliz-spicy-testnet
                                        #- bsc-testnet
                                        - ethereum
                                        - ethereum-sepolia
                                        - optimism
                                        - optimism-sepolia
                                        - polygon
                                        - polygon-amoy
                                        - shape
                                        - shape-sepolia
                                        - skale-nebula
                                        - skale-nebula-testnet
                                        - solana
                                        - soneium-minato-testnet
                                        - soneium
                                        - xai
                                        - xai-sepolia-testnet
                                        - zkyoto
                                        - zora
                                        - zora-sepolia
                                    default: polygon
                                tokenId:
                                    type: string
                                    description: "The numeric token ID of the NFT to be transferred, only used for EVM tokens"
                                fromAddress:
                                    type: string
                                    description: "The wallet address for the current owner"
                                toAddress:
                                    type: string
                                    description: "The wallet address to send the NFT to"
                                tokenMintAddress:
                                    type: string
                                    description: |
                                        **Solana**: mintHash

                                        **EVM**: token contract address

    ################################################
    ### MINTING
    ################################################

    /2022-06-09/collections/{collectionId}/nfts/:
        # BATCH MINT NFTS
        post:
            summary: Batch Mint NFTs
            description: |
                Mint multiple NFTs with a single call and deliver them to a web3 wallet or an email address

                **API scope required** `nfts.create`
            operationId: batch-mint-nft
            x-openai-isConsequential: true
            tags:
                - NFTs
            parameters:
                - $ref: "#/components/parameters/collectionId"
            requestBody:
                content:
                    application/json:
                        schema:
                            type: object
                            additionalProperties: false
                            required:
                                - nfts
                            properties:
                                nfts:
                                    type: array
                                    description: Array of objects describing the NFTs to mint to recipients.
                                    items:
                                        additionalProperties: false
                                        type: object
                                        properties:
                                            recipient:
                                                $ref: "#/components/schemas/Recipient"
                                            metadata:
                                                $ref: "#/components/schemas/NFTMetadataOptions"
                                            compressed:
                                                $ref: "#/components/schemas/Compressed"
                                            id:
                                                type: string
                                                description: "**Optional** The idempotent identifier for the NFT"
            responses:
                200:
                    description: Success.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/BatchMintResponse"
                400:
                    description: Invalid arguments, please make sure you're following the API specification.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/BatchError"
                403:
                    description: Forbidden error, please ensure the credentials are correct.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/Error"
                503:
                    description: |
                        Please try again in a few minutes. If the issue still persists, contact Crossmint support.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/Error"

    /2022-06-09/collections/{collectionId}/nfts:
        # MINT NFT
        post:
            summary: Mint NFT
            description: |
                Mint your NFTs and deliver them to a web3 wallet or an email address

                **API scope required**: `nfts.create`
            operationId: mint-nft
            x-openai-isConsequential: true
            tags:
                - NFTs
            parameters:
                - $ref: "#/components/parameters/collectionId"
            requestBody:
                content:
                    application/json:
                        schema:
                            type: object
                            additionalProperties: false
                            required:
                                - recipient
                                - metadata
                            properties:
                                recipient:
                                    $ref: "#/components/schemas/Recipient"
                                metadata:
                                    $ref: "#/components/schemas/NFTMetadataOptions"
                                reuploadLinkedFiles:
                                    $ref: "#/components/schemas/ReuploadLinkedFiles"
                                compressed:
                                    $ref: "#/components/schemas/Compressed"
            responses:
                200:
                    description: Success.
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: "#/components/schemas/MintResponseSolana200"
                                    - $ref: "#/components/schemas/MintResponseEVM200"
                400:
                    description: Invalid arguments, please make sure you're following the api specification.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/400Response"
                403:
                    description: Forbidden error, please ensure the credentials are correct.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/403Response"
                404:
                    description: Not found error.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/404Response"
                503:
                    description: Please try again in a few minutes. If the issue still persists, contact Crossmint support.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/503Response"

        # GET ALL NFTs
        get:
            summary: Get All NFTs
            description: |
                Get a list of all the NFTs in a given collection.

                **API scope required**: `nfts.read`
            operationId: mint-status-list
            x-openai-isConsequential: true
            tags:
                - NFTs
            parameters:
                - $ref: "#/components/parameters/collectionId"
                - $ref: "#/components/parameters/page"
                - $ref: "#/components/parameters/perPage"
            responses:
                200:
                    description: Success. Returns an array of objects describing the NFTs minted from this collection.
                    content:
                        application/json:
                            schema:
                                type: array
                                items:
                                    $ref: "#/components/schemas/NFTObjectEVM"
                400:
                    description: Invalid arguments, please make sure you're following the api specification.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/400Response"
                403:
                    description: Forbidden error, please ensure the credentials are correct.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/403Response"
                404:
                    description: Not found error.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/404Response"
                503:
                    description: Please try again in a few minutes. If the issue still persists, contact Crossmint support.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/503Response"

    /2022-06-09/collections/{collectionId}/nfts/{idempotencyKey}:
        # MINT NFT IDEMPOTENT
        put:
            summary: Mint NFT with ID
            description: |
                This pathway allows you to mint NFTs and guarantee idempotency
                to ensure you never double mint for the same NFT. 

                **API scope required**: `nfts.create`
            operationId: mint-nft-idempotent
            x-openai-isConsequential: true
            tags:
                - NFTs
            parameters:
                - $ref: "#/components/parameters/collectionId"
                - name: idempotencyKey
                  in: path
                  description: Custom ID of the NFT, which is used as an idempotency key
                  required: true
                  example: default
                  schema:
                      type: string
                      example: my-idempotency-key
            requestBody:
                content:
                    application/json:
                        schema:
                            type: object
                            additionalProperties: false
                            properties:
                                recipient:
                                    $ref: "#/components/schemas/Recipient"
                                metadata:
                                    $ref: "#/components/schemas/NFTMetadataOptions"
                                reuploadLinkedFiles:
                                    $ref: "#/components/schemas/ReuploadLinkedFiles"
                                compressed:
                                    $ref: "#/components/schemas/Compressed"
                            required:
                                - recipient
                                - metadata
            responses:
                200:
                    description: The request has been accepted.
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: "#/components/schemas/MintResponseSolana200"
                                    - $ref: "#/components/schemas/MintResponseSolana200Subsequent"
                                    - $ref: "#/components/schemas/MintResponseEVM200"
                                    - $ref: "#/components/schemas/MintResponseEVM200Subsequent"
                400:
                    description: Invalid arguments, please make sure you're following the api specification.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/400Response"
                403:
                    description: Forbidden error, please ensure the credentials are correct.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/403Response"
                404:
                    description: Not found error.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/404Response"
                503:
                    description: Please try again in a few minutes. If the issue still persists, contact Crossmint support.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/503Response"

    /2022-06-09/collections/{collectionId}/sfts:
        # MINT SFT
        post:
            summary: Mint SFT
            description: |
                Mint your SFTs and deliver them to a web3 wallet or an email address

                **API scope required**: `nfts.create`
            operationId: mint-sft
            x-openai-isConsequential: true
            tags:
                - NFTs
            parameters:
                - $ref: "#/components/parameters/collectionId"
            requestBody:
                content:
                    application/json:
                        schema:
                            type: object
                            additionalProperties: false
                            required:
                                - templateId
                                - recipient
                            properties:
                                templateId:
                                    type: string
                                    description: Identifier of the template
                                    example: silver-pass
                                recipient:
                                    $ref: "#/components/schemas/Recipient"
                                amount:
                                    type: integer
                                    description: (Optional) Amount to mint
                                    example: 10
            responses:
                200:
                    description: Success
                    content:
                        application/json:
                            schema:
                                type: object
                                properties:
                                    actionId:
                                        type: string
                                        example: a91c15e3-60f2-4a45-bf1a-cee508981667
                                    action:
                                        type: string
                                        example: nfts.create
                                    status:
                                        type: string
                                        example: pending
                                    data:
                                        type: object
                                        properties:
                                            chain:
                                                type: string
                                                example: polygon
                                            collection:
                                                type: object
                                                properties:
                                                    id:
                                                        type: string
                                                        example: 84e3d617-9c1b-4e7a-9686-522a9ea7c520
                                                    contractAddress:
                                                        type: string
                                                        example: 0x9b8ab8949bd7E73E61945b88F7fe12151f98ad3C
                                            recipient:
                                                type: object
                                                properties:
                                                    walletAddress:
                                                        type: string
                                                        example: 0xcFDc00Cf926A5053f9Cdf004e6DF17e6dEB2E146
                                                    email:
                                                        type: string
                                                        example: testy@crossmint.io
                                            token:
                                                type: object
                                                properties:
                                                    id:
                                                        type: string
                                                        example: a91c15e3-60f2-4a45-bf1a-cee508981667
                                    startedAt:
                                        type: string
                                        example: 2024-01-02T22:05:01.000Z
                                    resource:
                                        type: string
                                        example: https://staging.crossmint.com/api/2022-06-09/actions/a91c15e3-60f2-4a45-bf1a-cee508981667
                400:
                    description: Invalid arguments, please make sure you're following the api specification.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/400Response"
                403:
                    description: Forbidden error, please ensure the credentials are correct.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/403Response"
                404:
                    description: Not found error.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/404Response"
                503:
                    description: Please try again in a few minutes. If the issue still persists, contact Crossmint support.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/503Response"

    /2022-06-09/collections/{collectionId}/nfts/{id}:
        # MINT STATUS
        get:
            summary: Mint Status
            description: |
                Get the status and associated information for a mint operation.

                **API scope required**: `nfts.read`
            operationId: mint-status
            x-openai-isConsequential: true
            tags:
                - NFTs
            parameters:
                - $ref: "#/components/parameters/collectionId"
                - $ref: "#/components/parameters/nftId"
            responses:
                200:
                    description: Success.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/MintStatusSolana200"
                400:
                    description: Invalid arguments, please make sure you're following the api specification.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/400Response"
                403:
                    description: Forbidden error, please ensure the credentials are correct.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/403Response"
                404:
                    description: Not found error.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/404Response"
                503:
                    description: Please try again in a few minutes. If the issue still persists, contact Crossmint support.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/503Response"

        # EDIT NFT
        patch:
            summary: Edit NFT
            description: |
                Edit a minted NFT's metadata on IPFS. 

                If you are using a custom baseURI, invoking this will overwrite the specific tokenURI for the edited token.

                **API scope required**: `nfts.update`
            operationId: edit-nft
            x-openai-isConsequential: true
            tags:
                - NFTs
            parameters:
                - $ref: "#/components/parameters/collectionId"
                - $ref: "#/components/parameters/nftId"
            requestBody:
                content:
                    application/json:
                        schema:
                            type: object
                            additionalProperties: false
                            required:
                                - recipient
                                - metadata
                            properties:
                                metadata:
                                    $ref: "#/components/schemas/NFTMetadata"
                                reuploadLinkedFiles:
                                    $ref: "#/components/schemas/ReuploadLinkedFiles"
            responses:
                204:
                    description: ""
                400:
                    description: Invalid arguments, please make sure you're following the api specification.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/400Response"
                403:
                    description: Forbidden error, please ensure the credentials are correct.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/403Response"
                404:
                    description: Not found error.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/404Response"
                503:
                    description: Please try again in a few minutes. If the issue still persists, contact Crossmint support.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/503Response"

        # BURN NFT
        delete:
            summary: Burn NFT
            description: |
                Burn a minted NFT.

                **API scope required**: `nfts.delete`
            operationId: burn-nft
            x-openai-isConsequential: true
            tags:
                - NFTs
            parameters:
                - $ref: "#/components/parameters/collectionId"
                - $ref: "#/components/parameters/nftId"
            responses:
                200:
                    description: Success.
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: "#/components/schemas/BurnNFTPendingResponse"
                                    - $ref: "#/components/schemas/BurnNFTSucceededResponse"
                400:
                    description: Invalid arguments, please make sure you're following the api specification.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/400Response"
                403:
                    description: Forbidden error, please ensure the credentials are correct.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/403Response"
                404:
                    description: Not found error.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/404Response"
                503:
                    description: Please try again in a few minutes. If the issue still persists, contact Crossmint support.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/503Response"

    ################################################
    ### COLLECTIONS
    ################################################

    /2022-06-09/collections/:
        # GET ALL COLLECTIONS
        get:
            summary: Get All Collections
            description: |
                List all collections created under the current Crossmint project

                **API scope required**: `collections.read`
            operationId: list-collections
            x-openai-isConsequential: true
            tags:
                - NFT Collections
            responses:
                200:
                    description: Success.
                    content:
                        application/json:
                            schema:
                                type: object
                                properties:
                                    results:
                                        type: array
                                        items:
                                            $ref: "#/components/schemas/GetCollectionResponse"
                400:
                    description: Invalid arguments, please make sure you're following the api specification.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/400Response"
                403:
                    description: Forbidden error, please ensure the credentials are correct.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/403Response"
                404:
                    description: Not found error.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/404Response"
                503:
                    description: Please try again in a few minutes. If the issue still persists, contact Crossmint support.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/503Response"

        # CREATE COLLECTION
        post:
            tags:
                - NFT Collections
            operationId: create-collection
            x-openai-isConsequential: true
            summary: Create Collection
            description: |
                Create a collection that you can mint NFTs/SFTs from

                **API scope required**: `collections.create`
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/CreateCollectionBody"
            responses:
                200:
                    description: Success.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/CreateCollectionResponse"
                400:
                    description: Invalid arguments, please make sure you're following the api specification.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/400Response"
                403:
                    description: Forbidden error, please ensure the credentials are correct.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/403Response"
                404:
                    description: Not found error.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/404Response"
                503:
                    description: Please try again in a few minutes. If the issue still persists, contact Crossmint support.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/503Response"

    /2022-06-09/collections/{collectionId}:
        # CREATE COLLECTION IDEMPOTENT
        put:
            summary: Create Collection with ID
            description: |
                Create a collection that you can mint NFTs/SFTs from. This API is idempotent, 
                if you call it multiple times with the same ID, only one will be created.

                **API scope required**: `collections.create`
            operationId: create-collection-custom
            x-openai-isConsequential: true
            tags:
                - NFT Collections
            parameters:
                - $ref: "#/components/parameters/collectionId"
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/CreateCollectionBody"
            responses:
                200:
                    description: Success.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/CreateCollectionResponse"
                400:
                    description: Invalid arguments, please make sure you're following the api specification.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/400Response"
                403:
                    description: Forbidden error, please ensure the credentials are correct.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/403Response"
                404:
                    description: Not found error.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/404Response"
                503:
                    description: Please try again in a few minutes. If the issue still persists, contact Crossmint support.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/503Response"

        # UPDATE COLLECTION INFO
        patch:
            summary: Update Collection Info
            description: |
                Update the sales details of a collection

                **API scope required**: `collections.update`
            operationId: update-collection
            x-openai-isConsequential: true
            tags:
                - NFT Collections
            parameters:
                - $ref: "#/components/parameters/collectionId"
            requestBody:
                content:
                    application/json:
                        schema:
                            type: object
                            additionalProperties: false
                            properties:
                                supplyLimit:
                                    type: number
                                    description: "The maximum number of NFTs that can be minted for this collection"
                                payments:
                                    $ref: "#/components/schemas/PaymentsObject"
            responses:
                200:
                    description: A JSON object containing transactionId and status
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/UpdateCollectionResponse"
                400:
                    description: Invalid arguments, please make sure you're following the api specification.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/400Response"
                403:
                    description: Forbidden error, please ensure the credentials are correct.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/403Response"
                404:
                    description: Not found error.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/404Response"
                503:
                    description: Please try again in a few minutes. If the issue still persists, contact Crossmint support.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/503Response"

        # GET COLLECTION INFO
        get:
            summary: Get Collection Info
            description: |
                Get information about a specific collection.

                **API scope required**: `collections.read`
            operationId: collection-info
            x-openai-isConsequential: true
            tags:
                - NFT Collections
            parameters:
                - $ref: "#/components/parameters/collectionId"
            responses:
                200:
                    description: Success.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/GetCollectionResponse"
                400:
                    description: Invalid arguments, please make sure you're following the api specification.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/400Response"
                403:
                    description: Forbidden error, please ensure the credentials are correct.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/403Response"
                404:
                    description: Not found error.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/404Response"
                503:
                    description: Please try again in a few minutes. If the issue still persists, contact Crossmint support.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/503Response"

    "/v1-alpha1/minting/collections/{collectionId}/royalties":
        # GET ROYALTIES CONFIG
        get:
            summary: Get Royalties Config
            description: |
                Fetch the royalty configuration for a collection, from its current state
                in the blockchain. 

                This API is only supported on EVM chains.

                If you call GET too soon after PUT/DELETE,
                you may not yet see your latest changes, as they can take a few seconds to
                record on the blockchain.

                **API scope required**: `collections.read`
            operationId: get-royalty-information
            x-openai-isConsequential: true
            tags:
                - NFT Collections
            parameters:
                - $ref: "#/components/parameters/collectionId"
            responses:
                200:
                    description: Success.
                    content:
                        application/json:
                            schema:
                                type: object
                                properties:
                                    recipients:
                                        type: array
                                        items:
                                            type: object
                                            properties:
                                                address:
                                                    type: string
                                                    description: Recipient address. e.g., 0x71C...
                                                    example: 0x71C...
                                                basisPoints:
                                                    type: integer
                                                    description: |
                                                        A basis point is a standard measure for percentages in finance. One basis point equals 1/100th of 1%, or 0.01%.
                                                    example: 100
                400:
                    description: Invalid arguments, please make sure you're following the api specification.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/400Response"
                403:
                    description: Forbidden error, please ensure the credentials are correct.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/403Response"
                404:
                    description: Not found error.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/404Response"
                503:
                    description: Please try again in a few minutes. If the issue still persists, contact Crossmint support.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/503Response"

        # SET ROYALTIES
        put:
            summary: Set Royalties
            description: |
                Configure royalties for all NFTs in a collection.

                This API is only supported for EVM chains and implements the EIP-2981 standard.

                **API scope required**: `collections.update`
            operationId: edit-royalty-information
            x-openai-isConsequential: true
            tags:
                - NFT Collections
            parameters:
                - $ref: "#/components/parameters/collectionId"
            requestBody:
                content:
                    application/json:
                        schema:
                            type: object
                            additionalProperties: false
                            properties:
                                recipients:
                                    description: "List of royalty recipients. Note: EVM collections only support a single recipient. Use a contract splitter as recipient in order to send payments to multiple addresses."
                                    type: array
                                    items:
                                        type: object
                                        additionalProperties: false
                                        properties:
                                            address:
                                                type: string
                                                description: |
                                                    Address where the payments will be received.
                                                    Note: ENS addresses are not supported.
                                                example: 0x71C...
                                            basisPoints:
                                                type: integer
                                                description: |
                                                    Percentage of the sale price that will go to the recipient address. A basis point is a  standard measure for percentages in finance. One basis point equals 1/100th of 1%, or 0.01%.
                                                example: 100
                            required:
                                - basisPoints
                                - recipient
            responses:
                204:
                    description: No-content success response indicating that the request is being processed.
                400:
                    description: Invalid arguments, please make sure you're following the api specification.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/400Response"
                403:
                    description: Forbidden error, please ensure the credentials are correct.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/403Response"
                404:
                    description: Not found error.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/404Response"
                503:
                    description: Please try again in a few minutes. If the issue still persists, contact Crossmint support.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/503Response"

        # REMOVE ROYALTIES
        delete:
            summary: Remove Royalties
            description: |
                Remove all royalties from a given collection. No new NFT sales will yield royalties to the creator. 

                This API is only supported on EVM Chains.

                **API scope required**: `collections.update`
            operationId: disable-royalty-information
            x-openai-isConsequential: true
            tags:
                - NFT Collections
            parameters:
                - $ref: "#/components/parameters/collectionId"
            responses:
                204:
                    description: No-content success response indicating that the request is being processed.
                400:
                    description: Invalid arguments, please make sure you're following the api specification.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/400Response"
                403:
                    description: Forbidden error, please ensure the credentials are correct.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/403Response"
                404:
                    description: Not found error.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/404Response"
                503:
                    description: Please try again in a few minutes. If the issue still persists, contact Crossmint support.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/503Response"

    "/v1-alpha1/minting/collections/{collectionId}/base-uri":
        # GET BASE URI
        get:
            summary: Get Base URI
            description: |
                Get the Base URI of a collection as it appears onchain.

                **API scope required**: `collections.read`
            operationId: get-base-uri
            x-openai-isConsequential: true
            tags:
                - NFT Collections
            parameters:
                - $ref: "#/components/parameters/collectionId"
            responses:
                200:
                    description: Base URI of a collection as it appears onchain
                    content:
                        application/json:
                            schema:
                                type: object
                                properties:
                                    uri:
                                        type: string
                400:
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - title: OutdatedContract
                                      type: object
                                      properties:
                                          message:
                                              type: string
                                              example: Setting the base URI is not supported on contracts deployed before 06/09/2023
                                    - title: OldCollection
                                      type: object
                                      properties:
                                          message:
                                              type: string
                                              example: Setting the base URI is not supported on contracts deployed before 06/09/2023
                                    - title: SolanaNotSupported
                                      type: object
                                      properties:
                                          message:
                                              type: string
                                              example: Getting the base URI is not yet available on Solana
                                    - title: ExternalCollection
                                      type: object
                                      properties:
                                          message:
                                              type: string
                                              example: Getting the base URI is not available on external collections
                                    - title: SFTCollection
                                      type: object
                                      properties:
                                          message:
                                              type: string
                                              example: Setting the base URI is not available on SFT collections
                403:
                    description: Forbidden error, please ensure the credentials are correct.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/403Response"
                404:
                    description: Not found error.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/404Response"
                503:
                    description: Please try again in a few minutes. If the issue still persists, contact Crossmint support.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/503Response"

        # SET BASE URI
        put:
            summary: "Set Base URI"
            description: |
                Update the Base URI of a collection. Setting the baseURI enables
                excluding the metadata param when minting. Tokens minted without the metadata
                param will have a tokenURI of {BASE_URI}{TOKEN_ID}.

                This API is currently only supported on EVM Chains.

                **API scope required**: `collections.update`
            operationId: set-base-uri
            x-openai-isConsequential: true
            tags:
                - NFT Collections
            parameters:
                - $ref: "#/components/parameters/collectionId"
            requestBody:
                content:
                    application/json:
                        schema:
                            type: object
                            additionalProperties: false
                            properties:
                                uri:
                                    type: string
                                    description: The new Base URI
                                    example: https://www.example.com
            responses:
                204:
                    description: |
                        No-content success response indicating that the request is being processed
                400:
                    description: Invalid arguments, please make sure you're following the api specification.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/400Response"
                403:
                    description: Forbidden error, please ensure the credentials are correct.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/403Response"
                404:
                    description: Not found error.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/404Response"
                503:
                    description: Please try again in a few minutes. If the issue still persists, contact Crossmint support.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/503Response"

    /v1-alpha1/minting/collections/{collectionId}/transferable:
        # GET TRANSFERABILITY STATUS
        get:
            summary: Get Transferability
            description: |
                Get the transferable status of a collection. 

                This API is only supported on EVM chains. 

                You must contact sales to gain access to this API. 

                **API scope required**: `collections.read`
            operationId: get-transferability
            x-openai-isConsequential: true
            tags:
                - NFT Collections
            parameters:
                - $ref: "#/components/parameters/collectionId"
            responses:
                200:
                    description: Success
                    content:
                        application/json:
                            schema:
                                type: object
                                properties:
                                    value:
                                        type: boolean
                                        example: true
                400:
                    description: Invalid arguments, please make sure you're following the api specification.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/400Response"
                403:
                    description: Forbidden error, please ensure the credentials are correct.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/403Response"
                404:
                    description: Not found error.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/404Response"
                503:
                    description: Please try again in a few minutes. If the issue still persists, contact Crossmint support.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/503Response"

        # SET TRANSFERABILITY STATUS
        put:
            summary: Set Transferability
            description: |
                Update the transferable status of a collection. 

                This API is only supported on EVM chains. 
                You must contact sales to gain access to this API. 

                **API scope required**: `collections.update`
            operationId: set-transferability
            x-openai-isConsequential: true
            tags:
                - NFT Collections
            parameters:
                - $ref: "#/components/parameters/collectionId"
            requestBody:
                content:
                    application/json:
                        schema:
                            type: object
                            additionalProperties: false
                            required:
                                - value
                            properties:
                                value:
                                    type: boolean
                                    description: Toggles the transferability of NFTs within the collection. Set to `false` to disable transfers.
                                    example: true
            responses:
                204:
                    description: Success
                400:
                    description: Invalid arguments, please make sure you're following the api specification.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/400Response"
                403:
                    description: Forbidden error, please ensure the credentials are correct.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/403Response"
                404:
                    description: Not found error.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/404Response"
                503:
                    description: Service unavailable
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/503Response"

    ################################################
    ### TEMPLATES
    ################################################

    /2022-06-09/collections/{collectionId}/templates:
        # GET ALL TEMPLATES
        get:
            summary: Get All Templates
            description: |
                Get all of the templates for a collection

                **API scope required**: `nfts.read`
            operationId: get-all-templates
            x-openai-isConsequential: true
            tags:
                - NFT Templates
            parameters:
                - $ref: "#/components/parameters/collectionId"
                - $ref: "#/components/parameters/page"
                - $ref: "#/components/parameters/perPage"
            responses:
                200:
                    description: success
                    content:
                        application/json:
                            schema:
                                type: array
                                items:
                                    $ref: "#/components/schemas/TemplateResponse"
                400:
                    description: Invalid arguments, please make sure you're following the api specification.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/400Response"
                403:
                    description: Forbidden error, please ensure the credentials are correct.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/403Response"
                404:
                    description: Not found error.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/404Response"
                503:
                    description: Service unavailable
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/503Response"

        # CREATE TEMPLATE
        post:
            summary: Create Template
            description: |
                Create a token template, that NFTs or SFTs may be minted from

                **API scope required**: `nfts.create`
            operationId: create-template
            x-openai-isConsequential: true
            tags:
                - NFT Templates
            parameters:
                - name: collectionId
                  in: path
                  description: The ID of the named collection, used to create new tokens
                  required: true
                  schema:
                      type: string
                      example: idempotent-collection-name
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/CreateTemplateBody"
            responses:
                200:
                    description: Success
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/TemplateResponse"
                400:
                    description: Invalid arguments, please make sure you're following the api specification.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/400Response"
                404:
                    description: Not found error.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/404Response"
                409:
                    description: Conflict
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/409Response"
                424:
                    description: Failed Dependency
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/424Response"
                503:
                    description: Service unavailable
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/503Response"

    /2022-06-09/collections/{collectionId}/templates/{templateId}:
        # GET TEMPLATE
        get:
            summary: Get Template
            description: |
                Fetch the contents of a token template.

                **API scope required**: `nfts.read`
            operationId: get-template
            x-openai-isConsequential: true
            tags:
                - NFT Templates
            parameters:
                - $ref: "#/components/parameters/collectionId"
                - $ref: "#/components/parameters/templateId"
            responses:
                200:
                    description: Success
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/TemplateResponse"
                400:
                    description: Invalid arguments, please make sure you're following the api specification.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/400Response"
                403:
                    description: Forbidden error, please ensure the credentials are correct.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/403Response"
                404:
                    description: Not found error.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/404Response"
                503:
                    description: Service unavailable
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/503Response"

        # CREATE TEMPLATE IDEMPOTENT
        put:
            summary: Create Template with ID
            description: |
                Create a token template with preconfigured metadata

                **API scope required**: `nfts.create`
            operationId: create-template-idempotent
            x-openai-isConsequential: true
            tags:
                - NFT Templates
            parameters:
                - $ref: "#/components/parameters/collectionId"
                - $ref: "#/components/parameters/templateId"
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/CreateTemplateBody"
            responses:
                200:
                    description: Success
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/TemplateResponse"
                400:
                    description: Invalid arguments, please make sure you're following the api specification.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/400Response"
                404:
                    description: Not found error.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/404Response"
                409:
                    description: Conflict
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/409Response"
                424:
                    description: Failed Dependency
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/424Response"
                503:
                    description: Service unavailable
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/503Response"

        # EDIT TEMPLATE
        patch:
            summary: Edit Template
            description: "**API scope required**: `nfts.update` <br><br> Edit a Token template."
            operationId: edit-template
            x-openai-isConsequential: true
            tags:
                - NFT Templates
            parameters:
                - $ref: "#/components/parameters/collectionId"
                - $ref: "#/components/parameters/templateId"
            requestBody:
                content:
                    application/json:
                        schema:
                            oneOf:
                                - title: Metadata Update
                                  $ref: "#/components/schemas/Metadata"
                                - title: Supply Update
                                  $ref: "#/components/schemas/Supply"
            responses:
                204:
                    description: Success
                400:
                    description: Invalid arguments, please make sure you're following the api specification.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/400Response"
                404:
                    description: Not found error.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/404Response"
                503:
                    description: Service unavailable
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/503Response"

    ################################################
    ### ACTIONS
    ################################################

    /2022-06-09/actions/{actionId}:
        # GET ACTION STATUS
        get:
            summary: Get Action Status
            description: |
                Use this API to poll for the status of asynchonous actions such as NFT mints, transfers, etc.

                **API scope required**: `nfts.create`
            operationId: get-action-status
            x-openai-isConsequential: true
            tags:
                - Actions
            parameters:
                - name: actionId
                  in: path
                  description: The actionId.
                  required: true
                  schema:
                      type: string
            responses:
                200:
                    description: Success
                    content:
                        application/json:
                            schema:
                                type: object
                                properties:
                                    actionId:
                                        type: string
                                        format: uuid
                                        example: "66881a4d-eff9-467a-b19d-a2ff76eef5c2"
                                    action:
                                        type: string
                                        example: "nfts.create"
                                    status:
                                        type: string
                                        example: "pending"
                                    data:
                                        type: object
                                        properties:
                                            collection:
                                                type: object
                                                properties:
                                                    id:
                                                        type: string
                                                        example: "someCollection"
                                                    contractAddress:
                                                        type: string
                                                        example: "0x0B7c736cD6D517b6AFfB3F6151eC662B0000018B"
                                            recipient:
                                                type: object
                                                properties:
                                                    walletAddress:
                                                        type: string
                                                        example: "0x6Def4FF2Efe3731EB2Ca09c625d21bfd6da00000"
                                            token:
                                                type: object
                                                properties:
                                                    id:
                                                        type: string
                                                        example: "66881a4d-eff9-467a-b19d-a2ff76eef5c2"
                                    startedAt:
                                        type: string
                                        format: date-time
                                        example: "2023-10-02T22:10:41.000Z"
                                    resource:
                                        type: string
                                        format: uri
                                        example: "https://staging.crossmint.com/api/2022-06-09/actions/66881a4d-eff9-467a-b19d-a2ff76eef5c2"
                403:
                    description: Forbidden error, please ensure the credentials are correct.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/403Response"
                404:
                    description: Not found error.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/404Response"

################################################
### COMPONENTS
################################################

components:
    securitySchemes:
        apiKey:
            type: apiKey
            in: header
            name: X-API-KEY
            description: Obtained in the Crossmint developer console

    parameters:
        collectionId:
            name: collectionId
            in: path
            description: |
                This is the identifier for the collection related to the request. Every project has default collections: `default-solana` and `default-polygon`. 

                The [create-collection](/api-reference/minting/collection/create-collection) API will result in collections with UUID formatted `collectionId`. 
                **Example:** `9c82ef99-617f-497d-9abb-fd355291681b`

                The [create-collection-idempotent](/api-reference/minting/collection/create-collection-idempotent) API allows you to specify an arbitrary identifier during the initial request.
                **Example:** `your-custom-identifier`
            required: true
            example: default-solana
            schema:
                type: string

        templateId:
            name: templateId
            in: path
            description: The template ID
            required: true
            schema:
                type: string

        nftId:
            name: id
            in: path
            description: Unique ID of the minted NFT returned in the mint response
            required: true
            schema:
                type: string

        page:
            name: page
            in: query
            description: The page number you want to query, starting at 1
            required: true
            example: 1
            schema:
                type: number

        perPage:
            name: perPage
            in: query
            description: How many items you want to be returned in the page.
            schema:
                type: number
                example: 20

    schemas:
        ################################################
        ### WALLET SCHEMAS
        ################################################

        Chains:
            type: string
            description: Specify the name of the blockchain
            enum:
                - aptos
                - arbitrum
                - arbitrum-sepolia
                - astar-zkevm
                - avalanche
                - avalanche-fuji
                - base
                - base-sepolia
                - bsc
                - chiliz
                - chiliz-spicy-testnet
                #- bsc-testnet
                - ethereum
                - ethereum-sepolia
                - optimism
                - optimism-sepolia
                - polygon
                - polygon-amoy
                - shape
                - shape-sepolia
                - skale-nebula
                - skale-nebula-testnet
                - solana
                - soneium-minato-testnet
                - soneium
                - xai
                - xai-sepolia-testnet
                - zkyoto
                - zora
                - zora-sepolia
            default: polygon
        Checkout:
            required:
                - clientId
            type: object
            properties:
                clientId:
                    type: string
                    description: "Your Crossmint developer collection ID, found in the developer console: https://www.crossmint.com/console/collections"
                    example: 085f0f5a-9948-11ec-b909-0242ac120002
                collection:
                    $ref: "#/components/schemas/Collection"
                redirect:
                    $ref: "#/components/schemas/Redirect"
                mintConfig:
                    $ref: "#/components/schemas/MintConfig"
                emailTo:
                    type: string
                    description: The email address for mint confirmation
                    example: testy@crossmint.xyz
                mintTo:
                    type: string
                    description: A wallet address to mint the NFT to
                    example: YKQC3F2FUMexJUaje2suibPNhen2e9Pix1C2f9q7BHY
                paymentMethod:
                    type: string
                    description: The payment method, either `"fiat"` or `"ETH"`
                    default: fiat
                whPassThroughArgs:
                    type: object
                    description: Any arguments to included in the webhook status updates
                    example:
                        referralCode: "123"
                listingId:
                    type: string
                    description: The listing ID in a marketplace. Most contracts will not use this
        Collection:
            type: object
            description: Information about your collection, to be displayed on the checkout page.
            properties:
                title:
                    type: string
                    description: The title of your collection
                    example: A great collection
                description:
                    type: string
                    description: A description for your collection
                    example: This is a fantastic collection of NFTs
                photo:
                    type: string
                    description: Full URL to an image for your collection.
                    example: https://i.picsum.photos/id/542/200/300.jpg?hmac=qD8M4ejDPlEc69pGT21BzB7CDiWOcElb_Ke7V8POjm8
        MintConfig:
            type: object
            description: Arguments sent to your smart contract
            properties:
                totalPrice:
                    type: string
                    example: "0.08"
                "...":
                    type: object
                    description: Any custom arguments to your minting function should be configured here.
        MintStatus:
            type: object
            properties:
                status:
                    type: string
                    description: The latest status of the mint
                    example: success
                    enum:
                        - minting
                        - success
                        - error
                mintAddress:
                    type: string
                    description: The address of the mint
                    example: B1nQxDxmQTfRbXK4Cv1HtEmXKNqTXHEDiD251p9RCR7Q
                walletAddress:
                    type: string
                    description: The wallet address the NFT is minted to
                    example: YKQC3F2FUMexJUaje2suibPNhen2e9Pix1C2f9q7BHY
                passThroughArgs:
                    type: string
                    description: The arguments you sent via the `whPassThroughArgs` from `/checkout/mint`
                    example: '{"referralCode":"123"}'
        NFTEVM:
            title: EVM
            description: EVM
            type: array
            items:
                type: object
                properties:
                    chain:
                        type: string
                        description: The blockchain used in the request.
                    contractAddress:
                        type: string
                        description: The token contract address
                    tokenId:
                        type: string
                        description: The numeric tokenId for the specified NFT
                    metadata:
                        type: object
                        properties:
                            attributes:
                                type: array
                                items:
                                    type: object
                                    properties:
                                        trait_type:
                                            type: string
                                        value:
                                            type: string
                                        display_type:
                                            type: string
                                            nullable: true
                            collection:
                                type: object
                            description:
                                type: string
                            image:
                                type: string
                                description: URL that represents the image for the NFT
                            animation_url:
                                type: string
                                description: Optional URL representing a video or other multimedia file
                                nullable: true
                            name:
                                type: string
                    locator:
                        type: string
                    tokenStandard:
                        type: string
                        description: The type of contract this token is from (ERC-721 or ERC-1155)
        NFTSOL:
            title: Solana
            description: Solana
            type: array
            items:
                type: object
                properties:
                    chain:
                        type: string
                        description: The blockchain used in the request, `solana` in this case.
                    mintHash:
                        type: string
                        description: The unique identifier of this NFT on Solana
                    metadata:
                        type: object
                        properties:
                            name:
                                type: string
                            description:
                                type: string
                            image:
                                type: string
                                description: A URL that represents the image for the NFT
                            attributes:
                                type: array
                                items:
                                    type: object
                                    properties:
                                        value:
                                            anyOf:
                                                - type: string
                                                - type: number
                                                - type: boolean
                                                - type: object
                                                - type: array
                                        trait_type:
                                            type: string
                    locator:
                        type: string
        NFTCAR:
            title: Cardano
            description: cardano
            type: array
            items:
                type: object
                properties:
                    chain:
                        type: string
                        description: The blockchain used in the request, `cardano` in this case.
                    assetId:
                        type: string
                        description: The unique identifier of this NFT on Cardano
                    metadata:
                        type: object
                        properties:
                            assetId:
                                type: string
                            name:
                                type: string
                            description:
                                type: string
                            image:
                                type: string
                                format: uri
                            attributes:
                                type: array
                                items:
                                    type: object
                                    properties:
                                        trait_type:
                                            type: string
                                        value:
                                            type: string
                    locator:
                        type: string
        Redirect:
            type: object
            description: The URLs to redirect the user to upon comletion or cancellation of the checkout page.
            properties:
                continue:
                    type: string
                    description: The URL to redirect the customer to when the customer's payment information is accepted.
                cancel:
                    type: string
                    description: The URL to redirect the customer cancels the payment.
        Transfer:
            type: object
            required: [chain, fromAddress, toAddress, tokenMintAddress]
            properties:
                chain:
                    type: string
                    example: ethereum
                tokenId:
                    type: string
                    description: The NFT token ID
                fromAddress:
                    type: string
                    description: The wallet address for the current owner
                toAddress:
                    type: string
                    description: The wallet address to send the NFT to
                tokenMintAddress:
                    type: string
                    description: The NFT token mint address
        Wallet:
            type: object
            properties:
                chain:
                    type: string
                    example: solana
                    description: The blockchain the wallet is on
                publicKey:
                    type: string
                    example: C9vzqFSxKVasf55GdZCAFKhKW9zckzx6ekhhsQTretTa
                    description: The public address of the wallet
        CheckoutMintSuccess:
            type: object
            properties:
                checkoutURL:
                    type: string
                    description: A URL to send the user to in order to capture payment and start the minting process
        VerificationRequestSent:
            type: object
            properties:
                message:
                    type: string
                    example: Verification request sent to user
                    description: A message indicating the result.
                actionId:
                    type: string
                    description: An ID that can be used to poll the [actions API](/api-reference/common/get-action-status).
        TransferPendingVerification:
            type: object
            properties:
                personaUrl:
                    type: string
                    description: A URL to send the user to in order to perform a persona verification. If the user has failed the OTP challenge 3 times, this will be the only option.
        Error:
            type: object
            properties:
                error:
                    type: string
    requestBodies:
        Checkout:
            content:
                application/json:
                    schema:
                        $ref: "#/components/schemas/Checkout"
            required: true
        Transfer:
            content:
                application/json:
                    schema:
                        $ref: "#/components/schemas/Transfer"
            required: true

        ################################################
        ### MINTING REQUEST OBJECTS
        ################################################

        Recipient:
            type: string
            example: email:testy@crossmint.io:polygon
            description: |
                Allowed formats: 

                `<chain>:<address>` or 

                `email:<email_address>:<chain>`

                [see here for more info](/minting/minting-api/specify-recipient)

        ReuploadLinkedFiles:
            type: boolean
            description: "Any URLs in the metadata object will be resolved and reuploaded to IPFS [Default: true]"

        Compressed:
            type: boolean
            description: |
                **Solana only** Use NFT compression for cheaper mint costs [Default: true]

        PaymentsObject:
            type: object
            additionalProperties: false
            description: "Enable payments for this collection by setting `price` and `recipientAddress`"
            properties:
                price:
                    type: string
                    description: "The price of the token in native currency for the selected chain"
                recipientAddress:
                    type: string
                    description: "The wallet address to receive payouts"

                NFTMetadataOptions:
                    description: "Optional if [baseURI](/api-reference/minting/collection/set-base-uri) is set."
                    oneOf:
                        - title: "[EVM] Metadata Object"
                          $ref: "#/components/schemas/NFTMetadata"
                        - title: "[EVM] Metadata URL"
                          description: Enter a URL to a JSON file containing the metadata contents
                          type: string
                          example: https://bafkreici2rl4k4kvnag6gjykuzaaqznveg7bip4y6qx4ekwzukqul23xba.ipfs.nftstorage.link/
                        - title: "[Solana] Metadata Object"
                          $ref: "#/components/schemas/NFTMetadataSolana"
                        - title: "[Solana] Metadata URL"
                          description: Enter a URL to a JSON file containing the metadata contents
                          type: object
                          additionalProperties: false
                          properties:
                              uri:
                                  description: Enter a URL to a JSON file containing the metadata contents
                                  type: string
                                  example: https://bafkreiccjhsemz4jhunfnrw4icx2vqr5ms4ycx5v3ecqvb2uckkgqf5ep4.ipfs.nftstorage.link/
                              name:
                                  type: string
                                  description: "The name of your NFT (Max length: 32)"
                                  example: Solana Test NFT
                                  maxLength: 32
                          required:
                              - uri
                              - name

            NFTMetadata:
                type: object
                additionalProperties: false
                required:
                    - name
                    - image
                    - description
                properties:
                    name:
                        type: string
                        description: "The name of your NFT (Max length: 32)"
                        example: Crossmint Example NFT
                        maxLength: 32
                    image:
                        type: string
                        description: Direct link to your NFT image
                        example: https://www.crossmint.com/assets/crossmint/logo.png
                    description:
                        type: string
                        description: "A brief description of the NFT (Max length: 64)"
                        example: My NFT created via the mint API!
                        maxLength: 64
                    animation_url:
                        type: string
                        example: ""
                        description: |
                            **EVM only**

                            [See more info here](/minting/advanced/nft-metadata)
                    attributes:
                        type: array
                        description: "Add attributes to your NFT"
                        items:
                            type: object
                            additionalProperties: false
                            required:
                                - trait_type
                                - value
                            properties:
                                display_type:
                                    type: string
                                    description: Display name of your attribute
                                    enum:
                                        - boost_number
                                        - boost_percentage
                                        - number
                                trait_type:
                                    type: string
                                    description: The name of the trait
                                value:
                                    type: string
                                    description: The value of the trait

            NFTMetadataSolana:
                type: object
                additionalProperties: false
                required:
                    - name
                    - image
                    - description
                properties:
                    name:
                        type: string
                        description: "The name of your NFT (Max length: 32)"
                        example: Crossmint Example NFT
                        maxLength: 32
                    image:
                        type: string
                        description: Direct link to your NFT image
                        example: https://www.crossmint.com/assets/crossmint/logo.png
                    description:
                        type: string
                        description: "A brief description of the NFT (Max length: 64)"
                        example: My NFT created via the mint API!
                        maxLength: 64
                    symbol:
                        type: string
                        example: "MTK"
                        description: |
                            **Solana only**

                            A shorthand identifier for the token (Max length: 10)
                    attributes:
                        type: array
                        description: "Add attributes to your NFT"
                        items:
                            type: object
                            additionalProperties: false
                            required:
                                - trait_type
                                - value
                            properties:
                                display_type:
                                    type: string
                                    description: Display name of your attribute
                                    enum:
                                        - boost_number
                                        - boost_percentage
                                        - number
                                trait_type:
                                    type: string
                                    description: The name of the trait
                                value:
                                    type: string
                                    description: The value of the trait

        CreateCollectionBody:
            type: object
            additionalProperties: false
            properties:
                chain:
                    description: Blockchain you would like to use for this collection
                    type: string
                    enum:
                        - aptos
                        - arbitrum
                        - arbitrum-sepolia
                        - astar-zkevm
                        - avalanche
                        - avalanche-fuji
                        - base
                        - base-sepolia
                        - bsc
                        - chiliz
                        - chiliz-spicy-testnet
                        #- bsc-testnet
                        - ethereum
                        - ethereum-sepolia
                        - optimism
                        - optimism-sepolia
                        - polygon
                        - polygon-amoy
                        - shape
                        - shape-sepolia
                        - skale-nebula
                        - skale-nebula-testnet
                        - solana
                        - soneium-minato-testnet
                        - soneium
                        - sui
                        - xai
                        - xai-sepolia-testnet
                        - zkyoto
                        - zora
                        - zora-sepolia
                metadata:
                    type: object
                    additionalProperties: false
                    required:
                        - name
                        - imageUrl
                        - description
                    properties:
                        name:
                            type: string
                            description: "Collection name (Max length: 32)"
                            example: Sample NFT Collection
                            maxLength: 32
                        imageUrl:
                            type: string
                            description: URL pointing to an image that represents the collection
                            example: https://www.crossmint.com/assets/crossmint/logo.png
                        description:
                            type: string
                            description: A description of the NFT collection
                            example: This is a sample NFT collection
                            maxLength: 64
                        symbol:
                            type: string
                            description: "Shorthand identifier for the NFT collection (Max length: 10). Defaults to 'TOKEN'"
                            example: TOKEN
                            maxLength: 10
                fungibility:
                    description: Whether or not this collection is fungible. Only EVM collections may be set as semi-fungible
                    type: string
                    enum:
                        - non-fungible
                        - semi-fungible
                    default: non-fungible
                supplyLimit:
                    type: number
                    description: "The maximum number of tokens that can be minted for this collection"
                payments:
                    $ref: "#/components/schemas/PaymentsObject"
                reuploadLinkedFiles:
                    $ref: "#/components/schemas/ReuploadLinkedFiles"
            required:
                - chain
                - metadata

        CreateTemplateBody:
            type: object
            additionalProperties: false
            properties:
                metadata:
                    description: See https://docs.crossmint.com/docs/metadata for more info
                    type: object
                    additionalProperties: false
                    properties:
                        name:
                            type: string
                            description: Template name
                            default: My template
                        image:
                            type: string
                            default: https://www.crossmint.com/assets/crossmint/logo.png
                        description:
                            type: string
                            default: A new collection with its own dedicated smart contract
                            maxLength: 64
                onChain:
                    type: object
                    additionalProperties: false
                    description: Onchain details
                    properties:
                        tokenId:
                            type: string
                            description: Token ID
                            example: "1"
                supply:
                    type: object
                    additionalProperties: false
                    description: Supply details
                    properties:
                        limit:
                            type: integer
                            description: Supply limit, Set to 1 for ERC721.
                            example: 10
                reuploadLinkedFiles:
                    $ref: "#/components/schemas/ReuploadLinkedFiles"

        Supply:
            type: object
            additionalProperties: false
            properties:
                supply:
                    type: object
                    additionalProperties: false
                    description: Supply details
                    properties:
                        limit:
                            type: integer
                            description: Supply limit. Set to 1 for ERC721.
                            example: 10
        Metadata:
            type: object
            additionalProperties: false
            properties:
                name:
                    type: string
                    description: Template name
                    default: My template
                imageUrl:
                    type: string
                    default: https://www.crossmint.com/assets/crossmint/logo.png
                description:
                    type: string
                    default: A new collection with its own dedicated smart contract
                    maxLength: 64

        ################################################
        ### MINTING RESPONSE OBJECTS
        ################################################

        MintResponseSolana200:
            type: object
            properties:
                id:
                    type: string
                onChain:
                    type: object
                    properties:
                        status:
                            type: string
                        chain:
                            type: string
                actionId:
                    type: string

        MintResponseEVM200:
            type: object
            properties:
                id:
                    type: string
                onChain:
                    type: object
                    properties:
                        status:
                            type: string
                        chain:
                            type: string
                        contractAddress:
                            type: string
                actionId:
                    type: string

        MintResponseSolana200Subsequent:
            allOf:
                - $ref: "#/components/schemas/NFTObjectSolana"
                - type: object
                  properties:
                      actionId:
                          type: string
                          description: actionId for the request

        MintStatusSolana200:
            allOf:
                - $ref: "#/components/schemas/NFTObjectSolana"
                - type: object
                  properties:
                      action:
                          type: string
                          description: URL to API endpoint for requesting status
                          example: https://staging.crossmint.com/api/2022-06-09/actions/<actionId>

        NFTObjectSolana:
            type: object
            properties:
                id:
                    type: string
                metadata:
                    type: object
                    properties:
                        name:
                            type: string
                        symbol:
                            type: string
                        seller_fee_basis_points:
                            type: integer
                            example: 0
                        properties:
                            type: object
                            properties:
                                files:
                                    type: array
                                    items:
                                        type: object
                                        properties:
                                            uri:
                                                type: string
                                            type:
                                                type: string
                                category:
                                    type: string
                                creators:
                                    type: array
                                    items:
                                        type: object
                                        properties:
                                            address:
                                                type: string
                                            verified:
                                                type: boolean
                                            share:
                                                type: integer
                        description:
                            type: string
                        image:
                            type: string
                        attributes:
                            type: array
                            items:
                                type: object
                                properties:
                                    trait_type:
                                        type: string
                                    value:
                                        type: string
                onChain:
                    type: object
                    properties:
                        status:
                            type: string
                            example: success
                        mintHash:
                            type: string
                        txId:
                            type: string
                        owner:
                            type: string
                        chain:
                            type: string
                            example: solana

        MintResponseEVM200Subsequent:
            allOf:
                - $ref: "#/components/schemas/NFTObjectEVM"
                - type: object
                  properties:
                      actionId:
                          type: string
                          description: actionId for the request

        NFTObjectEVM:
            type: object
            properties:
                id:
                    type: string
                metadata:
                    type: object
                    properties:
                        name:
                            type: string
                        image:
                            type: string
                        description:
                            type: string
                onChain:
                    type: object
                    properties:
                        status:
                            type: string
                        tokenId:
                            type: string
                        owner:
                            type: string
                        txId:
                            type: string
                        contractAddress:
                            type: string
                        chain:
                            type: string

        CreateCollectionResponse:
            type: object
            properties:
                id:
                    type: string
                    example: "5263650e-6d43-4ed3-9e31-0cf593d076a4"
                metadata:
                    type: object
                    properties:
                        name:
                            type: string
                            example: "Sample NFT Collection"
                        description:
                            type: string
                            example: "This is a sample NFT collection"
                        imageUrl:
                            type: string
                            example: "https://www.crossmint.com/assets/crossmint/logo.png"
                        symbol:
                            type: string
                            example: "TOKEN"
                fungibility:
                    type: string
                    example: "non-fungible"
                onChain:
                    type: object
                    properties:
                        chain:
                            type: string
                            example: "polygon"
                        type:
                            type: string
                            example: "erc-721"
                actionId:
                    type: string
                    example: "5263650e-6d43-4ed3-9e31-0cf593d076a4"

        GetCollectionResponse:
            type: object
            properties:
                id:
                    type: string
                    example: "bb691876-edb3-404c-af3e-c019b8e2ed2c"
                metadata:
                    type: object
                    properties:
                        name:
                            type: string
                            example: "Sample NFT Collection"
                        description:
                            type: string
                            example: "This is a sample NFT collection"
                        imageUrl:
                            type: string
                            example: "https://www.crossmint.com/assets/crossmint/logo.png"
                        symbol:
                            type: string
                            example: "TOKEN"
                fungibility:
                    type: string
                    example: "non-fungible"
                onChain:
                    type: object
                    properties:
                        chain:
                            type: string
                            example: "polygon"
                        type:
                            type: string
                            example: "erc-721"
                        contractAddress:
                            type: string
                            example: "0x9564bD85f3D5677D86244dDb06F06bbD22D9d0DB"
                supplyLimit:
                    type: integer
                    example: 95
                payments:
                    type: object
                    properties:
                        price:
                            type: string
                            example: "0.001"
                        recipientAddress:
                            type: string
                            example: "0x6C3b3225759Cbda68F96378A9F0277B4374f9F06"

        UpdateCollectionResponse:
            type: object
            properties:
                actionId:
                    type: string
                    example: "e9abb61c-9371-447e-af1a-86fb5c073754"
                action:
                    type: string
                    example: "collections.update"
                status:
                    type: string
                    example: "pending"
                data:
                    type: object
                    properties:
                        chain:
                            type: string
                            example: "arbitrum"
                        collection:
                            type: object
                            properties:
                                id:
                                    type: string
                                    example: "42c43e55-f92d-4b25-bc99-d8309b6e1f38"
                                contractAddress:
                                    type: string
                                    example: "0x45ba91BCa91fA0D384022d3C279866811795FcF7"
                        changes:
                            type: array
                            items:
                                type: string
                            example: "supplyLimit"
                startedAt:
                    type: string
                    format: date-time
                    example: "2023-12-30T00:06:56.000Z"
                resource:
                    type: string
                    example: "https://staging.crossmint.com/api/2022-06-09/collections/<collectionId>"

        BurnNFTPendingResponse:
            type: object
            properties:
                actionId:
                    type: string
                    example: "201520fc-e0eb-4698-a2f3-c6b50cc7c894"
                action:
                    type: string
                    example: "nfts.delete"
                status:
                    type: string
                    example: "pending"
                data:
                    type: object
                    properties:
                        chain:
                            type: string
                            example: "polygon"
                        collection:
                            type: object
                            properties:
                                id:
                                    type: string
                                    example: "default-polygon"
                                contractAddress:
                                    type: string
                                    example: "0x67a602CBb306b3DBaaC7ECf55b72EED0E04Dc785"
                        token:
                            type: object
                            properties:
                                id:
                                    type: string
                                    example: "799a6f68-e2ea-4126-8577-4298dfcf900c"
                                tokenId:
                                    type: string
                                    example: "7"
                startedAt:
                    type: string
                    format: date-time
                    example: "2024-01-10T23:01:45.000Z"
                resource:
                    type: string
                    example: "https://staging.crossmint.com/api/2022-06-09/collections/default-polygon/nfts/201520fc-e0eb-4698-a2f3-c6b50cc7c894"

        BurnNFTSucceededResponse:
            type: object
            properties:
                actionId:
                    type: string
                    example: "201520fc-e0eb-4698-a2f3-c6b50cc7c894"
                action:
                    type: string
                    example: "nfts.delete"
                status:
                    type: string
                    example: "succeeded"
                data:
                    type: object
                    properties:
                        chain:
                            type: string
                            example: "polygon"
                        txId:
                            type: string
                            example: "0x69cf6d971e6745f25f683db9c87663839be02bdaa4a70f0724f490d7335b0081"
                        collection:
                            type: object
                            properties:
                                id:
                                    type: string
                                    example: "default-polygon"
                                contractAddress:
                                    type: string
                                    example: "0x67a602CBb306b3DBaaC7ECf55b72EED0E04Dc785"
                        token:
                            type: object
                            properties:
                                id:
                                    type: string
                                    example: "799a6f68-e2ea-4126-8577-4298dfcf900c"
                                tokenId:
                                    type: string
                                    example: "7"
                startedAt:
                    type: string
                    format: date-time
                    example: "2024-01-10T23:01:45.000Z"
                completedAt:
                    type: string
                    format: date-time
                    example: "2024-01-10T23:02:00.000Z"
                resource:
                    type: string
                    example: "https://staging.crossmint.com/api/2022-06-09/collections/default-polygon/nfts/201520fc-e0eb-4698-a2f3-c6b50cc7c894"

        TemplateResponse:
            type: object
            properties:
                templateId:
                    type: string
                    format: uuid
                    example: "20ed0963-0185-49af-b4a0-2de3169bb367"
                metadata:
                    type: object
                    properties:
                        name:
                            type: string
                            example: My Token
                        image:
                            type: string
                            example: ipfs://QmaToZn4VEjF7q4CAudPaNka6AD484xuuEZSXmTLJPDLVE
                        description:
                            type: string
                            example: Sample Token Template
                onChain:
                    type: object
                    properties:
                        tokenId:
                            type: integer
                            example: 1
                supply:
                    type: object
                    properties:
                        limit:
                            type: integer
                            example: 1
                        minted:
                            type: integer
                            example: 0

        BatchMintResponse:
            type: object
            properties:
                results:
                    type: array
                    items:
                        $ref: "#/components/schemas/MintResponseEVM200"
            required:
                - results

        400Response:
            type: object
            properties:
                error:
                    type: boolean
                    example: true
                message:
                    type: string
                    example: "Invalid arguments, please make sure you're following the api specification."

        403Response:
            type: object
            properties:
                error:
                    type: boolean
                    example: true
                message:
                    type: string
                    example: "Forbidden error, please ensure the credentials are correct."

        404Response:
            type: object
            properties:
                error:
                    type: boolean
                    example: true
                message:
                    type: string
                    example: "Not found"

        409Response:
            type: object
            properties:
                error:
                    type: boolean
                    example: true
                message:
                    type: string
                    example: "Already exists"

        424Response:
            type: object
            properties:
                error:
                    type: boolean
                    example: true
                message:
                    type: string
                    example: "Couldn't fetch metadata from the URI defined on the template: <metadata url>. Ensure this URI is available and publicly accessible."

        503Response:
            type: object
            properties:
                error:
                    type: boolean
                    example: true
                message:
                    type: string
                    example: "Please try again in a few minutes. If the issue still persists, contact Crossmint support."

        Error:
            type: object
            properties:
                error:
                    type: boolean
                message:
                    type: string

        ValidationError:
            type: object
            properties:
                index:
                    type: integer
                    description: The index of the NFT that caused the validation error.
                id:
                    type: string
                    description: The idempotent identifier for the NFT, if available.
                message:
                    type: string
                    description: The validation error message.

        BatchError:
            type: object
            properties:
                error:
                    type: boolean
                message:
                    type: string
                validationErrors:
                    type: array
                    items:
                        $ref: "#/components/schemas/ValidationError"
                    description: A list of specific validation errors.
