OpenSea Offer Endpoints API

Offer endpoints for building, creating, fulfilling, and querying offers

OpenAPI Specification

opensea-offer-endpoints-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: OpenSea Account Endpoints Offer Endpoints API
  description: The API for OpenSea
  contact:
    name: OpenSea
    url: https://www.opensea.io
    email: contact@opensea.io
  version: 2.0.0
servers:
- url: https://api.opensea.io
  description: Production server
security:
- ApiKeyAuth: []
tags:
- name: Offer Endpoints
  description: Offer endpoints for building, creating, fulfilling, and querying offers
paths:
  /api/v2/orders/{chain}/{protocol}/offers:
    post:
      tags:
      - Offer Endpoints
      summary: Create an item offer
      description: Create an offer to purchase a single NFT (ERC721 or ERC1155).
      operationId: post_offer
      parameters:
      - name: chain
        in: path
        required: true
        schema:
          type: string
      - name: protocol
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SeaportRequest'
        required: true
      responses:
        '200':
          description: Item offer created successfully
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/Offer'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalError'
  /api/v2/offers:
    post:
      tags:
      - Offer Endpoints
      summary: Create a criteria offer
      description: Create a criteria offer to purchase any NFT in a collection or which matches the specified trait. For trait offers where the Build Offer endpoint returns identifierOrCriteria '0', use that value directly — trait matching is validated server-side at fulfillment time rather than via onchain merkle proof.
      operationId: post_criteria_offer_v2
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OfferWithCriteriaRequest'
        required: true
      responses:
        '200':
          description: Criteria offer created successfully
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/Offer'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalError'
  /api/v2/offers/fulfillment_data:
    post:
      tags:
      - Offer Endpoints
      summary: Fulfill an offer
      description: Retrieve all the information, including signatures, needed to fulfill an offer directly onchain. For trait offers with identifierOrCriteria '0', the server validates that the specified token matches the offer's trait criteria before generating fulfillment data.
      operationId: generate_offer_fulfillment_data_v2
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FullfillmentDataRequest'
        required: true
      responses:
        '200':
          description: Offer fulfillment data retrieved successfully
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/FulfillListingResponse'
        '400':
          description: 'The request is invalid

            The order_hash does not exist

            The chain is not an EVM Chain

            The protocol_address is not a supported Seaport contract

            For other error reasons, see the response data.'
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/FulfillListingResponse'
        '500':
          $ref: '#/components/responses/InternalError'
  /api/v2/offers/build:
    post:
      tags:
      - Offer Endpoints
      summary: Build a criteria offer
      description: Build a portion of a criteria offer including the consideration item, zone, and zone hash needed to post an offer. For trait offers on supported collections, the identifierOrCriteria in the returned consideration will be '0' (no merkle root computation needed). For other collections, a computed merkle root is returned. When identifierOrCriteria is '0', the encodedTokenIds field is informational only and not required for constructing the onchain order.
      operationId: build_offer_v2
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BuildOfferRequest'
        required: true
      responses:
        '200':
          description: Criteria offer built successfully
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/BuildOfferResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalError'
  /api/v2/offers/collection/{slug}:
    get:
      tags:
      - Offer Endpoints
      summary: Get offers by collection
      description: Get collection offers on a collection.
      operationId: get_offers_collection
      parameters:
      - name: slug
        in: path
        description: Unique string to identify a collection on OpenSea
        required: true
        schema:
          type: string
      - name: limit
        in: query
        description: Number of items to return per page
        required: false
        schema:
          type: integer
          format: int32
          description: Number of items to return per page
          example: 20
          maximum: 200
          minimum: 1
        example: 20
      - name: next.value
        in: query
        required: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/OffersResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalError'
  /api/v2/offers/collection/{slug}/traits:
    get:
      tags:
      - Offer Endpoints
      summary: Get trait offers for a collection
      description: 'Get trait offers for a collection. Use the `mode` parameter to select the bid category.


        **Single string trait:** `?mode=STRING&type=Background&value=Red`

        **Multiple string traits:** `?mode=MULTI&traits=[{"traitType":"Background","value":"Red"},{"traitType":"Eyes","value":"Blue"}]`

        **Numeric trait range:** `?mode=NUMERIC&type=Level&min_value=1&max_value=10`


        Omit filter params to discover all bids of that mode (e.g. `?mode=NUMERIC` returns all numeric bids).


        If `mode` is omitted, the mode is inferred from the params for backward compatibility.'
      operationId: get_offers_collection_trait
      parameters:
      - name: slug
        in: path
        description: Unique string to identify a collection on OpenSea
        required: true
        schema:
          type: string
      - name: mode
        in: query
        description: 'Bid category: STRING (single string trait), MULTI (multiple string traits), or NUMERIC (numeric trait range). If omitted, inferred from params.'
        required: false
        schema:
          type: string
          enum:
          - STRING
          - NUMERIC
          - MULTI
      - name: type
        in: query
        description: Trait type name
        required: false
        schema:
          type: string
      - name: value
        in: query
        description: Trait value as string
        required: false
        schema:
          type: string
      - name: float_value
        in: query
        description: Trait value as float
        required: false
        schema:
          type: number
          format: double
      - name: int_value
        in: query
        description: Trait value as integer
        required: false
        schema:
          type: integer
          format: int32
      - name: min_value
        in: query
        description: Minimum value for numeric trait range queries
        required: false
        schema:
          type: number
          format: float
      - name: max_value
        in: query
        description: Maximum value for numeric trait range queries
        required: false
        schema:
          type: number
          format: float
      - name: traits
        in: query
        description: 'JSON array of trait filters for multi-trait queries. Each element has ''traitType'' and ''value'' fields. Example: [{"traitType":"Background","value":"Red"}]'
        required: false
        schema:
          type: string
        example:
        - traitType: Background
          value: Red
      - name: limit
        in: query
        description: Number of items to return per page
        required: false
        schema:
          type: integer
          format: int32
          description: Number of items to return per page
          example: 20
          maximum: 200
          minimum: 1
        example: 20
      - name: next.value
        in: query
        required: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/OffersResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalError'
  /api/v2/offers/collection/{slug}/nfts/{identifier}:
    get:
      tags:
      - Offer Endpoints
      summary: Get offers by NFT
      description: Get offers for an NFT.
      operationId: get_offers_nft
      parameters:
      - name: slug
        in: path
        description: Unique string to identify a collection on OpenSea
        required: true
        schema:
          type: string
      - name: identifier
        in: path
        description: NFT token id
        required: true
        schema:
          type: string
      - name: limit
        in: query
        description: Number of items to return per page
        required: false
        schema:
          type: integer
          format: int32
          description: Number of items to return per page
          example: 20
          maximum: 200
          minimum: 1
        example: 20
      - name: next.value
        in: query
        required: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/OffersResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalError'
  /api/v2/offers/collection/{slug}/nfts/{identifier}/best:
    get:
      tags:
      - Offer Endpoints
      summary: Get best offer by NFT
      description: Get the best offer for an NFT.
      operationId: get_best_offer_nft
      parameters:
      - name: slug
        in: path
        description: Unique string to identify a collection on OpenSea
        required: true
        schema:
          type: string
      - name: identifier
        in: path
        description: NFT token id
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/Offer'
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalError'
  /api/v2/offers/collection/{slug}/all:
    get:
      tags:
      - Offer Endpoints
      summary: Get all offers by collection
      description: Get all offers for a collection.
      operationId: list_offers_collection_all
      parameters:
      - name: slug
        in: path
        description: Unique string to identify a collection on OpenSea
        required: true
        schema:
          type: string
      - name: maker
        in: query
        description: Filter by the wallet address of the order maker
        required: false
        schema:
          type: string
      - name: limit
        in: query
        description: Number of items to return per page
        required: false
        schema:
          type: integer
          format: int32
          description: Number of items to return per page
          example: 20
          maximum: 200
          minimum: 1
        example: 20
      - name: next.value
        in: query
        required: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/OffersResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalError'
