Look up cart lines
/lines/lookupInformational read showing how Listings surface to Buyers; a Platform does not implement this operation. Public buyer-facing batch line lookup: given up to 500 `(sellerId, skuId)` pairs (the cart’s max line count), return everything a cart needs to describe each line plus its live state. Catalog-first: a pair whose Listing sold out or vanished still returns its canonical Product/SKU display data, with `currentPrice: null` and `available: 0`. Unknown Sellers or skus yield nulls, never an error; the response always has exactly one element per requested pair, in request order.
When to use
Use this operation to look up cart lines.
Informational: a Platform does not implement this buyer-facing operation.
Endpoint
POST /lines/lookup
| Environment | Base URL |
|---|---|
| Sandbox | https://api-sandbox.snapcaster.ca/api/v1/marketplace |
| Production | https://api.snapcaster.ca/api/v1/marketplace |
None.
Request
No parameters.
Request body (application/json)
| Field | Type | Constraints | Meaning | Example |
|---|---|---|---|---|
linesrequired | array of object | maximum items: 500 | The individual records carried by this request, response, or event. | [
{
"sellerId": 1,
"skuId": 1
}
] (generated) |
lines[].sellerIdrequired | integer | exclusive minimum: 0 | Seller Id for the surrounding lines item record. | 1 (generated) |
lines[].skuIdrequired | integer | exclusive minimum: 0 | Sku Id for the surrounding lines item record. | 1 (generated) |
Example
Sandbox is the default. These requests use the contract's canonical field examples.
curl --request POST \ --url 'https://api-sandbox.snapcaster.ca/api/v1/marketplace/lines/lookup' \ --header 'Content-Type: application/json' \ --data '{ "lines": [ { "sellerId": 1, "skuId": 1 } ]}'Response
200
The hydrated cart lines, one per requested pair.
{ "success": true, "data": { "lines": [ { "sellerId": 0, "skuId": 0, "seller": { "name": "string" }, "product": { "productId": 0, "name": "string", "set": "string", "image": "string" }, "sku": { "condition": "string", "language": "string", "finish": "string" }, "currentPrice": 0, "available": 0 } ] }}| Field | Type | Constraints | Meaning | Example |
|---|---|---|---|---|
successrequired | boolean | allowed values: true | Whether the operation completed as requested. | true (generated) |
datarequired | object | None | The operation or event payload. | {
"lines": [
{
"sellerId": 0,
"skuId": 0,
"seller": {
"name": "string"
},
"product": {
"productId": 0,
"name": "string",
"set": "string",
"image": "string"
},
"sku": {
"condition": "string",
"language": "string",
"finish": "string"
},
"currentPrice": 0,
"available": 0
}
]
} (generated) |
data.linesrequired | array of object | None | One element per requested pair, in request order. | [
{
"sellerId": 0,
"skuId": 0,
"seller": {
"name": "string"
},
"product": {
"productId": 0,
"name": "string",
"set": "string",
"image": "string"
},
"sku": {
"condition": "string",
"language": "string",
"finish": "string"
},
"currentPrice": 0,
"available": 0
}
] (generated) |
data.lines[].sellerIdrequired | integer | None | Echo of the requested cart-line key (with `skuId`). | 0 (generated) |
data.lines[].skuIdrequired | integer | None | Echo of the requested cart-line key (with `sellerId`). | 0 (generated) |
data.lines[].sellerrequired | object or null | None | Null when the Seller is unknown. | {
"name": "string"
} (generated) |
data.lines[].seller.namerequired | string | None | Seller display name; not a handle/slug. | string (generated) |
data.lines[].productrequired | object or null | None | Canonical Catalog display data; null when the sku is unknown. | {
"productId": 0,
"name": "string",
"set": "string",
"image": "string"
} (generated) |
data.lines[].product.productIdrequired | integer | None | Product Id for the surrounding product record. | 0 (generated) |
data.lines[].product.namerequired | string or null | None | The human-readable name of the resource. | string (generated) |
data.lines[].product.setrequired | string or null | None | The card set or expansion. | string (generated) |
data.lines[].product.imagerequired | string or null | None | The product image URL shown to the buyer. | string (generated) |
data.lines[].skurequired | object or null | None | Canonical printing descriptors; null when the sku is unknown. | {
"condition": "string",
"language": "string",
"finish": "string"
} (generated) |
data.lines[].sku.conditionrequired | string or null | None | The normalized condition assigned to the card. | string (generated) |
data.lines[].sku.languagerequired | string or null | None | The language of the card printing. | string (generated) |
data.lines[].sku.finishrequired | string or null | None | The physical finish or foil treatment of the card. | string (generated) |
data.lines[].currentPricerequired | integer or null | None | Live Listing price in integer minor units (cents); null when no live Listing backs the pair. | 0 (generated) |
data.lines[].availablerequired | integer | None | Available stock (on-hand minus committed units); 0 when no live Listing backs the pair. | 0 (generated) |
data.lines[].sellerUnavailable | object | None | Present ONLY when this line’s store fails Checkout readiness; its ABSENCE is the ready signal. The line is never pruned, repriced or reduced because of it - `currentPrice` and `available` stay the Listing’s real live state, and the client decides what the Cart shows. The same store failing across several lines carries the same block on each. | {
"sellerId": 0,
"reason": "SELLER_ON_VACATION"
} (generated) |
data.lines[].sellerUnavailable.sellerIdrequired | integer | None | The store that cannot take the money, echoing the line key. | 0 (generated) |
data.lines[].sellerUnavailable.reasonrequired | string | allowed values: SELLER_ON_VACATION, SELLER_UNAVAILABLE | Buyer-safe category. `SELLER_ON_VACATION` means the store paused itself and is otherwise ready; `SELLER_UNAVAILABLE` is every other cause, deliberately indistinguishable so a store’s private account standing is never published. | SELLER_ON_VACATION (generated) |
data.lines[].policy | object | None | The eligibility and buyer-protection decision for this line. | {
"status": "eligible",
"error": {
"code": "string",
"message": "string",
"action": "string"
}
} (generated) |
data.lines[].policy.statusrequired | string | allowed values: eligible, blocked | The current lifecycle or policy state of the resource. | eligible (generated) |
data.lines[].policy.errorrequired | object or null | None | Structured error information returned when the request cannot be completed. | {
"code": "string",
"message": "string",
"action": "string"
} (generated) |
data.lines[].policy.error.coderequired | string | None | The stable machine-readable code for this result. | string (generated) |
data.lines[].policy.error.messagerequired | string | None | A human-readable explanation of the result. | string (generated) |
data.lines[].policy.error.actionrequired | string | None | The corrective action available for this condition. | string (generated) |
data.lines[].disclosures | object or null | None | Provenance, 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) |
data.lines[].disclosures.imageSourcerequired | string | allowed values: catalog | Image Source for the surrounding disclosures record. | catalog (generated) |
data.lines[].disclosures.conditionSourcerequired | string | allowed values: seller_declared | Condition Source for the surrounding disclosures record. | seller_declared (generated) |
data.lines[].disclosures.authenticitySourcerequired | string | allowed values: seller_attestation | Authenticity Source for the surrounding disclosures record. | seller_attestation (generated) |
data.lines[].disclosures.snapcasterInspectedrequired | boolean | allowed values: false | Snapcaster Inspected for the surrounding disclosures record. | false (generated) |
data.lines[].disclosures.snapcasterGradedrequired | boolean | allowed values: false | Snapcaster Graded for the surrounding disclosures record. | false (generated) |
data.lines[].disclosures.snapcasterAuthenticatedrequired | boolean | allowed values: false | Snapcaster Authenticated for the surrounding disclosures record. | false (generated) |
data.lines[].disclosures.gradingStandardrequired | string | allowed values: snapcaster-magic-v1, seller-declared-no-specialist-promise | Grading Standard for the surrounding disclosures record. | snapcaster-magic-v1 (generated) |
data.lines[].disclosures.declaredGraderequired | string or null | None | Declared Grade for the surrounding disclosures record. | string (generated) |
data.lines[].disclosures.buyerProtectionrequired | string | allowed values: magic-grade-and-authenticity, genuine-and-as-described | Buyer Protection for the surrounding disclosures record. | magic-grade-and-authenticity (generated) |
data.lines[].fulfillmentObligation | object or null | None | Fulfillment Obligation for the surrounding lines item record. | {
"sku": "exact",
"printing": "exact",
"language": "exact",
"finish": "exact",
"condition": "declared-or-better"
} (generated) |
data.lines[].fulfillmentObligation.skurequired | string | allowed values: exact | The stock-keeping identity for the exact card offering. | exact (generated) |
data.lines[].fulfillmentObligation.printingrequired | string | allowed values: exact | The exact card printing the Seller is obligated to supply. | exact (generated) |
data.lines[].fulfillmentObligation.languagerequired | string | allowed values: exact | The language of the card printing. | exact (generated) |
data.lines[].fulfillmentObligation.finishrequired | string | allowed values: exact | The physical finish or foil treatment of the card. | exact (generated) |
data.lines[].fulfillmentObligation.conditionrequired | string | allowed values: declared-or-better | The normalized condition assigned to the card. | declared-or-better (generated) |
Errors
| Status | Code | Meaning | Do this |
|---|---|---|---|
| 400 | INVALID_REQUEST | The request failed validation (`INVALID_REQUEST`). | Correct the fields named in the error details, then retry the request. |
Related
Operations
Concepts
Changelog
None.
Schema
Full schema details (51 fields)
Parameters
None.
Request
| Field | Type | Constraints | Meaning | Example |
|---|---|---|---|---|
linesrequired | array of object | maximum items: 500 | The individual records carried by this request, response, or event. | [
{
"sellerId": 1,
"skuId": 1
}
] (generated) |
lines[].sellerIdrequired | integer | exclusive minimum: 0 | Seller Id for the surrounding lines item record. | 1 (generated) |
lines[].skuIdrequired | integer | exclusive minimum: 0 | Sku Id for the surrounding lines item record. | 1 (generated) |
Response 200 (application/json)
| Field | Type | Constraints | Meaning | Example |
|---|---|---|---|---|
successrequired | boolean | allowed values: true | Whether the operation completed as requested. | true (generated) |
datarequired | object | None | The operation or event payload. | {
"lines": [
{
"sellerId": 0,
"skuId": 0,
"seller": {
"name": "string"
},
"product": {
"productId": 0,
"name": "string",
"set": "string",
"image": "string"
},
"sku": {
"condition": "string",
"language": "string",
"finish": "string"
},
"currentPrice": 0,
"available": 0
}
]
} (generated) |
data.linesrequired | array of object | None | One element per requested pair, in request order. | [
{
"sellerId": 0,
"skuId": 0,
"seller": {
"name": "string"
},
"product": {
"productId": 0,
"name": "string",
"set": "string",
"image": "string"
},
"sku": {
"condition": "string",
"language": "string",
"finish": "string"
},
"currentPrice": 0,
"available": 0
}
] (generated) |
data.lines[].sellerIdrequired | integer | None | Echo of the requested cart-line key (with `skuId`). | 0 (generated) |
data.lines[].skuIdrequired | integer | None | Echo of the requested cart-line key (with `sellerId`). | 0 (generated) |
data.lines[].sellerrequired | object or null | None | Null when the Seller is unknown. | {
"name": "string"
} (generated) |
data.lines[].seller.namerequired | string | None | Seller display name; not a handle/slug. | string (generated) |
data.lines[].productrequired | object or null | None | Canonical Catalog display data; null when the sku is unknown. | {
"productId": 0,
"name": "string",
"set": "string",
"image": "string"
} (generated) |
data.lines[].product.productIdrequired | integer | None | Product Id for the surrounding product record. | 0 (generated) |
data.lines[].product.namerequired | string or null | None | The human-readable name of the resource. | string (generated) |
data.lines[].product.setrequired | string or null | None | The card set or expansion. | string (generated) |
data.lines[].product.imagerequired | string or null | None | The product image URL shown to the buyer. | string (generated) |
data.lines[].skurequired | object or null | None | Canonical printing descriptors; null when the sku is unknown. | {
"condition": "string",
"language": "string",
"finish": "string"
} (generated) |
data.lines[].sku.conditionrequired | string or null | None | The normalized condition assigned to the card. | string (generated) |
data.lines[].sku.languagerequired | string or null | None | The language of the card printing. | string (generated) |
data.lines[].sku.finishrequired | string or null | None | The physical finish or foil treatment of the card. | string (generated) |
data.lines[].currentPricerequired | integer or null | None | Live Listing price in integer minor units (cents); null when no live Listing backs the pair. | 0 (generated) |
data.lines[].availablerequired | integer | None | Available stock (on-hand minus committed units); 0 when no live Listing backs the pair. | 0 (generated) |
data.lines[].sellerUnavailable | object | None | Present ONLY when this line’s store fails Checkout readiness; its ABSENCE is the ready signal. The line is never pruned, repriced or reduced because of it - `currentPrice` and `available` stay the Listing’s real live state, and the client decides what the Cart shows. The same store failing across several lines carries the same block on each. | {
"sellerId": 0,
"reason": "SELLER_ON_VACATION"
} (generated) |
data.lines[].sellerUnavailable.sellerIdrequired | integer | None | The store that cannot take the money, echoing the line key. | 0 (generated) |
data.lines[].sellerUnavailable.reasonrequired | string | allowed values: SELLER_ON_VACATION, SELLER_UNAVAILABLE | Buyer-safe category. `SELLER_ON_VACATION` means the store paused itself and is otherwise ready; `SELLER_UNAVAILABLE` is every other cause, deliberately indistinguishable so a store’s private account standing is never published. | SELLER_ON_VACATION (generated) |
data.lines[].policy | object | None | The eligibility and buyer-protection decision for this line. | {
"status": "eligible",
"error": {
"code": "string",
"message": "string",
"action": "string"
}
} (generated) |
data.lines[].policy.statusrequired | string | allowed values: eligible, blocked | The current lifecycle or policy state of the resource. | eligible (generated) |
data.lines[].policy.errorrequired | object or null | None | Structured error information returned when the request cannot be completed. | {
"code": "string",
"message": "string",
"action": "string"
} (generated) |
data.lines[].policy.error.coderequired | string | None | The stable machine-readable code for this result. | string (generated) |
data.lines[].policy.error.messagerequired | string | None | A human-readable explanation of the result. | string (generated) |
data.lines[].policy.error.actionrequired | string | None | The corrective action available for this condition. | string (generated) |
data.lines[].disclosures | object or null | None | Provenance, 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) |
data.lines[].disclosures.imageSourcerequired | string | allowed values: catalog | Image Source for the surrounding disclosures record. | catalog (generated) |
data.lines[].disclosures.conditionSourcerequired | string | allowed values: seller_declared | Condition Source for the surrounding disclosures record. | seller_declared (generated) |
data.lines[].disclosures.authenticitySourcerequired | string | allowed values: seller_attestation | Authenticity Source for the surrounding disclosures record. | seller_attestation (generated) |
data.lines[].disclosures.snapcasterInspectedrequired | boolean | allowed values: false | Snapcaster Inspected for the surrounding disclosures record. | false (generated) |
data.lines[].disclosures.snapcasterGradedrequired | boolean | allowed values: false | Snapcaster Graded for the surrounding disclosures record. | false (generated) |
data.lines[].disclosures.snapcasterAuthenticatedrequired | boolean | allowed values: false | Snapcaster Authenticated for the surrounding disclosures record. | false (generated) |
data.lines[].disclosures.gradingStandardrequired | string | allowed values: snapcaster-magic-v1, seller-declared-no-specialist-promise | Grading Standard for the surrounding disclosures record. | snapcaster-magic-v1 (generated) |
data.lines[].disclosures.declaredGraderequired | string or null | None | Declared Grade for the surrounding disclosures record. | string (generated) |
data.lines[].disclosures.buyerProtectionrequired | string | allowed values: magic-grade-and-authenticity, genuine-and-as-described | Buyer Protection for the surrounding disclosures record. | magic-grade-and-authenticity (generated) |
data.lines[].fulfillmentObligation | object or null | None | Fulfillment Obligation for the surrounding lines item record. | {
"sku": "exact",
"printing": "exact",
"language": "exact",
"finish": "exact",
"condition": "declared-or-better"
} (generated) |
data.lines[].fulfillmentObligation.skurequired | string | allowed values: exact | The stock-keeping identity for the exact card offering. | exact (generated) |
data.lines[].fulfillmentObligation.printingrequired | string | allowed values: exact | The exact card printing the Seller is obligated to supply. | exact (generated) |
data.lines[].fulfillmentObligation.languagerequired | string | allowed values: exact | The language of the card printing. | exact (generated) |
data.lines[].fulfillmentObligation.finishrequired | string | allowed values: exact | The physical finish or foil treatment of the card. | exact (generated) |
data.lines[].fulfillmentObligation.conditionrequired | string | allowed values: declared-or-better | The normalized condition assigned to the card. | declared-or-better (generated) |
Error 400 (application/json)
| Field | Type | Constraints | Meaning | Example |
|---|---|---|---|---|
successrequired | boolean | allowed values: false | Whether the operation completed as requested. | false (generated) |
errorrequired | object | None | Structured error information returned when the request cannot be completed. | {
"code": "UNAUTHORIZED",
"message": "string"
} (generated) |
error.coderequired | string | allowed values: UNAUTHORIZED, INVALID_REQUEST, UNSUPPORTED_API_VERSION, SELLER_SOURCE_EXCLUSIVE, BATCH_TOO_LARGE, RATE_LIMITED, ORDER_NOT_FOUND, SELLER_NOT_FOUND, INVALID_TRANSITION, CHECKOUT_IDEMPOTENCY_KEY_REUSED, CHECKOUT_MANUAL_SELLER_UNSUPPORTED, CHECKOUT_SELF_PURCHASE_NOT_ALLOWED, CHECKOUT_SELLER_UNAVAILABLE, CHECKOUT_NOT_FOUND, FEATURE_DISABLED | Stable public error code the Platform can branch on. | UNAUTHORIZED (generated) |
error.messagerequired | string | None | A human-readable explanation of the result. | string (generated) |
error.details | unknown | None | Additional structured context for diagnosing the result. | {} (generated) |