Publish the product to one store again
const url = 'https://api.crossmart.io/api/v1/workspaces/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/products/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/channels/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/retry';const options = {method: 'POST'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.crossmart.io/api/v1/workspaces/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/products/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/channels/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/retryRe-queues this product’s publish (or update) to this store only, unlike POST …/sync, which resyncs the whole store. A failed or delisted listing becomes pending at once, so the answer shows displayState: publishing; the job runs in the background. Refused (409) when the store is not connected (it needs re-auth or was disconnected) or does not select the product, and (402) when the plan has no room for another active listing.
Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Responses
Section titled “Responses”object
object
Whether the connection’s product selection includes it
The product on this store, in one state computed by the server: draft (not selected for the store), needs_details (selected, but the store setup or the product lacks something publishing needs), ready (publishable, not sent yet), publishing (queued or in flight), published, failed, removing (being taken off) or removed.
For needs_details and failed: a short, merchant-readable reason (what to add, or the channel’s message). Never holds secrets. Null for the other states.
object
How the product joined the store: by hand, by an import, or by the automatic rule
The product’s id on the channel
Where to see it on the channel
Why the last sync failed
What the channel refused the last publish for lacking (such as item_specifics), when the merchant can add it; null otherwise
The channel category it is listed in, on channels with categories (eBay)
object
The category with its ancestors, as the channel shows it
object
object
object
object
object
The price after this step
The variant cost in the channel currency, converted like the price
The stock the channel shows; null when the variant does not track stock
Example
{ "connection": { "channel": "shopify", "status": "CONNECTED", "currencyCode": "USD" }, "displayState": "draft", "displayReason": "Choose a shipping policy in this eBay connection’s listing defaults.", "listing": { "status": "PENDING", "source": "MANUAL", "missingRequirement": "reconnect", "category": { "id": "20625", "name": "Home & Garden > Kitchen, Dining & Bar > Dinnerware & Serving Dishes > Mugs" } }, "override": { "visibility": "VISIBLE", "variantPrices": [ { "price": "79.00", "compareAtPrice": "99.00" } ] }, "variants": [ { "title": "Blue / Large", "price": { "price": "102.99", "source": "override", "steps": [ { "kind": "base", "label": "+15%", "amount": "102.35" } ], "explanation": "$89.00 → +15% → .99 = $102.99", "warnings": [ "missing_cost" ] } } ]}The organization’s plan does not allow this (ENTITLEMENTS_ENFORCED is on). code and feature say why; upgrading the plan resolves it.
object
The code of the organization’s plan
Null is unlimited
How many more the request asked for
Example
{ "statusCode": 402, "error": "Payment Required", "code": "plan_limit_reached", "message": "The Free plan includes 2 connected channels, and 2 are in use. Upgrade the plan to add more.", "feature": "active_listings", "plan": "free"}The product or the store is not in the workspace
The store is not connected, or the product is not selected for it