components:
  schemas:
    FulfillerObject:
      type: object
      properties:
        address:
          type: string
      required:
      - address
    BuildOfferResponse:
      type: object
      properties:
        partialParameters:
          $ref: '#/components/schemas/PartialParameters'
        criteria:
          $ref: '#/components/schemas/CriteriaRequest'
          description: The criteria to pass through to the POST /api/v2/offers submit step. Includes collection and trait information so trait offers are not accidentally submitted as collection offers.
        encodedTokenIds:
          type: string
          description: Encoded token IDs that can be used to fulfill the criteria offer. When identifierOrCriteria is '0', this field is informational only and not required for order construction.
      required:
      - criteria
      - partialParameters
    CollectionInner:
      type: object
      properties:
        slug:
          type: string
      required:
      - slug
    Address:
      type: object
      properties:
        value:
          type: string
        typeAsString:
          type: string
    CollectionCriteria:
      type: object
      properties:
        slug:
          type: string
      required:
      - slug
    MatchAdvancedOrders:
      allOf:
      - $ref: '#/components/schemas/SeaportCall'
      - type: object
        properties:
          orders:
            type: array
            items:
              $ref: '#/components/schemas/AdvancedOrder'
          criteriaResolvers:
            type: array
            items:
              $ref: '#/components/schemas/CriteriaResolver'
          fulfillments:
            type: array
            items:
              $ref: '#/components/schemas/Fulfillment'
          recipient:
            $ref: '#/components/schemas/Address'
      required:
      - criteriaResolvers
      - fulfillments
      - orders
      - recipient
    TraitCriteria:
      type: object
      properties:
        type:
          type: string
        value:
          type: string
      required:
      - type
      - value
    MatchOrders:
      allOf:
      - $ref: '#/components/schemas/SeaportCall'
      - type: object
        properties:
          orders:
            type: array
            items:
              $ref: '#/components/schemas/Order'
          fulfillments:
            type: array
            items:
              $ref: '#/components/schemas/Fulfillment'
      required:
      - fulfillments
      - orders
    SeaportCall: {}
    AdvancedOrder:
      type: object
      properties:
        value:
          type: array
          items:
            $ref: '#/components/schemas/Type'
        parameters:
          $ref: '#/components/schemas/OrderParameters'
        numerator:
          type: integer
        denominator:
          type: integer
        signature:
          type: string
          format: byte
        extraData:
          type: string
          format: byte
        typeAsString:
          type: string
        nativeValueCopy:
          type: array
          items: {}
    TraitObject:
      type: object
      properties:
        type:
          type: string
        value:
          type: string
      required:
      - type
      - value
    CollectionObject:
      type: object
      properties:
        slug:
          type: string
      required:
      - slug
    ContractCriteria:
      type: object
      properties:
        address:
          type: string
      required:
      - address
    BuildOfferRequest:
      type: object
      properties:
        offerer:
          type: string
        quantity:
          type: integer
          format: int32
        criteria:
          $ref: '#/components/schemas/CriteriaObject'
        protocol_address:
          type: string
        offer_protection_enabled:
          type: boolean
      required:
      - criteria
      - offer_protection_enabled
      - offerer
      - protocol_address
      - quantity
    Fulfillment:
      type: object
      properties:
        value:
          type: array
          items:
            $ref: '#/components/schemas/Type'
        offerComponents:
          type: array
          items:
            $ref: '#/components/schemas/FulfillmentComponent'
        considerationComponents:
          type: array
          items:
            $ref: '#/components/schemas/FulfillmentComponent'
        typeAsString:
          type: string
        nativeValueCopy:
          type: array
          items: {}
    Parameters:
      type: object
      properties:
        offerer:
          type: string
        offer:
          type: array
          items:
            $ref: '#/components/schemas/Item'
        consideration:
          type: array
          items:
            $ref: '#/components/schemas/ConsiderationItem'
        startTime:
          type: string
        endTime:
          type: string
        orderType:
          type: integer
          format: int32
        zone:
          type: string
        zoneHash:
          type: string
        salt:
          type: string
        conduitKey:
          type: string
        totalOriginalConsiderationItems:
          type: integer
          format: int32
        counter:
          type: integer
      required:
      - conduitKey
      - consideration
      - counter
      - endTime
      - offer
      - offerer
      - orderType
      - salt
      - startTime
      - totalOriginalConsiderationItems
      - zone
      - zoneHash
    Consideration:
      type: object
      properties:
        itemType:
          type: integer
          format: int32
        token:
          type: string
        identifierOrCriteria:
          type: string
          description: For criteria-based offers, this is the merkle root of eligible token IDs. For trait offers on supported collections, this will be '0' — trait matching is validated server-side at fulfillment time instead of via onchain merkle proof.
        startAmount:
          type: string
        endAmount:
          type: string
        recipient:
          type: string
      required:
      - endAmount
      - identifierOrCriteria
      - itemType
      - recipient
      - startAmount
      - token
    SeaportProtocolDataModel:
      type: object
      properties:
        parameters:
          $ref: '#/components/schemas/SeaportParameters'
        signature:
          type: string
      required:
      - parameters
      - signature
    Uint256:
      type: object
      properties:
        value:
          type: integer
        bitSize:
          type: integer
          format: int32
        typeAsString:
          type: string
    AdditionalRecipient:
      type: object
      properties:
        value:
          type: array
          items:
            $ref: '#/components/schemas/Type'
        amount:
          type: integer
        recipient:
          type: string
        typeAsString:
          type: string
        nativeValueCopy:
          type: array
          items: {}
    FulfillmentComponent:
      type: object
      properties:
        value:
          type: array
          items:
            $ref: '#/components/schemas/Type'
        orderIndex:
          type: integer
        itemIndex:
          type: integer
        typeAsString:
          type: string
        nativeValueCopy:
          type: array
          items: {}
    NumericTraitCriteria:
      type: object
      properties:
        type:
          type: string
        min:
          type: number
          format: double
        max:
          type: number
          format: double
      required:
      - type
    Item:
      type: object
      properties:
        itemType:
          type: integer
          format: int32
        token:
          type: string
        identifierOrCriteria:
          type: string
        startAmount:
          type: string
        endAmount:
          type: string
      required:
      - endAmount
      - identifierOrCriteria
      - itemType
      - startAmount
      - token
    ListingOrOffer: {}
    OrderAsset:
      type: object
      properties:
        identifier:
          type: string
        contract:
          type: string
      required:
      - contract
    CriteriaResolver:
      type: object
      properties:
        value:
          type: array
          items:
            $ref: '#/components/schemas/Type'
        orderIndex:
          type: integer
        side:
          type: integer
        index:
          type: integer
        identifier:
          type: integer
        criteriaProof:
          type: array
          items:
            type: string
            format: byte
        typeAsString:
          type: string
        nativeValueCopy:
          type: array
          items: {}
    NumericTraitData:
      type: object
      properties:
        type:
          type: string
        min:
          type: number
          format: float
        max:
          type: number
          format: float
      required:
      - type
    FulfillListingResponse:
      type: object
      properties:
        protocol:
          type: string
        fulfillment_data:
          $ref: '#/components/schemas/FulfillmentData'
      required:
      - fulfillment_data
      - protocol
    FulfillmentData:
      type: object
      properties:
        transaction:
          $ref: '#/components/schemas/TransactionData'
        orders:
          type: array
          items:
            $ref: '#/components/schemas/OrderData'
      required:
      - orders
      - transaction
    OfferItem:
      type: object
      properties:
        itemType:
          type: integer
          format: int32
        token:
          type: string
        identifierOrCriteria:
          type: string
        startAmount:
          type: string
        endAmount:
          type: string
      required:
      - endAmount
      - identifierOrCriteria
      - itemType
      - startAmount
      - token
    Price:
      type: object
      properties:
        currency:
          type: string
        decimals:
          type: integer
          format: int32
        value:
          type: string
      required:
      - currency
      - decimals
      - value
    TransactionData:
      type: object
      properties:
        function:
          type: string
        chain:
          type: integer
          format: int32
        to:
          type: string
        value:
          type: string
        input_data:
          oneOf:
          - $ref: '#/components/schemas/FulfillAdvancedOrder'
          - $ref: '#/components/schemas/FulfillAvailableAdvancedOrders'
          - $ref: '#/components/schemas/FulfillAvailableOrders'
          - $ref: '#/components/schemas/FulfillBasicOrder'
          - $ref: '#/components/schemas/FulfillOrder'
          - $ref: '#/components/schemas/MatchAdvancedOrders'
          - $ref: '#/components/schemas/MatchOrders'
      required:
      - chain
      - function
      - input_data
      - to
      - value
    FulfillAvailableAdvancedOrders:
      allOf:
      - $ref: '#/components/schemas/SeaportCall'
      - type: object
        properties:
          orders:
            type: array
            items:
              $ref: '#/components/schemas/AdvancedOrder'
          criteriaResolvers:
            type: array
            items:
              $ref: '#/components/schemas/CriteriaResolver'
          offerFulfillments:
            type: array
            items:
              type: array
              items:
                $ref: '#/components/schemas/FulfillmentComponent'
          considerationFulfillments:
            type: array
            items:
              type: array
              items:
                $ref: '#/components/schemas/FulfillmentComponent'
          fulfillerConduitKey:
            type: string
          recipient:
            $ref: '#/components/schemas/Address'
          maximumFulfilled:
            $ref: '#/components/schemas/Uint256'
      required:
      - considerationFulfillments
      - criteriaResolvers
      - fulfillerConduitKey
      - maximumFulfilled
      - offerFulfillments
      - orders
      - recipient
    Offer:
      allOf:
      - $ref: '#/components/schemas/ListingOrOffer'
      - type: object
        properties:
          order_hash:
            type: string
          chain:
            type: string
          protocol_data:
            $ref: '#/components/schemas/ProtocolData'
          protocol_address:
            type: string
          asset:
            $ref: '#/components/schemas/OrderAsset'
          remaining_quantity:
            type: integer
            format: int64
          order_created_at:
            type: integer
            format: int64
          criteria:
            $ref: '#/components/schemas/Criteria'
          price:
            $ref: '#/components/schemas/Price'
          status:
            type: string
            enum:
            - ACTIVE
            - INACTIVE
            - FULFILLED
            - EXPIRED
            - CANCELLED
      required:
      - chain
      - order_hash
      - price
      - remaining_quantity
      - status
    Criteria:
      type: object
      properties:
        collection:
          $ref: '#/components/schemas/CollectionInner'
        contract:
          $ref: '#/components/schemas/ContractInner'
        traits:
          type: array
          items:
            $ref: '#/components/schemas/TraitData'
        numeric_traits:
          type: array
          items:
            $ref: '#/components/schemas/NumericTraitData'
        encoded_token_ids:
          type: string
    FullfillmentDataRequest:
      type: object
      properties:
        offer:
          $ref: '#/components/schemas/OfferObject'
        fulfiller:
          $ref: '#/components/schemas/FulfillerObject'
        consideration:
          $ref: '#/components/schemas/ConsiderationObject'
        units_to_fill:
          type: integer
          format: int64
          description: Optional quantity of units to fulfill; defaults to 1 for offers
        include_optional_creator_fees:
          type: boolean
          default: false
          description: Whether to include optional creator fees in the fulfillment. If creator fees are already required, this is a no-op. Defaults to false.
      required:
      - fulfiller
      - offer
    FulfillBasicOrder:
      allOf:
      - $ref: '#/components/schemas/SeaportCall'
      - type: object
        properties:
          parameters:
            $ref: '#/components/schemas/BasicOrderParameters'
      required:
      - parameters
    SeaportRequest:
      type: object
      properties:
        parameters:
          $ref: '#/components/schemas/SeaportParameters'
        protocol_address:
          type: string
        signature:
          type: string
      required:
      - parameters
      - protocol_address
      - signature
    FulfillAdvancedOrder:
      allOf:
      - $ref: '#/components/schemas/SeaportCall'
      - type: object
        properties:
          advancedOrder:
            $ref: '#/components/schemas/AdvancedOrder'
          criteriaResolvers:
            type: array
            items:
              $ref: '#/components/schemas/CriteriaResolver'
          fulfillerConduitKey:
            type: string
          recipient:
            $ref: '#/components/schemas/Address'
      required:
      - advancedOrder
      - criteriaResolvers
      - fulfillerConduitKey
      - recipient
    TraitData:
      type: object
      properties:
        type:
          type: string
        value:
          type: string
      required:
      - type
      - value
    CriteriaRequest:
      type: object
      description: Criteria for collection or trait offers. When traits are specified, the offer targets NFTs matching those traits. For supported collections, the identifierOrCriteria (merkle root) will be '0' and trait matching is validated server-side at fulfillment time.
      properties:
        collection:
          $ref: '#/components/schemas/CollectionCriteria'
        contract:
          $ref: '#/components/schemas/ContractCriteria'
        trait:
          $ref: '#/components/schemas/TraitCriteria'
          deprecated: true
          description: 'Deprecated: Use ''traits'' array instead which supports both single and multiple traits.'
        traits:
          type: array
          description: Trait criteria for the offer. Each trait specifies a type and value that target NFTs must match. These traits are validated server-side at fulfillment time.
          items:
            $ref: '#/components/schemas/TraitCriteria'
        numericTraits:
          type: array
          description: Numeric trait criteria for the offer. Each entry specifies a trait type with optional min/max range bounds. Can be combined with categorical traits.
          items:
            $ref: '#/components/schemas/NumericTraitCriteria'
      required:
      - collection
    Order:
      type: object
      properties:
        order_hash:
          type: string
        chain:
          type: string
        protocol_data:
          $ref: '#/components/schemas/ProtocolData'
        protocol_address:
          type: string
        asset:
          $ref: '#/components/schemas/OrderAsset'
        remaining_quantity:
          type: integer
          format: int64
        order_created_at:
          type: integer
          format: int64
      required:
      - chain
      - order_hash
      - remaining_quantity
    ConsiderationItem:
      type: object
      properties:
        itemType:
          type: integer
          format: int32
        token:
          type: string
        identifierOrCriteria:
          type: string
        startAmount:
          type: string
        endAmount:
          type: string
        recipient:
          type: string
      required:
      - endAmount
      - identifierOrCriteria
      - itemType
      - recipient
      - startAmount
      - token
    OfferWithCriteriaRequest:
      type: object
      properties:
        protocol_data:
          $ref: '#/components/schemas/SeaportProtocolDataModel'
        criteria:
          $ref: '#/components/schemas/CriteriaRequest'
        protocol_address:
          type: string
      required:
      - criteria
      - protocol_address
      - protocol_data
    ContractInner:
      type: object
      properties:
        address:
          type: string
      required:
      - address
    CriteriaObject:
      type: object
      properties:
        collection:
          $ref: '#/components/schemas/CollectionObject'
        trait:
          $ref: '#/components/schemas/TraitObject'
          deprecated: true
          description: 'Deprecated: Use ''traits'' array instead which supports both single and multiple traits.'
        traits:
          type: array
          items:
            $ref: '#/components/schemas/TraitObject'
        numericTraits:
          type: array
          items:
            $ref: '#/components/schemas/NumericTraitCriteria'
      required:
      - collection
    ProtocolData:
      type: object
      properties:
        parameters:
          $ref: '#/components/schemas/Parameters'
        signature:
          type: string
      required:
      - parameters
    Type:
      type: object
      properties:
        value: {}
        typeAsString:
          type: string
    OrderParameters:
      type: object
      properties:
        value:
          type: array
          items:
    

# --- truncated at 32 KB (38 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/opensea/refs/heads/main/openapi/opensea-offer-endpoints-api-openapi.yml