---
title: "The product’s listing on one store, for the listing editor | Crossmart Docs"
description: "Documentation for Crossmart, the open-source multichannel platform for sellers and their AI agents."
url: "https://docs.crossmart.io/developers/api/operations/listingeditorcontroller_get_v1/"
---

# The product’s listing on one store, for the listing editor

GET

/api/v1/workspaces/{workspaceId}/products/{productId}/channels/{connectionId}/listing

Select code sample

```sh
curl --request GET \
  --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/listing \
  --header 'x-api-key: <x-api-key>'
```

- Crossmart Cloud

Every field (title, description, tags, images, visibility, and each variant’s price and compare-at price) with the product’s value, the store’s override (null when it follows the product) and the value the store gets, plus the stock limits, category, a summary of the item specifics and the display state. Revert one field with `PATCH …/override`.

## Authorizations

- **[api_key](https://docs.crossmart.io/developers/api/#api_key)**
- **[cookie](https://docs.crossmart.io/developers/api/#cookie)**
- **[bearer](https://docs.crossmart.io/developers/api/#bearer)**

## Parameters

### Path Parameters

**workspaceId**

required

string format: uuid

**productId**

required

string format: uuid

**connectionId**

required

string format: uuid

## Responses

### 200

Media typeapplication/json

object

**productId**

required

string format: uuid

**connection**

required

object

**id**

required

string format: uuid

**channel**

required

string

Allowed values: shopify ebay google_merchant etsy amazon walmart

**displayName**

required

string

**status**

required

string

Allowed values: CONNECTED NEEDS_REAUTH DISCONNECTED ERROR

**currencyCode**

required

string

**selected**

required

Whether the connection’s product selection includes it

boolean

**displayState**

required

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`.

string

Allowed values: draft needs_details ready publishing published failed removing removed

**displayReason**

required

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.

string

nullable

**displayRequirement**

required

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.

string

Allowed values: reconnect account_settings shipping_policy payment_policy return_policy ship_from_location listing_setup item_details shipping_profile processing_profile images active_product category item_specifics option_names

**listing**

required

object

**id**

required

string format: uuid

**status**

required

string

Allowed values: PENDING ACTIVE INACTIVE ERROR DELISTED

**source**

required

How the product joined the store: by hand, by an import, or by the automatic rule

string

Allowed values: MANUAL IMPORT RULE

**externalId**

required

The product’s id on the channel

string

nullable

**externalUrl**

required

Where to see it on the channel

string

nullable

**lastError**

required

Why the last sync failed

string

nullable

**missingRequirement**

required

What the channel refused the last publish for lacking (such as `item_specifics`), when the merchant can add it; null otherwise

string

Allowed values: reconnect account_settings shipping_policy payment_policy return_policy ship_from_location listing_setup item_details shipping_profile processing_profile images active_product category item_specifics option_names

**lastSyncedAt**

required

string format: date-time

nullable

**syncRequestedAt**

required

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`.

string format: date-time

nullable

**category**

required

The channel category it is listed in, on channels with categories (eBay)

object

**id**

required

string

**name**

required

The category with its ancestors, as the channel shows it

string

**title**

required

object

**product**

required

The product’s value

string

**override**

required

Null when it follows the product

string

nullable

**effective**

required

What the store gets

string

**overridden**

required

Whether the store overrides it; reverting sets `override` to null

boolean

**descriptionHtml**

required

object

**product**

required

The product’s value

string

**override**

required

Null when it follows the product

string

nullable

**effective**

required

What the store gets

string

**overridden**

required

Whether the store overrides it; reverting sets `override` to null

boolean

**vendor**

required

The brand the store shows

object

**product**

required

The product’s value

string

nullable

**override**

required

Null when it follows the product

string

nullable

**effective**

required

What the store gets

string

nullable

**overridden**

required

Whether the store overrides it; reverting sets `override` to null

boolean

**tags**

required

object

**product**

required

Array\<string>

**override**

required

Null when it follows the product

Array\<string>

nullable

**effective**

required

Array\<string>

**overridden**

required

Whether the store overrides it; reverting sets `override` to null

boolean

**images**

required

Image URLs in order; an override is a subset of the product’s, in its order

object

**product**

required

Array\<string>

**override**

required

Null when it follows the product

Array\<string>

nullable

**effective**

required

Array\<string>

**overridden**

required

Whether the store overrides it; reverting sets `override` to null

boolean

**visibility**

required

object

**product**

required

`VISIBLE` when the product is active, else `HIDDEN`

string

Allowed values: VISIBLE HIDDEN

**override**

required

string

Allowed values: VISIBLE HIDDEN

**effective**

required

string

Allowed values: VISIBLE HIDDEN

**overridden**

required

Whether the store overrides it; reverting sets `override` to null

boolean

**stock**

required

object

**inventoryBuffer**

required

Units held back from this store

number

nullable

**maxQuantity**

required

The most units this store shows

number

nullable

**variants**

required

Array\<object>

object

**variantId**

required

string format: uuid

**title**

required

string

**sku**

required

string

nullable

**price**

required

object

**product**

required

The catalog price, in the workspace currency

string

**override**

required

string

nullable

**effective**

required

In the store’s currency: the override, else the pricing rule’s result

string

**overridden**

required

Whether the store overrides it; reverting sets `override` to null

boolean

**rulePrice**

required

In the store’s currency: what its pricing rule gives, before a fixed price on the listing. Equal to the effective price unless the price is overridden.

string

**compareAtPrice**

required

object

**product**

required

In the workspace currency

string

nullable

**override**

required

string

nullable

**effective**

required

In the store’s currency

string

nullable

**overridden**

required

Whether the store overrides it; reverting sets `override` to null

boolean

**resolvedPrice**

required

How the effective price was reached

object

**price**

required

string

**compareAtPrice**

required

string

nullable

**source**

required

string

Allowed values: override rule base

**steps**

required

Array\<object>

object

**kind**

required

string

Allowed values: base conversion percent fixed_amount rounding floor override

**label**

required

string

**amount**

required

The price after this step

string

**explanation**

required

string

**warnings**

required

Array\<string>

Allowed values: missing_cost below_floor compare_at_dropped clamped_to_zero no_exchange_rate

**unitCost**

required

The variant cost in the channel currency, converted like the price

string

nullable

**quantity**

required

The stock the store shows; null when the variant does not track stock

number

nullable

**category**

required

object

**supported**

required

Whether the channel has categories (eBay)

boolean

**value**

required

Null until the merchant chose one or a publish picked one

object

**id**

required

string

**name**

required

The category with its ancestors, as the channel shows it

string

**itemSpecifics**

required

object

**supported**

required

Whether the channel has item specifics (eBay)

boolean

**count**

required

How many item specifics the merchant set on the listing

number

**names**

required

Array\<string>

**overrideUpdatedAt**

required

When the overrides last changed; null when there are none

string format: date-time

nullable

#### Example

```json
{
  "connection": {
    "channel": "shopify",
    "status": "CONNECTED",
    "currencyCode": "USD"
  },
  "displayState": "draft",
  "displayReason": "Choose a shipping policy in this eBay connection’s listing defaults.",
  "displayRequirement": "reconnect",
  "listing": {
    "status": "PENDING",
    "source": "MANUAL",
    "missingRequirement": "reconnect",
    "category": {
      "id": "20625",
      "name": "Home & Garden > Kitchen, Dining & Bar > Dinnerware & Serving Dishes > Mugs"
    }
  },
  "visibility": {
    "product": "VISIBLE",
    "override": "VISIBLE",
    "effective": "VISIBLE"
  },
  "variants": [
    {
      "title": "Blue / Large",
      "price": {
        "product": "89.00",
        "override": "79.00",
        "effective": "102.99"
      },
      "rulePrice": "102.99",
      "resolvedPrice": {
        "price": "102.99",
        "source": "override",
        "steps": [
          {
            "kind": "base",
            "label": "+15%",
            "amount": "102.35"
          }
        ],
        "explanation": "$89.00 → +15% → .99 = $102.99",
        "warnings": [
          "missing_cost"
        ]
      }
    }
  ],
  "category": {
    "value": {
      "id": "20625",
      "name": "Home & Garden > Kitchen, Dining & Bar > Dinnerware & Serving Dishes > Mugs"
    }
  },
  "itemSpecifics": {
    "names": [
      "Brand",
      "Color"
    ]
  }
}
```

### 404

The product or the store is not in the workspace
