Refurbed OfferService API

The OfferService API from Refurbed — 9 operation(s) for offerservice.

Operations 9

POST /refb.merchant.v1.OfferService/BatchCreateOffers Batch creates offers. #
POST /refb.merchant.v1.OfferService/BatchDeleteOffers Batch deletes offers. #
POST /refb.merchant.v1.OfferService/BatchGetOffers Batch gets single offers. #
POST /refb.merchant.v1.OfferService/BatchUpdateOffers Batch updates offers. #
POST /refb.merchant.v1.OfferService/CreateOffer Creates a single offer. #
POST /refb.merchant.v1.OfferService/DeleteOffer Deletes a single offer. #
POST /refb.merchant.v1.OfferService/GetOffer Gets a single offer. #
POST /refb.merchant.v1.OfferService/ListOffers Lists all offers. #
POST /refb.merchant.v1.OfferService/UpdateOffer Updates a single offer. #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/refurbed-offerservice-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

refurbed-offerservice-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Affiliate Partner BuybackBidService Offer Service API
  version: '1.0'
  description: The refurbed affiliate partner API allows to retrieve info about markets, products and instances including the buybox info (current price, grading, warranty).
  contact:
    name: Refurbed Affiliate Partner Integrations Team
    email: integrations@refurbed.com
servers:
- url: https://api.refurbed.com
security:
- APIKeyAuth: []
tags:
- name: OfferService
paths:
  /refb.merchant.v1.OfferService/BatchCreateOffers:
    post:
      summary: Batch creates offers.
      description: "Known errors:\n - identical to the CreateOffer operation"
      operationId: BatchCreateOffers
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchCreateOffersResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
      tags:
      - OfferService
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BatchCreateOffersRequest'
        required: true
  /refb.merchant.v1.OfferService/BatchDeleteOffers:
    post:
      summary: Batch deletes offers.
      description: "Known errors:\n - identical to the DeleteOffer operation"
      operationId: BatchDeleteOffers
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchDeleteOffersResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
      tags:
      - OfferService
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BatchDeleteOffersRequest'
        required: true
  /refb.merchant.v1.OfferService/BatchGetOffers:
    post:
      summary: Batch gets single offers.
      description: "Known errors:\n - identical to the GetOffer operation"
      operationId: BatchGetOffers
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchGetOffersResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
      tags:
      - OfferService
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BatchGetOffersRequest'
        required: true
  /refb.merchant.v1.OfferService/BatchUpdateOffers:
    post:
      summary: Batch updates offers.
      description: "Known errors:\n - identical to the UpdateOffer operation"
      operationId: BatchUpdateOffers
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchUpdateOffersResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
      tags:
      - OfferService
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BatchUpdateOffersRequest'
        required: true
  /refb.merchant.v1.OfferService/CreateOffer:
    post:
      summary: Creates a single offer.
      description: "Known errors:\n- UNAUTHENTICATED\n  - when no authorization header is sent\n  - when authorization header is malformed or invalid\n- PERMISSION_DENIED\n  - when the authorized user does not have permissions for this operation\n- ALREADY_EXISTS\n  - when an offer with the given SKU already exists\n- INVALID_ARGUMENT\n  - when the unknown instance is provided\n  - invalid input offer data is provided\n- RESOURCE_EXHAUSTED\n  - when rate limit is exceeded"
      operationId: CreateOffer
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateOfferResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
      tags:
      - OfferService
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateOfferRequest'
        required: true
  /refb.merchant.v1.OfferService/DeleteOffer:
    post:
      summary: Deletes a single offer.
      description: "Known errors:\n- UNAUTHENTICATED\n  - when no authorization header is sent\n  - when authorization header is malformed or invalid\n- PERMISSION_DENIED\n  - when the authorized user does not have permissions for this operation\n- NOT_FOUND\n  - when offer is not found\n- INVALID_ARGUMENT\n  - when the unknown instance is provided\n  - invalid input offer data is provided\n- RESOURCE_EXHAUSTED\n  - when rate limit is exceeded"
      operationId: DeleteOffer
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                properties: {}
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
      tags:
      - OfferService
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteOfferRequest'
        required: true
  /refb.merchant.v1.OfferService/GetOffer:
    post:
      summary: Gets a single offer.
      description: "Known errors:\n- UNAUTHENTICATED\n  - when no authorization header is sent\n  - when authorization header is malformed or invalid\n- PERMISSION_DENIED\n  - when the authorized user does not have permissions for this operation\n- NOT_FOUND\n  - when the offer is not found\n- RESOURCE_EXHAUSTED\n  - when rate limit is exceeded"
      operationId: GetOffer
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetOfferResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
      tags:
      - OfferService
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetOfferRequest'
        required: true
  /refb.merchant.v1.OfferService/ListOffers:
    post:
      summary: Lists all offers.
      description: "Known errors:\n- UNAUTHENTICATED\n  - when no authorization header is sent\n  - when authorization header is malformed or invalid\n- PERMISSION_DENIED\n  - when the authorized user does not have permissions for this operation\n- INVALID_ARGUMENT\n  - when pagination limit is too large (>100)\n  - when both \"ending_before\" and \"starting_after\" are specified in pagination\n- RESOURCE_EXHAUSTED\n  - when rate limit is exceeded"
      operationId: ListOffers
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListOffersResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
      tags:
      - OfferService
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListOffersRequest'
        required: true
  /refb.merchant.v1.OfferService/UpdateOffer:
    post:
      summary: Updates a single offer.
      description: "Known errors:\n- UNAUTHENTICATED\n  - when no authorization header is sent\n  - when authorization header is malformed or invalid\n- PERMISSION_DENIED\n  - when the authorized user does not have permissions for this operation\n- NOT_FOUND\n  - when offer is not found\n- INVALID_ARGUMENT\n  - when the unknown instance is provided\n  - invalid input offer data is provided\n- RESOURCE_EXHAUSTED\n  - when rate limit is exceeded"
      operationId: UpdateOffer
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateOfferResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
      tags:
      - OfferService
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateOfferRequest'
        required: true
