> ## Documentation Index
> Fetch the complete documentation index at: https://developers.redo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# productMarketPublishingSet

> Publish or hide a product in a destination country where it trips an import restriction, overriding `recommendedPublish`. Returns the product, or null when no owned product trips a current import restriction in that country. The change reaches the sales channel in the background.

**Required scopes:** [`markets_write`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-markets_write)

## Arguments

**countryCode** `[CountryCode!](/docs/api-reference/v3/reference/common/country-code)` *required*

The destination country.

**productId** `ID!` *required*

The id of the product.

**publish** `Boolean!` *required*

True to publish the product there, false to hide it.

## Returns

**productMarketPublishingSet** `[Product](/docs/api-reference/v3/reference/catalog/product)`

A specific sellable product (a variant under a product family).

**fields**

**attribute** `[Attribute](/docs/api-reference/v3/reference/catalog/attribute)`

Look up a single attribute on this product by its name, if set.

**Requires:** [`products_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-products_read)

**fields**

**Arguments**

**name** `String!` *required*

The machine name of the attribute to look up.

**Fields**

**description** `String`

An optional description of what the attribute represents.

**displayName** `String!` *required*

The human-readable label shown for the attribute.

**id** `ID!` *required*

The unique identifier of the attribute's definition.

**name** `String!` *required*

The attribute's machine name, unique within the account.

**type** `[AttributeType!](/docs/api-reference/v3/reference/catalog/attribute-type)` *required*

The data type of the attribute's value.

**value** `[JSON](/docs/api-reference/v3/reference/common/json)`

The attribute's value, resolved to the typed JSON form for its `type` — read `type` to know the shape. E.g. SHORT\_TEXT → a string, WEIGHT → \{ value, unit }, MONEY → \{ amount, currency }. Null if unset. See AttributeType for each type's shape.

**attributes** `[\[Attribute!\]!](/docs/api-reference/v3/reference/catalog/attribute)` *required*

The merchant-defined attributes set on this product.

**fields**

**description** `String`

An optional description of what the attribute represents.

**displayName** `String!` *required*

The human-readable label shown for the attribute.

**id** `ID!` *required*

The unique identifier of the attribute's definition.

**name** `String!` *required*

The attribute's machine name, unique within the account.

**type** `[AttributeType!](/docs/api-reference/v3/reference/catalog/attribute-type)` *required*

The data type of the attribute's value.

**value** `[JSON](/docs/api-reference/v3/reference/common/json)`

The attribute's value, resolved to the typed JSON form for its `type` — read `type` to know the shape. E.g. SHORT\_TEXT → a string, WEIGHT → \{ value, unit }, MONEY → \{ amount, currency }. Null if unset. See AttributeType for each type's shape.

**barcodes** `[String!]!` *required*

Barcodes associated with this product.

**cost** `[Money](/docs/api-reference/v3/reference/common/money)`

The merchant's unit cost for the product.

**fields**

**amount** `[Decimal!](/docs/api-reference/v3/reference/common/decimal)` *required*

The exact amount as a decimal string (e.g. "19.99").

**currency** `String!` *required*

ISO 4217 currency code (e.g. USD).

**createdAt** `[DateTime!](/docs/api-reference/v3/reference/common/date-time)` *required*

When the record was created.

**description** `String!` *required*

The product's long-form description.

**dimensions** `[Dimensions](/docs/api-reference/v3/reference/catalog/dimensions)`

The product's length, width, and height, expressed in a single shared unit.

**fields**

**height** `Float`

The height, in `unit`.

**length** `Float`

The length, in `unit`.

**unit** `[DimensionUnit!](/docs/api-reference/v3/reference/catalog/dimension-unit)` *required*

The unit all three measurements are expressed in.

**width** `Float`

The width, in `unit`.

**hsCode** `String`

The Harmonized System code used for customs.

**id** `ID!` *required*

The id of this product.

**image** `[ProductImage](/docs/api-reference/v3/reference/catalog/product-image)`

The first (default) image for this product, if any.

**Requires:** [`products_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-products_read)

**fields**

