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

# Create a collection bid

> Create a collection bid



## OpenAPI

````yaml https://imx-openapiv3-mr-sandbox.s3.us-east-2.amazonaws.com/openapi.json post /v1/chains/{chain_name}/orders/collection-bids
openapi: 3.0.3
info:
  title: Immutable zkEVM API
  version: 1.0.0
  description: Immutable Multi Rollup API
  contact:
    name: Immutable API Support
    email: support@immutable.com
    url: https://support.immutable.com
servers:
  - url: https://api.sandbox.immutable.com
security: []
tags:
  - name: activities
    description: Activities Endpoints
    x-displayName: activities
  - name: chains
    description: Chains Endpoints
    x-displayName: chains
  - name: collections
    description: Collections Endpoints
    x-displayName: collections
  - name: nfts
    description: NFTs Endpoints
    x-displayName: nfts
  - name: nft owners
    description: NFT Owner Endpoints
    x-displayName: nft owners
  - name: metadata
    description: NFT Metadata Endpoints
    x-displayName: metadata
  - name: tokens
    description: ERC20 Token Endpoints
    x-displayName: tokens
  - name: demopage
    description: Temporary HTML endpoint for demo purposes
    x-displayName: demopage
  - name: verification
    x-displayName: verification
  - name: operatorallowlist
    x-displayName: operatorallowlist
  - name: crafting
    x-displayName: crafting
  - name: listings
    description: Listings Endpoints
    x-displayName: listings
  - name: orders
    x-displayName: orders
  - name: passport
    description: Passport operations
    x-displayName: passport
  - name: gamefi
    description: team gamefi
    x-displayName: gamefi
  - name: health
    x-displayName: health
  - name: passport profile
    description: Passport Profile endpoints
    x-displayName: passport profile
  - name: feed-items
    x-displayName: feed-items
  - name: assets
    x-displayName: assets
  - name: guardian
    description: Guardian endpoints
    x-displayName: guardian
  - name: pricing
    description: Pricing Endpoints
    x-displayName: pricing
  - name: metadata-search
    x-displayName: metadata-search
paths:
  /v1/chains/{chain_name}/orders/collection-bids:
    post:
      tags:
        - orders
      summary: Create a collection bid
      description: Create a collection bid
      operationId: CreateCollectionBid
      parameters:
        - name: chain_name
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/ChainName'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCollectionBidRequestBody'
      responses:
        '201':
          description: Created response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CollectionBidResult'
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '501':
          $ref: '#/components/responses/NotImplementedError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        '504':
          $ref: '#/components/responses/GatewayTimeout'