components:
  schemas:
    CurrencyCodeFilter:
      type: object
      properties:
        any_of:
          type: array
          items:
            $ref: '#/components/schemas/CurrencyCode'
        none_of:
          type: array
          items:
            $ref: '#/components/schemas/CurrencyCode'
    Status:
      type: object
      properties:
        code:
          type: integer
          format: int32
          description: The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code].
        message:
          type: string
          description: 'A developer-facing error message, which should be in English. Any

            user-facing error message should be localized and sent in the

            [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client.'
        details:
          type: array
          items:
            $ref: '#/components/schemas/Any'
          description: 'A list of messages that carry the error details.  There is a common set of

            message types for APIs to use.'
      description: 'The `Status` type defines a logical error model that is suitable for

        different programming environments, including REST APIs and RPC APIs. It is

        used by [gRPC](https://github.com/grpc). Each `Status` message contains

        three pieces of data: error code, error message, and error details.


        You can find out more about this error model and how to work with it in the

        [API Design Guide](https://cloud.google.com/apis/design/errors).'
    OfferState:
      type: string
      enum:
      - UNSPECIFIED
      - OK
      - UNVERIFIED
      - SUBMITTED
      - PENDING_REVIEW
      - REJECTED
      default: UNSPECIFIED
      description: " - OK: Everything is in order. Final state.\n - UNVERIFIED: Offer needs to be verified in the refurbed merchant interface before\nbeing shown publicly. This state is set on all offers that are created\nusing GTIN/MPN identifiers. Next state: OK.\n - SUBMITTED: Offer has been submitted using catalog attributes, but not processed yet.\nNext state: PENDING_REVIEW.\n - PENDING_REVIEW: Offer has been submitted using catalog attributes, and is awaiting manual review.\nNext state: OK, REJECTED.\n - REJECTED: Offer will not proceed to the marketplace. Final state."
    GetOfferResponse:
      type: object
      properties:
        offer:
          $ref: '#/components/schemas/Offer'
    InstanceDescriptor:
      type: object
      properties:
        lang_code:
          $ref: '#/components/schemas/LanguageCode'
          description: Language used for the attribute values.
        instance_name:
          type: string
          description: 'Name of the instance to create offer for as defined in merchant''s inventory system.

            The name uses the language specified by `lang_code`.'
          required:
          - instance_name
        category_id:
          type: string
          format: int64
          description: Refurbed category id.
          required:
          - category_id
        specification:
          type: array
          items:
            $ref: '#/components/schemas/Specification'
          description: 'List of specification to be used to match an existing instance or create a new one.

            Specification keys, and valid values are defined by a specific template.'
        hints:
          $ref: '#/components/schemas/MatchingHints'
          description: 'Optional set of additional details to be provided to assist the

            matching system effectively identify or narrow down the candidate

            instances to create offer on.'
      required:
      - instance_name
      - category_id
    MatchingHints:
      type: object
      properties:
        refb_product_id:
          type:
          - string
          - 'null'
          format: int64
          description: 'Refurbed product identifier.

            If provided, the matching system will only consider instances of this product,

            and new instances will also be created as variants of it.'
        google_category_id:
          type:
          - string
          - 'null'
          format: int64
          description: 'Identifier of category as per the Google Product Taxonomy, corresponding to

            https://www.google.com/basepages/producttype/taxonomy-with-ids.en-US.txt.

            Using Google Product Taxonomy will allow us to map the proper category the offer

            will be created in.'
        gtin:
          type:
          - string
          - 'null'
          description: 'The GTIN-8, GTIN-12 or GTIN-13 of the instance the offer should be

            created on. Note that EAN-13 and UPC-A codes are GTINs.'
        mpn:
          type:
          - string
          - 'null'
          description: The MPN of the instance the offer should be created on.
    ListOffersResponse:
      type: object
      properties:
        offers:
          type: array
          items:
            $ref: '#/components/schemas/Offer'
          description: The offers found.
        has_more:
          type: boolean
          description: Indicates whether there are more results available.
    OptionalInt64Filter:
      type: object
      properties:
        any_of:
          type: array
          items:
            type: string
            format: int64
        none_of:
          type: array
          items:
            type: string
            format: int64
        is_set:
          type:
          - boolean
          - 'null'
    Create.CreateMarketPrice:
      type: object
      properties:
        market_code:
          type: string
          required:
          - market_code
        currency_code:
          $ref: '#/components/schemas/CurrencyCode'
        price:
          type: string
          required:
          - price
        min_price:
          type:
          - string
          - 'null'
      required:
      - market_code
      - price
    LanguageCode:
      type: string
      enum:
      - UNSPECIFIED
      - DE
      - EN
      default: UNSPECIFIED
      title: Based on the https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
    OfferMarketPrice:
      type: object
      properties:
        offer_id:
          type: string
          format: int64
          description: Id of the offer the price is set for.
        market_code:
          type: string
          description: Code of the market the price is set for.
        market_name:
          type: string
          description: Name of the market the price is set for.
        is_site_market:
          type: boolean
          description: Indicates whether there exists a refurbed website for this market.
        is_calculated:
          type: boolean
          description: 'Indicates whether the price was calculated by a rule or set manually by

            the merchant.'
        currency_code:
          $ref: '#/components/schemas/CurrencyCode'
          description: Currency of prices set.
        price:
          type: string
          description: 'Gross price of this offer. Either set by merchant, or calculated by

            refurbed.'
        min_price:
          type:
          - string
          - 'null'
          description: 'Optional minimum price in market currency for automatic repricing. Either

            set by merchant, or calculated by refurbed.'
        site_market_currency_code:
          $ref: '#/components/schemas/CurrencyCode'
          description: Native currency of the market. Only set for site markets.
        site_market_price:
          type:
          - string
          - 'null'
          description: Price in currency of the site market. Only set for site markets.
        site_market_min_price:
          type:
          - string
          - 'null'
          description: Minimum price in currency of the site market. Only set for site markets.
        visibility:
          $ref: '#/components/schemas/OfferVisibility'
          description: Visibility of the offer in this market. Only set on the current version.
        instance_buybox_state:
          $ref: '#/components/schemas/OfferBuyboxState'
          description: 'Shows if the offer has the BuyBox in this market.

            Only set for site markets in the current offer version.'
        instance_buybox_info:
          $ref: '#/components/schemas/BuyboxInfo'
          description: 'More detailed information about how to win the BuyBox.


            This is only set if the BuyBox state is ELIGIBLE.'
        buybox_scope:
          $ref: '#/components/schemas/OfferBuyboxScope'
          description: It may be set only if market offer is in WON BuyBox state.
      description: 'An offer price defines the price configuration of an offer for a single

        market.'
    OfferTaxationFilter:
      type: object
      properties:
        any_of:
          type: array
          items:
            $ref: '#/components/schemas/OfferTaxation'
        none_of:
          type: array
          items:
            $ref: '#/components/schemas/OfferTaxation'
    BatchDeleteOffersResponse:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/BatchDeleteOffersResponse.Result'
          description: Results of the delete operation. In request order.
    ListOffersRequest.Filter:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/Int64Filter'
        created_at:
          $ref: '#/components/schemas/TimestampRangeFilter'
        instance_id:
          $ref: '#/components/schemas/Int64Filter'
        state:
          $ref: '#/components/schemas/OfferStateFilter'
        name:
          $ref: '#/components/schemas/ListOffersRequest.Filter.OfferNameFilter'
        sku:
          $ref: '#/components/schemas/OfferSKUFilter'
        grading:
          $ref: '#/components/schemas/OfferGradingFilter'
        warranty:
          $ref: '#/components/schemas/OfferWarrantyFilter'
        stock:
          $ref: '#/components/schemas/UInt32RangeFilter'
        shipping_profile_id:
          $ref: '#/components/schemas/Int64Filter'
        secondary_shipping_profile_id:
          $ref: '#/components/schemas/OptionalInt64Filter'
        taxation:
          $ref: '#/components/schemas/OfferTaxationFilter'
        reference_currency_code:
          $ref: '#/components/schemas/CurrencyCodeFilter'
        reference_price:
          $ref: '#/components/schemas/NumericRangeFilter'
        reference_min_price:
          $ref: '#/components/schemas/OptionalNumericRangeFilter'
        battery_condition:
          $ref: '#/components/schemas/BatteryConditionFilter'
    Any:
      type: object
      properties:
        '@type':
          type: string
          description: "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics."
      additionalProperties: {}
      description: "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(&foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := &pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := &pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": <string>,\n      \"lastName\": <string>\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }"
    CreateOfferResponse:
      type: object
      properties:
        offer:
          $ref: '#/components/schemas/Offer'
    BatchUpdateOffersRequest.Update:
      type: object
      properties:
        identifier:
          $ref: '#/components/schemas/OfferIdentifier'
          description: The identifier of the offer to update.
        grading:
          $ref: '#/components/schemas/OfferGrading'
        warranty:
          $ref: '#/components/schemas/OfferWarranty'
        stock:
          type:
          - integer
          - 'null'
          format: int64
        shipping_profile_id:
          type:
          - string
          - 'null'
          format: int64
        secondary_shipping_profile_id:
          type: string
          format: int64
        delete_secondary_shipping_profile_id:
          type: boolean
        taxation:
          $ref: '#/components/schemas/OfferTaxation'
        reference_currency_code:
          $ref: '#/components/schemas/CurrencyCode'
        reference_price:
          type:
          - string
          - 'null'
        reference_min_price:
          type: string
        delete_reference_min_price:
          type: boolean
    BatchDeleteOffersRequest:
      type: object
      properties:
        offers:
          type: array
          items:
            $ref: '#/components/schemas/BatchDeleteOffersRequest.Delete'
          description: Offers to delete. Between 1 and 50.
          required:
          - offers
      required:
      - offers
    UpdateOfferResponse:
      type: object
      properties:
        offer:
          $ref: '#/components/schemas/Offer'
    ListOffersRequest.Filter.OfferNameFilter:
      type: object
      properties:
        matches:
          type:
          - string
          - 'null'
    BatchGetOffersResponse:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/BatchGetOffersResponse.Result'
          description: Results of the get operation. In request order.
    BatchUpdateOffersResponse:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/BatchUpdateOffersResponse.Result'
          description: Results of the update operation. In request order.
    DeleteOfferRequest:
      type: object
      properties:
        identifier:
          $ref: '#/components/schemas/OfferIdentifier'
          description: The identifier of the offer to delete.
    SortOrder:
      type: string
      enum:
      - ASC
      - DESC
      default: ASC
    Int64Pagination:
      type: object
      properties:
        limit:
          type:
          - integer
          - 'null'
          format: int64
          description: 'Limit on the number of results to be returned. Between 1 and 100.

            Default and maximum is 100.'
        ending_before:
          type: string
          format: int64
        starting_after:
          type: string
          format: int64
      description: Paginates resources with int64 primary key.
    BatchCreateOffersResponse:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/BatchCreateOffersResponse.Result'
          description: Results of the create operation. In request order.
    OfferBuyboxState:
      type: string
      enum:
      - UNSPECIFIED
      - WON
      - SHOULD_WIN
      - ELIGIBLE
      - WON_ELSEWHERE
      - INELIGIBLE
      default: UNSPECIFIED
      description: " - WON: Offer currently has the BuyBox.\n - SHOULD_WIN: Current offer configuration should win the BuyBox on next refresh.\n - ELIGIBLE: Offer currently does not have the BuyBox.\n - WON_ELSEWHERE: Offer currently does not have the BuyBox but another offer of this\nmerchant does.\n - INELIGIBLE: Offer cannot reach the BuyBox at this time, e.g. because refurbed's\nBuyBox protection for this product is enabled and the offer's stock\nis too low."
    OfferTaxation:
      type: string
      enum:
      - UNSPECIFIED
      - GROSS
      - MARGINAL
      default: UNSPECIFIED
    Offer:
      type: object
      properties:
        id:
          type: string
          format: int64
          description: Primary key.
        version:
          type: string
          format: int64
          description: Version of this offer.
        is_current:
          type: boolean
          description: Indicates whether this is the currently available version.
        created_at:
          type: string
          format: date-time
          description: When the offer was initially created.
        instance_id:
          type: string
          format: int64
          description: The refurbed instance id ("product variant") this offer is for.
        instance_name:
          type: string
          description: Human-readable name of the instance this offer is for.
        state:
          $ref: '#/components/schemas/OfferState'
          description: The offer's state.
        sku:
          type: string
          description: 'The merchant''s SKU.


            Max. length is 256 unicode characters. SKUs cannot have leading or trailing

            whitespace characters.


            Can be empty string for old offers that did not require SKU to be set.'
        grading:
          $ref: '#/components/schemas/OfferGrading'
          description: Grading of the item sold.
        warranty:
          $ref: '#/components/schemas/OfferWarranty'
          description: Warranty of the item sold.
        stock:
          type: integer
          format: int64
          description: The item's stock.
        shipping_profile_id:
          type: string
          format: int64
          description: 'The shipping profile connected to this offer. This determines in what

            markets the offer is sold and what the shipping costs are.'
        shipping_profile_name:
          type: string
          description: Name of shipping profile.
        secondary_shipping_profile_id:
          type:
          - string
          - 'null'
          format: int64
          description: 'An optional secondary shipping profile id. Can be used to offer express

            shipping next to standard shipping. Has to be different from the primary

            shipping profile.'
        secondary_shipping_profile_name:
          type:
          - string
          - 'null'
          description: 'Name of secondary shipping profile. Only returned if secondary shipping

            profile is set.'
        taxation:
          $ref: '#/components/schemas/OfferTaxation'
          description: The taxation mode set for this offer.
        real_taxation:
          $ref: '#/components/schemas/OfferTaxation'
          description: 'The taxation mode the offer uses. This is either the set offer taxation

            or the global taxation mode (merchant account settings) that overrides it.'
        reference_currency_code:
          $ref: '#/components/schemas/CurrencyCode'
          description: Currency of reference prices.
        reference_price:
          type: string
          description: 'Reference gross price of this offer. The reference price is used to

            calculate prices of calculated offer market prices (the ones that haven''t

            been defined manually).'
        reference_min_price:
          type:
          - string
          - 'null'
          description: 'Optional reference minimum price in market currency for automatic

            repricing. The reference minimum price is used to calculate minimum prices

            of calculated offer market prices (the ones that haven''t been defined

            manually).'
        set_market_prices:
          type: array
          items:
            $ref: '#/components/schemas/OfferMarketPrice'
          description: Configured market prices. Unique by market code.
        calculated_market_prices:
          type: array
          items:
            $ref: '#/components/schemas/OfferMarketPrice'
          description: 'Calculated market prices for all markets on which prices have not been

            defined manually. Unique by market code.'
        battery_condition:
          $ref: '#/components/schemas/BatteryCondition'
          description: The battery condition if set for the offer.
        rejection_reason:
          $ref: '#/components/schemas/RejectionReason'
          description: The rejection reason set if offer was rejected.
      description: A merchant's offer.
    OfferGrading:
      type: string
      enum:
      - UNSPECIFIED
      - A
      - B
      - C
      - AA
      default: UNSPECIFIED
      description: 'The gradi

# --- truncated at 32 KB (52 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/refurbed/refs/heads/main/openapi/refurbed-offerservice-api-openapi.yml