**altText** `String!` *required*

Alternative text describing the image.

**default** `Boolean!` *required*

Whether this is the default image.

**id** `ID!` *required*

The id of this image.

**position** `Int!` *required*

The image's ordering position.

**url** `String!` *required*

The public URL of the image.

**images** `[ProductImageConnection!](/docs/api-reference/v3/pagination)` *required*

A paginated list of the product's images.

**Requires:** [`products_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-products_read)

**fields**

**Arguments**

**after** `String`

Forward pagination cursor — returns items after it. Pass an `edges[].cursor` or `pageInfo.endCursor` from a previous page.

**before** `String`

Backward pagination cursor — returns items before it. Pass an `edges[].cursor` or `pageInfo.startCursor` from a previous page.

**first** `Int`

Forward pagination: returns the first N items (max 100, default 25). Use with `after`; mutually exclusive with `last`/`before`.

**last** `Int`

Backward pagination: returns the last N items (max 100, default 25). Use with `before`; mutually exclusive with `first`/`after`.

**Fields**

**edges** `[\[ProductImageEdge!\]!](/docs/api-reference/v3/pagination)` *required*

The list of edges (each a node plus its pagination `cursor`).

**fields**

**cursor** `String!` *required*

Opaque cursor for this item; pass to `after`/`before` to page from here.

**node** `[ProductImage!](/docs/api-reference/v3/reference/catalog/product-image)` *required*

The item at this edge.

**nodes** `[\[ProductImage!\]!](/docs/api-reference/v3/reference/catalog/product-image)` *required*

The nodes in this page, without the edge/cursor wrapper — a convenience over `edges`.

**fields**

**altText** `String!` *required*

Alternative text describing the image.

**default** `Boolean!` *required*

Whether this is the default image.

**id** `ID!` *required*

The id of this image.

**position** `Int!` *required*

The image's ordering position.

**url** `String!` *required*

The public URL of the image.

**pageInfo** `[PageInfo!](/docs/api-reference/v3/pagination)` *required*

Pagination metadata for the current page.

**fields**

**endCursor** `String`

Cursor of the last edge in this page; pass to `after` to page forward.

**hasNextPage** `Boolean!` *required*

Whether more items exist after this page (drives forward pagination with `first`/`after`).

**hasPreviousPage** `Boolean!` *required*

Whether more items exist before this page (drives backward pagination with `last`/`before`).

**startCursor** `String`

Cursor of the first edge in this page; pass to `before` to page backward.

**importRestrictions** `[ProductImportRestrictionConnection!](/docs/api-reference/v3/pagination)` *required*

The import restrictions the product trips, one per destination country and rule. Only countries of enabled markets with restriction screening on are screened, and a restriction drops off 21 days after screening last found it.

**Requires:** [`markets_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-markets_read)

**fields**

**Arguments**

**after** `String`

Forward pagination cursor — returns import restrictions after it.

**before** `String`

Backward pagination cursor — returns import restrictions before it.

**first** `Int`

Forward pagination: returns the first N import restrictions (max 100, default 25). Use with `after`; mutually exclusive with `last`/`before`.

**last** `Int`

Backward pagination: returns the last N import restrictions (max 100, default 25). Use with `before`; mutually exclusive with `first`/`after`.

**Fields**

**edges** `[\[ProductImportRestrictionEdge!\]!](/docs/api-reference/v3/pagination)` *required*

The list of edges (each a node plus its pagination `cursor`).

**fields**

**cursor** `String!` *required*

Opaque cursor for this item; pass to `after`/`before` to page from here.

**node** `[ProductImportRestriction!](/docs/api-reference/v3/reference/markets/product-import-restriction)` *required*

The item at this edge.

**nodes** `[\[ProductImportRestriction!\]!](/docs/api-reference/v3/reference/markets/product-import-restriction)` *required*

The nodes in this page, without the edge/cursor wrapper — a convenience over `edges`.

**fields**

**confidence** `[ImportRestrictionConfidence!](/docs/api-reference/v3/reference/markets/import-restriction-confidence)` *required*

How confident screening is that the restriction applies to this product.