components:
  schemas:
    ChainName:
      type: string
      description: The name of chain
      example: imtbl-zkevm-testnet
    CreateCollectionBidRequestBody:
      type: object
      properties:
        account_address:
          type: string
          example: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266'
          pattern: ^0x[a-fA-F0-9]{40}$
        order_hash:
          type: string
          example: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266'
        buy:
          type: array
          description: >-
            Buy item for collection bid should either be ERC721 or ERC1155
            collection item
          items:
            $ref: '#/components/schemas/AssetCollectionItem'
          example:
            - type: ERC721_COLLECTION
              contract_address: '0x692edAd005237c7E737bB2c0F3D8ccCc10D3479E'
              amount: '1'
          minItems: 1
          maxItems: 1
        fees:
          type: array
          description: >-
            Buy fees should only include maker marketplace fees and should be no
            more than two entries as more entires will incur more gas. It is
            best practice to have this as few as possible.
          items:
            $ref: '#/components/schemas/Fee'
          example: []
          minItems: 0
          maxItems: 2
        end_at:
          type: string
          description: Time after which the Order is considered expired
          format: date-time
          example: '2022-03-09T05:00:50.52Z'
        protocol_data:
          $ref: '#/components/schemas/ProtocolData'
        salt:
          type: string
          description: A random value added to the create Order request
          example: '12686911856931635052326433555881236148'
        sell:
          type: array
          description: Sell item for collection bid should be an ERC20 item
          items:
            $ref: '#/components/schemas/ERC20Item'
          example:
            - type: ERC20
              contract_address: '0x692edAd005237c7E737bB2c0F3D8ccCc10D3479E'
              amount: '9750000000000000000'
          minItems: 1
          maxItems: 1
        signature:
          type: string
          description: Digital signature generated by the user for the specific Order
          example: 0x
        start_at:
          type: string
          description: Time after which Order is considered active
          format: date-time
          example: '2022-03-09T05:00:50.52Z'
      example:
        account_address: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266'
        order_hash: '0x0821933d9391bc9bf11a6010fe84776c84b203abff0c1ad781fb4881409c8770'
        sell:
          - type: ERC20
            amount: '9750000000000000000'
            contract_address: '0x0165878A594ca255338adfa4d48449f69242Eb8F'
        fees:
          - type: MAKER_ECOSYSTEM
            amount: '2250000000000000000'
            recipient_address: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92233'
        end_at: '2022-03-10T05:00:50.52Z'
        protocol_data:
          order_type: FULL_RESTRICTED
          counter: '1'
          zone_address: '0x12'
          seaport_address: '0x12'
          seaport_version: '1.5'
        salt: '12686911856931635052326433555881236148'
        buy:
          - type: ERC721_COLLECTION
            contract_address: '0x692edAd005237c7E737bB2c0F3D8ccCc10D3479E'
            amount: '1'
        signature: 0x
        start_at: '2022-03-09T05:00:50.52Z'
      required:
        - account_address
        - order_hash
        - buy
        - sell
        - fees
        - end_at
        - start_at
        - protocol_data
        - salt
        - signature
    CollectionBidResult:
      type: object
      properties:
        result:
          $ref: '#/components/schemas/Order'
      required:
        - result
      example:
        result:
          account_address: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266'
          sell:
            - type: ERC20
              amount: '9750000000000000000'
              contract_address: '0x0165878A594ca255338adfa4d48449f69242Eb8F'
          fees: []
          chain:
            id: eip155:11155111
            name: sepolia
          created_at: '2022-03-07T07:20:50.52Z'
          end_at: '2022-03-10T05:00:50.52Z'
          id: 018792C9-4AD7-8EC4-4038-9E05C598534A
          order_hash: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266'
          protocol_data:
            order_type: PARTIAL_RESTRICTED
            counter: '1'
            zone_address: '0x12'
            seaport_address: '0x12'
            seaport_version: '1.5'
          salt: '12686911856931635052326433555881236148'
          buy:
            - type: ERC721_COLLECTION
              contract_address: '0x692edAd005237c7E737bB2c0F3D8ccCc10D3479E'
              amount: '1'
          signature: 0x
          start_at: '2022-03-09T05:00:50.52Z'
          status:
            name: EXPIRED
          type: COLLECTION_BID
          updated_at: '2022-03-07T07:20:50.52Z'
    AssetCollectionItem:
      oneOf:
        - $ref: '#/components/schemas/ERC721CollectionItem'
        - $ref: '#/components/schemas/ERC1155CollectionItem'
      discriminator:
        propertyName: type
        mapping:
          ERC721_COLLECTION:
            $ref: '#/components/schemas/ERC721CollectionItem'
          ERC1155_COLLECTION:
            $ref: '#/components/schemas/ERC1155CollectionItem'
    Fee:
      type: object
      properties:
        amount:
          type: string
          description: Fee payable to recipient upon settlement
          example: '2250000000000000000'
          pattern: \d+
        type:
          type: string
          description: Fee type
          example: ROYALTY
          enum:
            - ROYALTY
            - MAKER_ECOSYSTEM
            - TAKER_ECOSYSTEM
            - PROTOCOL
        recipient_address:
          type: string
          description: Wallet address of fee recipient
          example: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92233'
          pattern: ^0x[a-fA-F0-9]{40}$
      example:
        amount: '2250000000000000000'
        type: ROYALTY
        recipient_address: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92233'
      required:
        - type
        - amount
        - recipient_address
    ProtocolData:
      type: object
      properties:
        order_type:
          type: string
          description: >-
            Seaport order type. Orders containing ERC721 tokens will need to
            pass in the order type as FULL_RESTRICTED while orders with ERC1155
            tokens will need to pass in the order_type as PARTIAL_RESTRICTED
          example: FULL_RESTRICTED
          enum:
            - FULL_RESTRICTED
            - PARTIAL_RESTRICTED
        counter:
          type: string
          description: big.Int or uint256 string for order counter
          example: '92315562'
        zone_address:
          type: string
          description: Immutable zone address
          example: '0x12'
        seaport_address:
          type: string
          description: Immutable Seaport contract address
          example: '0x12'
        seaport_version:
          type: string
          description: Immutable Seaport contract version
          example: '1.5'
      example:
        order_type: FULL_RESTRICTED
        counter: '92315562'
        zone_address: '0x12'
        seaport_address: '0x12'
        seaport_version: '1.5'
      required:
        - order_type
        - counter
        - zone_address
        - seaport_address
        - seaport_version
    ERC20Item:
      type: object
      properties:
        type:
          type: string
          description: Token type user is offering, which in this case is ERC20
          example: ERC20
          enum:
            - ERC20
        contract_address:
          type: string
          description: Address of ERC20 token
          example: '0x0165878A594ca255338adfa4d48449f69242Eb8F'
          pattern: ^0x[a-fA-F0-9]{40}$
        amount:
          type: string
          description: >-
            A string representing the price at which the user is willing to sell
            the token. This value is provided in the smallest unit of the token
            (e.g., wei for Ethereum).
          example: '9750000000000000000'
          pattern: \d+
      required:
        - type
        - contract_address
        - amount
    Order:
      type: object
      properties:
        account_address:
          type: string
          example: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266'
        buy:
          type: array
          items:
            $ref: '#/components/schemas/Item'
          example:
            - type: NATIVE
              amount: '9750000000000000000'
              contract_address: '0x0165878A594ca255338adfa4d48449f69242Eb8F'
          minItems: 1
          maxItems: 1
        fees:
          type: array
          items:
            $ref: '#/components/schemas/Fee'
          example: []
          minItems: 0
        chain:
          $ref: '#/components/schemas/Chain'
        created_at:
          type: string
          description: Time the Order is created
          format: date-time
          example: '2022-03-07T07:20:50.52Z'
        end_at:
          type: string
          description: Time after which the Order is considered expired
          format: date-time
          example: '2022-03-10T05:00:50.52Z'
        id:
          type: string
          description: Global Order identifier
          example: 018792C9-4AD7-8EC4-4038-9E05C598534A
        order_hash:
          type: string
          example: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266'
        protocol_data:
          $ref: '#/components/schemas/ProtocolData'
        salt:
          type: string
          description: A random value added to the create Order request
          example: '12686911856931635052326433555881236148'
        sell:
          type: array
          items:
            $ref: '#/components/schemas/Item'
          example:
            - type: ERC721
              contract_address: '0x692edAd005237c7E737bB2c0F3D8ccCc10D3479E'
              token_id: '1'
          minItems: 1
          maxItems: 1
        signature:
          type: string
          description: Digital signature generated by the user for the specific Order
          example: 0x
        start_at:
          type: string
          description: Time after which Order is considered active
          format: date-time
          example: '2022-03-09T05:00:50.52Z'
        status:
          $ref: '#/components/schemas/OrderStatus'
        type:
          type: string
          description: Order type
          example: LISTING
          enum:
            - LISTING
            - BID
            - COLLECTION_BID
            - TRAIT_BID
            - METADATA_BID
        updated_at:
          type: string
          description: Time the Order is last updated
          format: date-time
          example: '2022-03-07T07:20:50.52Z'
        fill_status:
          $ref: '#/components/schemas/FillStatus'
        trait_criteria:
          type: array
          description: Trait filters for TRAIT_BID orders; omitted for other order types.
          items:
            $ref: '#/components/schemas/TraitFilter'
          minItems: 1
          example:
            - trait_type: Background
              values:
                - Blue
                - Red
        metadata_id:
          type: string
          format: uuid
          description: >-
            Metadata identifier for METADATA_BID orders; omitted for other order
            types.
          example: 018792C9-4AD7-8EC4-4038-9E05C598534B
      example:
        account_address: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266'
        buy:
          - type: NATIVE
            amount: '9750000000000000000'
            contract_address: '0x0165878A594ca255338adfa4d48449f69242Eb8F'
        fees: []
        chain:
          id: eip155:11155111
          name: sepolia
        created_at: '2022-03-07T07:20:50.52Z'
        end_at: '2022-03-10T05:00:50.52Z'
        id: 018792C9-4AD7-8EC4-4038-9E05C598534A
        protocol_data:
          order_type: FULL_RESTRICTED
          counter: '1'
          zone_address: '0x12'
          seaport_address: '0x12'
          seaport_version: '1.4'
        salt: '12686911856931635052326433555881236148'
        sell:
          - type: ERC721
            contract_address: '0x692edAd005237c7E737bB2c0F3D8ccCc10D3479E'
            token_id: '1'
        signature: 0x
        start_at: '2022-03-09T05:00:50.52Z'
        status:
          name: ACTIVE
        fill_status:
          numerator: 1
          denominator: 2
        type: LISTING
        updated_at: '2022-03-07T07:20:50.52Z'
      required:
        - id
        - type
        - account_address
        - buy
        - sell
        - fees
        - chain
        - created_at
        - end_at
        - start_at
        - updated_at
        - order_hash
        - protocol_data
        - salt
        - signature
        - status
        - fill_status
    APIError400:
      allOf:
        - $ref: '#/components/schemas/BasicAPIError'
        - type: object
          properties:
            code:
              type: string
              description: Error Code
              enum:
                - VALIDATION_ERROR
              example: VALIDATION_ERROR
            details:
              type: object
              nullable: true
              description: Additional details to help resolve the error
          required:
            - code
            - details
    APIError404:
      allOf:
        - $ref: '#/components/schemas/BasicAPIError'
        - type: object
          properties:
            code:
              type: string
              description: Error Code
              enum:
                - RESOURCE_NOT_FOUND
              example: RESOURCE_NOT_FOUND
            details:
              type: object
              nullable: true
              description: Additional details to help resolve the error
          required:
            - code
            - details
    APIError500:
      allOf:
        - $ref: '#/components/schemas/BasicAPIError'
        - type: object
          properties:
            code:
              type: string
              description: Error Code
              enum:
                - INTERNAL_SERVER_ERROR
              example: INTERNAL_SERVER_ERROR
            details:
              type: object
              nullable: true
              description: Additional details to help resolve the error
          required:
            - code
            - details
    APIError501:
      allOf:
        - $ref: '#/components/schemas/BasicAPIError'
        - type: object
          properties:
            code:
              type: string
              description: Error Code
              enum:
                - NOT_IMPLEMENTED_ERROR
              example: NOT_IMPLEMENTED_ERROR
            details:
              type: object
              nullable: true
              description: Additional details to help resolve the error
          required:
            - code
            - details
    APIError503:
      allOf:
        - $ref: '#/components/schemas/BasicAPIError'
        - type: object
          properties:
            code:
              type: string
              description: Error Code
              enum:
                - SERVICE_UNAVAILABLE
              example: SERVICE_UNAVAILABLE
            details:
              type: object
              nullable: true
              description: Additional details to help resolve the error
          required:
            - code
            - details
    APIError504:
      allOf:
        - $ref: '#/components/schemas/BasicAPIError'
        - type: object
          properties:
            code:
              type: string
              description: Error Code
              enum:
                - GATEWAY_TIMEOUT
              example: GATEWAY_TIMEOUT
            details:
              type: object
              nullable: true
              description: Additional details to help resolve the error
          required:
            - code
            - details
    ERC721CollectionItem:
      type: object
      properties:
        type:
          type: string
          description: Token type user is offering, which in this case is ERC721
          example: ERC721_COLLECTION
          enum:
            - ERC721_COLLECTION
        contract_address:
          type: string
          description: Address of ERC721 collection
          example: '0x692edAd005237c7E737bB2c0F3D8ccCc10D3479E'
          pattern: ^0x[a-fA-F0-9]{40}$
        amount:
          type: string
          description: >-
            A string representing the price at which the user is willing to sell
            the token. This value is provided in the smallest unit of the token
            (e.g., wei for Ethereum).
          example: '9750000000000000000'
          pattern: \d+
      required:
        - type
        - contract_address
        - amount
    ERC1155CollectionItem:
      type: object
      properties:
        type:
          type: string
          description: Token type user is offering, which in this case is ERC1155
          example: ERC1155_COLLECTION
          enum:
            - ERC1155_COLLECTION
        contract_address:
          type: string
          description: Address of ERC1155 collection
          example: '0x692edAd005237c7E737bB2c0F3D8ccCc10D3479E'
          pattern: ^0x[a-fA-F0-9]{40}$
        amount:
          type: string
          description: >-
            A string representing the price at which the user is willing to sell
            the token. This value is provided in the smallest unit of the token
            (e.g., wei for Ethereum).
          example: '9750000000000000000'
          pattern: \d+
      required:
        - type
        - contract_address
        - amount
    Item:
      oneOf:
        - $ref: '#/components/schemas/NativeItem'
        - $ref: '#/components/schemas/ERC20Item'
        - $ref: '#/components/schemas/ERC721Item'
        - $ref: '#/components/schemas/ERC1155Item'
        - $ref: '#/components/schemas/ERC721CollectionItem'
        - $ref: '#/components/schemas/ERC1155CollectionItem'
      discriminator:
        propertyName: type
        mapping:
          NATIVE:
            $ref: '#/components/schemas/NativeItem'
          ERC20:
            $ref: '#/components/schemas/ERC20Item'
          ERC721:
            $ref: '#/components/schemas/ERC721Item'
          ERC1155:
            $ref: '#/components/schemas/ERC1155Item'
          ERC721_COLLECTION:
            $ref: '#/components/schemas/ERC721CollectionItem'
          ERC1155_COLLECTION:
            $ref: '#/components/schemas/ERC1155CollectionItem'
    Chain:
      type: object
      description: The chain details
      properties:
        id:
          type: string
          description: The id of chain
          example: eip155:13372
        name:
          type: string
          description: The name of chain
          example: imtbl-zkevm-testnet
      required:
        - id
        - name
    OrderStatus:
      description: The Order status
      oneOf:
        - $ref: '#/components/schemas/CancelledOrderStatus'
        - $ref: '#/components/schemas/PendingOrderStatus'
        - $ref: '#/components/schemas/ActiveOrderStatus'
        - $ref: '#/components/schemas/InactiveOrderStatus'
        - $ref: '#/components/schemas/FilledOrderStatus'
        - $ref: '#/components/schemas/ExpiredOrderStatus'
      discriminator:
        propertyName: name
        mapping:
          CANCELLED:
            $ref: '#/components/schemas/CancelledOrderStatus'
          PENDING:
            $ref: '#/components/schemas/PendingOrderStatus'
          ACTIVE:
            $ref: '#/components/schemas/ActiveOrderStatus'
          INACTIVE:
            $ref: '#/components/schemas/InactiveOrderStatus'
          FILLED:
            $ref: '#/components/schemas/FilledOrderStatus'
          EXPIRED:
            $ref: '#/components/schemas/ExpiredOrderStatus'
    FillStatus:
      description: >-
        The ratio of the order that has been filled, an order that has been
        fully filled will have the same numerator and denominator values.
      type: object
      properties:
        numerator:
          type: string
          description: The numerator of the fill status
          example: '1'
        denominator:
          type: string
          description: The denominator of the fill status
          example: '2'
      required:
        - numerator
        - denominator
    TraitFilter:
      type: object
      description: A trait filter used to match NFTs by metadata attribute
      properties:
        trait_type:
          type: string
          description: The trait type (attribute name)
          example: Background
        values:
          type: array
          description: The trait values to match against
          items:
            type: string
          minItems: 1
          example:
            - Blue
            - Red
      required:
        - trait_type
        - values
    BasicAPIError:
      type: object
      properties:
        message:
          type: string
          description: Error Message
          example: all fields must be provided
        link:
          type: string
          description: Link to IMX documentation that can help resolve this error
          example: https://docs.x.immutable.com/reference/#/
        trace_id:
          type: string
          description: Trace ID of the initial request
          example: e47634b79a5cd6894ddc9639ec4aad26
      required:
        - message
        - link
        - trace_id
    NativeItem:
      type: object
      properties:
        type:
          type: string
          description: >-
            Token type user is offering, which in this case is the native IMX
            token
          example: NATIVE
          enum:
            - NATIVE
        amount:
          type: string
          description: >-
            A string representing the price at which the user is willing to sell
            the token. This value is provided in the smallest unit of the token
            (e.g., wei for Ethereum).
          example: '9750000000000000000'
          pattern: \d+
      required:
        - type
        - amount
    ERC721Item:
      type: object
      properties:
        type:
          type: string
          description: Token type user is offering, which in this case is ERC721
          example: ERC721
          enum:
            - ERC721
        contract_address:
          type: string
          description: Address of ERC721 token
          example: '0x692edAd005237c7E737bB2c0F3D8ccCc10D3479E'
          pattern: ^0x[a-fA-F0-9]{40}$
        token_id:
          type: string
          description: ID of ERC721 token
          example: '1'
          pattern: \d+
      required:
        - type
        - contract_address
        - token_id
    ERC1155Item:
      type: object
      properties:
        type:
          type: string
          description: Token type user is offering, which in this case is ERC1155
          example: ERC1155
          enum:
            - ERC1155
        contract_address:
          type: string
          description: Address of ERC1155 token
          example: '0x692edAd005237c7E737bB2c0F3D8ccCc10D3479E'
          pattern: ^0x[a-fA-F0-9]{40}$
        token_id:
          type: string
          description: ID of ERC1155 token
          example: '1'
          pattern: \d+
        amount:
          type: string
          description: >-
            A string representing the price at which the user is willing to sell
            the token. This value is provided in the smallest unit of the token
            (e.g., wei for Ethereum).
          example: '9750000000000000000'
          pattern: \d+
      required:
        - type
        - contract_address
        - token_id
        - amount
    CancelledOrderStatus:
      type: object
      properties:
        name:
          type: string
          description: >-
            The order status indicating a order is has been cancelled or about
            to be cancelled.
          enum:
            - CANCELLED
        pending:
          type: boolean
          description: Whether the cancellation of the order is pending
          example: false
        cancellation_type:
          type: string
          description: >-
            Whether the cancellation was done on-chain or off-chain or as a
            result of an underfunded account
          enum:
            - ON_CHAIN
            - OFF_CHAIN
            - UNDERFUNDED
          example: ON_CHAIN
      required:
        - name
        - pending
        - cancellation_type
    PendingOrderStatus:
      type: object
      properties:
        name:
          type: string
          description: >-
            The order status that indicates the order is yet to be active due to
            various reasons.
          enum:
            - PENDING
        evaluated:
          type: boolean
          description: Whether the order has been evaluated after its creation
          example: false
        started:
          type: boolean
          description: Whether the order has reached its specified start time
          example: false
      required:
        - name
        - evaluated
        - started
    ActiveOrderStatus:
      type: object
      properties:
        name:
          type: string
          description: The order status that indicates an order can be fulfilled.
          enum:
            - ACTIVE
      required:
        - name
    InactiveOrderStatus:
      type: object
      properties:
        name:
          type: string
          description: The order status that indicates an order cannot be fulfilled.
          enum:
            - INACTIVE
        sufficient_approvals:
          type: boolean
          description: Whether the order offerer has sufficient approvals
          example: false
        sufficient_balances:
          type: boolean
          description: >-
            Whether the order offerer still has sufficient balance to complete
            the order
          example: false
      required:
        - name
        - sufficient_approvals
        - sufficient_balances
    FilledOrderStatus:
      type: object
      properties:
        name:
          type: string
          description: A terminal order status indicating that an order has been fulfilled.
          enum:
            - FILLED
      required:
        - name
    ExpiredOrderStatus:
      type: object
      properties:
        name:
          type: string
          description: >-
            A terminal order status indicating that an order cannot be fulfilled
            due to expiry.
          enum:
            - EXPIRED
      required:
        - name
  responses:
    BadRequest:
      description: Bad Request (400)
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/APIError400'
    NotFound:
      description: The specified resource was not found (404)
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/APIError404'
    InternalServerError:
      description: Internal Server Error (500)
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/APIError500'
    NotImplementedError:
      description: Not Implemented Error (501)
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/APIError501'
    ServiceUnavailable:
      description: >-
        Service Unavailable (503) - RPC or upstream service temporarily
        unavailable
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/APIError503'
    GatewayTimeout:
      description: Gateway Timeout (504) - Upstream validation request timed out
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/APIError504'

````