Each store’s products by display state, and the latest failed listings, as of now
const url = 'https://api.crossmart.io/api/v1/workspaces/example/analytics/listings';const options = {method: 'GET', headers: {'x-api-key': '<x-api-key>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.crossmart.io/api/v1/workspaces/example/analytics/listings \ --header 'x-api-key: <x-api-key>'Counts follow the same rule as each store’s product list. Each failed listing carries displayState, displayReason and displayRequirement, so a client can link to the fix.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Responses
Section titled “Responses”object
Every store, oldest first
object
Why the store needs reconnecting or is in error; null otherwise
Every display state, in order, with how many products are in it: the same states and rule as the store’s product list (draft counts the catalog products not in the store)
object
Products of the catalog in this state on the store
Listings the channel refused on their last sync
The latest listings a channel refused, latest first, each with its display state and requirement so a client can link to the fix
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
When a sync or retry queued its publish, update or delist; null once that job finished or gave up. While set, a selected listing shows displayState: publishing.
The channel category it is listed in, on channels with categories (eBay)
object
The category with its ancestors, as the channel shows 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, including an update of a published listing that a sync or retry queued), 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.
For needs_details: the requirement to fix first, so a client can open the right place. Store-setup requirements (reconnect, account_settings, shipping_policy, payment_policy, return_policy, ship_from_location, listing_setup) come before the product’s (images, active_product, option_names), which the server checks before publishing; category and item_specifics are known once the channel refused a publish. Null for the other states.
The store the listing is on
Failed listings in all, across the stores
Example
{ "stores": [ { "channel": "shopify", "displayName": "Demo Store", "status": "CONNECTED", "states": [ { "state": "draft" } ] } ], "recentFailures": [ { "status": "PENDING", "source": "MANUAL", "missingRequirement": "reconnect", "category": { "id": "20625", "name": "Home & Garden > Kitchen, Dining & Bar > Dinnerware & Serving Dishes > Mugs" }, "displayState": "draft", "displayReason": "Choose a shipping policy in this eBay connection’s listing defaults.", "displayRequirement": "reconnect" } ]}