**confidenceScore** `[Decimal](/docs/api-reference/v3/reference/common/decimal)`

The classification confidence behind the match, as a fraction from "0" to "1". Below "0.7" the tier is capped at COMPLIANCE\_INFO. Null when the screening source gives no score.

**countryCode** `[CountryCode!](/docs/api-reference/v3/reference/common/country-code)` *required*

The destination country that imposes the restriction.

**firstSeenAt** `[DateTime!](/docs/api-reference/v3/reference/common/date-time)` *required*

When screening first found the product tripping it.

**lastSeenAt** `[DateTime!](/docs/api-reference/v3/reference/common/date-time)` *required*

When screening last found the product tripping it.

**matchedHsCode** `String!` *required*

The HS code, as classified for the destination country, that the restriction matched.

**restriction** `[ImportRestriction!](/docs/api-reference/v3/reference/markets/import-restriction)` *required*

The rule itself, with its regulation link and whether the merchant has resolved it.

**Requires:** [`markets_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-markets_read)

**summary** `String!` *required*

A plain-language summary of what the restriction requires of this product.

**tier** `[ImportRestrictionTier!](/docs/api-reference/v3/reference/markets/import-restriction-tier)` *required*

How severely the restriction affects this product.

**pageInfo** `[PageInfo!](/docs/api-reference/v3/pagination)` *required*

Pagination metadata for the current page.

**fields**

**endCursor** `String`

Cursor of the last edge in this page; pass to `after` to page forward.

**hasNextPage** `Boolean!` *required*

Whether more items exist after this page (drives forward pagination with `first`/`after`).

**hasPreviousPage** `Boolean!` *required*

Whether more items exist before this page (drives backward pagination with `last`/`before`).

**startCursor** `String`

Cursor of the first edge in this page; pass to `before` to page backward.

**inventoryItems** `[InventoryItemConnection!](/docs/api-reference/v3/pagination)` *required*

Traceable inventory units for this product.

**Requires:** [`inventory_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-inventory_read)

**fields**

**Arguments**

**after** `String`

**before** `String`

**first** `Int`

**last** `Int`

**Fields**

**edges** `[\[InventoryItemEdge!\]!](/docs/api-reference/v3/pagination)` *required*

The list of edges (each a node plus its pagination `cursor`).

**fields**

**cursor** `String!` *required*

Opaque cursor for this item; pass to `after`/`before` to page from here.

**node** `[InventoryItem!](/docs/api-reference/v3/reference/inventory/inventory-item)` *required*

The item at this edge.

**nodes** `[\[InventoryItem!\]!](/docs/api-reference/v3/reference/inventory/inventory-item)` *required*

The nodes in this page, without the edge/cursor wrapper — a convenience over `edges`.

**fields**

**binInventoryLevels** `[BinInventoryLevelConnection!](/docs/api-reference/v3/pagination)` *required*

Bin-level quantity rows for this inventory item.

**Requires:** [`inventory_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-inventory_read)

**fields**

**Arguments**

**after** `String`

Forward pagination cursor — returns items after it. Pass an `edges[].cursor` or `pageInfo.endCursor` from a previous page.

**before** `String`

Backward pagination cursor — returns items before it. Pass an `edges[].cursor` or `pageInfo.startCursor` from a previous page.

**first** `Int`

Forward pagination: returns the first N items (max 100, default 25). Use with `after`; mutually exclusive with `last`/`before`.

**last** `Int`

Backward pagination: returns the last N items (max 100, default 25). Use with `before`; mutually exclusive with `first`/`after`.

**createdAt** `[DateTime!](/docs/api-reference/v3/reference/common/date-time)` *required*

When the record was created.

**disposition** `[InventoryItemDisposition](/docs/api-reference/v3/reference/inventory/inventory-item-disposition)`

Planned disposition for return inventory.

**expirationDate** `[Date](/docs/api-reference/v3/reference/common/date)`

Expiration date for lot-tracked stock. Null when the lot has no expiration set.

**grade** `[InventoryItemGrade](/docs/api-reference/v3/reference/inventory/inventory-item-grade)`

Condition grade, when applicable.

**id** `ID!` *required*

The id of this inventory item.

**itemClass** `[InventoryItemClass](/docs/api-reference/v3/reference/inventory/inventory-item-class)`

Item classification.

**kind** `[InventoryItemKind!](/docs/api-reference/v3/reference/inventory/inventory-item-kind)` *required*

The kind of inventory unit.

**location** `[Location!](/docs/api-reference/v3/reference/inventory/location)` *required*

The warehouse this unit is associated with.

**Requires:** [`locations_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-locations_read)

