Skip to main content
The Catalog API stores company products against a base Product Schema. Public responses return active Shared Attribute values, product source and status, timestamps, and product-only Attribute extensions.

Product-only Attribute extensions

Use attribute_extension_ids when a product needs active Shared Attributes that do not belong to its base schema. The API accepts up to 2,000 unique Shared Attribute UUIDs.
Create attaches the supplied extensions. Patch preserves existing extensions when attribute_extension_ids is omitted or empty. Use remove_attribute_extension_ids to detach product-only Attributes and remove their values or relation links atomically. You cannot detach base-schema Attributes this way. Responses expose each extension as { "attribute_id", "key" } in attribute_extensions.

Concurrency and validation

Catalog writes validate values against active Shared Attribute definitions. Missing, foreign, or archived extension UUIDs fail without revealing another company’s Attribute inventory. Send expected_updated_at on patch to reject stale writes with 409.

Listing and synchronization

GET /catalog uses keyset pagination and supports status, source, search, and schema filters. Pass next_cursor back unchanged. Use GET /catalog/changes for incremental synchronization. It returns products oldest-first after since. Keep the first page’s sync_timestamp and use it as since for the next cycle.

Webhooks

Managed Catalog webhooks cover product and Attribute create, update, and delete events. You can inspect delivery history, send test events, and explicitly redeliver failed attempts. See Webhooks.