Reorder module contents
/products/{product_id}/modules/{module_id}/content/orderSets the display order of the submodules and lessons placed directly in the module.
The ids array accepts both module public IDs (mod_) and lesson public IDs (les_) in the desired order. The array must contain the complete set of BOTH direct submodules and direct lessons currently in the module. Omitting a kind is allowed only when that kind has no items; otherwise the entire request is rejected. The request requires at least one ID; an empty array is rejected. Positions are assigned independently within each kind, starting at 1, so interleaving IDs does not assign one global mixed ranking. For example, with only lessons [les_1, les_2], sending [les_2, les_1] sets their positions to 1 and 2. With both kinds present, sending only lesson IDs is rejected. If the supplied set does not match, the API returns the order_set_mismatch error code and the existing order remains unchanged.
To avoid overwriting concurrent changes, send the module ETag from the retrieve operation in the If-Match header.
Discover the required set through GET /products/{product_id}/modules/{module_id}/content, following every cursor page without narrowing filters such as status, kind or search. A fully paginated list is still limited by credential visibility; verify that the credential can read the entire required set before reordering. On order_set_mismatch, re-read the set and check scope and visibility instead of blindly retrying stale IDs.
The response returns the complete reordered collection in a single response, including collections larger than 200 items. This reorder response is not paginated.
Credential: the API credential secret, sent as a bearer token. Credential secrets are identified by a fixed prefix.
In: header
Path Parameters
Public ID of the product, prefixed with prd_.
Public ID of the module, prefixed with mod_.
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. * matches the current revision. Any other value fails with 400 and the if_match_invalid 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
application/json
application/json
application/json
application/json
application/json
curl -X PUT "https://example.com/products/string/modules/string/content/order" \ -H "Content-Type: application/json" \ -d '{ "ids": [ "string" ] }'{ "data": [ { "id": "string", "kind": "module", "name": "string", "object": "content_entry", "position": 0, "status": "published" } ], "page": { "limit": 1, "next_cursor": "string", "prev_cursor": "string" }}List module contents GET
Returns the direct contents of a module, meaning its submodules and the lessons placed directly in it, in display order, using cursor-based pagination. Items in the trash are not included.
Duplicate a module POST
Starts an asynchronous operation that copies the module, including its contents, into the product given in `target_product_id`. Optionally, use `parent_id` to place the copy inside a group of the target product and `name` to rename it. Requires the `modules.create` permission on the target product. Replicated modules cannot be copied, and modules cannot be copied into replicated products; both cases return the `replica_readonly` error code. The `Idempotency-Key` header is required. Track progress through the returned operation; when it completes, the item result contains `copy_id`, the public ID of the new module.