**lotNumber** `String`

Lot number, when lot tracking applies.

**product** `[InventoryProduct](/docs/api-reference/v3/reference/inventory/inventory-product)`

The product this unit is tied to, when applicable.

**Requires:** [`inventory_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-inventory_read)

**quantity** `Int!` *required*

The number of units this record represents.

**storageLocation** `[StorageLocation](/docs/api-reference/v3/reference/inventory/storage-location)`

The bin or slot where this unit currently resides.

**Requires:** [`locations_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-locations_read)

**updatedAt** `[DateTime!](/docs/api-reference/v3/reference/common/date-time)` *required*

When the record was last updated.

**pageInfo** `[PageInfo!](/docs/api-reference/v3/pagination)` *required*

Pagination metadata for the current page.

**fields**

**endCursor** `String`

Cursor of the last edge in this page; pass to `after` to page forward.

**hasNextPage** `Boolean!` *required*

Whether more items exist after this page (drives forward pagination with `first`/`after`).

**hasPreviousPage** `Boolean!` *required*

Whether more items exist before this page (drives backward pagination with `last`/`before`).

**startCursor** `String`

Cursor of the first edge in this page; pass to `before` to page backward.

**inventoryLevel** `[LocationInventoryLevel](/docs/api-reference/v3/reference/inventory/location-inventory-level)`

This product's inventory level at a single location, if any.

**Requires:** [`inventory_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-inventory_read)

**fields**

**Arguments**

**locationId** `ID!` *required*

The id of the location to fetch the level at.

**Fields**

**available** `Int!` *required*

The quantity available to sell.

**buildable** `Int!` *required*

The quantity that can be built from components.

**committed** `Int!` *required*

The quantity committed to existing orders.

**createdAt** `[DateTime!](/docs/api-reference/v3/reference/common/date-time)` *required*

When the record was created.

**id** `ID!` *required*

The id of this inventory level.

**inventoryProduct** `[InventoryProduct](/docs/api-reference/v3/reference/inventory/inventory-product)`

A fulfillment-oriented view of the product, readable by anyone who can see this level (e.g. a 3PL). For the full product, use `product`.

**Requires:** [`inventory_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-inventory_read)

**fields**

**barcodes** `[String!]!` *required*

Barcodes associated with this product, for scanning.

**dimensions** `[Dimensions](/docs/api-reference/v3/reference/catalog/dimensions)`

The product's length, width, and height in a single shared unit, for box sizing.

**hsCode** `String`

The Harmonized System code used for customs.

**id** `ID!` *required*

The id of this product.

**image** `[ProductImage](/docs/api-reference/v3/reference/catalog/product-image)`

The first (default) image for this product, if any.

**Requires:** [`inventory_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-inventory_read)

**originCountry** `String`

The country of origin, as a country code, for customs.

**sku** `String`

The stock keeping unit identifying this product.

**title** `String!` *required*

The product's title.

**upc** `String`

The Universal Product Code for this product.

**weight** `[Weight](/docs/api-reference/v3/reference/catalog/weight)`

The product's weight, for shipping.

**location** `[Location](/docs/api-reference/v3/reference/inventory/location)`

The location these inventory levels are held at.

**Requires:** [`locations_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-locations_read)

**fields**

**city** `String`

The city of the location's address.

**company** `String`

The company name associated with the location.

**countryCode** `String`

The country code, e.g. "US".

**createdAt** `[DateTime!](/docs/api-reference/v3/reference/common/date-time)` *required*

When the record was created.

**id** `ID!` *required*

