Skip to content
snapcasterDevelopers

BrowseProductOffer

Reusable BrowseProductOffer schema.

Type: object

Fields

FieldTypeConstraintsMeaningExample
lanerequiredstringallowed values: native, handoffWhich lane this offer comes from (#1634, ADR-0068): `native` is a marketplace Seller’s Listing, `handoff` is a Handoff Store’s synced single. Read this first - it says which identity fields carry a value and whether Snapcaster stands behind the sale at all.native (generated)
productIdrequiredintegerNoneProduct Id supplied to or returned by this operation.0 (generated)
sellerIdrequiredinteger or nullNoneCart-line key (with `skuId`); identifies the offering Seller. `null` on a `handoff` offer: a Handoff Store has no seller record and never gets a synthetic one.0 (generated)
storeSlugrequiredstring or nullNoneThe Handoff Store’s slug - its stable identity across the cart, the quote and the permalink. `null` on a `native` offer.string (generated)
variantIdrequiredinteger or nullNoneThe Shopify variant this handoff offer is for; with `storeSlug` it is the handoff cart-line key. `null` on a `native` offer.0 (generated)
skuIdrequiredintegerNoneThe canonical TCGplayer sku id. With `sellerId` it is the NATIVE cart-line key; a `handoff` offer has no `sellerId` and is carted by `storeSlug` + `variantId` instead.0 (generated)
sellerNamerequiredstring or nullNoneDisplay name of whoever is offering the card - the Seller’s store name, or the Handoff Store’s name. Not a handle/slug/seller_code.string (generated)
conditionrequiredstring or nullNoneThe normalized condition assigned to the card.string (generated)
languagerequiredstring or nullNoneThe language of the card printing.string (generated)
finishrequiredstring or nullNoneThe physical finish or foil treatment of the card.string (generated)
isSealedrequiredbooleanNoneTrue when the canonical SKU condition is `Unopened`; matches the Product grid classification.true (generated)
pricerequiredintegerNoneOffer price in integer minor units (cents).0 (generated)
availablerequiredintegerNoneAvailable stock: on-hand minus committed units.0 (generated)
checkoutModerequiredstring or nullallowed values: express, manual, nullThe store's buyer-facing checkout mode (ADR-0025): `express` (native — transacts on Snapcaster) or `manual` (handoff — the Buyer finishes on the Seller's own checkout). `null` only for a legacy doc indexed before the field existed.express (generated)
salesCountrequiredinteger or nullNoneThe store's live number of sales (paid-order count), computed live per request — not indexed. A number for an `express` (native) store (`0` for a genuinely-new one); `null` for a `manual` (handoff) store, which mints no orders, so the client renders nothing.0 (generated)
sellerCoderequiredstring or nullNoneThe store’s PUBLIC handle — the Seller-page identity to link this offer to (`/marketplace/sellers/{sellerCode}`). Resolved live from the database, not the search projection; `null` when the store has no directory row (the offer is still served).string (generated)
reviewScorerequiredobjectNoneA store’s live Review score and the count it is drawn from, always together so a low-sample score reads as low-sample. Computed per request and never indexed. A store with no reviews carries `{ score: null, count: 0 }` — never a 0.0 — and a `manual` (handoff) store, unreviewable in v1, reads the same way. Shared by the Seller page and the Product-page offers.{ "score": 0, "count": 0 } (generated)
reviewScore.scorerequirednumber or nullNoneMean of current non-hidden ratings, rounded to 2 decimals. `null` — NOT 0 — when the store has no reviews yet, so a new store is never shown as a 0.0-rated one.0 (generated)
reviewScore.countrequiredintegerNoneHow many current non-hidden Reviews the mean is drawn from.0 (generated)
poBoxDeliveryrequiredobject or nullNoneThe store’s effective PO Box delivery value. `null` on a `handoff` offer: Snapcaster arranges no shipment on that lane, so it makes no claim either way.{ "status": "available" } (generated)
poBoxDelivery.statusrequiredstringallowed values: available, seller_declines, platform_suspended`available`: the store delivers to PO Boxes. `seller_declines`: the store does not. `platform_suspended`: PO Box delivery is suspended platform-wide (e.g. a Canada Post strike) and outranks the store’s own setting.available (generated)
disclosuresrequiredobject or nullNoneProvenance, grading, and authenticity statements shown to the buyer.{ "imageSource": "catalog", "conditionSource": "seller_declared", "authenticitySource": "seller_attestation", "snapcasterInspected": false, "snapcasterGraded": false, "snapcasterAuthenticated": false, "gradingStandard": "snapcaster-magic-v1", "declaredGrade": "string", "buyerProtection": "magic-grade-and-authenticity" } (generated)
disclosures.imageSourcerequiredstringallowed values: catalogImage Source for the surrounding disclosures record.catalog (generated)
disclosures.conditionSourcerequiredstringallowed values: seller_declaredCondition Source for the surrounding disclosures record.seller_declared (generated)
disclosures.authenticitySourcerequiredstringallowed values: seller_attestationAuthenticity Source for the surrounding disclosures record.seller_attestation (generated)
disclosures.snapcasterInspectedrequiredbooleanallowed values: falseSnapcaster Inspected for the surrounding disclosures record.false (generated)
disclosures.snapcasterGradedrequiredbooleanallowed values: falseSnapcaster Graded for the surrounding disclosures record.false (generated)
disclosures.snapcasterAuthenticatedrequiredbooleanallowed values: falseSnapcaster Authenticated for the surrounding disclosures record.false (generated)
disclosures.gradingStandardrequiredstringallowed values: snapcaster-magic-v1, seller-declared-no-specialist-promiseGrading Standard for the surrounding disclosures record.snapcaster-magic-v1 (generated)
disclosures.declaredGraderequiredstring or nullNoneDeclared Grade for the surrounding disclosures record.string (generated)
disclosures.buyerProtectionrequiredstringallowed values: magic-grade-and-authenticity, genuine-and-as-describedBuyer Protection for the surrounding disclosures record.magic-grade-and-authenticity (generated)
fulfillmentObligationrequiredobject or nullNoneFulfillment Obligation supplied to or returned by this operation.{ "sku": "exact", "printing": "exact", "language": "exact", "finish": "exact", "condition": "declared-or-better" } (generated)
fulfillmentObligation.skurequiredstringallowed values: exactThe stock-keeping identity for the exact card offering.exact (generated)
fulfillmentObligation.printingrequiredstringallowed values: exactThe exact card printing the Seller is obligated to supply.exact (generated)
fulfillmentObligation.languagerequiredstringallowed values: exactThe language of the card printing.exact (generated)
fulfillmentObligation.finishrequiredstringallowed values: exactThe physical finish or foil treatment of the card.exact (generated)
fulfillmentObligation.conditionrequiredstringallowed values: declared-or-betterThe normalized condition assigned to the card.declared-or-better (generated)

Examples

Generated Schema example: Generated BrowseProductOffer
{
"lane": "native",
"productId": 0,
"sellerId": 0,
"storeSlug": "string",
"variantId": 0,
"skuId": 0,
"sellerName": "string",
"condition": "string",
"language": "string",
"finish": "string",
"isSealed": true,
"price": 0,
"available": 0,
"checkoutMode": "express",
"salesCount": 0,
"sellerCode": "string",
"reviewScore": {
"score": 0,
"count": 0
},
"poBoxDelivery": {
"status": "available"
},
"disclosures": {
"imageSource": "catalog",
"conditionSource": "seller_declared",
"authenticitySource": "seller_attestation",
"snapcasterInspected": false,
"snapcasterGraded": false,
"snapcasterAuthenticated": false,
"gradingStandard": "snapcaster-magic-v1",
"declaredGrade": "string",
"buyerProtection": "magic-grade-and-authenticity"
},
"fulfillmentObligation": {
"sku": "exact",
"printing": "exact",
"language": "exact",
"finish": "exact",
"condition": "declared-or-better"
}
}

Source commit: 64bff06fe339e6ffa0ef24cd7da55cb3efefefb9