Update a product
/products/{product_id}Updates a product. Only the fields included in the request are changed. Setting deleted to false restores the product from the trash.
Changing status also requires the products.publish permission. Changing showcase_id or position also requires the showcases.update permission on the target showcase.
position is 1-based within the showcase, in the destination showcase when showcase_id changes; a value greater than the number of products places the product at the end. A product moved to another showcase without position is placed at the end.
Replicated products accept only status; any other field returns the replica_readonly error code.
Send the current ETag value in the If-Match header to avoid overwriting a newer version.
Autonomous mode: the API credential secret, sent as a bearer token. Credential secrets are identified by a fixed prefix.
In: header
Path Parameters
Header Parameters
Client-generated key that makes the request safe to retry. Must be 1 to 128 characters from [A-Za-z0-9._:-]. Optional on this operation; when sent, a malformed key returns idempotency_key_invalid, and repeating the request with the same key and the same body returns the stored result with Idempotent-Replayed: true.
Expected revision of the resource, in the same format as the ETag header (W/"<type>:<id>:<revision>"). If the resource has changed since that revision, the request fails with 412 and the revision_mismatch error code. When omitted, the update is applied to the current revision.
Optional client-generated identifier of the request, up to 64 characters from [A-Za-z0-9._-]. Echoed back in the response and recorded in the request log; it never replaces the server-generated X-Request-Id.
length <= 64Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X PATCH "https://example.com/products/string" \ -H "Content-Type: application/json" \ -d '{}'{ "data": { "created_at": "2019-08-24T14:15:22Z", "definitions": null, "deleted": true, "display": null, "external_id": "string", "format": "course", "id": "string", "image": "string", "lessons_count": 0, "modules_count": 0, "name": "string", "object": "product", "offer": null, "position": 0, "revision": "string", "showcase_id": "string", "status": "published", "updated_at": "2019-08-24T14:15:22Z" }}Retrieve a product GET
Retrieves a product by its public ID. The `offer` object is included only when the credentials have the `products.read_offer` permission. The response includes an `ETag` representing the current revision. Send this value in the `If-Match` header when updating the product to avoid overwriting a newer version.
Delete a product DELETE
Moves the product to the trash, together with its modules, its lessons, and its copies in replicated accounts. The product is no longer available to users in the student area until it is restored with the update operation by setting `deleted` to `false`. Users' access and reports related to the product are preserved. Restoring the product does not restore its copies in replicated accounts. Replicated products are read-only and cannot be deleted; these requests return the `replica_readonly` error code.