The id of this location.

**inventoryItems** `[InventoryItemConnection!](/docs/api-reference/v3/pagination)` *required*

Traceable inventory units at this warehouse.

**Requires:** [`inventory_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-inventory_read)

**fields**

**Arguments**

**after** `String`

Forward pagination cursor — returns items after it. Pass an `edges[].cursor` or `pageInfo.endCursor` from a previous page.

**before** `String`

Backward pagination cursor — returns items before it. Pass an `edges[].cursor` or `pageInfo.startCursor` from a previous page.

**first** `Int`

Forward pagination: returns the first N items (max 100, default 25). Use with `after`; mutually exclusive with `last`/`before`.

**last** `Int`

Backward pagination: returns the last N items (max 100, default 25). Use with `before`; mutually exclusive with `first`/`after`.

**inventoryLevels** `[LocationInventoryLevelConnection!](/docs/api-reference/v3/pagination)` *required*

Per-product inventory levels held at this location.

**Requires:** [`inventory_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-inventory_read)

**fields**

**Arguments**

**after** `String`

Forward pagination cursor — returns items after it. Pass an `edges[].cursor` or `pageInfo.endCursor` from a previous page.

**before** `String`

Backward pagination cursor — returns items before it. Pass an `edges[].cursor` or `pageInfo.startCursor` from a previous page.

**first** `Int`

Forward pagination: returns the first N items (max 100, default 25). Use with `after`; mutually exclusive with `last`/`before`.

**last** `Int`

Backward pagination: returns the last N items (max 100, default 25). Use with `before`; mutually exclusive with `first`/`after`.

**name** `String!` *required*

The location's display name.

**phone** `String`

The contact phone number for the location.

**postalCode** `String`

The postal or ZIP code, e.g. "84101".

**stateCode** `String`

The state or province code, e.g. "UT".

**storageLocations** `[StorageLocationConnection!](/docs/api-reference/v3/pagination)` *required*

Bins and other storage locations within this warehouse.

**Requires:** [`locations_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-locations_read)

**fields**

**Arguments**

**after** `String`

Forward pagination cursor — returns items after it. Pass an `edges[].cursor` or `pageInfo.endCursor` from a previous page.

**before** `String`

Backward pagination cursor — returns items before it. Pass an `edges[].cursor` or `pageInfo.startCursor` from a previous page.

**first** `Int`

Forward pagination: returns the first N items (max 100, default 25). Use with `after`; mutually exclusive with `last`/`before`.

**last** `Int`

Backward pagination: returns the last N items (max 100, default 25). Use with `before`; mutually exclusive with `first`/`after`.

**street1** `String`

The first line of the street address.

**street2** `String`

The second line of the street address.

**updatedAt** `[DateTime!](/docs/api-reference/v3/reference/common/date-time)` *required*

When the record was last updated.

**product** `[Product](/docs/api-reference/v3/reference/catalog/product)`

The full product these inventory levels are for. Only readable by the account that owns the product; use `inventoryProduct` otherwise.

**Requires:** [`products_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-products_read)

**quantity** `Int!` *required*

The total quantity on hand at the location.

**reserved** `Int!` *required*

The quantity reserved across all reservation buckets.

**updatedAt** `[DateTime!](/docs/api-reference/v3/reference/common/date-time)` *required*

When the record was last updated.

**inventoryLevels** `[LocationInventoryLevelConnection!](/docs/api-reference/v3/pagination)` *required*

Per-location inventory levels for this product.

