Skip to main content

Product Management Service (2026-10-13.2943956954)

Download OpenAPI specification:Download

API for managing merchant product catalog data.

Get Product Statistics

Provides statistics about product master data in the Logitrail's database.

Authorizations:
idp
header Parameters
x-logitrail-merchant-id
required
string non-empty

Logitrail's Merchant ID.

Responses

Response samples

Content type
application/json
{
  • "product_statistics": {
    }
}

Get Customs Standards

Returns the customs / tariff classification standards registry: every standard id valid under a product's customs_codes, its expected code pattern, and the countries it applies to.

Authorizations:
idp
header Parameters
x-logitrail-merchant-id
required
string non-empty

Logitrail's Merchant ID.

Responses

Response samples

Content type
application/json
{
  • "customs_standards": [
    ]
}

List Products

Returns a paginated list of merchant products. Filters AND-merge; q provides unified search across SKU prefix, GTIN prefix, vendor SKU prefix, vendor barcode prefix and (for length ≥ 3) product name substring.

Authorizations:
idp
query Parameters
q
string >= 2 characters

Unified search phrase (minimum 2 characters). Matches case-insensitive anchored prefix on SKU, GTIN, vendor SKU and vendor barcode; for length ≥ 3 also matches a case-insensitive substring on the product name (incl. translations). At lengths 2–3 the name is intentionally excluded — unanchored regex on n would explode the candidate set.

sku
string non-empty

Exact match on the merchant SKU (m_id).

gtin
string non-empty

Exact match on GTIN — matches either the primary gtin or the secondary s_gtin.

status
string
Enum: "active" "deleted"

Filter by status. Defaults to active so deleted products are hidden by default; pass deleted explicitly to retrieve them.

on_shelf_minimum_count
integer [ 0 .. 9007199254740991 ]

Restrict results to products whose on-shelf (inventory.in_stock) count is at least the given value. Cross-service post-filter — the page is shrunk after the inventory join, so the returned page may be smaller than limit.

demand_minimum_count
integer [ 0 .. 9007199254740991 ]

Restrict results to products whose demand (inventory.demand) count is at least the given value. Cross-service post-filter — the page is shrunk after the inventory join, so the returned page may be smaller than limit.

demand_maximum_count
integer [ 0 .. 9007199254740991 ]

Restrict results to products whose demand (inventory.demand) count is at most the given value. Cross-service post-filter — the page is shrunk after the inventory join, so the returned page may be smaller than limit.

string or string
Example: created_at_min=2026-04-01

Inclusive lower bound on the product creation timestamp. Accepts YYYY-MM-DD (interpreted as start-of-day UTC) or a full ISO 8601 datetime.

string or string
Example: created_at_max=2026-04-30T23:59:59Z

Inclusive upper bound on the product creation timestamp. Accepts YYYY-MM-DD (interpreted as end-of-day UTC) or a full ISO 8601 datetime.

offset
integer [ 0 .. 9007199254740991 ]
Default: 0

Pagination offset. Defaults to 0.

limit
integer [ 1 .. 500 ]
Default: 100

Maximum number of products to return. Defaults to 100, capped at 500.

header Parameters
x-logitrail-merchant-id
required
string non-empty

Logitrail's Merchant ID.

Responses

Response samples

Content type
application/json
{
  • "products": [
    ]
}

Create Product

Creates a new product.

Authorizations:
idp
header Parameters
x-logitrail-merchant-id
required
string non-empty

Logitrail's Merchant ID.

