Seller

Push a vendor's offers

Upserts up to 500 offers keyed by your own SKU. Each offer names exactly one of attachment_id or firearm_id: a SKU is a part or a firearm, never both. A seller maps their catalog to ours once; SKUs naming an id we do not hold come back in unmatched rather than failing the batch, so a mapping error is a review and not a rejected push. Re-pushing an unchanged offer is how you say the price still stands, which is what keeps it out of the 30-day staleness sweep. Prices are integer minor units with an ISO 4217 currency; a float is refused, and currency may be omitted to use your account default. Minor units are not always hundredths (JPY has none and KWD has three), so send the units of the currency you name. Requires an Enterprise key registered to a vendor.

Requires Enterprise tier or higher.

put/v1/vendor/offers

Request

  • Base URL: https://api.gunspec.io
  • URL: https://api.gunspec.io/v1/vendor/offers
  • Auth: one of:
    • API key in header X-API-Key
    • HTTP bearer

Query parameters

vendorstring

Which of your shops to act for. Required only when one key is named by more than one shop; GET /v1/vendor/shops lists them

Request body

Example request

{
  "offers": [
    {
      "sku": "AIM-ACRO-P2",
      "attachment_id": "aimpoint-acro-p-2",
      "price_cents": 129900,
      "currency": "AUD",
      "url": "https://example-optics.com/products/aimpoint-acro-p-2",
      "in_stock": true,
      "region": "AU"
    }
  ]
}

Response

Push a vendor's offers

successboolean required

Always true on a successful response. Every error carries false and an error object instead.

Example response

{
  "success": true,
  "data": {
    "written": 498,
    "unmatched": [
      {
        "sku": "OLD-SKU-1",
        "targetId": "not-in-catalog"
      }
    ]
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.