**Requires:** [`inventory_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-inventory_read)

**fields**

**Arguments**

**after** `String`

Forward pagination cursor — returns items after it. Pass an `edges[].cursor` or `pageInfo.endCursor` from a previous page.

**before** `String`

Backward pagination cursor — returns items before it. Pass an `edges[].cursor` or `pageInfo.startCursor` from a previous page.

**first** `Int`

Forward pagination: returns the first N items (max 100, default 25). Use with `after`; mutually exclusive with `last`/`before`.

**last** `Int`

Backward pagination: returns the last N items (max 100, default 25). Use with `before`; mutually exclusive with `first`/`after`.

**Fields**

**edges** `[\[LocationInventoryLevelEdge!\]!](/docs/api-reference/v3/pagination)` *required*

The list of edges (each a node plus its pagination `cursor`).

**fields**

**cursor** `String!` *required*

Opaque cursor for this item; pass to `after`/`before` to page from here.

**node** `[LocationInventoryLevel!](/docs/api-reference/v3/reference/inventory/location-inventory-level)` *required*

The item at this edge.

**nodes** `[\[LocationInventoryLevel!\]!](/docs/api-reference/v3/reference/inventory/location-inventory-level)` *required*

The nodes in this page, without the edge/cursor wrapper — a convenience over `edges`.

**fields**

**available** `Int!` *required*

The quantity available to sell.

**buildable** `Int!` *required*

The quantity that can be built from components.

**committed** `Int!` *required*

The quantity committed to existing orders.

**createdAt** `[DateTime!](/docs/api-reference/v3/reference/common/date-time)` *required*

When the record was created.

**id** `ID!` *required*

The id of this inventory level.

**inventoryProduct** `[InventoryProduct](/docs/api-reference/v3/reference/inventory/inventory-product)`

A fulfillment-oriented view of the product, readable by anyone who can see this level (e.g. a 3PL). For the full product, use `product`.

**Requires:** [`inventory_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-inventory_read)

**location** `[Location](/docs/api-reference/v3/reference/inventory/location)`

The location these inventory levels are held at.

**Requires:** [`locations_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-locations_read)

**product** `[Product](/docs/api-reference/v3/reference/catalog/product)`

The full product these inventory levels are for. Only readable by the account that owns the product; use `inventoryProduct` otherwise.

**Requires:** [`products_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-products_read)

**quantity** `Int!` *required*

The total quantity on hand at the location.

**reserved** `Int!` *required*

The quantity reserved across all reservation buckets.

**updatedAt** `[DateTime!](/docs/api-reference/v3/reference/common/date-time)` *required*

When the record was last updated.

**pageInfo** `[PageInfo!](/docs/api-reference/v3/pagination)` *required*

Pagination metadata for the current page.

**fields**

**endCursor** `String`

Cursor of the last edge in this page; pass to `after` to page forward.

**hasNextPage** `Boolean!` *required*

Whether more items exist after this page (drives forward pagination with `first`/`after`).

**hasPreviousPage** `Boolean!` *required*

Whether more items exist before this page (drives backward pagination with `last`/`before`).

**startCursor** `String`

Cursor of the first edge in this page; pass to `before` to page backward.

**marketPublishing** `[\[ProductMarketPublishing!\]](/docs/api-reference/v3/reference/markets/product-market-publishing)`

Publishing per destination country where the product trips an import restriction, or has a publish override. Only countries of enabled markets with restriction screening on are screened. Null when publishing can't be read.

**Requires:** [`markets_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-markets_read)

**fields**

**countryCode** `[CountryCode!](/docs/api-reference/v3/reference/common/country-code)` *required*

The destination country.

**publishOverride** `Boolean`

The merchant's override: true to publish, false to hide. Null when there is none, so `recommendedPublish` applies.

**published** `Boolean!` *required*

Whether the product is published there: the override when set, otherwise `recommendedPublish`. Without an override, a market listing function can still change the outcome.

**recommendedPublish** `Boolean!` *required*

Whether Redo publishes the product there when there is no override. False only when the product is restricted there and the store hides restricted products.

**restricted** `Boolean!` *required*

Whether the product counts as restricted there: it trips a BLOCKED import restriction, or an ACTION\_NEEDED one that is not resolved.

**options** `[\[ProductOptionValue!\]!](/docs/api-reference/v3/reference/catalog/product-option-value)` *required*

The variant's selected option values (e.g. Size: M, Color: Red), ordered by the family's option positions.

**fields**

**name** `String!` *required*

The option name, e.g. Size.

**value** `String!` *required*

The selected value, e.g. M.

**originCountry** `String`

The country of origin, as a country code.

**physicalItem** `Boolean!` *required*

Whether the product is a physical, shippable item.

**price** `[Money](/docs/api-reference/v3/reference/common/money)`

The product's selling price.

**fields**

**amount** `[Decimal!](/docs/api-reference/v3/reference/common/decimal)` *required*

The exact amount as a decimal string (e.g. "19.99").

**currency** `String!` *required*

ISO 4217 currency code (e.g. USD).

**productFamily** `[ProductFamily](/docs/api-reference/v3/reference/catalog/product-family)`

The product family this product belongs to, if any.

**Requires:** [`products_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-products_read)

