Fire system action by name
Fire a default system action by name on a target contentlet.
Returns a map of the resultant contentlet, with an additional AUTO_ASSIGN_WORKFLOW property, which can be referenced by delegate services that handle automatically assigning workflow schemes to content with none.
Request body — wrap field values in a contentlet key:
{
"contentlet": {
"contentType": "<variable-or-inode>",
"title": "My New Item",
"...": "other field values"
}
}
Field keys inside contentlet are the content type's field variable names (e.g., title, body, image). Unknown field names are silently dropped (a typo like titel will be ignored and may surface as a misleading 'title is required' error). Radio/Select/Checkbox values are not validated against the field's values list — out-of-range values are accepted as-is. Always verify spelling against fields[].variable from GET /api/v1/contenttype/id/{idOrVar}.
Validation error response shape:
{
"entity": "",
"errors": [{ "errorCode": "required", "fieldName": "image", "message": "The field Image is required." }],
"i18nMessagesMap": {}, "messages": [], "pagination": null, "permissions": []
}
errorCode values: required, unknown. fieldName is the field variable for field-specific errors, or null for content-level errors. Note: when the content type is not found, message returns the raw translation key Workflow-does-not-exists-content-type instead of translated text.
Binary and image fields — These fields cannot receive raw file data or asset paths in the JSON body. Use one of the patterns below.
Pattern A — single-use file (works for all binary/image fields):
- POST /api/v1/temp (multipart file part) OR POST /api/v1/temp/byUrl (JSON {"remoteUrl":"https://..."}) → use tempFiles[0].id (e.g. "temp_5311313004") as the field value.
- Pass that ID in the contentlet body: {"contentlet": {"contentType": "ResortActivities", "image": "temp_5311313004", ...}}.
Pattern B — reusable shared asset (ImmutableImageField only):
- Upload via /temp, create a dotAsset contentlet: PUT .../fire/PUBLISH with {"contentlet": {"contentType": "dotAsset", "asset": "temp_<id>"}}.
- Use the returned dotAsset identifier as the field value on any ImmutableImageField.
| Field clazz | temp_<id> | dotAsset identifier |
|---|---|---|
| ImmutableBinaryField | ✅ | ❌ (returns 400 "field is required") |
| ImmutableImageField | ✅ | ✅ |
Find a field's clazz by calling GET /api/v1/contenttype/id/{idOrVar} and reading fields[].clazz.
⚠️ Known issue: Firing PUBLISH on an archived contentlet (archived: true) does not validate the archived state and can produce an inconsistent live: true, archived: true tri-state. Always fire UNARCHIVE before PUBLISH on archived content.
⚠️ Multi-scheme content types: When a content type has multiple workflow schemes attached, firing a system action only initializes the contentlet into the scheme whose systemActionMappings entry resolved the fire. Other attached schemes will not have a task for that contentlet, and firing their actions later will fail with 'Workflow Action is not available in the Workflow Step the content is currently in.' To exercise actions in those other schemes, fire by action ID via PUT /api/v1/workflow/actions/{actionId}/fire using an action mapped to the desired scheme.
When chaining workflow actions or reading state back immediately after firing, pass indexPolicy=WAIT_FOR on each call. The default DEFER is asynchronous and can return stale index reads for several seconds, which can mimic server-side state bugs. For isolated one-off fires where nothing reads the result, leave the default.
Path parameters
Default system action.
Query parameters
Inode of the target content.
Identifier of target content.
Determines how target content is indexed.
| Value | Description |
|---|---|
| DEFER | Content will be indexed asynchronously, outside of the current process. Valid content will finish the method in process and be returned before the content becomes visible in the index. This is the default index policy; it is resource-friendly and well-suited to batch processing. |
| WAIT_FOR | The API call will not return from the content check process until the content has been indexed. Ensures content is promptly available for searching. |
| FORCE | Forces Elasticsearch to index the content immediately.<br>Caution: Using this value may cause system performance issues; it is not recommended for general use, though may be useful for testing purposes. |
Language version of target content.
Variant name
Request body
Response
Fired action successfully
Changes
No recorded changes to this endpoint across all 1 revision of this API.