Duplicate a module
/products/{product_id}/modules/{module_id}/copiesStarts 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.
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._:-]. Required by this operation: a missing key returns idempotency_key_required, and a malformed key returns idempotency_key_invalid. Repeating the request with the same key and the same body returns the stored result with Idempotent-Replayed: true.
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
curl -X POST "https://example.com/products/string/modules/string/copies" \ -H "Idempotency-Key: string" \ -H "Content-Type: application/json" \ -d '{ "target_product_id": "string" }'{ "data": { "attempt": { "number": 0, "status": "running" }, "cancellation_requested": true, "created_at": "2019-08-24T14:15:22Z", "error": { "code": "worker_error", "field": "string", "message": "string", "reason": "string", "resource_id": "string" }, "expires_at": "2019-08-24T14:15:22Z", "finished_at": "2019-08-24T14:15:22Z", "id": "string", "items_url": "string", "object": "operation", "progress": { "done": 0, "failed": 0, "total": 0 }, "result_url": "string", "started_at": "2019-08-24T14:15:22Z", "status": "queued", "type": "string" }}Reorder module contents PUT
Sets 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.
Publish a module POST
Starts an asynchronous operation that publishes the module and everything nested in it. Copies of the module in replicated accounts are published as well. Replicated modules can also be published through this operation. The `Idempotency-Key` header is required. Track progress through the returned operation.