**fields**

**attribute** `[Attribute](/docs/api-reference/v3/reference/catalog/attribute)`

Look up a single attribute on this family by its name, if set.

**Requires:** [`products_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-products_read)

**fields**

**Arguments**

**name** `String!` *required*

The machine name of the attribute to look up.

**Fields**

**description** `String`

An optional description of what the attribute represents.

**displayName** `String!` *required*

The human-readable label shown for the attribute.

**id** `ID!` *required*

The unique identifier of the attribute's definition.

**name** `String!` *required*

The attribute's machine name, unique within the account.

**type** `[AttributeType!](/docs/api-reference/v3/reference/catalog/attribute-type)` *required*

The data type of the attribute's value.

**value** `[JSON](/docs/api-reference/v3/reference/common/json)`

The attribute's value, resolved to the typed JSON form for its `type` — read `type` to know the shape. E.g. SHORT\_TEXT → a string, WEIGHT → \{ value, unit }, MONEY → \{ amount, currency }. Null if unset. See AttributeType for each type's shape.

**attributes** `[\[Attribute!\]!](/docs/api-reference/v3/reference/catalog/attribute)` *required*

The merchant-defined attributes set on this family.

**fields**

**description** `String`

An optional description of what the attribute represents.

**displayName** `String!` *required*

The human-readable label shown for the attribute.

**id** `ID!` *required*

The unique identifier of the attribute's definition.

**name** `String!` *required*

The attribute's machine name, unique within the account.

**type** `[AttributeType!](/docs/api-reference/v3/reference/catalog/attribute-type)` *required*

The data type of the attribute's value.

**value** `[JSON](/docs/api-reference/v3/reference/common/json)`

The attribute's value, resolved to the typed JSON form for its `type` — read `type` to know the shape. E.g. SHORT\_TEXT → a string, WEIGHT → \{ value, unit }, MONEY → \{ amount, currency }. Null if unset. See AttributeType for each type's shape.

**createdAt** `[DateTime!](/docs/api-reference/v3/reference/common/date-time)` *required*

When the record was created.

**description** `String!` *required*

The product family's long-form description.

**id** `ID!` *required*

The id of this product family.

**image** `[ProductFamilyImage](/docs/api-reference/v3/reference/catalog/product-family-image)`

The first (default) image for this family, if any.

**Requires:** [`products_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-products_read)

**fields**

**altText** `String!` *required*

Alternative text describing the image.

**default** `Boolean!` *required*

Whether this is the default image.

**id** `ID!` *required*

The id of this image.

**position** `Int!` *required*

The image's ordering position.

**url** `String!` *required*

The public URL of the image.

**images** `[ProductFamilyImageConnection!](/docs/api-reference/v3/pagination)` *required*

A paginated list of the family's images.

