{"openapi":"3.1.0","jsonSchemaDialect":"https://spec.openapis.org/oas/3.1/dialect/base","info":{"title":"Content Library API","version":"1.0.0","summary":"Product content, catalog structure, channel payloads, exports and imports.","description":"The Content Library REST API gives your ERP, storefront or marketplace integration the same product data the app uses: products with variants, translations and custom attributes, the catalog structure, assets, channel-mapped payloads, exports, imports and jobs.\n\n**Authentication.** Create an API key under Developers and send it as `Authorization: Bearer cl_live_…` (or `X-API-Key`). Each key has scopes; a missing scope answers 403.\n\n**Format.** JSON with camelCase keys; timestamps are ISO-8601 UTC. Lists answer `{ data, pagination: { page, limit, total, totalPages, hasMore } }` (`page`, `limit` ≤ 250). Errors answer `{ error: { code, message, details?, requestId } }` with `details.fieldErrors` on 422.\n\n**Rate limits.** Every key may send a fixed number of requests per rolling minute (`X-RateLimit-Limit`); `X-RateLimit-Remaining` and `X-RateLimit-Reset` come with every response, and 429 carries `Retry-After`.\n\n**Concurrency.** Product responses carry an `ETag`. Send it back in `If-None-Match` (304 when unchanged) or `If-Match` on writes (412 when someone else changed the product).\n\n**Idempotency.** POST endpoints accept `Idempotency-Key`. Replays are kept for 24 hours in the memory of the server instance that handled the first request — on a multi-instance or serverless deployment a retry can reach another instance and run again, so prefer naturally idempotent calls (PUT by SKU, bulk upserts) for critical writes.\n\n**Webhooks.** Subscribed events are POSTed as signed JSON envelopes — see the webhooks section for every event payload and the signature scheme."},"servers":[{"url":"https://library.retailcommerceai.com/api/v1","description":"This workspace's API"}],"security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"tags":[{"name":"Meta","description":"Index, this document and the calling key"},{"name":"Products","description":"Products, variants, translations and versions"},{"name":"Catalog","description":"Categories, attributes, attribute groups and collections"},{"name":"Assets","description":"Images, videos and documents"},{"name":"Channels","description":"Marketplaces and shops: configuration, mapped payloads, publishing"},{"name":"Exports & imports","description":"Files in CSV, XLSX, XML and JSON"},{"name":"Jobs","description":"Background work: imports, exports, publishing"},{"name":"Webhooks","description":"Endpoints that receive events"},{"name":"MCP","description":"Model Context Protocol server for AI assistants"},{"name":"Webhook events","description":"Requests we send to your endpoints"}],"paths":{"/":{"get":{"operationId":"apiIndex","tags":["Meta"],"summary":"API index","description":"Public — no API key needed.","security":[],"x-required-scopes":[],"responses":{"200":{"description":"Links","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ApiIndex"}},"required":["data"]}}}},"500":{"$ref":"#/components/responses/InternalError"}}}},"/openapi.json":{"get":{"operationId":"openapi","tags":["Meta"],"summary":"This OpenAPI document","description":"Public — no API key needed.","security":[],"x-required-scopes":[],"responses":{"200":{"description":"OpenAPI 3.1 document","content":{"application/json":{"schema":{"type":"object"}}}},"500":{"$ref":"#/components/responses/InternalError"}}}},"/me":{"get":{"operationId":"getMe","tags":["Meta"],"summary":"The calling key, its scopes and the workspace","description":"Any valid API key.","x-required-scopes":[],"responses":{"200":{"description":"Caller","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Me"}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/products":{"get":{"operationId":"listProducts","tags":["Products"],"summary":"List products","description":"CanonicalProducts matching the filters. For incremental sync pass `updated_since` with the time of your last successful sync and page through with `sort=updatedAt:asc`.\n\nScopes: `products:read`.","x-required-scopes":["products:read"],"parameters":[{"$ref":"#/components/parameters/Q"},{"$ref":"#/components/parameters/Ids"},{"$ref":"#/components/parameters/Sku"},{"$ref":"#/components/parameters/Status"},{"$ref":"#/components/parameters/Type"},{"$ref":"#/components/parameters/Category"},{"$ref":"#/components/parameters/IncludeSubcategories"},{"$ref":"#/components/parameters/Collection"},{"$ref":"#/components/parameters/Tag"},{"$ref":"#/components/parameters/Brand"},{"$ref":"#/components/parameters/UpdatedSince"},{"$ref":"#/components/parameters/CompletenessMin"},{"$ref":"#/components/parameters/CompletenessMax"},{"$ref":"#/components/parameters/HasImages"},{"$ref":"#/components/parameters/TopLevel"},{"$ref":"#/components/parameters/Page"},{"$ref":"#/components/parameters/Limit"},{"name":"sort","in":"query","required":false,"description":"e.g. updatedAt:desc (default), sku:asc, -price","schema":{"type":"string"}},{"$ref":"#/components/parameters/IncludeVariants"},{"$ref":"#/components/parameters/Locale"}],"responses":{"200":{"description":"A page of products","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/CanonicalProduct"},{"$ref":"#/components/schemas/LocalizedProduct"}]}},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["data","pagination"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}},"post":{"operationId":"createProduct","tags":["Products"],"summary":"Create a product","description":"Scopes: `products:write`.","x-required-scopes":["products:write"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductCreate"}}}},"responses":{"201":{"description":"Created","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"ETag":{"$ref":"#/components/headers/ETag"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CanonicalProduct"}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"409":{"$ref":"#/components/responses/Conflict"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/products/bulk":{"post":{"operationId":"bulkUpsertProducts","tags":["Products"],"summary":"Create or update up to 500 products by SKU","description":"Each item is validated and saved on its own. The response always has one result per item — partial success is normal; check `summary.failed`. `?include=products` embeds each saved product.\n\nScopes: `products:write`.","x-required-scopes":["products:write"],"parameters":[{"name":"include","in":"query","required":false,"description":"`products` embeds the saved products","schema":{"type":"string","enum":["products"]}},{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductBulkRequest"}}}},"responses":{"200":{"description":"Per-item results","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/BulkResult"}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/products/{idOrSku}":{"parameters":[{"$ref":"#/components/parameters/IdOrSku"}],"get":{"operationId":"getProduct","tags":["Products"],"summary":"Get a product","description":"Scopes: `products:read`.","x-required-scopes":["products:read"],"parameters":[{"$ref":"#/components/parameters/IncludeVariants"},{"$ref":"#/components/parameters/Locale"},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"description":"The product","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"ETag":{"$ref":"#/components/headers/ETag"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/CanonicalProduct"},{"$ref":"#/components/schemas/LocalizedProduct"}]}},"required":["data"]}}}},"304":{"$ref":"#/components/responses/NotModified"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}},"put":{"operationId":"replaceProduct","tags":["Products"],"summary":"Replace a product (or create it under this SKU)","description":"Content fields you omit are cleared (attributes, translations, images, collections included); sku, type, parent, variant axes, status, currency and units keep their value when omitted. Creates the product when the SKU does not exist (201).\n\nScopes: `products:write`.","x-required-scopes":["products:write"],"parameters":[{"$ref":"#/components/parameters/IfMatch"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductInput"}}}},"responses":{"200":{"description":"Replaced","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"ETag":{"$ref":"#/components/headers/ETag"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CanonicalProduct"}},"required":["data"]}}}},"201":{"description":"Created","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"ETag":{"$ref":"#/components/headers/ETag"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CanonicalProduct"}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"412":{"$ref":"#/components/responses/PreconditionFailed"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}},"patch":{"operationId":"updateProduct","tags":["Products"],"summary":"Update the fields you send","description":"Attributes merge (null removes a value); translations merge per locale (\"\" clears a field, null removes the locale); images, collections, bullets, tags and prices replace their whole list when sent.\n\nScopes: `products:write`.","x-required-scopes":["products:write"],"parameters":[{"$ref":"#/components/parameters/IfMatch"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductInput"}}}},"responses":{"200":{"description":"Updated","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"ETag":{"$ref":"#/components/headers/ETag"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CanonicalProduct"}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"412":{"$ref":"#/components/responses/PreconditionFailed"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}},"delete":{"operationId":"deleteProduct","tags":["Products"],"summary":"Delete a product (a parent also deletes its variants)","description":"Scopes: `products:write`.","x-required-scopes":["products:write"],"parameters":[{"$ref":"#/components/parameters/IfMatch"}],"responses":{"204":{"$ref":"#/components/responses/NoContent"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"412":{"$ref":"#/components/responses/PreconditionFailed"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/products/{idOrSku}/versions":{"parameters":[{"$ref":"#/components/parameters/IdOrSku"}],"get":{"operationId":"listProductVersions","tags":["Products"],"summary":"Version history (newest first)","description":"Scopes: `products:read`.","x-required-scopes":["products:read"],"parameters":[{"$ref":"#/components/parameters/Page"},{"$ref":"#/components/parameters/Limit"}],"responses":{"200":{"description":"Versions","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ProductVersionSummary"}},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["data","pagination"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/products/{idOrSku}/versions/{version}":{"parameters":[{"$ref":"#/components/parameters/IdOrSku"},{"$ref":"#/components/parameters/Version"}],"get":{"operationId":"getProductVersion","tags":["Products"],"summary":"The product as it was at a version","description":"Scopes: `products:read`.","x-required-scopes":["products:read"],"responses":{"200":{"description":"Snapshot","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CanonicalProduct"}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/products/{idOrSku}/channels":{"parameters":[{"$ref":"#/components/parameters/IdOrSku"}],"get":{"operationId":"getProductChannels","tags":["Products"],"summary":"Readiness and listing status on every active channel","description":"Scopes: `products:read`, `channels:read`.","x-required-scopes":["products:read","channels:read"],"responses":{"200":{"description":"Per channel","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ProductChannelReadiness"}}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/categories":{"get":{"operationId":"listCategories","tags":["Catalog"],"summary":"Category tree or flat list","description":"Scopes: `catalog:read`.","x-required-scopes":["catalog:read"],"parameters":[{"name":"format","in":"query","required":false,"description":"tree (default) or flat (depth-first, children empty)","schema":{"type":"string","enum":["tree","flat"]}}],"responses":{"200":{"description":"Categories","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CategoryNode"}}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}},"post":{"operationId":"createCategory","tags":["Catalog"],"summary":"Create a category","description":"Scopes: `catalog:write`.","x-required-scopes":["catalog:write"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryCreate"}}}},"responses":{"201":{"description":"Created","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CategoryNode"}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"409":{"$ref":"#/components/responses/Conflict"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/categories/{idOrCode}":{"parameters":[{"$ref":"#/components/parameters/IdOrCode"}],"get":{"operationId":"getCategory","tags":["Catalog"],"summary":"Get a category with its subtree","description":"Scopes: `catalog:read`.","x-required-scopes":["catalog:read"],"responses":{"200":{"description":"Category","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CategoryNode"}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}},"patch":{"operationId":"updateCategory","tags":["Catalog"],"summary":"Update or move a category","description":"Scopes: `catalog:write`.","x-required-scopes":["catalog:write"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryPatch"}}}},"responses":{"200":{"description":"Updated","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CategoryNode"}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}},"delete":{"operationId":"deleteCategory","tags":["Catalog"],"summary":"Delete a category","description":"Children move up to the parent; products move to `reassign_to` or lose their category.\n\nScopes: `catalog:write`.","x-required-scopes":["catalog:write"],"parameters":[{"name":"reassign_to","in":"query","required":false,"description":"Category id or code that receives the products","schema":{"type":"string"}}],"responses":{"204":{"$ref":"#/components/responses/NoContent"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/categories/{idOrCode}/attributes":{"parameters":[{"$ref":"#/components/parameters/IdOrCode"}],"get":{"operationId":"getCategoryAttributes","tags":["Catalog"],"summary":"Attributes that apply to products in this category","description":"Scopes: `catalog:read`.","x-required-scopes":["catalog:read"],"responses":{"200":{"description":"Effective attributes","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/EffectiveAttribute"}}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}},"put":{"operationId":"setCategoryAttributes","tags":["Catalog"],"summary":"Replace the attributes assigned to this category","description":"Scopes: `catalog:write`.","x-required-scopes":["catalog:write"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryAttributesPut"}}}},"responses":{"200":{"description":"Effective attributes","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/EffectiveAttribute"}}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/attributes":{"get":{"operationId":"listAttributes","tags":["Catalog"],"summary":"Custom attribute definitions","description":"Scopes: `catalog:read`.","x-required-scopes":["catalog:read"],"parameters":[{"name":"group","in":"query","required":false,"description":"Attribute group id or code","schema":{"type":"string"}},{"name":"type","in":"query","required":false,"description":"Attribute type","schema":{"type":"string","enum":["text","textarea","richtext","integer","decimal","boolean","select","multiselect","date","url","color"]}}],"responses":{"200":{"description":"Attributes","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AttributeDef"}}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}},"post":{"operationId":"createAttribute","tags":["Catalog"],"summary":"Create an attribute","description":"Scopes: `catalog:write`.","x-required-scopes":["catalog:write"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttributeCreate"}}}},"responses":{"201":{"description":"Created","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/AttributeDef"}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"409":{"$ref":"#/components/responses/Conflict"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/attributes/{idOrCode}":{"parameters":[{"$ref":"#/components/parameters/IdOrCode"}],"get":{"operationId":"getAttribute","tags":["Catalog"],"summary":"Get an attribute","description":"Scopes: `catalog:read`.","x-required-scopes":["catalog:read"],"responses":{"200":{"description":"Attribute","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/AttributeDef"}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}},"patch":{"operationId":"updateAttribute","tags":["Catalog"],"summary":"Update an attribute","description":"Scopes: `catalog:write`.","x-required-scopes":["catalog:write"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttributePatch"}}}},"responses":{"200":{"description":"Updated","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/AttributeDef"}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}},"delete":{"operationId":"deleteAttribute","tags":["Catalog"],"summary":"Delete an attribute (removes its values from all products)","description":"Scopes: `catalog:write`.","x-required-scopes":["catalog:write"],"responses":{"204":{"$ref":"#/components/responses/NoContent"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/attribute-groups":{"get":{"operationId":"listAttributeGroups","tags":["Catalog"],"summary":"Attribute groups","description":"Scopes: `catalog:read`.","x-required-scopes":["catalog:read"],"responses":{"200":{"description":"Groups","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AttributeGroup"}}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}},"post":{"operationId":"createAttributeGroup","tags":["Catalog"],"summary":"Create an attribute group","description":"Scopes: `catalog:write`.","x-required-scopes":["catalog:write"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttributeGroupCreate"}}}},"responses":{"201":{"description":"Created","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/AttributeGroup"}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"409":{"$ref":"#/components/responses/Conflict"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/attribute-groups/{idOrCode}":{"parameters":[{"$ref":"#/components/parameters/IdOrCode"}],"get":{"operationId":"getAttributeGroup","tags":["Catalog"],"summary":"Get an attribute group","description":"Scopes: `catalog:read`.","x-required-scopes":["catalog:read"],"responses":{"200":{"description":"Group","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/AttributeGroup"}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}},"patch":{"operationId":"updateAttributeGroup","tags":["Catalog"],"summary":"Update an attribute group","description":"Scopes: `catalog:write`.","x-required-scopes":["catalog:write"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttributeGroupPatch"}}}},"responses":{"200":{"description":"Updated","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/AttributeGroup"}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}},"delete":{"operationId":"deleteAttributeGroup","tags":["Catalog"],"summary":"Delete an attribute group","description":"Scopes: `catalog:write`.","x-required-scopes":["catalog:write"],"responses":{"204":{"$ref":"#/components/responses/NoContent"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/collections":{"get":{"operationId":"listCollections","tags":["Catalog"],"summary":"Collections","description":"Scopes: `catalog:read`.","x-required-scopes":["catalog:read"],"responses":{"200":{"description":"Collections","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Collection"}}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}},"post":{"operationId":"createCollection","tags":["Catalog"],"summary":"Create a collection","description":"Scopes: `catalog:write`.","x-required-scopes":["catalog:write"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionCreate"}}}},"responses":{"201":{"description":"Created","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Collection"}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"409":{"$ref":"#/components/responses/Conflict"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/collections/{idOrCode}":{"parameters":[{"$ref":"#/components/parameters/IdOrCode"}],"get":{"operationId":"getCollection","tags":["Catalog"],"summary":"Get a collection","description":"Scopes: `catalog:read`.","x-required-scopes":["catalog:read"],"responses":{"200":{"description":"Collection","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Collection"}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}},"patch":{"operationId":"updateCollection","tags":["Catalog"],"summary":"Update a collection","description":"Scopes: `catalog:write`.","x-required-scopes":["catalog:write"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionPatch"}}}},"responses":{"200":{"description":"Updated","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Collection"}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}},"delete":{"operationId":"deleteCollection","tags":["Catalog"],"summary":"Delete a collection","description":"Scopes: `catalog:write`.","x-required-scopes":["catalog:write"],"responses":{"204":{"$ref":"#/components/responses/NoContent"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/collections/{idOrCode}/products":{"parameters":[{"$ref":"#/components/parameters/IdOrCode"}],"get":{"operationId":"listCollectionProducts","tags":["Catalog"],"summary":"Products of a collection, in collection order","description":"Scopes: `catalog:read`, `products:read`.","x-required-scopes":["catalog:read","products:read"],"parameters":[{"$ref":"#/components/parameters/Page"},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Locale"}],"responses":{"200":{"description":"Products","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/CanonicalProduct"},{"$ref":"#/components/schemas/LocalizedProduct"}]}},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["data","pagination"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}},"put":{"operationId":"setCollectionProducts","tags":["Catalog"],"summary":"Replace the products of a collection","description":"Scopes: `catalog:write`.","x-required-scopes":["catalog:write"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionProductsPut"}}}},"responses":{"200":{"description":"Updated","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CollectionProductsResult"}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/assets":{"get":{"operationId":"listAssets","tags":["Assets"],"summary":"List assets (newest first)","description":"Scopes: `assets:read`.","x-required-scopes":["assets:read"],"parameters":[{"name":"q","in":"query","required":false,"description":"Search file name and alt text","schema":{"type":"string"}},{"name":"tag","in":"query","required":false,"description":"Tag","schema":{"type":"string"}},{"name":"folder","in":"query","required":false,"description":"Folder (includes subfolders)","schema":{"type":"string"}},{"name":"type","in":"query","required":false,"description":"Kind","schema":{"type":"string","enum":["image","video","document"]}},{"name":"unused","in":"query","required":false,"description":"Only assets no product uses","schema":{"type":"boolean"}},{"$ref":"#/components/parameters/Page"},{"name":"limit","in":"query","required":false,"description":"Items per page (1–200, default 50)","schema":{"type":"integer","minimum":1,"maximum":200}}],"responses":{"200":{"description":"Assets","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Asset"}},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["data","pagination"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}},"post":{"operationId":"createAsset","tags":["Assets"],"summary":"Upload a file or register an image URL","description":"multipart/form-data with a `file` part (≤ 25 MB; ≤ 4.5 MB per request on Vercel serverless) or JSON `{ url, download }`. Identical uploads return the existing asset.\n\nScopes: `assets:write`.","x-required-scopes":["assets:write"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetFromUrl"}},"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","description":"The file","format":"binary"},"altText":{"type":"string"},"tags":{"type":"string","description":"Comma-separated or a JSON array"},"folder":{"type":"string"}},"required":["file"]}}}},"responses":{"201":{"description":"Created (or the existing identical asset)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Asset"}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/assets/{id}":{"parameters":[{"$ref":"#/components/parameters/Id"}],"get":{"operationId":"getAsset","tags":["Assets"],"summary":"Get an asset","description":"Scopes: `assets:read`.","x-required-scopes":["assets:read"],"responses":{"200":{"description":"Asset","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Asset"}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}},"patch":{"operationId":"updateAsset","tags":["Assets"],"summary":"Update alt text, tags, folder or file name","description":"Scopes: `assets:write`.","x-required-scopes":["assets:write"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetPatch"}}}},"responses":{"200":{"description":"Updated","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Asset"}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}},"delete":{"operationId":"deleteAsset","tags":["Assets"],"summary":"Delete an asset (unlinks it from products)","description":"Scopes: `assets:write`.","x-required-scopes":["assets:write"],"responses":{"204":{"$ref":"#/components/responses/NoContent"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/channels":{"get":{"operationId":"listChannels","tags":["Channels"],"summary":"Channels with readiness and listing counts","description":"Scopes: `channels:read`.","x-required-scopes":["channels:read"],"responses":{"200":{"description":"Channels","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ChannelSummary"}}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/channels/{id}":{"parameters":[{"$ref":"#/components/parameters/Id"}],"get":{"operationId":"getChannel","tags":["Channels"],"summary":"Channel configuration (credentials never returned)","description":"Scopes: `channels:read`.","x-required-scopes":["channels:read"],"responses":{"200":{"description":"Channel","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ChannelDetail"}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/channels/{id}/products":{"parameters":[{"$ref":"#/components/parameters/Id"}],"get":{"operationId":"listChannelProducts","tags":["Channels"],"summary":"Channel-mapped products with the channel API payload","description":"Products in the channel's scope in SKU order: mapped values, readiness issues, the payload the channel's API expects and the listing state.\n\nScopes: `channels:read`.","x-required-scopes":["channels:read"],"parameters":[{"$ref":"#/components/parameters/Page"},{"name":"limit","in":"query","required":false,"description":"Items per page (1–100, default 50)","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"ready","in":"query","required":false,"description":"true: only ready products; false: only products with errors","schema":{"type":"boolean"}},{"$ref":"#/components/parameters/UpdatedSince"},{"$ref":"#/components/parameters/Sku"}],"responses":{"200":{"description":"Records","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ChannelProduct"}},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["data","pagination"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/channels/{id}/publish":{"parameters":[{"$ref":"#/components/parameters/Id"}],"post":{"operationId":"publishChannel","tags":["Channels"],"summary":"Publish products to the channel (background job)","description":"An empty body publishes every product in the channel's scope. Feed channels refresh their feed.\n\nScopes: `channels:write`.","x-required-scopes":["channels:write"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishRequest"}}}},"responses":{"202":{"description":"Queued","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/JobAccepted"}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/exports":{"post":{"operationId":"createExport","tags":["Exports & imports"],"summary":"Export products (file or background job)","description":"Up to 1,000 rows without zipped images → 200 with the file. Larger exports, `zipImages` or `async: true` → 202 with a job; its `links.download` appears when it completes.\n\nScopes: `exports:read`.","x-required-scopes":["exports:read"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportRequest"}}}},"responses":{"200":{"description":"The export file","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Content-Disposition":{"description":"attachment; filename=…","schema":{"type":"string"}},"X-Export-Count":{"description":"Rows written","schema":{"type":"integer"}},"X-Export-Warnings":{"description":"Non-fatal problems","schema":{"type":"integer"}}},"content":{"text/csv":{"schema":{"type":"string"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"schema":{"type":"string","format":"binary"}},"application/xml":{"schema":{"type":"string"}},"application/json":{"schema":{"type":"object"}}}},"202":{"description":"Queued","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/JobAccepted"}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/export-profiles":{"get":{"operationId":"listExportProfiles","tags":["Exports & imports"],"summary":"Saved exports and their feed URLs","description":"Scopes: `exports:read`.","x-required-scopes":["exports:read"],"responses":{"200":{"description":"Profiles","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ExportProfile"}}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/imports":{"post":{"operationId":"createImport","tags":["Exports & imports"],"summary":"Import a CSV / XLSX / XML / JSON file (background job)","description":"Without `mapping` the columns are mapped automatically (the mapping used is returned). `options.dryRun: true` validates without saving.\n\nScopes: `products:write`.","x-required-scopes":["products:write"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","description":"CSV, TSV, XLSX, XML or JSON (≤ 50 MB; ≤ 4.5 MB per request on Vercel serverless)","format":"binary"},"mapping":{"type":"string","description":"JSON object: file column → column key, \"__ignore__\" or \"__new_attribute__:<type>\""},"options":{"type":"string","description":"JSON ImportOptions (or send its keys as separate fields)"}},"required":["file"]}}}},"responses":{"202":{"description":"Queued","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ImportAccepted"}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/jobs":{"get":{"operationId":"listJobs","tags":["Jobs"],"summary":"Recent background jobs","description":"Scopes: `jobs:read`.","x-required-scopes":["jobs:read"],"parameters":[{"name":"type","in":"query","required":false,"description":"Job types (csv): import, export, publish, bulk_update, ai_enrich","schema":{"type":"string"}},{"name":"status","in":"query","required":false,"description":"Statuses (csv): queued, running, completed, failed, cancelled","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"1–200, default 50","schema":{"type":"integer","minimum":1,"maximum":200}}],"responses":{"200":{"description":"Jobs","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Job"}}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/jobs/{id}":{"parameters":[{"$ref":"#/components/parameters/Id"}],"get":{"operationId":"getJob","tags":["Jobs"],"summary":"Job status, progress, errors and result links","description":"Scopes: `jobs:read`.","x-required-scopes":["jobs:read"],"responses":{"200":{"description":"Job","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Job"}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/webhooks":{"get":{"operationId":"listWebhooks","tags":["Webhooks"],"summary":"Webhook endpoints","description":"Scopes: `webhooks:write`.","x-required-scopes":["webhooks:write"],"responses":{"200":{"description":"Endpoints","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Webhook"}}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}},"post":{"operationId":"createWebhook","tags":["Webhooks"],"summary":"Register an endpoint (returns the signing secret once)","description":"Scopes: `webhooks:write`.","x-required-scopes":["webhooks:write"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookCreate"}}}},"responses":{"201":{"description":"Created","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/WebhookCreated"}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"409":{"$ref":"#/components/responses/Conflict"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/webhooks/{id}":{"parameters":[{"$ref":"#/components/parameters/Id"}],"get":{"operationId":"getWebhook","tags":["Webhooks"],"summary":"Get an endpoint","description":"Scopes: `webhooks:write`.","x-required-scopes":["webhooks:write"],"responses":{"200":{"description":"Endpoint","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Webhook"}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}},"patch":{"operationId":"updateWebhook","tags":["Webhooks"],"summary":"Update or pause/resume an endpoint","description":"Scopes: `webhooks:write`.","x-required-scopes":["webhooks:write"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookPatch"}}}},"responses":{"200":{"description":"Updated","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Webhook"}},"required":["data"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}},"delete":{"operationId":"deleteWebhook","tags":["Webhooks"],"summary":"Delete an endpoint","description":"Scopes: `webhooks:write`.","x-required-scopes":["webhooks:write"],"responses":{"204":{"$ref":"#/components/responses/NoContent"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/mcp":{"servers":[{"url":"https://library.retailcommerceai.com/api","description":"MCP endpoint"}],"post":{"operationId":"mcp","tags":["MCP"],"summary":"Model Context Protocol server (Streamable HTTP, JSON-RPC 2.0)","description":"Stateless MCP endpoint for AI assistants: `initialize`, `tools/list`, `tools/call`, `ping`. Tools: search_products, get_product, list_categories, list_channels, get_channel_payload, update_product (products:write). Notifications are answered with 202. See /docs/mcp.\n\nAny valid API key.","x-required-scopes":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"type":["string","integer"]},"method":{"type":"string"},"params":{"type":"object"}},"required":["jsonrpc","method"]}}}},"responses":{"200":{"description":"JSON-RPC response (tool failures are results with `isError: true`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonRpcResponse"}}}},"202":{"description":"Notification or client response accepted (no body)"},"400":{"description":"Parse error, invalid request or unsupported MCP-Protocol-Version","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonRpcResponse"}}}},"401":{"description":"Missing, invalid, expired or revoked API key (JSON-RPC error -32001, WWW-Authenticate header)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonRpcResponse"}}}},"405":{"description":"GET / DELETE: this server is stateless and has no SSE stream","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonRpcResponse"}}}},"413":{"description":"Body larger than 1 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonRpcResponse"}}}},"429":{"description":"Rate limit exceeded (JSON-RPC error -32002); shares the key's REST budget","headers":{"Retry-After":{"$ref":"#/components/headers/Retry-After"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonRpcResponse"}}}},"500":{"$ref":"#/components/responses/InternalError"}}}}},"webhooks":{"product.created":{"post":{"operationId":"webhook_product_created","summary":"product.created","description":"A product was created (UI, API, import, bulk edit or AI).\n\nVerify `X-CL-Signature` before trusting the body — see /docs/webhooks.","tags":["Webhook events"],"parameters":[{"name":"X-CL-Event","in":"header","required":true,"description":"Event type","schema":{"type":"string"},"example":"product.created"},{"name":"X-CL-Delivery","in":"header","required":true,"description":"Delivery id (unique per attempt series)","schema":{"type":"string"},"example":"dlv_…"},{"name":"X-CL-Timestamp","in":"header","required":true,"description":"Unix seconds when the request was signed","schema":{"type":"string"},"example":"1767225600"},{"name":"X-CL-Signature","in":"header","required":true,"description":"`t=<unix>,v1=<hex HMAC-SHA256(secret, \"<t>.<raw body>\")>`. Reject timestamps older than 5 minutes.","schema":{"type":"string"},"example":"t=1767225600,v1=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event_product_created"}}}},"responses":{"2XX":{"description":"Delivered. Any other status (or no answer within 10 s) is retried after 1m, 5m, 30m, 2h, 6h, 12h and 24h."}}}},"product.updated":{"post":{"operationId":"webhook_product_updated","summary":"product.updated","description":"A product changed; `changedFields` lists the changed paths.\n\nVerify `X-CL-Signature` before trusting the body — see /docs/webhooks.","tags":["Webhook events"],"parameters":[{"name":"X-CL-Event","in":"header","required":true,"description":"Event type","schema":{"type":"string"},"example":"product.updated"},{"name":"X-CL-Delivery","in":"header","required":true,"description":"Delivery id (unique per attempt series)","schema":{"type":"string"},"example":"dlv_…"},{"name":"X-CL-Timestamp","in":"header","required":true,"description":"Unix seconds when the request was signed","schema":{"type":"string"},"example":"1767225600"},{"name":"X-CL-Signature","in":"header","required":true,"description":"`t=<unix>,v1=<hex HMAC-SHA256(secret, \"<t>.<raw body>\")>`. Reject timestamps older than 5 minutes.","schema":{"type":"string"},"example":"t=1767225600,v1=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event_product_updated"}}}},"responses":{"2XX":{"description":"Delivered. Any other status (or no answer within 10 s) is retried after 1m, 5m, 30m, 2h, 6h, 12h and 24h."}}}},"product.deleted":{"post":{"operationId":"webhook_product_deleted","summary":"product.deleted","description":"A product was deleted (variants of a deleted parent each get their own event).\n\nVerify `X-CL-Signature` before trusting the body — see /docs/webhooks.","tags":["Webhook events"],"parameters":[{"name":"X-CL-Event","in":"header","required":true,"description":"Event type","schema":{"type":"string"},"example":"product.deleted"},{"name":"X-CL-Delivery","in":"header","required":true,"description":"Delivery id (unique per attempt series)","schema":{"type":"string"},"example":"dlv_…"},{"name":"X-CL-Timestamp","in":"header","required":true,"description":"Unix seconds when the request was signed","schema":{"type":"string"},"example":"1767225600"},{"name":"X-CL-Signature","in":"header","required":true,"description":"`t=<unix>,v1=<hex HMAC-SHA256(secret, \"<t>.<raw body>\")>`. Reject timestamps older than 5 minutes.","schema":{"type":"string"},"example":"t=1767225600,v1=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event_product_deleted"}}}},"responses":{"2XX":{"description":"Delivered. Any other status (or no answer within 10 s) is retried after 1m, 5m, 30m, 2h, 6h, 12h and 24h."}}}},"product.status_changed":{"post":{"operationId":"webhook_product_status_changed","summary":"product.status_changed","description":"A product's workflow status changed (also sent with product.updated).\n\nVerify `X-CL-Signature` before trusting the body — see /docs/webhooks.","tags":["Webhook events"],"parameters":[{"name":"X-CL-Event","in":"header","required":true,"description":"Event type","schema":{"type":"string"},"example":"product.status_changed"},{"name":"X-CL-Delivery","in":"header","required":true,"description":"Delivery id (unique per attempt series)","schema":{"type":"string"},"example":"dlv_…"},{"name":"X-CL-Timestamp","in":"header","required":true,"description":"Unix seconds when the request was signed","schema":{"type":"string"},"example":"1767225600"},{"name":"X-CL-Signature","in":"header","required":true,"description":"`t=<unix>,v1=<hex HMAC-SHA256(secret, \"<t>.<raw body>\")>`. Reject timestamps older than 5 minutes.","schema":{"type":"string"},"example":"t=1767225600,v1=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event_product_status_changed"}}}},"responses":{"2XX":{"description":"Delivered. Any other status (or no answer within 10 s) is retried after 1m, 5m, 30m, 2h, 6h, 12h and 24h."}}}},"category.created":{"post":{"operationId":"webhook_category_created","summary":"category.created","description":"A category was created.\n\nVerify `X-CL-Signature` before trusting the body — see /docs/webhooks.","tags":["Webhook events"],"parameters":[{"name":"X-CL-Event","in":"header","required":true,"description":"Event type","schema":{"type":"string"},"example":"category.created"},{"name":"X-CL-Delivery","in":"header","required":true,"description":"Delivery id (unique per attempt series)","schema":{"type":"string"},"example":"dlv_…"},{"name":"X-CL-Timestamp","in":"header","required":true,"description":"Unix seconds when the request was signed","schema":{"type":"string"},"example":"1767225600"},{"name":"X-CL-Signature","in":"header","required":true,"description":"`t=<unix>,v1=<hex HMAC-SHA256(secret, \"<t>.<raw body>\")>`. Reject timestamps older than 5 minutes.","schema":{"type":"string"},"example":"t=1767225600,v1=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event_category_created"}}}},"responses":{"2XX":{"description":"Delivered. Any other status (or no answer within 10 s) is retried after 1m, 5m, 30m, 2h, 6h, 12h and 24h."}}}},"category.updated":{"post":{"operationId":"webhook_category_updated","summary":"category.updated","description":"A category was renamed, moved or edited.\n\nVerify `X-CL-Signature` before trusting the body — see /docs/webhooks.","tags":["Webhook events"],"parameters":[{"name":"X-CL-Event","in":"header","required":true,"description":"Event type","schema":{"type":"string"},"example":"category.updated"},{"name":"X-CL-Delivery","in":"header","required":true,"description":"Delivery id (unique per attempt series)","schema":{"type":"string"},"example":"dlv_…"},{"name":"X-CL-Timestamp","in":"header","required":true,"description":"Unix seconds when the request was signed","schema":{"type":"string"},"example":"1767225600"},{"name":"X-CL-Signature","in":"header","required":true,"description":"`t=<unix>,v1=<hex HMAC-SHA256(secret, \"<t>.<raw body>\")>`. Reject timestamps older than 5 minutes.","schema":{"type":"string"},"example":"t=1767225600,v1=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event_category_updated"}}}},"responses":{"2XX":{"description":"Delivered. Any other status (or no answer within 10 s) is retried after 1m, 5m, 30m, 2h, 6h, 12h and 24h."}}}},"category.deleted":{"post":{"operationId":"webhook_category_deleted","summary":"category.deleted","description":"A category was deleted.\n\nVerify `X-CL-Signature` before trusting the body — see /docs/webhooks.","tags":["Webhook events"],"parameters":[{"name":"X-CL-Event","in":"header","required":true,"description":"Event type","schema":{"type":"string"},"example":"category.deleted"},{"name":"X-CL-Delivery","in":"header","required":true,"description":"Delivery id (unique per attempt series)","schema":{"type":"string"},"example":"dlv_…"},{"name":"X-CL-Timestamp","in":"header","required":true,"description":"Unix seconds when the request was signed","schema":{"type":"string"},"example":"1767225600"},{"name":"X-CL-Signature","in":"header","required":true,"description":"`t=<unix>,v1=<hex HMAC-SHA256(secret, \"<t>.<raw body>\")>`. Reject timestamps older than 5 minutes.","schema":{"type":"string"},"example":"t=1767225600,v1=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event_category_deleted"}}}},"responses":{"2XX":{"description":"Delivered. Any other status (or no answer within 10 s) is retried after 1m, 5m, 30m, 2h, 6h, 12h and 24h."}}}},"attribute.created":{"post":{"operationId":"webhook_attribute_created","summary":"attribute.created","description":"A custom attribute was created.\n\nVerify `X-CL-Signature` before trusting the body — see /docs/webhooks.","tags":["Webhook events"],"parameters":[{"name":"X-CL-Event","in":"header","required":true,"description":"Event type","schema":{"type":"string"},"example":"attribute.created"},{"name":"X-CL-Delivery","in":"header","required":true,"description":"Delivery id (unique per attempt series)","schema":{"type":"string"},"example":"dlv_…"},{"name":"X-CL-Timestamp","in":"header","required":true,"description":"Unix seconds when the request was signed","schema":{"type":"string"},"example":"1767225600"},{"name":"X-CL-Signature","in":"header","required":true,"description":"`t=<unix>,v1=<hex HMAC-SHA256(secret, \"<t>.<raw body>\")>`. Reject timestamps older than 5 minutes.","schema":{"type":"string"},"example":"t=1767225600,v1=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event_attribute_created"}}}},"responses":{"2XX":{"description":"Delivered. Any other status (or no answer within 10 s) is retried after 1m, 5m, 30m, 2h, 6h, 12h and 24h."}}}},"attribute.updated":{"post":{"operationId":"webhook_attribute_updated","summary":"attribute.updated","description":"A custom attribute definition changed.\n\nVerify `X-CL-Signature` before trusting the body — see /docs/webhooks.","tags":["Webhook events"],"parameters":[{"name":"X-CL-Event","in":"header","required":true,"description":"Event type","schema":{"type":"string"},"example":"attribute.updated"},{"name":"X-CL-Delivery","in":"header","required":true,"description":"Delivery id (unique per attempt series)","schema":{"type":"string"},"example":"dlv_…"},{"name":"X-CL-Timestamp","in":"header","required":true,"description":"Unix seconds when the request was signed","schema":{"type":"string"},"example":"1767225600"},{"name":"X-CL-Signature","in":"header","required":true,"description":"`t=<unix>,v1=<hex HMAC-SHA256(secret, \"<t>.<raw body>\")>`. Reject timestamps older than 5 minutes.","schema":{"type":"string"},"example":"t=1767225600,v1=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event_attribute_updated"}}}},"responses":{"2XX":{"description":"Delivered. Any other status (or no answer within 10 s) is retried after 1m, 5m, 30m, 2h, 6h, 12h and 24h."}}}},"attribute.deleted":{"post":{"operationId":"webhook_attribute_deleted","summary":"attribute.deleted","description":"A custom attribute was deleted (its values were removed from products).\n\nVerify `X-CL-Signature` before trusting the body — see /docs/webhooks.","tags":["Webhook events"],"parameters":[{"name":"X-CL-Event","in":"header","required":true,"description":"Event type","schema":{"type":"string"},"example":"attribute.deleted"},{"name":"X-CL-Delivery","in":"header","required":true,"description":"Delivery id (unique per attempt series)","schema":{"type":"string"},"example":"dlv_…"},{"name":"X-CL-Timestamp","in":"header","required":true,"description":"Unix seconds when the request was signed","schema":{"type":"string"},"example":"1767225600"},{"name":"X-CL-Signature","in":"header","required":true,"description":"`t=<unix>,v1=<hex HMAC-SHA256(secret, \"<t>.<raw body>\")>`. Reject timestamps older than 5 minutes.","schema":{"type":"string"},"example":"t=1767225600,v1=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event_attribute_deleted"}}}},"responses":{"2XX":{"description":"Delivered. Any other status (or no answer within 10 s) is retried after 1m, 5m, 30m, 2h, 6h, 12h and 24h."}}}},"asset.created":{"post":{"operationId":"webhook_asset_created","summary":"asset.created","description":"An asset was uploaded or registered.\n\nVerify `X-CL-Signature` before trusting the body — see /docs/webhooks.","tags":["Webhook events"],"parameters":[{"name":"X-CL-Event","in":"header","required":true,"description":"Event type","schema":{"type":"string"},"example":"asset.created"},{"name":"X-CL-Delivery","in":"header","required":true,"description":"Delivery id (unique per attempt series)","schema":{"type":"string"},"example":"dlv_…"},{"name":"X-CL-Timestamp","in":"header","required":true,"description":"Unix seconds when the request was signed","schema":{"type":"string"},"example":"1767225600"},{"name":"X-CL-Signature","in":"header","required":true,"description":"`t=<unix>,v1=<hex HMAC-SHA256(secret, \"<t>.<raw body>\")>`. Reject timestamps older than 5 minutes.","schema":{"type":"string"},"example":"t=1767225600,v1=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event_asset_created"}}}},"responses":{"2XX":{"description":"Delivered. Any other status (or no answer within 10 s) is retried after 1m, 5m, 30m, 2h, 6h, 12h and 24h."}}}},"asset.deleted":{"post":{"operationId":"webhook_asset_deleted","summary":"asset.deleted","description":"An asset was deleted.\n\nVerify `X-CL-Signature` before trusting the body — see /docs/webhooks.","tags":["Webhook events"],"parameters":[{"name":"X-CL-Event","in":"header","required":true,"description":"Event type","schema":{"type":"string"},"example":"asset.deleted"},{"name":"X-CL-Delivery","in":"header","required":true,"description":"Delivery id (unique per attempt series)","schema":{"type":"string"},"example":"dlv_…"},{"name":"X-CL-Timestamp","in":"header","required":true,"description":"Unix seconds when the request was signed","schema":{"type":"string"},"example":"1767225600"},{"name":"X-CL-Signature","in":"header","required":true,"description":"`t=<unix>,v1=<hex HMAC-SHA256(secret, \"<t>.<raw body>\")>`. Reject timestamps older than 5 minutes.","schema":{"type":"string"},"example":"t=1767225600,v1=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event_asset_deleted"}}}},"responses":{"2XX":{"description":"Delivered. Any other status (or no answer within 10 s) is retried after 1m, 5m, 30m, 2h, 6h, 12h and 24h."}}}},"import.completed":{"post":{"operationId":"webhook_import_completed","summary":"import.completed","description":"An import job finished (not sent for dry runs).\n\nVerify `X-CL-Signature` before trusting the body — see /docs/webhooks.","tags":["Webhook events"],"parameters":[{"name":"X-CL-Event","in":"header","required":true,"description":"Event type","schema":{"type":"string"},"example":"import.completed"},{"name":"X-CL-Delivery","in":"header","required":true,"description":"Delivery id (unique per attempt series)","schema":{"type":"string"},"example":"dlv_…"},{"name":"X-CL-Timestamp","in":"header","required":true,"description":"Unix seconds when the request was signed","schema":{"type":"string"},"example":"1767225600"},{"name":"X-CL-Signature","in":"header","required":true,"description":"`t=<unix>,v1=<hex HMAC-SHA256(secret, \"<t>.<raw body>\")>`. Reject timestamps older than 5 minutes.","schema":{"type":"string"},"example":"t=1767225600,v1=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event_import_completed"}}}},"responses":{"2XX":{"description":"Delivered. Any other status (or no answer within 10 s) is retried after 1m, 5m, 30m, 2h, 6h, 12h and 24h."}}}},"export.completed":{"post":{"operationId":"webhook_export_completed","summary":"export.completed","description":"An export job finished; the result has the file key.\n\nVerify `X-CL-Signature` before trusting the body — see /docs/webhooks.","tags":["Webhook events"],"parameters":[{"name":"X-CL-Event","in":"header","required":true,"description":"Event type","schema":{"type":"string"},"example":"export.completed"},{"name":"X-CL-Delivery","in":"header","required":true,"description":"Delivery id (unique per attempt series)","schema":{"type":"string"},"example":"dlv_…"},{"name":"X-CL-Timestamp","in":"header","required":true,"description":"Unix seconds when the request was signed","schema":{"type":"string"},"example":"1767225600"},{"name":"X-CL-Signature","in":"header","required":true,"description":"`t=<unix>,v1=<hex HMAC-SHA256(secret, \"<t>.<raw body>\")>`. Reject timestamps older than 5 minutes.","schema":{"type":"string"},"example":"t=1767225600,v1=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event_export_completed"}}}},"responses":{"2XX":{"description":"Delivered. Any other status (or no answer within 10 s) is retried after 1m, 5m, 30m, 2h, 6h, 12h and 24h."}}}},"channel.publish.completed":{"post":{"operationId":"webhook_channel_publish_completed","summary":"channel.publish.completed","description":"A channel publish / feed refresh job finished (not sent for listing-status syncs).\n\nVerify `X-CL-Signature` before trusting the body — see /docs/webhooks.","tags":["Webhook events"],"parameters":[{"name":"X-CL-Event","in":"header","required":true,"description":"Event type","schema":{"type":"string"},"example":"channel.publish.completed"},{"name":"X-CL-Delivery","in":"header","required":true,"description":"Delivery id (unique per attempt series)","schema":{"type":"string"},"example":"dlv_…"},{"name":"X-CL-Timestamp","in":"header","required":true,"description":"Unix seconds when the request was signed","schema":{"type":"string"},"example":"1767225600"},{"name":"X-CL-Signature","in":"header","required":true,"description":"`t=<unix>,v1=<hex HMAC-SHA256(secret, \"<t>.<raw body>\")>`. Reject timestamps older than 5 minutes.","schema":{"type":"string"},"example":"t=1767225600,v1=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event_channel_publish_completed"}}}},"responses":{"2XX":{"description":"Delivered. Any other status (or no answer within 10 s) is retried after 1m, 5m, 30m, 2h, 6h, 12h and 24h."}}}},"job.failed":{"post":{"operationId":"webhook_job_failed","summary":"job.failed","description":"A background job failed.\n\nVerify `X-CL-Signature` before trusting the body — see /docs/webhooks.","tags":["Webhook events"],"parameters":[{"name":"X-CL-Event","in":"header","required":true,"description":"Event type","schema":{"type":"string"},"example":"job.failed"},{"name":"X-CL-Delivery","in":"header","required":true,"description":"Delivery id (unique per attempt series)","schema":{"type":"string"},"example":"dlv_…"},{"name":"X-CL-Timestamp","in":"header","required":true,"description":"Unix seconds when the request was signed","schema":{"type":"string"},"example":"1767225600"},{"name":"X-CL-Signature","in":"header","required":true,"description":"`t=<unix>,v1=<hex HMAC-SHA256(secret, \"<t>.<raw body>\")>`. Reject timestamps older than 5 minutes.","schema":{"type":"string"},"example":"t=1767225600,v1=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event_job_failed"}}}},"responses":{"2XX":{"description":"Delivered. Any other status (or no answer within 10 s) is retried after 1m, 5m, 30m, 2h, 6h, 12h and 24h."}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"cl_live_<32 characters>","description":"API key as a bearer token"},"apiKeyHeader":{"type":"apiKey","in":"header","name":"X-API-Key","description":"API key in the X-API-Key header"}},"schemas":{"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable code, e.g. not_found, validation_failed, rate_limited"},"message":{"type":"string"},"details":{"type":"object","properties":{"fieldErrors":{"type":"object","additionalProperties":{"type":"string"},"description":"Field path → message, e.g. { \"attributes.color\": \"…\" }"}}},"requestId":{"type":"string","description":"Also in the X-Request-Id header"}},"required":["code","message"]}},"required":["error"]},"Pagination":{"type":"object","properties":{"page":{"type":"integer"},"limit":{"type":"integer"},"total":{"type":"integer"},"totalPages":{"type":"integer"},"hasMore":{"type":"boolean","description":"true while page × limit < total"}},"required":["page","limit","total","totalPages","hasMore"]},"AttributeValue":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Text, number, boolean, option code (select) or list of option codes (multiselect)"},"LocalizedContent":{"type":"object","properties":{"name":{"type":"string"},"shortDescription":{"type":"string"},"description":{"type":"string","description":"HTML"},"bulletPoints":{"type":"array","items":{"type":"string"}},"seoTitle":{"type":"string"},"seoDescription":{"type":"string"},"keywords":{"type":"string"},"attributes":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/AttributeValue"},"description":"Localizable attribute values"}},"required":[],"description":"Content in one non-default locale"},"PriceEntry":{"type":"object","properties":{"currency":{"type":"string"},"amount":{"type":"number"},"compareAt":{"type":["number","null"]}},"required":["currency","amount"]},"CanonicalImage":{"type":"object","properties":{"assetId":{"type":"string"},"url":{"type":"string","description":"Absolute, publicly fetchable URL","format":"uri"},"thumbUrl":{"type":["string","null"]},"alt":{"type":"string"},"position":{"type":"integer","description":"0 is the main image"},"role":{"type":"string"},"width":{"type":["integer","null"]},"height":{"type":["integer","null"]},"mimeType":{"type":"string"}},"required":["assetId","url","thumbUrl","alt","position","role","width","height","mimeType"]},"CanonicalCategory":{"type":"object","properties":{"id":{"type":"string"},"code":{"type":"string"},"name":{"type":"string"},"path":{"type":"string"},"pathCodes":{"type":"array","items":{"type":"string"},"description":"Root first"}},"required":["id","code","name","path","pathCodes"]},"CanonicalProduct":{"type":"object","properties":{"id":{"type":"string"},"sku":{"type":"string"},"type":{"type":"string","enum":["simple","parent","variant"]},"parentId":{"type":["string","null"]},"parentSku":{"type":["string","null"]},"status":{"type":"string","enum":["draft","in_review","approved","archived"]},"name":{"type":"string"},"shortDescription":{"type":"string"},"description":{"type":"string","description":"Sanitized HTML"},"brand":{"type":"string"},"category":{"anyOf":[{"$ref":"#/components/schemas/CanonicalCategory"},{"type":"null"}]},"gtin":{"type":["string","null"]},"mpn":{"type":["string","null"]},"hsCode":{"type":["string","null"]},"countryOfOrigin":{"type":["string","null"],"description":"ISO 3166-1 alpha-2"},"price":{"type":["number","null"]},"compareAtPrice":{"type":["number","null"]},"costPrice":{"type":["number","null"],"description":"Internal cost price"},"currency":{"type":"string","description":"ISO 4217"},"prices":{"type":"array","items":{"$ref":"#/components/schemas/PriceEntry"},"description":"Prices in extra currencies"},"stock":{"type":["integer","null"]},"weight":{"type":["number","null"]},"weightUnit":{"type":"string"},"dimensions":{"type":"object","properties":{"length":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"unit":{"type":"string"}},"required":["length","width","height","unit"]},"bulletPoints":{"type":"array","items":{"type":"string"}},"tags":{"type":"array","items":{"type":"string"}},"seo":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"keywords":{"type":"string"}},"required":["title","description","keywords"]},"attributes":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/AttributeValue"},"description":"Custom attribute values keyed by attribute code (default locale)"},"translations":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/LocalizedContent"},"description":"Content per extra locale, e.g. { \"ar\": { \"name\": \"…\" } }"},"images":{"type":"array","items":{"$ref":"#/components/schemas/CanonicalImage"}},"variantAxes":{"type":"array","items":{"type":"string"},"description":"On parents: attribute codes that vary between variants"},"variants":{"type":"array","items":{"$ref":"#/components/schemas/CanonicalProduct"},"description":"On parents, with include=variants"},"collections":{"type":"array","items":{"type":"string"},"description":"Collection codes"},"completeness":{"type":"integer","description":"Base completeness 0–100"},"version":{"type":"integer","description":"Incremented on every change"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","sku","type","parentId","parentSku","status","name","shortDescription","description","brand","category","gtin","mpn","hsCode","countryOfOrigin","price","compareAtPrice","costPrice","currency","prices","stock","weight","weightUnit","dimensions","bulletPoints","tags","seo","attributes","translations","images","variantAxes","collections","completeness","version","createdAt","updatedAt"],"description":"The product shape shared by the API, exports, feeds and webhooks. Variants have inherited values resolved."},"LocalizedProduct":{"allOf":[{"$ref":"#/components/schemas/CanonicalProduct"},{"type":"object","properties":{"locale":{"type":"string","description":"Locale of the content fields"},"localeFallbacks":{"type":"array","items":{"type":"string"},"description":"Fields without a translation that show the default-locale value"},"variants":{"type":"array","items":{"$ref":"#/components/schemas/LocalizedProduct"},"description":"On parents, with include=variants — localized too"}},"required":["locale","localeFallbacks"]}],"description":"Returned when ?locale= is given"},"ProductVersionSummary":{"type":"object","properties":{"version":{"type":"integer"},"source":{"type":"string","enum":["ui","api","import","bulk","ai","system","restore"]},"actorName":{"type":"string"},"changedFields":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string","format":"date-time"}},"required":["version","source","actorName","changedFields","createdAt"]},"ReadinessIssue":{"type":"object","properties":{"field":{"type":"string","description":"Channel field key, or * for record-level issues"},"severity":{"type":"string","enum":["error","warning"]},"message":{"type":"string"}},"required":["field","severity","message"]},"ProductChannelReadiness":{"type":"object","properties":{"channelId":{"type":"string"},"channelName":{"type":"string"},"channelType":{"type":"string","enum":["amazon","noon","flipkart","shopify","woocommerce","magento","google_merchant","meta_catalog","salla","zid","custom_api","custom_feed"]},"ready":{"type":"boolean"},"score":{"type":"integer","description":"0–100: filled required channel fields"},"issues":{"type":"array","items":{"$ref":"#/components/schemas/ReadinessIssue"}},"listingStatus":{"type":"string","enum":["not_published","queued","published","error","outdated"]},"externalId":{"type":["string","null"],"description":"ASIN, noon PSKU, Shopify gid …"},"externalUrl":{"type":["string","null"]},"lastPublishedAt":{"type":["string","null"],"format":"date-time"},"inScope":{"type":"boolean","description":"The product matches the channel's product scope"}},"required":["channelId","channelName","channelType","ready","score","issues","listingStatus","externalId","externalUrl","lastPublishedAt","inScope"]},"BulkResult":{"type":"object","properties":{"summary":{"type":"object","properties":{"total":{"type":"integer"},"created":{"type":"integer"},"updated":{"type":"integer"},"unchanged":{"type":"integer"},"skipped":{"type":"integer"},"failed":{"type":"integer"}},"required":["total","created","updated","unchanged","skipped","failed"]},"results":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","description":"Position in items"},"sku":{"type":["string","null"]},"status":{"type":"string","enum":["created","updated","unchanged","skipped","error"]},"id":{"type":["string","null"]},"version":{"type":["integer","null"]},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"fieldErrors":{"type":"object","additionalProperties":{"type":"string"}}},"required":["code","message"]},{"type":"null"}]},"product":{"$ref":"#/components/schemas/CanonicalProduct"}},"required":["index","sku","status","id","version","error"]}}},"required":["summary","results"]},"CategoryNode":{"type":"object","properties":{"id":{"type":"string"},"code":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"parentId":{"type":["string","null"]},"position":{"type":"integer"},"imageUrl":{"type":["string","null"]},"translations":{"type":"object","additionalProperties":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"}},"required":[]}},"path":{"type":"string","description":"e.g. Fashion > Men > T-Shirts"},"depth":{"type":"integer","description":"0 for root categories"},"productCount":{"type":"integer","description":"Products directly in this category"},"children":{"type":"array","items":{"$ref":"#/components/schemas/CategoryNode"},"description":"Subcategories (empty in format=flat)"}},"required":["id","code","name","description","parentId","position","imageUrl","translations","path","depth","productCount","children"]},"AttributeDef":{"type":"object","properties":{"id":{"type":"string"},"code":{"type":"string"},"label":{"type":"string"},"type":{"type":"string","enum":["text","textarea","richtext","integer","decimal","boolean","select","multiselect","date","url","color"]},"scope":{"type":"string","enum":["global","category"]},"localizable":{"type":"boolean"},"required":{"type":"boolean"},"isVariantAxis":{"type":"boolean"},"isFilterable":{"type":"boolean"},"options":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"label":{"type":"string"},"translations":{"type":"object","additionalProperties":{"type":"string"}}},"required":["code","label"]}},"validation":{"type":"object","properties":{"minLength":{"type":"integer"},"maxLength":{"type":"integer"},"pattern":{"type":"string"},"min":{"type":"number"},"max":{"type":"number"},"decimals":{"type":"integer"}},"required":[]},"unit":{"type":["string","null"]},"helpText":{"type":"string"},"groupId":{"type":["string","null"]},"groupCode":{"type":["string","null"]},"groupName":{"type":["string","null"]},"position":{"type":"integer"},"translations":{"type":"object","additionalProperties":{"type":"object","properties":{"label":{"type":"string"},"helpText":{"type":"string"}},"required":[]}}},"required":["id","code","label","type","scope","localizable","required","isVariantAxis","isFilterable","options","validation","unit","helpText","groupId","groupCode","groupName","position","translations"]},"EffectiveAttribute":{"allOf":[{"$ref":"#/components/schemas/AttributeDef"},{"type":"object","properties":{"effectiveRequired":{"type":"boolean","description":"Required in this category"},"fromCategoryId":{"type":["string","null"],"description":"Category that contributed it; null for global"}},"required":["effectiveRequired","fromCategoryId"]}]},"AttributeGroup":{"type":"object","properties":{"id":{"type":"string"},"code":{"type":"string"},"name":{"type":"string"},"position":{"type":"integer"},"attributeCount":{"type":"integer"}},"required":["id","code","name","position","attributeCount"]},"Collection":{"type":"object","properties":{"id":{"type":"string"},"code":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"imageUrl":{"type":["string","null"]},"productCount":{"type":"integer"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","code","name","description","imageUrl","productCount","updatedAt"]},"Asset":{"type":"object","properties":{"id":{"type":"string"},"source":{"type":"string","enum":["upload","url"]},"kind":{"type":"string","enum":["image","video","document"]},"fileName":{"type":"string"},"originalName":{"type":"string"},"mimeType":{"type":"string"},"size":{"type":"integer","description":"Bytes"},"width":{"type":["integer","null"]},"height":{"type":["integer","null"]},"url":{"type":"string","description":"Absolute, publicly fetchable URL","format":"uri"},"thumbUrl":{"type":["string","null"]},"externalUrl":{"type":["string","null"],"description":"Original URL of URL assets"},"altText":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"folder":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"usageCount":{"type":"integer","description":"Products using the asset"}},"required":["id","source","kind","fileName","originalName","mimeType","size","width","height","url","thumbUrl","externalUrl","altText","tags","folder","createdAt","updatedAt","usageCount"]},"IssueGroup":{"type":"object","properties":{"field":{"type":"string"},"fieldLabel":{"type":"string"},"severity":{"type":"string","enum":["error","warning"]},"message":{"type":"string"},"count":{"type":"integer"}},"required":["field","fieldLabel","severity","message","count"]},"ChannelSummary":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","enum":["amazon","noon","flipkart","shopify","woocommerce","magento","google_merchant","meta_catalog","salla","zid","custom_api","custom_feed"]},"label":{"type":"string","description":"Connector name, e.g. Amazon Selling Partner API"},"marketplace":{"type":"string"},"marketplaceLabel":{"type":["string","null"]},"locale":{"type":"string"},"secondaryLocale":{"type":["string","null"]},"currency":{"type":"string"},"active":{"type":"boolean"},"deliveryMethods":{"type":"array","items":{"type":"string","enum":["api_push","feed_pull","file"]}},"feedEnabled":{"type":"boolean"},"feedUrl":{"type":["string","null"],"description":"Pull-feed URL while the feed is enabled"},"productCount":{"type":"integer","description":"Products in the channel's scope"},"readyCount":{"type":"integer"},"publishedCount":{"type":"integer","description":"Includes outdated listings"},"errorCount":{"type":"integer"},"outdatedCount":{"type":"integer"},"queuedCount":{"type":"integer"},"lastSyncAt":{"type":["string","null"],"format":"date-time"},"readinessCheckedAt":{"type":["string","null"],"format":"date-time"},"readinessStale":{"type":"boolean"},"topIssues":{"type":"array","items":{"$ref":"#/components/schemas/IssueGroup"}},"credentialsConfigured":{"type":"array","items":{"type":"string"},"description":"Names of credential fields that are set (values are never returned)"},"missingCredentials":{"type":"array","items":{"type":"string"}},"activeJob":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"progress":{"type":"integer"},"total":{"type":"integer"}},"required":["id","status","progress","total"]},{"type":"null"}]}},"required":["id","name","type","label","marketplace","marketplaceLabel","locale","secondaryLocale","currency","active","deliveryMethods","feedEnabled","feedUrl","productCount","readyCount","publishedCount","errorCount","outdatedCount","queuedCount","lastSyncAt","readinessCheckedAt","readinessStale","topIssues","credentialsConfigured","missingCredentials","activeJob"]},"FieldMapping":{"type":"object","properties":{"target":{"type":"string","description":"Channel field key"},"source":{"type":"string","description":"Source expression, e.g. name, attr:color, t:ar:name, template:{{brand}} {{name}}"},"transforms":{"type":"array","items":{"type":"string"},"description":"e.g. strip_html, truncate:200"},"default":{"type":"string"}},"required":["target","source"]},"ChannelDetail":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["amazon","noon","flipkart","shopify","woocommerce","magento","google_merchant","meta_catalog","salla","zid","custom_api","custom_feed"]},"name":{"type":"string"},"locale":{"type":"string"},"secondaryLocale":{"type":["string","null"]},"currency":{"type":"string"},"marketplace":{"type":"string"},"settings":{"type":"object","additionalProperties":{},"description":"Non-secret settings"},"fieldMapping":{"type":"array","items":{"$ref":"#/components/schemas/FieldMapping"}},"categoryMapping":{"type":"object","additionalProperties":{"type":"string"},"description":"Category id → channel category / product type"},"valueMapping":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"string"}},"description":"Attribute code → option code → channel value"},"requiredFields":{"type":"array","items":{"type":"string"}},"feedEnabled":{"type":"boolean"},"active":{"type":"boolean"},"credentialsConfigured":{"type":"array","items":{"type":"string"}},"missingCredentials":{"type":"array","items":{"type":"string"}},"filters":{"type":"object","description":"Product scope (ProductFilter)"},"lastSyncAt":{"type":["string","null"],"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"feedFormats":{"type":"array","items":{"type":"string","enum":["xml","csv","tsv","json","xlsx"]}},"feedUrls":{"type":"array","items":{"type":"object","properties":{"format":{"type":"string"},"url":{"type":"string"}},"required":["format","url"]}}},"required":["id","type","name","locale","secondaryLocale","currency","marketplace","settings","fieldMapping","categoryMapping","valueMapping","requiredFields","feedEnabled","active","credentialsConfigured","missingCredentials","filters","lastSyncAt","createdAt","updatedAt","feedFormats","feedUrls"]},"ChannelProduct":{"type":"object","properties":{"productId":{"type":"string"},"sku":{"type":"string"},"parentSku":{"type":["string","null"]},"type":{"type":"string","enum":["simple","parent","variant"]},"name":{"type":"string"},"ready":{"type":"boolean","description":"No error-level issues"},"score":{"type":"integer"},"issues":{"type":"array","items":{"$ref":"#/components/schemas/ReadinessIssue"}},"values":{"type":"object","additionalProperties":{},"description":"Mapped values keyed by the channel's field names"},"payload":{"description":"The request body the channel's API expects for this product"},"payloadError":{"type":["string","null"]},"listing":{"type":"object","properties":{"status":{"type":"string","enum":["not_published","queued","published","error","outdated"]},"externalId":{"type":["string","null"]},"externalUrl":{"type":["string","null"]},"lastPublishedAt":{"type":["string","null"],"format":"date-time"},"lastError":{"type":["string","null"]}},"required":["status","externalId","externalUrl","lastPublishedAt","lastError"]}},"required":["productId","sku","parentSku","type","name","ready","score","issues","values","payload","payloadError","listing"]},"JobError":{"type":"object","properties":{"row":{"type":"integer"},"sku":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}},"required":["message"]},"Job":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["import","export","publish","bulk_update","ai_enrich"]},"status":{"type":"string","enum":["queued","running","completed","failed","cancelled"]},"title":{"type":"string"},"progress":{"type":"integer"},"total":{"type":"integer"},"percent":{"type":["integer","null"],"description":"0–100, null while the total is unknown"},"payload":{"description":"The job's input"},"result":{"description":"Set when the job finished (export: fileName, count …; import: counts and issues). Files are linked in `links`"},"errors":{"type":"array","items":{"$ref":"#/components/schemas/JobError"}},"errorCount":{"type":"integer"},"fileKey":{"type":["string","null"],"description":"Always null (storage keys are not exposed; use links.download / links.report)"},"createdById":{"type":["string","null"],"description":"User or API key that created the job"},"attempts":{"type":"integer"},"runAt":{"type":"string","format":"date-time"},"startedAt":{"type":["string","null"],"format":"date-time"},"finishedAt":{"type":["string","null"],"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"links":{"type":"object","properties":{"self":{"type":"string"},"download":{"type":["string","null"],"description":"Export file (send your API key; needs exports:read)"},"report":{"type":["string","null"],"description":"Import issue report CSV"}},"required":["self","download","report"]}},"required":["id","type","status","title","progress","total","percent","payload","result","errors","errorCount","fileKey","createdById","attempts","runAt","startedAt","finishedAt","createdAt","updatedAt","links"]},"JobAccepted":{"type":"object","properties":{"jobId":{"type":"string"},"job":{"$ref":"#/components/schemas/Job"}},"required":["jobId","job"]},"ImportAccepted":{"type":"object","properties":{"jobId":{"type":"string"},"job":{"$ref":"#/components/schemas/Job"},"analysis":{"type":"object","properties":{"fileName":{"type":"string"},"format":{"type":"string","enum":["csv","xlsx","xml","json"]},"rowCount":{"type":"integer"},"sheet":{"type":["string","null"]},"mapping":{"type":"object","additionalProperties":{"type":"string"},"description":"File column → column key used for this import"}},"required":["fileName","format","rowCount","sheet","mapping"]}},"required":["jobId","job","analysis"]},"ExportProfile":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"format":{"type":"string","enum":["csv","xlsx","xml","json"]},"channelId":{"type":["string","null"]},"channel":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","enum":["amazon","noon","flipkart","shopify","woocommerce","magento","google_merchant","meta_catalog","salla","zid","custom_api","custom_feed"]}},"required":["id","name","type"]},{"type":"null"}]},"filters":{"type":"object","description":"ProductFilter"},"fields":{"type":"array","items":{"type":"string"}},"options":{"type":"object"},"feedEnabled":{"type":"boolean"},"feedUrl":{"type":["string","null"],"description":"Live pull-feed URL while enabled"},"lastGeneratedAt":{"type":["string","null"],"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","name","format","channelId","channel","filters","fields","options","feedEnabled","feedUrl","lastGeneratedAt","createdAt","updatedAt"]},"WebhookStats":{"type":"object","properties":{"total":{"type":"integer"},"succeeded":{"type":"integer"},"failed":{"type":"integer"},"pending":{"type":"integer"},"retrying":{"type":"integer"},"lastDeliveryAt":{"type":["string","null"],"format":"date-time"},"lastStatus":{"type":["integer","null"]},"lastError":{"type":["string","null"]},"lastDurationMs":{"type":["integer","null"]},"windowDays":{"type":"integer"}},"required":["total","succeeded","failed","lastDeliveryAt","lastStatus"]},"Webhook":{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string","format":"uri"},"description":{"type":"string"},"events":{"type":"array","items":{"type":"string"},"description":"Event types, or [\"*\"] for every event"},"active":{"type":"boolean"},"failureCount":{"type":"integer","description":"Consecutive failed deliveries; the endpoint is disabled at 20"},"secretPreview":{"type":"string","description":"Masked signing secret"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"stats":{"$ref":"#/components/schemas/WebhookStats"}},"required":["id","url","description","events","active","failureCount","secretPreview","createdAt","updatedAt","stats"]},"WebhookCreated":{"allOf":[{"$ref":"#/components/schemas/Webhook"},{"type":"object","properties":{"secret":{"type":"string","description":"Signing secret (whsec_…) — shown only in this response"}},"required":["secret"]}]},"Me":{"type":"object","properties":{"type":{"type":"string","enum":["api_key","session"]},"key":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"prefix":{"type":["string","null"]},"expiresAt":{"type":["string","null"],"format":"date-time"},"createdAt":{"type":["string","null"],"format":"date-time"}},"required":["id","name","prefix","expiresAt","createdAt"]},{"type":"null"}]},"user":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"role":{"type":"string"}},"required":["id","name","role"]},{"type":"null"}]},"scopes":{"type":"array","items":{"type":"string","enum":["products:read","products:write","catalog:read","catalog:write","assets:read","assets:write","channels:read","channels:write","exports:read","jobs:read","webhooks:write"]}},"workspace":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"locales":{"type":"array","items":{"type":"string"}},"defaultLocale":{"type":"string"},"currencies":{"type":"array","items":{"type":"string"}},"defaultCurrency":{"type":"string"}},"required":["id","name","slug","locales","defaultLocale","currencies","defaultCurrency"]},"rateLimit":{"type":"object","properties":{"limit":{"type":"integer","description":"Requests per window"},"windowSeconds":{"type":"integer"}},"required":["limit","windowSeconds"]}},"required":["type","key","user","scopes","workspace","rateLimit"]},"ApiIndex":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"},"docs":{"type":"string"},"reference":{"type":"string"},"openapi":{"type":"string"},"mcp":{"type":"string"}},"required":["name","version","docs","reference","openapi","mcp"]},"JsonRpcResponse":{"type":"object","description":"A JSON-RPC 2.0 response (a batch request is answered with an array of them)","properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"type":["string","integer","null"]},"result":{"description":"Method result, e.g. { tools: [...] } or a tool result { content, structuredContent?, isError? }"},"error":{"type":"object","properties":{"code":{"type":"integer","description":"e.g. -32700 parse error, -32601 unknown method, -32602 invalid params, -32001 unauthorized"},"message":{"type":"string"},"data":{}},"required":["code","message"]}},"required":["jsonrpc","id"]},"CollectionProductsResult":{"type":"object","properties":{"collection":{"$ref":"#/components/schemas/Collection"},"productCount":{"type":"integer"}},"required":["collection","productCount"]},"Event_product_created":{"type":"object","properties":{"id":{"type":"string","description":"Event id (evt_…); retries of one event keep it — use it to de-duplicate"},"type":{"type":"string","const":"product.created"},"createdAt":{"type":"string","format":"date-time"},"workspaceId":{"type":"string"},"data":{"type":"object","properties":{"product":{"$ref":"#/components/schemas/CanonicalProduct"},"changedFields":{"type":"array","items":{"type":"string"},"description":"product.updated / product.status_changed"},"previousStatus":{"type":"string","enum":["draft","in_review","approved","archived"],"description":"product.status_changed"}},"required":["product"]}},"required":["id","type","createdAt","workspaceId","data"],"description":"Body POSTed for product.created"},"Event_product_updated":{"type":"object","properties":{"id":{"type":"string","description":"Event id (evt_…); retries of one event keep it — use it to de-duplicate"},"type":{"type":"string","const":"product.updated"},"createdAt":{"type":"string","format":"date-time"},"workspaceId":{"type":"string"},"data":{"type":"object","properties":{"product":{"$ref":"#/components/schemas/CanonicalProduct"},"changedFields":{"type":"array","items":{"type":"string"},"description":"product.updated / product.status_changed"},"previousStatus":{"type":"string","enum":["draft","in_review","approved","archived"],"description":"product.status_changed"}},"required":["product"]}},"required":["id","type","createdAt","workspaceId","data"],"description":"Body POSTed for product.updated"},"Event_product_deleted":{"type":"object","properties":{"id":{"type":"string","description":"Event id (evt_…); retries of one event keep it — use it to de-duplicate"},"type":{"type":"string","const":"product.deleted"},"createdAt":{"type":"string","format":"date-time"},"workspaceId":{"type":"string"},"data":{"type":"object","properties":{"id":{"type":"string"},"sku":{"type":"string"}},"required":["id","sku"]}},"required":["id","type","createdAt","workspaceId","data"],"description":"Body POSTed for product.deleted"},"Event_product_status_changed":{"type":"object","properties":{"id":{"type":"string","description":"Event id (evt_…); retries of one event keep it — use it to de-duplicate"},"type":{"type":"string","const":"product.status_changed"},"createdAt":{"type":"string","format":"date-time"},"workspaceId":{"type":"string"},"data":{"type":"object","properties":{"product":{"$ref":"#/components/schemas/CanonicalProduct"},"changedFields":{"type":"array","items":{"type":"string"},"description":"product.updated / product.status_changed"},"previousStatus":{"type":"string","enum":["draft","in_review","approved","archived"],"description":"product.status_changed"}},"required":["product"]}},"required":["id","type","createdAt","workspaceId","data"],"description":"Body POSTed for product.status_changed"},"Event_category_created":{"type":"object","properties":{"id":{"type":"string","description":"Event id (evt_…); retries of one event keep it — use it to de-duplicate"},"type":{"type":"string","const":"category.created"},"createdAt":{"type":"string","format":"date-time"},"workspaceId":{"type":"string"},"data":{"$ref":"#/components/schemas/CategoryNode"}},"required":["id","type","createdAt","workspaceId","data"],"description":"Body POSTed for category.created"},"Event_category_updated":{"type":"object","properties":{"id":{"type":"string","description":"Event id (evt_…); retries of one event keep it — use it to de-duplicate"},"type":{"type":"string","const":"category.updated"},"createdAt":{"type":"string","format":"date-time"},"workspaceId":{"type":"string"},"data":{"$ref":"#/components/schemas/CategoryNode"}},"required":["id","type","createdAt","workspaceId","data"],"description":"Body POSTed for category.updated"},"Event_category_deleted":{"type":"object","properties":{"id":{"type":"string","description":"Event id (evt_…); retries of one event keep it — use it to de-duplicate"},"type":{"type":"string","const":"category.deleted"},"createdAt":{"type":"string","format":"date-time"},"workspaceId":{"type":"string"},"data":{"type":"object","properties":{"id":{"type":"string"},"code":{"type":"string"},"name":{"type":"string"}},"required":["id","code","name"]}},"required":["id","type","createdAt","workspaceId","data"],"description":"Body POSTed for category.deleted"},"Event_attribute_created":{"type":"object","properties":{"id":{"type":"string","description":"Event id (evt_…); retries of one event keep it — use it to de-duplicate"},"type":{"type":"string","const":"attribute.created"},"createdAt":{"type":"string","format":"date-time"},"workspaceId":{"type":"string"},"data":{"$ref":"#/components/schemas/AttributeDef"}},"required":["id","type","createdAt","workspaceId","data"],"description":"Body POSTed for attribute.created"},"Event_attribute_updated":{"type":"object","properties":{"id":{"type":"string","description":"Event id (evt_…); retries of one event keep it — use it to de-duplicate"},"type":{"type":"string","const":"attribute.updated"},"createdAt":{"type":"string","format":"date-time"},"workspaceId":{"type":"string"},"data":{"$ref":"#/components/schemas/AttributeDef"}},"required":["id","type","createdAt","workspaceId","data"],"description":"Body POSTed for attribute.updated"},"Event_attribute_deleted":{"type":"object","properties":{"id":{"type":"string","description":"Event id (evt_…); retries of one event keep it — use it to de-duplicate"},"type":{"type":"string","const":"attribute.deleted"},"createdAt":{"type":"string","format":"date-time"},"workspaceId":{"type":"string"},"data":{"type":"object","properties":{"id":{"type":"string"},"code":{"type":"string"},"label":{"type":"string"}},"required":["id","code","label"]}},"required":["id","type","createdAt","workspaceId","data"],"description":"Body POSTed for attribute.deleted"},"Event_asset_created":{"type":"object","properties":{"id":{"type":"string","description":"Event id (evt_…); retries of one event keep it — use it to de-duplicate"},"type":{"type":"string","const":"asset.created"},"createdAt":{"type":"string","format":"date-time"},"workspaceId":{"type":"string"},"data":{"$ref":"#/components/schemas/Asset"}},"required":["id","type","createdAt","workspaceId","data"],"description":"Body POSTed for asset.created"},"Event_asset_deleted":{"type":"object","properties":{"id":{"type":"string","description":"Event id (evt_…); retries of one event keep it — use it to de-duplicate"},"type":{"type":"string","const":"asset.deleted"},"createdAt":{"type":"string","format":"date-time"},"workspaceId":{"type":"string"},"data":{"$ref":"#/components/schemas/Asset"}},"required":["id","type","createdAt","workspaceId","data"],"description":"Body POSTed for asset.deleted"},"Event_import_completed":{"type":"object","properties":{"id":{"type":"string","description":"Event id (evt_…); retries of one event keep it — use it to de-duplicate"},"type":{"type":"string","const":"import.completed"},"createdAt":{"type":"string","format":"date-time"},"workspaceId":{"type":"string"},"data":{"type":"object","properties":{"jobId":{"type":"string"},"type":{"type":"string","enum":["import","export","publish","bulk_update","ai_enrich"]},"status":{"type":"string","enum":["completed","failed"]},"result":{"description":"Job result; { error } for job.failed"}},"required":["jobId","type","status","result"]}},"required":["id","type","createdAt","workspaceId","data"],"description":"Body POSTed for import.completed"},"Event_export_completed":{"type":"object","properties":{"id":{"type":"string","description":"Event id (evt_…); retries of one event keep it — use it to de-duplicate"},"type":{"type":"string","const":"export.completed"},"createdAt":{"type":"string","format":"date-time"},"workspaceId":{"type":"string"},"data":{"type":"object","properties":{"jobId":{"type":"string"},"type":{"type":"string","enum":["import","export","publish","bulk_update","ai_enrich"]},"status":{"type":"string","enum":["completed","failed"]},"result":{"description":"Job result; { error } for job.failed"}},"required":["jobId","type","status","result"]}},"required":["id","type","createdAt","workspaceId","data"],"description":"Body POSTed for export.completed"},"Event_channel_publish_completed":{"type":"object","properties":{"id":{"type":"string","description":"Event id (evt_…); retries of one event keep it — use it to de-duplicate"},"type":{"type":"string","const":"channel.publish.completed"},"createdAt":{"type":"string","format":"date-time"},"workspaceId":{"type":"string"},"data":{"type":"object","properties":{"jobId":{"type":"string"},"type":{"type":"string","enum":["import","export","publish","bulk_update","ai_enrich"]},"status":{"type":"string","enum":["completed","failed"]},"result":{"description":"Job result; { error } for job.failed"}},"required":["jobId","type","status","result"]}},"required":["id","type","createdAt","workspaceId","data"],"description":"Body POSTed for channel.publish.completed"},"Event_job_failed":{"type":"object","properties":{"id":{"type":"string","description":"Event id (evt_…); retries of one event keep it — use it to de-duplicate"},"type":{"type":"string","const":"job.failed"},"createdAt":{"type":"string","format":"date-time"},"workspaceId":{"type":"string"},"data":{"type":"object","properties":{"jobId":{"type":"string"},"type":{"type":"string","enum":["import","export","publish","bulk_update","ai_enrich"]},"status":{"type":"string","enum":["completed","failed"]},"result":{"description":"Job result; { error } for job.failed"}},"required":["jobId","type","status","result"]}},"required":["id","type","createdAt","workspaceId","data"],"description":"Body POSTed for job.failed"},"ProductInput":{"type":"object","properties":{"sku":{"type":"string","minLength":1,"maxLength":64},"type":{"type":"string","enum":["simple","parent","variant"]},"parentId":{"anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}]},"parentSku":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}]},"status":{"type":"string","enum":["draft","in_review","approved","archived"]},"name":{"type":"string","maxLength":500},"shortDescription":{"type":"string","maxLength":5000},"description":{"description":"HTML, sanitized on write","type":"string","maxLength":100000},"brand":{"type":"string","maxLength":200},"categoryId":{"anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}]},"categoryCode":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"gtin":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}]},"mpn":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}]},"hsCode":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}]},"countryOfOrigin":{"anyOf":[{"type":"string","maxLength":2},{"type":"null"}]},"price":{"anyOf":[{"type":"number","minimum":0,"maximum":10000000000},{"type":"null"}]},"compareAtPrice":{"anyOf":[{"type":"number","minimum":0,"maximum":10000000000},{"type":"null"}]},"costPrice":{"anyOf":[{"type":"number","minimum":0,"maximum":10000000000},{"type":"null"}]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"prices":{"description":"Replaces the extra-currency price list","maxItems":50,"type":"array","items":{"type":"object","properties":{"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"amount":{"type":"number","minimum":0,"maximum":10000000000},"compareAt":{"anyOf":[{"type":"number","minimum":0,"maximum":10000000000},{"type":"null"}]}},"required":["currency","amount"]}},"stock":{"anyOf":[{"type":"integer","minimum":0,"maximum":2000000000},{"type":"null"}]},"weight":{"anyOf":[{"type":"number","minimum":0,"maximum":10000000},{"type":"null"}]},"weightUnit":{"type":"string","enum":["kg","g","lb","oz"]},"dimensions":{"type":"object","properties":{"length":{"anyOf":[{"type":"number","minimum":0,"maximum":10000000},{"type":"null"}]},"width":{"anyOf":[{"type":"number","minimum":0,"maximum":10000000},{"type":"null"}]},"height":{"anyOf":[{"type":"number","minimum":0,"maximum":10000000},{"type":"null"}]},"unit":{"type":"string","enum":["cm","mm","m","in"]}}},"bulletPoints":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":1000}},"tags":{"maxItems":200,"type":"array","items":{"type":"string","maxLength":100}},"seo":{"type":"object","properties":{"title":{"type":"string","maxLength":300},"description":{"type":"string","maxLength":1000},"keywords":{"type":"string","maxLength":2000}}},"attributes":{"description":"Merged into existing values; null removes a value","type":"object","propertyNames":{"type":"string","maxLength":64},"additionalProperties":{"anyOf":[{"type":"string","maxLength":100000},{"type":"number"},{"type":"boolean"},{"maxItems":500,"type":"array","items":{"type":"string","maxLength":1000}},{"type":"null"}],"description":"Text, number, boolean, list of option codes (multiselect) or null to clear"}},"translations":{"description":"Merged per locale; a field set to \"\" clears it, a locale set to null removes it","type":"object","propertyNames":{"type":"string","pattern":"^[a-z]{2,3}([-_][A-Za-z0-9]{2,8})?$"},"additionalProperties":{"anyOf":[{"type":"object","properties":{"name":{"type":"string","maxLength":500},"shortDescription":{"type":"string","maxLength":5000},"description":{"description":"HTML, sanitized on write","type":"string","maxLength":100000},"bulletPoints":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":1000}},"seoTitle":{"type":"string","maxLength":300},"seoDescription":{"type":"string","maxLength":1000},"keywords":{"type":"string","maxLength":2000},"attributes":{"description":"Values of localizable attributes only","type":"object","propertyNames":{"type":"string","maxLength":64},"additionalProperties":{"anyOf":[{"type":"string","maxLength":100000},{"type":"number"},{"type":"boolean"},{"maxItems":500,"type":"array","items":{"type":"string","maxLength":1000}},{"type":"null"}],"description":"Text, number, boolean, list of option codes (multiselect) or null to clear"}}},"description":"Content in one locale. An empty string clears a field."},{"type":"null"}]}},"variantAxes":{"maxItems":10,"type":"array","items":{"type":"string","maxLength":64}},"images":{"description":"Replaces the whole image list","maxItems":100,"type":"array","items":{"type":"object","properties":{"assetId":{"description":"An existing asset id","type":"string","minLength":1,"maxLength":100},"url":{"description":"An http(s) image URL, registered as an asset","type":"string","maxLength":2000,"format":"uri"},"alt":{"type":"string","maxLength":500},"role":{"type":"string","enum":["image","swatch","video","document","lifestyle"]}}}},"collections":{"description":"Collection codes; replaces membership","maxItems":200,"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"id":{"description":"Read-only (product id); accepted and ignored"},"completeness":{"description":"Read-only (computed); accepted and ignored"},"version":{"description":"Read-only (use expectedVersion or If-Match for optimistic locking); accepted and ignored"},"createdAt":{"description":"Read-only (timestamp); accepted and ignored"},"updatedAt":{"description":"Read-only (timestamp); accepted and ignored"},"variants":{"description":"Read-only (edit variants as their own products); accepted and ignored"},"locale":{"description":"Read-only (localized views). A body carrying a non-default locale is a ?locale= view whose content fields hold translations — it is rejected (422) so it never overwrites the default-language content"},"localeFallbacks":{"description":"Read-only (localized views only); accepted and ignored"},"category":{"description":"A category object as returned by GET; its code is used when categoryId / categoryCode are absent","anyOf":[{"type":"object","properties":{"code":{"type":"string"}},"additionalProperties":{}},{"type":"null"}]},"expectedVersion":{"description":"Optimistic lock: fail with 409 unless the product is at this version","type":"integer","minimum":1,"maximum":9007199254740991}}},"ProductCreate":{"type":"object","properties":{"sku":{"type":"string","minLength":1,"maxLength":64},"type":{"type":"string","enum":["simple","parent","variant"]},"parentId":{"anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}]},"parentSku":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}]},"status":{"type":"string","enum":["draft","in_review","approved","archived"]},"name":{"type":"string","maxLength":500},"shortDescription":{"type":"string","maxLength":5000},"description":{"description":"HTML, sanitized on write","type":"string","maxLength":100000},"brand":{"type":"string","maxLength":200},"categoryId":{"anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}]},"categoryCode":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"gtin":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}]},"mpn":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}]},"hsCode":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}]},"countryOfOrigin":{"anyOf":[{"type":"string","maxLength":2},{"type":"null"}]},"price":{"anyOf":[{"type":"number","minimum":0,"maximum":10000000000},{"type":"null"}]},"compareAtPrice":{"anyOf":[{"type":"number","minimum":0,"maximum":10000000000},{"type":"null"}]},"costPrice":{"anyOf":[{"type":"number","minimum":0,"maximum":10000000000},{"type":"null"}]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"prices":{"description":"Replaces the extra-currency price list","maxItems":50,"type":"array","items":{"type":"object","properties":{"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"amount":{"type":"number","minimum":0,"maximum":10000000000},"compareAt":{"anyOf":[{"type":"number","minimum":0,"maximum":10000000000},{"type":"null"}]}},"required":["currency","amount"]}},"stock":{"anyOf":[{"type":"integer","minimum":0,"maximum":2000000000},{"type":"null"}]},"weight":{"anyOf":[{"type":"number","minimum":0,"maximum":10000000},{"type":"null"}]},"weightUnit":{"type":"string","enum":["kg","g","lb","oz"]},"dimensions":{"type":"object","properties":{"length":{"anyOf":[{"type":"number","minimum":0,"maximum":10000000},{"type":"null"}]},"width":{"anyOf":[{"type":"number","minimum":0,"maximum":10000000},{"type":"null"}]},"height":{"anyOf":[{"type":"number","minimum":0,"maximum":10000000},{"type":"null"}]},"unit":{"type":"string","enum":["cm","mm","m","in"]}}},"bulletPoints":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":1000}},"tags":{"maxItems":200,"type":"array","items":{"type":"string","maxLength":100}},"seo":{"type":"object","properties":{"title":{"type":"string","maxLength":300},"description":{"type":"string","maxLength":1000},"keywords":{"type":"string","maxLength":2000}}},"attributes":{"description":"Merged into existing values; null removes a value","type":"object","propertyNames":{"type":"string","maxLength":64},"additionalProperties":{"anyOf":[{"type":"string","maxLength":100000},{"type":"number"},{"type":"boolean"},{"maxItems":500,"type":"array","items":{"type":"string","maxLength":1000}},{"type":"null"}],"description":"Text, number, boolean, list of option codes (multiselect) or null to clear"}},"translations":{"description":"Merged per locale; a field set to \"\" clears it, a locale set to null removes it","type":"object","propertyNames":{"type":"string","pattern":"^[a-z]{2,3}([-_][A-Za-z0-9]{2,8})?$"},"additionalProperties":{"anyOf":[{"type":"object","properties":{"name":{"type":"string","maxLength":500},"shortDescription":{"type":"string","maxLength":5000},"description":{"description":"HTML, sanitized on write","type":"string","maxLength":100000},"bulletPoints":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":1000}},"seoTitle":{"type":"string","maxLength":300},"seoDescription":{"type":"string","maxLength":1000},"keywords":{"type":"string","maxLength":2000},"attributes":{"description":"Values of localizable attributes only","type":"object","propertyNames":{"type":"string","maxLength":64},"additionalProperties":{"anyOf":[{"type":"string","maxLength":100000},{"type":"number"},{"type":"boolean"},{"maxItems":500,"type":"array","items":{"type":"string","maxLength":1000}},{"type":"null"}],"description":"Text, number, boolean, list of option codes (multiselect) or null to clear"}}},"description":"Content in one locale. An empty string clears a field."},{"type":"null"}]}},"variantAxes":{"maxItems":10,"type":"array","items":{"type":"string","maxLength":64}},"images":{"description":"Replaces the whole image list","maxItems":100,"type":"array","items":{"type":"object","properties":{"assetId":{"description":"An existing asset id","type":"string","minLength":1,"maxLength":100},"url":{"description":"An http(s) image URL, registered as an asset","type":"string","maxLength":2000,"format":"uri"},"alt":{"type":"string","maxLength":500},"role":{"type":"string","enum":["image","swatch","video","document","lifestyle"]}}}},"collections":{"description":"Collection codes; replaces membership","maxItems":200,"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"id":{"description":"Read-only (product id); accepted and ignored"},"completeness":{"description":"Read-only (computed); accepted and ignored"},"version":{"description":"Read-only (use expectedVersion or If-Match for optimistic locking); accepted and ignored"},"createdAt":{"description":"Read-only (timestamp); accepted and ignored"},"updatedAt":{"description":"Read-only (timestamp); accepted and ignored"},"variants":{"description":"Read-only (edit variants as their own products); accepted and ignored"},"locale":{"description":"Read-only (localized views). A body carrying a non-default locale is a ?locale= view whose content fields hold translations — it is rejected (422) so it never overwrites the default-language content"},"localeFallbacks":{"description":"Read-only (localized views only); accepted and ignored"},"category":{"description":"A category object as returned by GET; its code is used when categoryId / categoryCode are absent","anyOf":[{"type":"object","properties":{"code":{"type":"string"}},"additionalProperties":{}},{"type":"null"}]}},"required":["sku"]},"ProductBulkRequest":{"type":"object","properties":{"items":{"minItems":1,"maxItems":500,"type":"array","items":{"$ref":"#/components/schemas/ProductCreate"}},"mode":{"default":"create_update","type":"string","enum":["create_update","create_only","update_only"]}},"required":["items"]},"CategoryCreate":{"type":"object","properties":{"code":{"description":"Generated from the name when omitted","type":"string","minLength":1,"maxLength":100},"name":{"type":"string","minLength":1,"maxLength":200},"parentId":{"anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}]},"parentCode":{"description":"Alternative to parentId","anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}]},"description":{"type":"string","maxLength":5000},"translations":{"type":"object","propertyNames":{"type":"string","pattern":"^[a-z]{2,3}([-_][A-Za-z0-9]{2,8})?$"},"additionalProperties":{"type":"object","properties":{"name":{"type":"string","maxLength":200},"description":{"type":"string","maxLength":5000}}}},"imageUrl":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]}},"required":["name"]},"CategoryPatch":{"type":"object","properties":{"code":{"description":"Generated from the name when omitted","type":"string","minLength":1,"maxLength":100},"name":{"type":"string","minLength":1,"maxLength":200},"parentId":{"anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}]},"parentCode":{"description":"Alternative to parentId","anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}]},"description":{"type":"string","maxLength":5000},"translations":{"type":"object","propertyNames":{"type":"string","pattern":"^[a-z]{2,3}([-_][A-Za-z0-9]{2,8})?$"},"additionalProperties":{"type":"object","properties":{"name":{"type":"string","maxLength":200},"description":{"type":"string","maxLength":5000}}}},"imageUrl":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"position":{"description":"Position among its siblings","type":"integer","minimum":0,"maximum":100000}}},"CategoryAttributesPut":{"type":"object","properties":{"attributes":{"maxItems":500,"type":"array","items":{"type":"object","properties":{"attribute":{"type":"string","minLength":1,"maxLength":100,"description":"Attribute id or code"},"required":{"default":false,"type":"boolean"}},"required":["attribute"]}}},"required":["attributes"]},"AttributeCreate":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":64,"description":"Lowercase letters, digits and _; starts with a letter"},"label":{"type":"string","minLength":1,"maxLength":200},"type":{"type":"string","enum":["text","textarea","richtext","integer","decimal","boolean","select","multiselect","date","url","color"]},"scope":{"type":"string","enum":["global","category"]},"localizable":{"type":"boolean"},"required":{"type":"boolean"},"isVariantAxis":{"type":"boolean"},"isFilterable":{"type":"boolean"},"options":{"maxItems":2000,"type":"array","items":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":100},"label":{"type":"string","minLength":1,"maxLength":200},"translations":{"type":"object","propertyNames":{"type":"string","pattern":"^[a-z]{2,3}([-_][A-Za-z0-9]{2,8})?$"},"additionalProperties":{"type":"string","maxLength":200}}},"required":["code","label"]}},"validation":{"type":"object","properties":{"minLength":{"type":"integer","minimum":0,"maximum":9007199254740991},"maxLength":{"type":"integer","minimum":1,"maximum":9007199254740991},"pattern":{"type":"string","maxLength":500},"min":{"type":"number"},"max":{"type":"number"},"decimals":{"type":"integer","minimum":0,"maximum":10}}},"unit":{"anyOf":[{"type":"string","maxLength":30},{"type":"null"}]},"helpText":{"type":"string","maxLength":1000},"groupId":{"anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}]},"groupCode":{"description":"Alternative to groupId","anyOf":[{"type":"string","maxLength":64},{"type":"null"}]},"position":{"type":"integer","minimum":0,"maximum":100000},"translations":{"type":"object","propertyNames":{"type":"string","pattern":"^[a-z]{2,3}([-_][A-Za-z0-9]{2,8})?$"},"additionalProperties":{"type":"object","properties":{"label":{"type":"string","maxLength":200},"helpText":{"type":"string","maxLength":1000}}}}},"required":["code","label","type"]},"AttributePatch":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":64,"description":"Lowercase letters, digits and _; starts with a letter"},"label":{"type":"string","minLength":1,"maxLength":200},"type":{"type":"string","enum":["text","textarea","richtext","integer","decimal","boolean","select","multiselect","date","url","color"]},"scope":{"type":"string","enum":["global","category"]},"localizable":{"type":"boolean"},"required":{"type":"boolean"},"isVariantAxis":{"type":"boolean"},"isFilterable":{"type":"boolean"},"options":{"maxItems":2000,"type":"array","items":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":100},"label":{"type":"string","minLength":1,"maxLength":200},"translations":{"type":"object","propertyNames":{"type":"string","pattern":"^[a-z]{2,3}([-_][A-Za-z0-9]{2,8})?$"},"additionalProperties":{"type":"string","maxLength":200}}},"required":["code","label"]}},"validation":{"type":"object","properties":{"minLength":{"type":"integer","minimum":0,"maximum":9007199254740991},"maxLength":{"type":"integer","minimum":1,"maximum":9007199254740991},"pattern":{"type":"string","maxLength":500},"min":{"type":"number"},"max":{"type":"number"},"decimals":{"type":"integer","minimum":0,"maximum":10}}},"unit":{"anyOf":[{"type":"string","maxLength":30},{"type":"null"}]},"helpText":{"type":"string","maxLength":1000},"groupId":{"anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}]},"groupCode":{"description":"Alternative to groupId","anyOf":[{"type":"string","maxLength":64},{"type":"null"}]},"position":{"type":"integer","minimum":0,"maximum":100000},"translations":{"type":"object","propertyNames":{"type":"string","pattern":"^[a-z]{2,3}([-_][A-Za-z0-9]{2,8})?$"},"additionalProperties":{"type":"object","properties":{"label":{"type":"string","maxLength":200},"helpText":{"type":"string","maxLength":1000}}}}}},"AttributeGroupCreate":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":64},"name":{"type":"string","minLength":1,"maxLength":200},"position":{"type":"integer","minimum":0,"maximum":100000}},"required":["name"]},"AttributeGroupPatch":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":64},"name":{"type":"string","minLength":1,"maxLength":200},"position":{"type":"integer","minimum":0,"maximum":100000}}},"CollectionCreate":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":100},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":5000},"imageUrl":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]}},"required":["name"]},"CollectionPatch":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":100},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":5000},"imageUrl":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]}}},"CollectionProductsPut":{"type":"object","properties":{"productIds":{"maxItems":20000,"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"skus":{"maxItems":20000,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}}}},"AssetFromUrl":{"type":"object","properties":{"url":{"type":"string","maxLength":2000,"format":"uri"},"download":{"default":false,"description":"true: fetch and store the file; false: register the external URL","type":"boolean"},"altText":{"type":"string","maxLength":500},"tags":{"maxItems":50,"type":"array","items":{"type":"string","minLength":1,"maxLength":50}},"folder":{"type":"string","maxLength":120}},"required":["url"]},"AssetPatch":{"type":"object","properties":{"altText":{"type":"string","maxLength":500},"tags":{"maxItems":50,"type":"array","items":{"type":"string","minLength":1,"maxLength":50}},"folder":{"type":"string","maxLength":120},"fileName":{"type":"string","minLength":1,"maxLength":200}}},"PublishRequest":{"type":"object","properties":{"productIds":{"maxItems":100000,"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"skus":{"maxItems":100000,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"filter":{"description":"Narrows the channel's product scope (categories, collections, ids, skus, updatedSince, completeness…); unknown keys are rejected","type":"object","properties":{"status":{"maxItems":10,"type":"array","items":{"type":"string","enum":["draft","in_review","approved","archived"]}},"types":{"maxItems":10,"type":"array","items":{"type":"string","enum":["simple","parent","variant"]}},"categoryIds":{"maxItems":1000,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"includeSubcategories":{"type":"boolean"},"collectionIds":{"maxItems":1000,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"tags":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"brand":{"type":"string","maxLength":200},"completenessMin":{"type":"number","minimum":0,"maximum":100},"hasImages":{"type":"boolean"},"topLevelOnly":{"type":"boolean"},"attributes":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"}},{"type":"null"}]}},"q":{"type":"string","maxLength":200},"ids":{"maxItems":100000,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"skus":{"maxItems":100000,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"updatedSince":{"type":"string"},"completenessMax":{"type":"number","minimum":0,"maximum":100}},"additionalProperties":false},"onlyReady":{"description":"Skip products that fail the channel's validation","type":"boolean"},"onlyOutdated":{"description":"Only products changed since their last publish","type":"boolean"}}},"ExportRequest":{"type":"object","properties":{"format":{"description":"Required unless profileId is given","type":"string","enum":["csv","xlsx","xml","json"]},"profileId":{"description":"Run a saved export profile (its settings are used; format may override)","type":"string","minLength":1,"maxLength":100},"filter":{"description":"Which products to export (category and collection ids, statuses, skus …); unknown keys are rejected","type":"object","properties":{"q":{"type":"string","maxLength":200},"ids":{"maxItems":20000,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"skus":{"maxItems":20000,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"status":{"maxItems":4,"type":"array","items":{"type":"string","enum":["draft","in_review","approved","archived"]}},"types":{"maxItems":3,"type":"array","items":{"type":"string","enum":["simple","parent","variant"]}},"categoryIds":{"maxItems":500,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"includeSubcategories":{"type":"boolean"},"collectionIds":{"maxItems":500,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"tags":{"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"brand":{"type":"string","maxLength":200},"updatedSince":{"type":"string"},"completenessMin":{"type":"number","minimum":0,"maximum":100},"completenessMax":{"type":"number","minimum":0,"maximum":100},"hasImages":{"type":"boolean"},"topLevelOnly":{"type":"boolean"},"channelId":{"type":"string","minLength":1,"maxLength":64},"channelStatus":{"maxItems":5,"type":"array","items":{"type":"string","enum":["not_published","queued","published","error","outdated"]}},"attributes":{"type":"object","propertyNames":{"type":"string","maxLength":64},"additionalProperties":{"anyOf":[{"type":"string","maxLength":1000},{"type":"number"},{"type":"boolean"},{"maxItems":100,"type":"array","items":{"type":"string","maxLength":200}},{"type":"null"}]}}},"additionalProperties":false},"fields":{"maxItems":2000,"type":"array","items":{"type":"string","minLength":1,"maxLength":160}},"options":{"type":"object","properties":{"locale":{"type":"string","minLength":2,"maxLength":20},"includeTranslations":{"type":"boolean"},"includeVariants":{"type":"boolean"},"delimiter":{"type":"string","enum":[",",";","\t","|"]},"imageCount":{"type":"integer","minimum":0,"maximum":50},"includePrices":{"type":"boolean"},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"escapeFormulae":{"description":"CSV only: prefix text cells starting with = + - @ (tab, CR) with an apostrophe so spreadsheets do not run them as formulas. Default true for downloads; public pull feeds never escape","type":"boolean"}}},"channelId":{"anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}]},"zipImages":{"type":"boolean"},"label":{"type":"string","maxLength":80},"async":{"description":"Always run as a background job","type":"boolean"}},"additionalProperties":false},"ImportOptions":{"type":"object","properties":{"mode":{"default":"create_update","type":"string","enum":["create_update","create_only","update_only"]},"downloadImages":{"default":true,"type":"boolean"},"defaultStatus":{"default":"draft","type":"string","enum":["draft","in_review","approved","archived"]},"createMissingCategories":{"default":true,"type":"boolean"},"createMissingOptions":{"default":true,"type":"boolean"},"sheet":{"type":"string","minLength":1,"maxLength":200},"dryRun":{"default":false,"type":"boolean"},"matchBy":{"default":"sku","type":"string","enum":["sku","gtin","mpn"]},"clearEmptyCells":{"default":false,"type":"boolean"}}},"WebhookCreate":{"type":"object","properties":{"url":{"type":"string","maxLength":2000,"format":"uri"},"events":{"minItems":1,"maxItems":17,"type":"array","items":{"type":"string","enum":["*","product.created","product.updated","product.deleted","product.status_changed","category.created","category.updated","category.deleted","attribute.created","attribute.updated","attribute.deleted","asset.created","asset.deleted","import.completed","export.completed","channel.publish.completed","job.failed"]}},"description":{"type":"string","maxLength":500}},"required":["url","events"]},"WebhookPatch":{"type":"object","properties":{"url":{"type":"string","maxLength":2000,"format":"uri"},"events":{"minItems":1,"maxItems":17,"type":"array","items":{"type":"string","enum":["*","product.created","product.updated","product.deleted","product.status_changed","category.created","category.updated","category.deleted","attribute.created","attribute.updated","attribute.deleted","asset.created","asset.deleted","import.completed","export.completed","channel.publish.completed","job.failed"]}},"description":{"type":"string","maxLength":500},"active":{"description":"false pauses deliveries; true resumes and resets the failure count","type":"boolean"}}}},"parameters":{"IdOrSku":{"name":"idOrSku","in":"path","required":true,"description":"Product id or SKU","schema":{"type":"string"}},"IdOrCode":{"name":"idOrCode","in":"path","required":true,"description":"Id or code","schema":{"type":"string"}},"Id":{"name":"id","in":"path","required":true,"description":"Id","schema":{"type":"string"}},"Version":{"name":"version","in":"path","required":true,"description":"Version number","schema":{"type":"integer","minimum":1}},"Page":{"name":"page","in":"query","required":false,"description":"Page number (≥ 1, default 1)","schema":{"type":"integer","minimum":1,"default":1}},"Limit":{"name":"limit","in":"query","required":false,"description":"Items per page (1–250, default 50)","schema":{"type":"integer","minimum":1,"maximum":250,"default":50}},"Locale":{"name":"locale","in":"query","required":false,"description":"Return content in this workspace locale (e.g. ar), falling back to the default locale per field","schema":{"type":"string"}},"IncludeVariants":{"name":"include","in":"query","required":false,"description":"`variants` nests variants under their parents","schema":{"type":"string","enum":["variants"]}},"Q":{"name":"q","in":"query","required":false,"description":"Search in name, SKU, GTIN, MPN, brand","schema":{"type":"string"}},"Ids":{"name":"ids","in":"query","required":false,"description":"Product ids (csv)","schema":{"type":"string"}},"Sku":{"name":"sku","in":"query","required":false,"description":"SKUs (csv)","schema":{"type":"string"}},"Status":{"name":"status","in":"query","required":false,"description":"Statuses (csv): draft, in_review, approved, archived","schema":{"type":"string"}},"Type":{"name":"type","in":"query","required":false,"description":"Types (csv): simple, parent, variant","schema":{"type":"string"}},"Category":{"name":"category","in":"query","required":false,"description":"Category ids or codes (csv); includes subcategories","schema":{"type":"string"}},"IncludeSubcategories":{"name":"include_subcategories","in":"query","required":false,"description":"false: only the listed categories","schema":{"type":"boolean"}},"Collection":{"name":"collection","in":"query","required":false,"description":"Collection ids or codes (csv)","schema":{"type":"string"}},"Tag":{"name":"tag","in":"query","required":false,"description":"Tags (csv)","schema":{"type":"string"}},"Brand":{"name":"brand","in":"query","required":false,"description":"Exact brand","schema":{"type":"string"}},"UpdatedSince":{"name":"updated_since","in":"query","required":false,"description":"ISO-8601 timestamp: only products changed at or after it (incremental sync)","schema":{"type":"string","format":"date-time"}},"CompletenessMin":{"name":"completeness_min","in":"query","required":false,"description":"Minimum completeness 0–100","schema":{"type":"number","minimum":0,"maximum":100}},"CompletenessMax":{"name":"completeness_max","in":"query","required":false,"description":"Maximum completeness 0–100","schema":{"type":"number","minimum":0,"maximum":100}},"HasImages":{"name":"has_images","in":"query","required":false,"description":"Only products with (true) or without (false) images","schema":{"type":"boolean"}},"TopLevel":{"name":"top_level","in":"query","required":false,"description":"true: simple and parent products only (no variants)","schema":{"type":"boolean"}},"IdempotencyKey":{"name":"Idempotency-Key","in":"header","required":false,"description":"Any unique string (e.g. a UUID). Retries with the same key and body return the first response (`Idempotent-Replayed: true`). Kept for 24 h in the memory of the server instance — see the API description.","schema":{"type":"string","maxLength":255}},"IfNoneMatch":{"name":"If-None-Match","in":"header","required":false,"description":"ETag from a previous response → 304 when unchanged","schema":{"type":"string"}},"IfMatch":{"name":"If-Match","in":"header","required":false,"description":"ETag of the version you edited → 412 when the product changed since","schema":{"type":"string"}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed per rolling minute for this key","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests left in the current window","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix seconds when the next request slot frees up","schema":{"type":"integer"}},"X-Request-Id":{"description":"Id of this request — include it when contacting support","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying","schema":{"type":"integer"}},"ETag":{"description":"Entity tag of the product representation (embeds the product version)","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"true when this is a stored response replayed for an Idempotency-Key","schema":{"type":"string"}}},"responses":{"BadRequest":{"description":"Malformed request","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unauthorized":{"description":"Missing, invalid, expired or revoked API key","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Forbidden":{"description":"The API key lacks a required scope","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"NotFound":{"description":"Not found (records of other workspaces behave as missing)","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Conflict":{"description":"Conflict: duplicate SKU/code, stale expectedVersion, or an Idempotency-Key still in progress","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"PreconditionFailed":{"description":"If-Match did not match the current product version","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"PayloadTooLarge":{"description":"Request body too large","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"ValidationFailed":{"description":"Invalid input — `error.details.fieldErrors` maps field paths to messages","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"InternalError":{"description":"Unexpected error","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"NotModified":{"description":"Not modified (If-None-Match matched)","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"NoContent":{"description":"Done, no body","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}}},"x-api-scopes":["products:read","products:write","catalog:read","catalog:write","assets:read","assets:write","channels:read","channels:write","exports:read","jobs:read","webhooks:write"]}