Request Body schema: application/json
required
object
created_at
string <date-time> ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[...

Timestamp (ISO 8601) when the product was created in Logitrail.

sku
required
string

Merchant's own SKU. The SKU must be unique within the merchant and active products.

gtin
string

GTIN (EAN / Barcode) of the product. This value is used to identify the product at the warehouse.

name
required
string

Name of the product in merchant's primary language. If you need translations, provide them in name_translations field.

object

Name of the product in different languages.

status
string
Enum: "active" "deleted"

Status of the product. Omit to leave the existing status untouched.

secondary_gtin
string or null
hs_code
string or null

@deprecated Use customs_codes.hs instead. HS (Harmonized System) code of the product — historically often holding a longer TARIC-style value rather than a strict 6-digit HS code. Kept for backwards compatibility with the legacy v1 API; not kept in sync with customs_codes.

object (Customs codes)

Customs / tariff classification codes keyed by lowercase standard id (e.g. hs, eu_cn, eu_taric, us_hts) — see GET /v1/products/customs-standards for the full registry. This is a per-key merge: send only the standards you want to change. Send null for a key to clear that one code; omit a key entirely to leave its existing stored value untouched.

fulfillment_by
string (Fulfillment route)
Enum: "logitrail" "merchant"

Default fulfillment route for this product. Omit to leave the existing value untouched.

string or null

Country code (ISO 3166-1 alpha-2) of the product's origin.

default_purchase_price
number or null
flags
Array of strings
weight_g
number >= 1

Weight (in grams) of the product. A Logitrail-measured or trusted external weight takes precedence over the merchant's value; see weight_source. Sending a weight always stores it as the merchant's own value (merchant_weight_g), even while another source stays in effect.

Array of numbers or null

Dimensions (in mm) of the product. Three dimensions are required. If dimensions are not known, use null or [0,0,0]. Stored and returned longest side first. A Logitrail-measured or trusted external value takes precedence over the merchant's; see dimensions_source.

Array of objects or null

Product component definition.

Array of objects

Batch package types of the product.

Array of objects <= 20 items

Supplier-side identifiers for this product. Empty array means no supplier codes are recorded; omit to leave the existing array untouched (on writes) or to inherit from the product profile (on inbound-shipment line items).

object or null

Current inventory snapshot for this product, owned by product-inventory-service. Null when no ProductInventoryDocument exists for the product yet (e.g. brand new product without any incoming articles). Omitted from the response when the listing was retrieved without joining inventory data.

object (Tracking requirements)

Per-unit tracking requirements enforced during warehouse handling for this product. Omit either sub-flag to leave its existing value untouched; omit the whole object to leave both untouched.

Dangerous goods declaration (object) or Dangerous goods declaration (null) (Dangerous goods declaration)

ADR/VAK dangerous-goods classification of the product. Omitted for products that are not classified as dangerous goods. When supplied, every field of the declaration is required. Send null to remove an existing declaration.

Not-dangerous-goods declaration (object) or Not-dangerous-goods declaration (null) (Not-dangerous-goods declaration)

Declare that this product is not dangerous goods, or update the reason on an existing declaration. Send null to withdraw an existing declaration. Omit to leave any existing declaration untouched. The declaration timestamp and declaring identity are recorded automatically and cannot be set by the caller.

Responses

Request samples

Content type
application/json
{
  • "product": {
    }
}

Response samples

Content type
application/json
{
  • "product": {
    }
}

Get Product

Returns the product information.

Authorizations:
idp
path Parameters
productId
required
string^[a-f0-9]{24}$

Logitrail's internal technical ID of the product.

header Parameters
x-logitrail-merchant-id
required
string non-empty

Logitrail's Merchant ID.

Responses

Response samples

Content type
application/json
{
  • "product": {
    }
}

Update Product

Updates an existing product.

Authorizations:
idp
path Parameters
productId
required
string^[a-f0-9]{24}$

Logitrail's internal technical ID of the product.

header Parameters
x-logitrail-merchant-id
required
string non-empty

Logitrail's Merchant ID.

Request Body schema: application/json
required
object
created_at
string <date-time> ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[...

Timestamp (ISO 8601) when the product was created in Logitrail.

sku
string

Merchant's own SKU. The SKU must be unique within the merchant and active products.

gtin
string

GTIN (EAN / Barcode) of the product. This value is used to identify the product at the warehouse.

name
string

Name of the product in merchant's primary language. If you need translations, provide them in name_translations field.

object

Name of the product in different languages.

status
string
Enum: "active" "deleted"

Status of the product. Omit to leave the existing status untouched.

secondary_gtin
string or null
hs_code
string or null

@deprecated Use customs_codes.hs instead. HS (Harmonized System) code of the product — historically often holding a longer TARIC-style value rather than a strict 6-digit HS code. Kept for backwards compatibility with the legacy v1 API; not kept in sync with customs_codes.

object (Customs codes)

Customs / tariff classification codes keyed by lowercase standard id (e.g. hs, eu_cn, eu_taric, us_hts) — see GET /v1/products/customs-standards for the full registry. This is a per-key merge: send only the standards you want to change. Send null for a key to clear that one code; omit a key entirely to leave its existing stored value untouched.

fulfillment_by
string (Fulfillment route)
Enum: "logitrail" "merchant"

Default fulfillment route for this product. Omit to leave the existing value untouched.

string or null

Country code (ISO 3166-1 alpha-2) of the product's origin.

default_purchase_price
number or null
flags
Array of strings
weight_g
number >= 1

Weight (in grams) of the product. A Logitrail-measured or trusted external weight takes precedence over the merchant's value; see weight_source. Sending a weight always stores it as the merchant's own value (merchant_weight_g), even while another source stays in effect.

Array of numbers or null

Dimensions (in mm) of the product. Three dimensions are required. If dimensions are not known, use null or [0,0,0]. Stored and returned longest side first. A Logitrail-measured or trusted external value takes precedence over the merchant's; see dimensions_source.

Array of objects or null

Product component definition.

Array of objects

Batch package types of the product.

Array of objects <= 20 items

Supplier-side identifiers for this product. Empty array means no supplier codes are recorded; omit to leave the existing array untouched (on writes) or to inherit from the product profile (on inbound-shipment line items).

object or null

Current inventory snapshot for this product, owned by product-inventory-service. Null when no ProductInventoryDocument exists for the product yet (e.g. brand new product without any incoming articles). Omitted from the response when the listing was retrieved without joining inventory data.

object (Tracking requirements)

Per-unit tracking requirements enforced during warehouse handling for this product. Omit either sub-flag to leave its existing value untouched; omit the whole object to leave both untouched.

Dangerous goods declaration (object) or Dangerous goods declaration (null) (Dangerous goods declaration)

ADR/VAK dangerous-goods classification of the product. Omitted for products that are not classified as dangerous goods. When supplied, every field of the declaration is required. Send null to remove an existing declaration.

Not-dangerous-goods declaration (object) or Not-dangerous-goods declaration (null) (Not-dangerous-goods declaration)

Declare that this product is not dangerous goods, or update the reason on an existing declaration. Send null to withdraw an existing declaration. Omit to leave any existing declaration untouched. The declaration timestamp and declaring identity are recorded automatically and cannot be set by the caller.

Responses

Request samples

Content type
application/json
{
  • "product": {
    }
}

Response samples

Content type
application/json
{
  • "product": {
    }
}

Add Product Attachment

Links an already-uploaded attachment to the product with a purpose and optional remarks. Returns the updated attachment list.

Authorizations:
idp
path Parameters
productId
required
string^[a-f0-9]{24}$

Logitrail's internal technical ID of the product.

header Parameters
x-logitrail-merchant-id
required
string non-empty

Logitrail's Merchant ID.

Request Body schema: application/json
attachment_id
required
string^[a-f0-9]{24}$

Internal Attachment ID (24-hex MongoDB ObjectId).

purpose
required
string
Enum: "product_label" "product_image" "safety_data_sheet" "other"

Purpose of the attachment. Closed enum — one of product_label, product_image, safety_data_sheet, other.

remarks
string <= 2000 characters

Optional freeform comment stored alongside the link.

Responses

Request samples

Content type
application/json
{
  • "attachment_id": "5f9b1b9b9b9b9b9b9b9b9b9b",
  • "purpose": "product_label",
  • "remarks": "Label template v2, approved 2025-01"
}

Response samples

Content type
application/json
{
  • "attachments": [
    ]
}

List Product Attachments

Returns the attachment list for a product, including short-lived download links.

Authorizations:
idp
path Parameters
productId
required
string^[a-f0-9]{24}$

Logitrail's internal technical ID of the product.

header Parameters
x-logitrail-merchant-id
required
string non-empty

Logitrail's Merchant ID.

Responses

Response samples

Content type
application/json
{
  • "attachments": [
    ]
}