**Requires:** [`products_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-products_read)

**fields**

**Arguments**

**after** `String`

Forward pagination cursor — returns items after it. Pass an `edges[].cursor` or `pageInfo.endCursor` from a previous page.

**before** `String`

Backward pagination cursor — returns items before it. Pass an `edges[].cursor` or `pageInfo.startCursor` from a previous page.

**first** `Int`

Forward pagination: returns the first N items (max 100, default 25). Use with `after`; mutually exclusive with `last`/`before`.

**last** `Int`

Backward pagination: returns the last N items (max 100, default 25). Use with `before`; mutually exclusive with `first`/`after`.

**Fields**

**edges** `[\[ProductFamilyImageEdge!\]!](/docs/api-reference/v3/pagination)` *required*

The list of edges (each a node plus its pagination `cursor`).

**nodes** `[\[ProductFamilyImage!\]!](/docs/api-reference/v3/reference/catalog/product-family-image)` *required*

The nodes in this page, without the edge/cursor wrapper — a convenience over `edges`.

**pageInfo** `[PageInfo!](/docs/api-reference/v3/pagination)` *required*

Pagination metadata for the current page.

**options** `[\[ProductFamilyOption!\]!](/docs/api-reference/v3/reference/catalog/product-family-option)` *required*

The variant options (e.g. Size, Color) for this family.

**fields**

**id** `ID!` *required*

The id of this option.

**name** `String!` *required*

The option's name (e.g. Size).

**position** `Int!` *required*

The option's ordering position within the family.

**values** `[String!]!` *required*

The allowed values for this option (e.g. S, M, L).

**products** `[ProductConnection!](/docs/api-reference/v3/pagination)` *required*

A paginated list of the products (variants) in this family.

**Requires:** [`products_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-products_read)

**fields**

**Arguments**

**after** `String`

Forward pagination cursor — returns items after it. Pass an `edges[].cursor` or `pageInfo.endCursor` from a previous page.

**before** `String`

Backward pagination cursor — returns items before it. Pass an `edges[].cursor` or `pageInfo.startCursor` from a previous page.

**first** `Int`

Forward pagination: returns the first N items (max 100, default 25). Use with `after`; mutually exclusive with `last`/`before`.

**last** `Int`

Backward pagination: returns the last N items (max 100, default 25). Use with `before`; mutually exclusive with `first`/`after`.

**Fields**

**edges** `[\[ProductEdge!\]!](/docs/api-reference/v3/pagination)` *required*

The list of edges (each a node plus its pagination `cursor`).

**nodes** `[\[Product!\]!](/docs/api-reference/v3/reference/catalog/product)` *required*

The nodes in this page, without the edge/cursor wrapper — a convenience over `edges`.

**pageInfo** `[PageInfo!](/docs/api-reference/v3/pagination)` *required*

Pagination metadata for the current page.

**tags** `[String!]!` *required*

Free-form tags applied to the product family.

**title** `String!` *required*

The product family's title.

**updatedAt** `[DateTime!](/docs/api-reference/v3/reference/common/date-time)` *required*

When the record was last updated.

**vendor** `String`

The vendor or manufacturer of the product family.

**sku** `String`

The stock keeping unit identifying this product.

**tags** `[String!]!` *required*

Free-form tags applied to the product.

**taxCode** `String`

The tax code used to classify the product for taxation.

**taxable** `Boolean!` *required*

Whether the product is subject to tax.

**title** `String!` *required*

The product's title.

**upc** `String`

The Universal Product Code for this product.

**updatedAt** `[DateTime!](/docs/api-reference/v3/reference/common/date-time)` *required*

When the record was last updated.

**vendor** `String`

The vendor or manufacturer of the product.

**weight** `[Weight](/docs/api-reference/v3/reference/catalog/weight)`

The product's weight.

**fields**

**unit** `[WeightUnit!](/docs/api-reference/v3/reference/catalog/weight-unit)` *required*

The unit the value is expressed in.

**value** `Float!` *required*

The numeric magnitude of the weight.

## Example

```graphql theme={null}
mutation {
  productMarketPublishingSet(countryCode: "...", productId: "...", publish: true) {
    barcodes
    createdAt
    description
    hsCode
    id
    images {
      nodes {
        altText
        default
        id
        position
        url
      }
      pageInfo { hasNextPage endCursor }
    }
    importRestrictions {
      nodes {
        confidence
        confidenceScore
        countryCode
        firstSeenAt
        lastSeenAt
        matchedHsCode
        summary
        tier
      }
      pageInfo { hasNextPage endCursor }
    }
    inventoryItems {
      nodes {
        createdAt
        disposition
        expirationDate
        grade
        id
        itemClass
        kind
        lotNumber
        # ...
      }
      pageInfo { hasNextPage endCursor }
    }
    # ...
  }
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.