@dotcms/ai 26.8.7-1 → 26.8.10-1-next.2504
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -0
- package/package.json +1 -1
- package/spec.cjs.js +31 -22
- package/spec.esm.js +31 -22
package/README.md
CHANGED
|
@@ -20,6 +20,34 @@ Safety isn't a setting you turn on; it's the shape of the runtime:
|
|
|
20
20
|
npm install @dotcms/ai
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
+
## Which SDK Version Should I Use?
|
|
24
|
+
|
|
25
|
+
dotCMS SDKs are published in lockstep with dotCMS itself: every `@dotcms/*` package ships
|
|
26
|
+
at the **exact same version number** as the dotCMS release it was built for (e.g. dotCMS
|
|
27
|
+
`26.7.14-1` → `@dotcms/client@26.7.14-1`, `@dotcms/react@26.7.14-1`, and so on).
|
|
28
|
+
|
|
29
|
+
**Simple rule of thumb: use the SDK version that matches your dotCMS instance's version.**
|
|
30
|
+
|
|
31
|
+
You don't have to upgrade the SDK every time dotCMS releases a new version (or vice versa).
|
|
32
|
+
Most releases don't change anything the SDKs rely on, so an older SDK usually keeps working
|
|
33
|
+
fine against a newer dotCMS instance. Occasionally, though, a release does include a real
|
|
34
|
+
breaking change — and if your SDK is older than that point, it will stop working correctly.
|
|
35
|
+
|
|
36
|
+
You don't need to track this yourself: your dotCMS instance always knows the oldest SDK
|
|
37
|
+
version it still supports, and the SDK checks itself against it automatically. If you're
|
|
38
|
+
using an SDK that's too old, you'll see a clear warning in your console telling you to
|
|
39
|
+
upgrade.
|
|
40
|
+
|
|
41
|
+
**Recommendation:** pin your SDKs to the same version as your dotCMS instance, and only bump
|
|
42
|
+
them when you upgrade dotCMS — or when the console tells you to.
|
|
43
|
+
|
|
44
|
+
> **On an LTS release?** LTS releases don't currently get their own matching SDK version.
|
|
45
|
+
> Until that's addressed, use the SDK version published for the closest regular release at
|
|
46
|
+
> or before your LTS version.
|
|
47
|
+
>
|
|
48
|
+
> Want more background on how dotCMS releases and support windows work? See
|
|
49
|
+
> [Release & Support Lifecycle](https://dev.dotcms.com/docs/release-support-lifecycle).
|
|
50
|
+
|
|
23
51
|
## The front door — one runtime, two verbs
|
|
24
52
|
|
|
25
53
|
```ts
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dotcms/ai",
|
|
3
|
-
"version": "26.
|
|
3
|
+
"version": "26.8.10-1-next.2504",
|
|
4
4
|
"description": "The dotCMS agentic runtime — run model-written or human-written code safely against a dotCMS instance, with auth and policy owned in one place.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
package/spec.cjs.js
CHANGED
|
@@ -1747,11 +1747,11 @@ var paths = {
|
|
|
1747
1747
|
description: "Sort direction: choose between ascending or descending.",
|
|
1748
1748
|
schema: {
|
|
1749
1749
|
type: "string",
|
|
1750
|
-
"default": "ASC",
|
|
1751
1750
|
"enum": [
|
|
1752
1751
|
"ASC",
|
|
1753
1752
|
"DESC"
|
|
1754
|
-
]
|
|
1753
|
+
],
|
|
1754
|
+
"default": "ASC"
|
|
1755
1755
|
}
|
|
1756
1756
|
},
|
|
1757
1757
|
{
|
|
@@ -3211,7 +3211,7 @@ var paths = {
|
|
|
3211
3211
|
"Folders"
|
|
3212
3212
|
],
|
|
3213
3213
|
summary: "Search folders",
|
|
3214
|
-
description: "Returns folders within a site matching an optional name filter and/or path scope. Supports recursive depth control, standard pagination, and sorting. With no 'name' and default path '/' + recursive=true, all site folders are returned.",
|
|
3214
|
+
description: "Returns folders within a site matching an optional name filter and/or path scope. Supports recursive depth control, standard pagination, and sorting. With no 'name' and default path '/' + recursive=true, all site folders are returned. Each folder carries the detail fields a folder-edit form needs (title, sortOrder, filesMasks, defaultFileType, showOnMenu, defaultBaseType). Set 'includePermissions=true' to also receive the permission types the requesting user holds on each folder; that flag caps 'perPage' (see the parameter description).",
|
|
3215
3215
|
operationId: "searchFolders",
|
|
3216
3216
|
parameters: [
|
|
3217
3217
|
{
|
|
@@ -3254,11 +3254,11 @@ var paths = {
|
|
|
3254
3254
|
description: "Column to sort by.",
|
|
3255
3255
|
schema: {
|
|
3256
3256
|
type: "string",
|
|
3257
|
-
"default": "name",
|
|
3258
3257
|
"enum": [
|
|
3259
3258
|
"name",
|
|
3260
3259
|
"mod_date"
|
|
3261
|
-
]
|
|
3260
|
+
],
|
|
3261
|
+
"default": "name"
|
|
3262
3262
|
}
|
|
3263
3263
|
},
|
|
3264
3264
|
{
|
|
@@ -3267,11 +3267,11 @@ var paths = {
|
|
|
3267
3267
|
description: "Sort direction",
|
|
3268
3268
|
schema: {
|
|
3269
3269
|
type: "string",
|
|
3270
|
-
"default": "ASC",
|
|
3271
3270
|
"enum": [
|
|
3272
3271
|
"ASC",
|
|
3273
3272
|
"DESC"
|
|
3274
|
-
]
|
|
3273
|
+
],
|
|
3274
|
+
"default": "ASC"
|
|
3275
3275
|
}
|
|
3276
3276
|
},
|
|
3277
3277
|
{
|
|
@@ -3293,6 +3293,15 @@ var paths = {
|
|
|
3293
3293
|
format: "int32",
|
|
3294
3294
|
"default": 40
|
|
3295
3295
|
}
|
|
3296
|
+
},
|
|
3297
|
+
{
|
|
3298
|
+
name: "includePermissions",
|
|
3299
|
+
"in": "query",
|
|
3300
|
+
description: "When true, each returned folder includes a 'permissions' array with the permission types the requesting user holds on it (READ, EDIT, PUBLISH, EDIT_PERMISSIONS, CAN_ADD_CHILDREN). When false (the default) 'permissions' is null — meaning 'not requested', which is not the same as an empty array ('requested, no grants'). Because permissions are resolved per page, enabling this flag caps 'perPage' at the value of the 'content.drive.folder.search.permissions.max.per.page' configuration property (default 200); a larger 'perPage' is rejected with a 400.",
|
|
3301
|
+
schema: {
|
|
3302
|
+
type: "boolean",
|
|
3303
|
+
"default": false
|
|
3304
|
+
}
|
|
3296
3305
|
}
|
|
3297
3306
|
],
|
|
3298
3307
|
responses: {
|
|
@@ -3304,7 +3313,7 @@ var paths = {
|
|
|
3304
3313
|
}
|
|
3305
3314
|
},
|
|
3306
3315
|
"400": {
|
|
3307
|
-
description: "'siteId' is required; 'name' must be at least 2 characters if provided"
|
|
3316
|
+
description: "'siteId' is required; 'name' must be at least 2 characters if provided; 'perPage' exceeds the maximum allowed when 'includePermissions' is true"
|
|
3308
3317
|
},
|
|
3309
3318
|
"401": {
|
|
3310
3319
|
description: "User is not authenticated"
|
|
@@ -10998,11 +11007,11 @@ var paths = {
|
|
|
10998
11007
|
description: "*Optional.* Case-insensitive parameter indicating how results are to be displayed.\n\nIn listing mode, all associated actions are returned; in editing mode (the default), it returns only the actions accessible to the contentlet's current workflow step.",
|
|
10999
11008
|
schema: {
|
|
11000
11009
|
type: "string",
|
|
11001
|
-
"default": "EDITING",
|
|
11002
11010
|
"enum": [
|
|
11003
11011
|
"EDITING",
|
|
11004
11012
|
"LISTING"
|
|
11005
|
-
]
|
|
11013
|
+
],
|
|
11014
|
+
"default": "EDITING"
|
|
11006
11015
|
}
|
|
11007
11016
|
}
|
|
11008
11017
|
],
|
|
@@ -11421,7 +11430,7 @@ var paths = {
|
|
|
11421
11430
|
"Workflow"
|
|
11422
11431
|
],
|
|
11423
11432
|
summary: "Fire action by name (multipart form)",
|
|
11424
|
-
description: "Fires a [workflow action](https://www.dotcms.com/docs/latest/managing-workflows#Actions), specified by name, on a target contentlet. Uses a multipart form to transmit its data.\n\nReturns 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.\n\n**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.\n\n**Block Editor (Story Block) fields:** send the value as a **Markdown or HTML** string — you do not need to hand-author the underlying ProseMirror/JSON document. dotCMS converts it to the Block Editor (ProseMirror JSON) structure automatically on save, so the field reads back as structured content with no editor round-trip required. A value that is already a valid Tiptap/ProseMirror JSON document is detected and stored unchanged. Example: `\"body\": \"## Intro\\n\\nHello **world**.\"`.\n\n**Rich blocks in Markdown:** blocks that plain Markdown cannot express are written as fenced code blocks whose info string is a `dotcms-*` label and whose body is a small JSON object. Example — embed a contentlet:\n\n```dotcms-content\\n{\"identifier\": \"<contentlet-id>\", \"languageId\": 1}\\n```\n\nSupported labels and payload fields (**bold** = required):\n- `dotcms-content` → embedded contentlet: **`identifier`**, `languageId` (default 1). The server rebuilds the full embed data from the identifier on every read.\n- `dotcms-image` → dotCMS-bound or decorated image: **`identifier` or `src`**; optional `alt`, `title`, `href`, `target`, `textWrap`, `textAlign`, `languageId`. Plain external images need no fence — standard `` works.\n- `dotcms-video` → video: **`identifier` or `src`**; optional `mimeType`, `width`, `height`, `languageId`.\n- `dotcms-youtube` → YouTube embed: **`src`**; optional `start` (seconds), `width`, `height`.\n- `dotcms-grid` → layout grid: the verbatim `gridBlock` node JSON (`{\"type\":\"gridBlock\",\"attrs\":{\"columns\":[n,n]},\"content\":[…two gridColumn nodes…]}`).\n- `dotcms-node` → any other node type verbatim (`{\"type\": \"<nodeType>\", …}`) — the fallback for custom blocks.\n\nBlock styling (e.g. text alignment) is set by an HTML comment on its own line immediately before the block it decorates: `<!-- dotcms:attrs {\"textAlign\":\"center\"} -->`.\n\nA Markdown/HTML write **fully replaces** the stored document; when stored rich blocks are not carried over in the submitted value, the save still succeeds and an advisory warning listing the replaced blocks is returned in the response `messages` field — carry the blocks over as fences to preserve them. An invalid
|
|
11433
|
+
description: "Fires a [workflow action](https://www.dotcms.com/docs/latest/managing-workflows#Actions), specified by name, on a target contentlet. Uses a multipart form to transmit its data.\n\nReturns 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.\n\n**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.\n\n**Block Editor (Story Block) fields:** send the value as a **Markdown or HTML** string — you do not need to hand-author the underlying ProseMirror/JSON document. dotCMS converts it to the Block Editor (ProseMirror JSON) structure automatically on save, so the field reads back as structured content with no editor round-trip required. A value that is already a valid Tiptap/ProseMirror JSON document is detected and stored unchanged. Example: `\"body\": \"## Intro\\n\\nHello **world**.\"`.\n\n**Rich blocks in Markdown:** blocks that plain Markdown cannot express are written as fenced code blocks whose info string is a `dotcms-*` label and whose body is a small JSON object. Example — embed a contentlet:\n\n```dotcms-content\\n{\"identifier\": \"<contentlet-id>\", \"languageId\": 1}\\n```\n\nSupported labels and payload fields (**bold** = required):\n- `dotcms-content` → embedded contentlet: **`identifier`**, `languageId` (default 1). The server rebuilds the full embed data from the identifier on every read.\n- `dotcms-image` → dotCMS-bound or decorated image: **`identifier` or `src`**; optional `alt`, `title`, `href`, `target`, `textWrap`, `textAlign`, `languageId`. Plain external images need no fence — standard `` works.\n- `dotcms-video` → video: **`identifier` or `src`**; optional `mimeType`, `width`, `height`, `languageId`.\n- `dotcms-youtube` → YouTube embed: **`src`**; optional `start` (seconds), `width`, `height`.\n- `dotcms-grid` → layout grid: the verbatim `gridBlock` node JSON (`{\"type\":\"gridBlock\",\"attrs\":{\"columns\":[n,n]},\"content\":[…two gridColumn nodes…]}`).\n- `dotcms-node` → any other node type verbatim (`{\"type\": \"<nodeType>\", …}`) — the fallback for custom blocks.\n\n**Rich blocks in HTML:** the same labels are namespaced custom elements. Scalar payloads ride as attributes with **hyphenated names** (HTML lowercases attribute names, so `languageId` is spelled `language-id`, `mimeType` is `mime-type`): `<dotcms-content identifier=\"<contentlet-id>\" language-id=\"1\"></dotcms-content>`. `dotcms-ai`, `dotcms-grid` and `dotcms-node` take the same JSON object as the element's text body instead (HTML-escape `<` and `&` inside JSON string values). Always write an explicit closing tag — HTML parsing ignores the `/` in `<dotcms-video … />` and would swallow the content after it. Both carriers produce identical stored documents.\n\nBlock styling (e.g. text alignment) is set by an HTML comment on its own line immediately before the block it decorates, in Markdown and HTML alike: `<!-- dotcms:attrs {\"textAlign\":\"center\"} -->`.\n\nA Markdown/HTML write **fully replaces** the stored document; when stored rich blocks are not carried over in the submitted value, the save still succeeds and an advisory warning listing the replaced blocks is returned in the response `messages` field — carry the blocks over as fences or elements to preserve them. An invalid payload degrades to an ordinary code block (or is dropped when it carries no text to keep), never an error.",
|
|
11425
11434
|
operationId: "putFireActionByNameMultipart",
|
|
11426
11435
|
parameters: [
|
|
11427
11436
|
{
|
|
@@ -11519,7 +11528,7 @@ var paths = {
|
|
|
11519
11528
|
"Workflow"
|
|
11520
11529
|
],
|
|
11521
11530
|
summary: "Fire workflow action by name",
|
|
11522
|
-
description: "Fires a [workflow action](https://www.dotcms.com/docs/latest/managing-workflows#Actions), specified by name, on a target contentlet.\n\nReturns 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.\n\n**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.\n\n**Block Editor (Story Block) fields:** send the value as a **Markdown or HTML** string — you do not need to hand-author the underlying ProseMirror/JSON document. dotCMS converts it to the Block Editor (ProseMirror JSON) structure automatically on save, so the field reads back as structured content with no editor round-trip required. A value that is already a valid Tiptap/ProseMirror JSON document is detected and stored unchanged. Example: `\"body\": \"## Intro\\n\\nHello **world**.\"`.\n\n**Rich blocks in Markdown:** blocks that plain Markdown cannot express are written as fenced code blocks whose info string is a `dotcms-*` label and whose body is a small JSON object. Example — embed a contentlet:\n\n```dotcms-content\\n{\"identifier\": \"<contentlet-id>\", \"languageId\": 1}\\n```\n\nSupported labels and payload fields (**bold** = required):\n- `dotcms-content` → embedded contentlet: **`identifier`**, `languageId` (default 1). The server rebuilds the full embed data from the identifier on every read.\n- `dotcms-image` → dotCMS-bound or decorated image: **`identifier` or `src`**; optional `alt`, `title`, `href`, `target`, `textWrap`, `textAlign`, `languageId`. Plain external images need no fence — standard `` works.\n- `dotcms-video` → video: **`identifier` or `src`**; optional `mimeType`, `width`, `height`, `languageId`.\n- `dotcms-youtube` → YouTube embed: **`src`**; optional `start` (seconds), `width`, `height`.\n- `dotcms-grid` → layout grid: the verbatim `gridBlock` node JSON (`{\"type\":\"gridBlock\",\"attrs\":{\"columns\":[n,n]},\"content\":[…two gridColumn nodes…]}`).\n- `dotcms-node` → any other node type verbatim (`{\"type\": \"<nodeType>\", …}`) — the fallback for custom blocks.\n\nBlock styling (e.g. text alignment) is set by an HTML comment on its own line immediately before the block it decorates: `<!-- dotcms:attrs {\"textAlign\":\"center\"} -->`.\n\nA Markdown/HTML write **fully replaces** the stored document; when stored rich blocks are not carried over in the submitted value, the save still succeeds and an advisory warning listing the replaced blocks is returned in the response `messages` field — carry the blocks over as fences to preserve them. An invalid
|
|
11531
|
+
description: "Fires a [workflow action](https://www.dotcms.com/docs/latest/managing-workflows#Actions), specified by name, on a target contentlet.\n\nReturns 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.\n\n**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.\n\n**Block Editor (Story Block) fields:** send the value as a **Markdown or HTML** string — you do not need to hand-author the underlying ProseMirror/JSON document. dotCMS converts it to the Block Editor (ProseMirror JSON) structure automatically on save, so the field reads back as structured content with no editor round-trip required. A value that is already a valid Tiptap/ProseMirror JSON document is detected and stored unchanged. Example: `\"body\": \"## Intro\\n\\nHello **world**.\"`.\n\n**Rich blocks in Markdown:** blocks that plain Markdown cannot express are written as fenced code blocks whose info string is a `dotcms-*` label and whose body is a small JSON object. Example — embed a contentlet:\n\n```dotcms-content\\n{\"identifier\": \"<contentlet-id>\", \"languageId\": 1}\\n```\n\nSupported labels and payload fields (**bold** = required):\n- `dotcms-content` → embedded contentlet: **`identifier`**, `languageId` (default 1). The server rebuilds the full embed data from the identifier on every read.\n- `dotcms-image` → dotCMS-bound or decorated image: **`identifier` or `src`**; optional `alt`, `title`, `href`, `target`, `textWrap`, `textAlign`, `languageId`. Plain external images need no fence — standard `` works.\n- `dotcms-video` → video: **`identifier` or `src`**; optional `mimeType`, `width`, `height`, `languageId`.\n- `dotcms-youtube` → YouTube embed: **`src`**; optional `start` (seconds), `width`, `height`.\n- `dotcms-grid` → layout grid: the verbatim `gridBlock` node JSON (`{\"type\":\"gridBlock\",\"attrs\":{\"columns\":[n,n]},\"content\":[…two gridColumn nodes…]}`).\n- `dotcms-node` → any other node type verbatim (`{\"type\": \"<nodeType>\", …}`) — the fallback for custom blocks.\n\n**Rich blocks in HTML:** the same labels are namespaced custom elements. Scalar payloads ride as attributes with **hyphenated names** (HTML lowercases attribute names, so `languageId` is spelled `language-id`, `mimeType` is `mime-type`): `<dotcms-content identifier=\"<contentlet-id>\" language-id=\"1\"></dotcms-content>`. `dotcms-ai`, `dotcms-grid` and `dotcms-node` take the same JSON object as the element's text body instead (HTML-escape `<` and `&` inside JSON string values). Always write an explicit closing tag — HTML parsing ignores the `/` in `<dotcms-video … />` and would swallow the content after it. Both carriers produce identical stored documents.\n\nBlock styling (e.g. text alignment) is set by an HTML comment on its own line immediately before the block it decorates, in Markdown and HTML alike: `<!-- dotcms:attrs {\"textAlign\":\"center\"} -->`.\n\nA Markdown/HTML write **fully replaces** the stored document; when stored rich blocks are not carried over in the submitted value, the save still succeeds and an advisory warning listing the replaced blocks is returned in the response `messages` field — carry the blocks over as fences or elements to preserve them. An invalid payload degrades to an ordinary code block (or is dropped when it carries no text to keep), never an error.",
|
|
11523
11532
|
operationId: "putFireActionByName",
|
|
11524
11533
|
parameters: [
|
|
11525
11534
|
{
|
|
@@ -11669,7 +11678,7 @@ var paths = {
|
|
|
11669
11678
|
"Workflow"
|
|
11670
11679
|
],
|
|
11671
11680
|
summary: "Fire default action (multipart form)",
|
|
11672
|
-
description: "Fires a default [system action](https://www.dotcms.com/docs/latest/managing-workflows#DefaultActions) on target contentlet. Uses a multipart form to transmit its data.\n\nReturns 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.\n\n**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.\n\n**Block Editor (Story Block) fields:** send the value as a **Markdown or HTML** string — you do not need to hand-author the underlying ProseMirror/JSON document. dotCMS converts it to the Block Editor (ProseMirror JSON) structure automatically on save, so the field reads back as structured content with no editor round-trip required. A value that is already a valid Tiptap/ProseMirror JSON document is detected and stored unchanged. Example: `\"body\": \"## Intro\\n\\nHello **world**.\"`.\n\n**Rich blocks in Markdown:** blocks that plain Markdown cannot express are written as fenced code blocks whose info string is a `dotcms-*` label and whose body is a small JSON object. Example — embed a contentlet:\n\n```dotcms-content\\n{\"identifier\": \"<contentlet-id>\", \"languageId\": 1}\\n```\n\nSupported labels and payload fields (**bold** = required):\n- `dotcms-content` → embedded contentlet: **`identifier`**, `languageId` (default 1). The server rebuilds the full embed data from the identifier on every read.\n- `dotcms-image` → dotCMS-bound or decorated image: **`identifier` or `src`**; optional `alt`, `title`, `href`, `target`, `textWrap`, `textAlign`, `languageId`. Plain external images need no fence — standard `` works.\n- `dotcms-video` → video: **`identifier` or `src`**; optional `mimeType`, `width`, `height`, `languageId`.\n- `dotcms-youtube` → YouTube embed: **`src`**; optional `start` (seconds), `width`, `height`.\n- `dotcms-grid` → layout grid: the verbatim `gridBlock` node JSON (`{\"type\":\"gridBlock\",\"attrs\":{\"columns\":[n,n]},\"content\":[…two gridColumn nodes…]}`).\n- `dotcms-node` → any other node type verbatim (`{\"type\": \"<nodeType>\", …}`) — the fallback for custom blocks.\n\nBlock styling (e.g. text alignment) is set by an HTML comment on its own line immediately before the block it decorates: `<!-- dotcms:attrs {\"textAlign\":\"center\"} -->`.\n\nA Markdown/HTML write **fully replaces** the stored document; when stored rich blocks are not carried over in the submitted value, the save still succeeds and an advisory warning listing the replaced blocks is returned in the response `messages` field — carry the blocks over as fences to preserve them. An invalid
|
|
11681
|
+
description: "Fires a default [system action](https://www.dotcms.com/docs/latest/managing-workflows#DefaultActions) on target contentlet. Uses a multipart form to transmit its data.\n\nReturns 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.\n\n**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.\n\n**Block Editor (Story Block) fields:** send the value as a **Markdown or HTML** string — you do not need to hand-author the underlying ProseMirror/JSON document. dotCMS converts it to the Block Editor (ProseMirror JSON) structure automatically on save, so the field reads back as structured content with no editor round-trip required. A value that is already a valid Tiptap/ProseMirror JSON document is detected and stored unchanged. Example: `\"body\": \"## Intro\\n\\nHello **world**.\"`.\n\n**Rich blocks in Markdown:** blocks that plain Markdown cannot express are written as fenced code blocks whose info string is a `dotcms-*` label and whose body is a small JSON object. Example — embed a contentlet:\n\n```dotcms-content\\n{\"identifier\": \"<contentlet-id>\", \"languageId\": 1}\\n```\n\nSupported labels and payload fields (**bold** = required):\n- `dotcms-content` → embedded contentlet: **`identifier`**, `languageId` (default 1). The server rebuilds the full embed data from the identifier on every read.\n- `dotcms-image` → dotCMS-bound or decorated image: **`identifier` or `src`**; optional `alt`, `title`, `href`, `target`, `textWrap`, `textAlign`, `languageId`. Plain external images need no fence — standard `` works.\n- `dotcms-video` → video: **`identifier` or `src`**; optional `mimeType`, `width`, `height`, `languageId`.\n- `dotcms-youtube` → YouTube embed: **`src`**; optional `start` (seconds), `width`, `height`.\n- `dotcms-grid` → layout grid: the verbatim `gridBlock` node JSON (`{\"type\":\"gridBlock\",\"attrs\":{\"columns\":[n,n]},\"content\":[…two gridColumn nodes…]}`).\n- `dotcms-node` → any other node type verbatim (`{\"type\": \"<nodeType>\", …}`) — the fallback for custom blocks.\n\n**Rich blocks in HTML:** the same labels are namespaced custom elements. Scalar payloads ride as attributes with **hyphenated names** (HTML lowercases attribute names, so `languageId` is spelled `language-id`, `mimeType` is `mime-type`): `<dotcms-content identifier=\"<contentlet-id>\" language-id=\"1\"></dotcms-content>`. `dotcms-ai`, `dotcms-grid` and `dotcms-node` take the same JSON object as the element's text body instead (HTML-escape `<` and `&` inside JSON string values). Always write an explicit closing tag — HTML parsing ignores the `/` in `<dotcms-video … />` and would swallow the content after it. Both carriers produce identical stored documents.\n\nBlock styling (e.g. text alignment) is set by an HTML comment on its own line immediately before the block it decorates, in Markdown and HTML alike: `<!-- dotcms:attrs {\"textAlign\":\"center\"} -->`.\n\nA Markdown/HTML write **fully replaces** the stored document; when stored rich blocks are not carried over in the submitted value, the save still succeeds and an advisory warning listing the replaced blocks is returned in the response `messages` field — carry the blocks over as fences or elements to preserve them. An invalid payload degrades to an ordinary code block (or is dropped when it carries no text to keep), never an error.",
|
|
11673
11682
|
operationId: "putFireDefaultActionMultipart",
|
|
11674
11683
|
parameters: [
|
|
11675
11684
|
{
|
|
@@ -11786,7 +11795,7 @@ var paths = {
|
|
|
11786
11795
|
"Workflow"
|
|
11787
11796
|
],
|
|
11788
11797
|
summary: "Fire system action by name",
|
|
11789
|
-
description: "Fire a [default system action](https://www.dotcms.com/docs/latest/managing-workflows#DefaultActions) by name on a target contentlet.\n\nReturns 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.\n\n**Request body** — wrap field values in a `contentlet` key:\n\n```json\n{\n \"contentlet\": {\n \"contentType\": \"<variable-or-inode>\",\n \"title\": \"My New Item\",\n \"...\": \"other field values\"\n }\n}\n```\nField 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}`.\n\n**Validation error response shape:**\n\n```json\n{\n \"entity\": \"\",\n \"errors\": [{ \"errorCode\": \"required\", \"fieldName\": \"image\", \"message\": \"The field Image is required.\" }],\n \"i18nMessagesMap\": {}, \"messages\": [], \"pagination\": null, \"permissions\": []\n}\n```\n`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.\n\n**Binary and image fields** — These fields cannot receive raw file data or asset paths in the JSON body. Use one of the patterns below.\n\n**Pattern A — single-use file (works for all binary/image fields):**\n\n1. `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.\n2. Pass that ID in the contentlet body: `{\"contentlet\": {\"contentType\": \"ResortActivities\", \"image\": \"temp_5311313004\", ...}}`.\n\n**Pattern B — reusable shared asset (`ImmutableImageField` only):**\n\n1. Upload via `/temp`, create a dotAsset contentlet: `PUT .../fire/PUBLISH` with `{\"contentlet\": {\"contentType\": \"dotAsset\", \"asset\": \"temp_<id>\"}}`.\n2. Use the returned dotAsset `identifier` as the field value on any `ImmutableImageField`.\n\n| Field `clazz` | `temp_<id>` | dotAsset `identifier` |\n|---|---|---|\n| `ImmutableBinaryField` | ✅ | ❌ (returns 400 \\\"field is required\\\") |\n| `ImmutableImageField` | ✅ | ✅ |\n\nFind a field's `clazz` by calling `GET /api/v1/contenttype/id/{idOrVar}` and reading `fields[].clazz`.\n\n⚠️ **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.\n\n⚠️ **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.\n\n**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.\n\n**Block Editor (Story Block) fields:** send the value as a **Markdown or HTML** string — you do not need to hand-author the underlying ProseMirror/JSON document. dotCMS converts it to the Block Editor (ProseMirror JSON) structure automatically on save, so the field reads back as structured content with no editor round-trip required. A value that is already a valid Tiptap/ProseMirror JSON document is detected and stored unchanged. Example: `\"body\": \"## Intro\\n\\nHello **world**.\"`.\n\n**Rich blocks in Markdown:** blocks that plain Markdown cannot express are written as fenced code blocks whose info string is a `dotcms-*` label and whose body is a small JSON object. Example — embed a contentlet:\n\n```dotcms-content\\n{\"identifier\": \"<contentlet-id>\", \"languageId\": 1}\\n```\n\nSupported labels and payload fields (**bold** = required):\n- `dotcms-content` → embedded contentlet: **`identifier`**, `languageId` (default 1). The server rebuilds the full embed data from the identifier on every read.\n- `dotcms-image` → dotCMS-bound or decorated image: **`identifier` or `src`**; optional `alt`, `title`, `href`, `target`, `textWrap`, `textAlign`, `languageId`. Plain external images need no fence — standard `` works.\n- `dotcms-video` → video: **`identifier` or `src`**; optional `mimeType`, `width`, `height`, `languageId`.\n- `dotcms-youtube` → YouTube embed: **`src`**; optional `start` (seconds), `width`, `height`.\n- `dotcms-grid` → layout grid: the verbatim `gridBlock` node JSON (`{\"type\":\"gridBlock\",\"attrs\":{\"columns\":[n,n]},\"content\":[…two gridColumn nodes…]}`).\n- `dotcms-node` → any other node type verbatim (`{\"type\": \"<nodeType>\", …}`) — the fallback for custom blocks.\n\nBlock styling (e.g. text alignment) is set by an HTML comment on its own line immediately before the block it decorates: `<!-- dotcms:attrs {\"textAlign\":\"center\"} -->`.\n\nA Markdown/HTML write **fully replaces** the stored document; when stored rich blocks are not carried over in the submitted value, the save still succeeds and an advisory warning listing the replaced blocks is returned in the response `messages` field — carry the blocks over as fences to preserve them. An invalid
|
|
11798
|
+
description: "Fire a [default system action](https://www.dotcms.com/docs/latest/managing-workflows#DefaultActions) by name on a target contentlet.\n\nReturns 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.\n\n**Request body** — wrap field values in a `contentlet` key:\n\n```json\n{\n \"contentlet\": {\n \"contentType\": \"<variable-or-inode>\",\n \"title\": \"My New Item\",\n \"...\": \"other field values\"\n }\n}\n```\nField 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}`.\n\n**Validation error response shape:**\n\n```json\n{\n \"entity\": \"\",\n \"errors\": [{ \"errorCode\": \"required\", \"fieldName\": \"image\", \"message\": \"The field Image is required.\" }],\n \"i18nMessagesMap\": {}, \"messages\": [], \"pagination\": null, \"permissions\": []\n}\n```\n`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.\n\n**Binary and image fields** — These fields cannot receive raw file data or asset paths in the JSON body. Use one of the patterns below.\n\n**Pattern A — single-use file (works for all binary/image fields):**\n\n1. `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.\n2. Pass that ID in the contentlet body: `{\"contentlet\": {\"contentType\": \"ResortActivities\", \"image\": \"temp_5311313004\", ...}}`.\n\n**Pattern B — reusable shared asset (`ImmutableImageField` only):**\n\n1. Upload via `/temp`, create a dotAsset contentlet: `PUT .../fire/PUBLISH` with `{\"contentlet\": {\"contentType\": \"dotAsset\", \"asset\": \"temp_<id>\"}}`.\n2. Use the returned dotAsset `identifier` as the field value on any `ImmutableImageField`.\n\n| Field `clazz` | `temp_<id>` | dotAsset `identifier` |\n|---|---|---|\n| `ImmutableBinaryField` | ✅ | ❌ (returns 400 \\\"field is required\\\") |\n| `ImmutableImageField` | ✅ | ✅ |\n\nFind a field's `clazz` by calling `GET /api/v1/contenttype/id/{idOrVar}` and reading `fields[].clazz`.\n\n⚠️ **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.\n\n⚠️ **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.\n\n**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.\n\n**Block Editor (Story Block) fields:** send the value as a **Markdown or HTML** string — you do not need to hand-author the underlying ProseMirror/JSON document. dotCMS converts it to the Block Editor (ProseMirror JSON) structure automatically on save, so the field reads back as structured content with no editor round-trip required. A value that is already a valid Tiptap/ProseMirror JSON document is detected and stored unchanged. Example: `\"body\": \"## Intro\\n\\nHello **world**.\"`.\n\n**Rich blocks in Markdown:** blocks that plain Markdown cannot express are written as fenced code blocks whose info string is a `dotcms-*` label and whose body is a small JSON object. Example — embed a contentlet:\n\n```dotcms-content\\n{\"identifier\": \"<contentlet-id>\", \"languageId\": 1}\\n```\n\nSupported labels and payload fields (**bold** = required):\n- `dotcms-content` → embedded contentlet: **`identifier`**, `languageId` (default 1). The server rebuilds the full embed data from the identifier on every read.\n- `dotcms-image` → dotCMS-bound or decorated image: **`identifier` or `src`**; optional `alt`, `title`, `href`, `target`, `textWrap`, `textAlign`, `languageId`. Plain external images need no fence — standard `` works.\n- `dotcms-video` → video: **`identifier` or `src`**; optional `mimeType`, `width`, `height`, `languageId`.\n- `dotcms-youtube` → YouTube embed: **`src`**; optional `start` (seconds), `width`, `height`.\n- `dotcms-grid` → layout grid: the verbatim `gridBlock` node JSON (`{\"type\":\"gridBlock\",\"attrs\":{\"columns\":[n,n]},\"content\":[…two gridColumn nodes…]}`).\n- `dotcms-node` → any other node type verbatim (`{\"type\": \"<nodeType>\", …}`) — the fallback for custom blocks.\n\n**Rich blocks in HTML:** the same labels are namespaced custom elements. Scalar payloads ride as attributes with **hyphenated names** (HTML lowercases attribute names, so `languageId` is spelled `language-id`, `mimeType` is `mime-type`): `<dotcms-content identifier=\"<contentlet-id>\" language-id=\"1\"></dotcms-content>`. `dotcms-ai`, `dotcms-grid` and `dotcms-node` take the same JSON object as the element's text body instead (HTML-escape `<` and `&` inside JSON string values). Always write an explicit closing tag — HTML parsing ignores the `/` in `<dotcms-video … />` and would swallow the content after it. Both carriers produce identical stored documents.\n\nBlock styling (e.g. text alignment) is set by an HTML comment on its own line immediately before the block it decorates, in Markdown and HTML alike: `<!-- dotcms:attrs {\"textAlign\":\"center\"} -->`.\n\nA Markdown/HTML write **fully replaces** the stored document; when stored rich blocks are not carried over in the submitted value, the save still succeeds and an advisory warning listing the replaced blocks is returned in the response `messages` field — carry the blocks over as fences or elements to preserve them. An invalid payload degrades to an ordinary code block (or is dropped when it carries no text to keep), never an error.",
|
|
11790
11799
|
operationId: "putFireDefaultSystemAction",
|
|
11791
11800
|
parameters: [
|
|
11792
11801
|
{
|
|
@@ -12254,7 +12263,7 @@ var paths = {
|
|
|
12254
12263
|
"Workflow"
|
|
12255
12264
|
],
|
|
12256
12265
|
summary: "Fire action by ID (multipart form)",
|
|
12257
|
-
description: "Fires a [workflow action](https://www.dotcms.com/docs/latest/managing-workflows#Actions), specified by identifier, on a target contentlet. Uses a multipart form to transmit its data.\n\nReturns 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.\n\n**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.\n\n**Block Editor (Story Block) fields:** send the value as a **Markdown or HTML** string — you do not need to hand-author the underlying ProseMirror/JSON document. dotCMS converts it to the Block Editor (ProseMirror JSON) structure automatically on save, so the field reads back as structured content with no editor round-trip required. A value that is already a valid Tiptap/ProseMirror JSON document is detected and stored unchanged. Example: `\"body\": \"## Intro\\n\\nHello **world**.\"`.\n\n**Rich blocks in Markdown:** blocks that plain Markdown cannot express are written as fenced code blocks whose info string is a `dotcms-*` label and whose body is a small JSON object. Example — embed a contentlet:\n\n```dotcms-content\\n{\"identifier\": \"<contentlet-id>\", \"languageId\": 1}\\n```\n\nSupported labels and payload fields (**bold** = required):\n- `dotcms-content` → embedded contentlet: **`identifier`**, `languageId` (default 1). The server rebuilds the full embed data from the identifier on every read.\n- `dotcms-image` → dotCMS-bound or decorated image: **`identifier` or `src`**; optional `alt`, `title`, `href`, `target`, `textWrap`, `textAlign`, `languageId`. Plain external images need no fence — standard `` works.\n- `dotcms-video` → video: **`identifier` or `src`**; optional `mimeType`, `width`, `height`, `languageId`.\n- `dotcms-youtube` → YouTube embed: **`src`**; optional `start` (seconds), `width`, `height`.\n- `dotcms-grid` → layout grid: the verbatim `gridBlock` node JSON (`{\"type\":\"gridBlock\",\"attrs\":{\"columns\":[n,n]},\"content\":[…two gridColumn nodes…]}`).\n- `dotcms-node` → any other node type verbatim (`{\"type\": \"<nodeType>\", …}`) — the fallback for custom blocks.\n\nBlock styling (e.g. text alignment) is set by an HTML comment on its own line immediately before the block it decorates: `<!-- dotcms:attrs {\"textAlign\":\"center\"} -->`.\n\nA Markdown/HTML write **fully replaces** the stored document; when stored rich blocks are not carried over in the submitted value, the save still succeeds and an advisory warning listing the replaced blocks is returned in the response `messages` field — carry the blocks over as fences to preserve them. An invalid
|
|
12266
|
+
description: "Fires a [workflow action](https://www.dotcms.com/docs/latest/managing-workflows#Actions), specified by identifier, on a target contentlet. Uses a multipart form to transmit its data.\n\nReturns 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.\n\n**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.\n\n**Block Editor (Story Block) fields:** send the value as a **Markdown or HTML** string — you do not need to hand-author the underlying ProseMirror/JSON document. dotCMS converts it to the Block Editor (ProseMirror JSON) structure automatically on save, so the field reads back as structured content with no editor round-trip required. A value that is already a valid Tiptap/ProseMirror JSON document is detected and stored unchanged. Example: `\"body\": \"## Intro\\n\\nHello **world**.\"`.\n\n**Rich blocks in Markdown:** blocks that plain Markdown cannot express are written as fenced code blocks whose info string is a `dotcms-*` label and whose body is a small JSON object. Example — embed a contentlet:\n\n```dotcms-content\\n{\"identifier\": \"<contentlet-id>\", \"languageId\": 1}\\n```\n\nSupported labels and payload fields (**bold** = required):\n- `dotcms-content` → embedded contentlet: **`identifier`**, `languageId` (default 1). The server rebuilds the full embed data from the identifier on every read.\n- `dotcms-image` → dotCMS-bound or decorated image: **`identifier` or `src`**; optional `alt`, `title`, `href`, `target`, `textWrap`, `textAlign`, `languageId`. Plain external images need no fence — standard `` works.\n- `dotcms-video` → video: **`identifier` or `src`**; optional `mimeType`, `width`, `height`, `languageId`.\n- `dotcms-youtube` → YouTube embed: **`src`**; optional `start` (seconds), `width`, `height`.\n- `dotcms-grid` → layout grid: the verbatim `gridBlock` node JSON (`{\"type\":\"gridBlock\",\"attrs\":{\"columns\":[n,n]},\"content\":[…two gridColumn nodes…]}`).\n- `dotcms-node` → any other node type verbatim (`{\"type\": \"<nodeType>\", …}`) — the fallback for custom blocks.\n\n**Rich blocks in HTML:** the same labels are namespaced custom elements. Scalar payloads ride as attributes with **hyphenated names** (HTML lowercases attribute names, so `languageId` is spelled `language-id`, `mimeType` is `mime-type`): `<dotcms-content identifier=\"<contentlet-id>\" language-id=\"1\"></dotcms-content>`. `dotcms-ai`, `dotcms-grid` and `dotcms-node` take the same JSON object as the element's text body instead (HTML-escape `<` and `&` inside JSON string values). Always write an explicit closing tag — HTML parsing ignores the `/` in `<dotcms-video … />` and would swallow the content after it. Both carriers produce identical stored documents.\n\nBlock styling (e.g. text alignment) is set by an HTML comment on its own line immediately before the block it decorates, in Markdown and HTML alike: `<!-- dotcms:attrs {\"textAlign\":\"center\"} -->`.\n\nA Markdown/HTML write **fully replaces** the stored document; when stored rich blocks are not carried over in the submitted value, the save still succeeds and an advisory warning listing the replaced blocks is returned in the response `messages` field — carry the blocks over as fences or elements to preserve them. An invalid payload degrades to an ordinary code block (or is dropped when it carries no text to keep), never an error.",
|
|
12258
12267
|
operationId: "putFireActionByIdMultipart",
|
|
12259
12268
|
parameters: [
|
|
12260
12269
|
{
|
|
@@ -12361,7 +12370,7 @@ var paths = {
|
|
|
12361
12370
|
"Workflow"
|
|
12362
12371
|
],
|
|
12363
12372
|
summary: "Fire action by ID",
|
|
12364
|
-
description: "Fires a [workflow action](https://www.dotcms.com/docs/latest/managing-workflows#Actions), specified by identifier, on a target contentlet.\n\nReturns 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.\n\n**Use this endpoint to fire actions that are not represented as `SystemAction` tokens** (`NEW`, `EDIT`, `PUBLISH`, etc.). The two most common are `Move` and `Copy` on the System Workflow scheme.\n\n**Move action** — relocates a contentlet to a new folder/host. Request body shape (note: `pathToMove` is a sibling of `contentlet`, **not** nested inside it):\n\n```json\n{\n \"contentlet\": { \"identifier\": \"<contentlet-identifier>\" },\n \"pathToMove\": \"//<siteHost>/<folderPath>\"\n}\n```\nAlternative shapes (`contentlet.host`+`contentlet.folder`, `contentlet.hostFolder`, `path` instead of `pathToMove`) all return `400 \"The host path is not valid: null\"`.\n\n**Copy action** — clones a contentlet. Fire with `?identifier=<source-id>` and an empty body (or `{\"contentlet\": {\"identifier\": \"<source-id>\"}}`). The Copy action id on the default System Workflow scheme is `963f6a04-5320-42e7-ab74-6d876d199946`; retrieve it for other environments via `GET /api/v1/workflow/schemes/{schemeId}/actions`. ⚠️ The response `entity` returns the **source** contentlet, not the newly-created copy — locate the copy via a follow-up `POST /api/content/_search` ordered by `modDate DESC`. The copy lands in `SYSTEM_HOST` / `SYSTEM_FOLDER`; destination hints (`pathToMove`, `host`, `folder`, `hostFolder`) are silently ignored. Fire the Move action afterwards to relocate.\n\n**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.\n\n**Block Editor (Story Block) fields:** send the value as a **Markdown or HTML** string — you do not need to hand-author the underlying ProseMirror/JSON document. dotCMS converts it to the Block Editor (ProseMirror JSON) structure automatically on save, so the field reads back as structured content with no editor round-trip required. A value that is already a valid Tiptap/ProseMirror JSON document is detected and stored unchanged. Example: `\"body\": \"## Intro\\n\\nHello **world**.\"`.\n\n**Rich blocks in Markdown:** blocks that plain Markdown cannot express are written as fenced code blocks whose info string is a `dotcms-*` label and whose body is a small JSON object. Example — embed a contentlet:\n\n```dotcms-content\\n{\"identifier\": \"<contentlet-id>\", \"languageId\": 1}\\n```\n\nSupported labels and payload fields (**bold** = required):\n- `dotcms-content` → embedded contentlet: **`identifier`**, `languageId` (default 1). The server rebuilds the full embed data from the identifier on every read.\n- `dotcms-image` → dotCMS-bound or decorated image: **`identifier` or `src`**; optional `alt`, `title`, `href`, `target`, `textWrap`, `textAlign`, `languageId`. Plain external images need no fence — standard `` works.\n- `dotcms-video` → video: **`identifier` or `src`**; optional `mimeType`, `width`, `height`, `languageId`.\n- `dotcms-youtube` → YouTube embed: **`src`**; optional `start` (seconds), `width`, `height`.\n- `dotcms-grid` → layout grid: the verbatim `gridBlock` node JSON (`{\"type\":\"gridBlock\",\"attrs\":{\"columns\":[n,n]},\"content\":[…two gridColumn nodes…]}`).\n- `dotcms-node` → any other node type verbatim (`{\"type\": \"<nodeType>\", …}`) — the fallback for custom blocks.\n\nBlock styling (e.g. text alignment) is set by an HTML comment on its own line immediately before the block it decorates: `<!-- dotcms:attrs {\"textAlign\":\"center\"} -->`.\n\nA Markdown/HTML write **fully replaces** the stored document; when stored rich blocks are not carried over in the submitted value, the save still succeeds and an advisory warning listing the replaced blocks is returned in the response `messages` field — carry the blocks over as fences to preserve them. An invalid
|
|
12373
|
+
description: "Fires a [workflow action](https://www.dotcms.com/docs/latest/managing-workflows#Actions), specified by identifier, on a target contentlet.\n\nReturns 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.\n\n**Use this endpoint to fire actions that are not represented as `SystemAction` tokens** (`NEW`, `EDIT`, `PUBLISH`, etc.). The two most common are `Move` and `Copy` on the System Workflow scheme.\n\n**Move action** — relocates a contentlet to a new folder/host. Request body shape (note: `pathToMove` is a sibling of `contentlet`, **not** nested inside it):\n\n```json\n{\n \"contentlet\": { \"identifier\": \"<contentlet-identifier>\" },\n \"pathToMove\": \"//<siteHost>/<folderPath>\"\n}\n```\nAlternative shapes (`contentlet.host`+`contentlet.folder`, `contentlet.hostFolder`, `path` instead of `pathToMove`) all return `400 \"The host path is not valid: null\"`.\n\n**Copy action** — clones a contentlet. Fire with `?identifier=<source-id>` and an empty body (or `{\"contentlet\": {\"identifier\": \"<source-id>\"}}`). The Copy action id on the default System Workflow scheme is `963f6a04-5320-42e7-ab74-6d876d199946`; retrieve it for other environments via `GET /api/v1/workflow/schemes/{schemeId}/actions`. ⚠️ The response `entity` returns the **source** contentlet, not the newly-created copy — locate the copy via a follow-up `POST /api/content/_search` ordered by `modDate DESC`. The copy lands in `SYSTEM_HOST` / `SYSTEM_FOLDER`; destination hints (`pathToMove`, `host`, `folder`, `hostFolder`) are silently ignored. Fire the Move action afterwards to relocate.\n\n**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.\n\n**Block Editor (Story Block) fields:** send the value as a **Markdown or HTML** string — you do not need to hand-author the underlying ProseMirror/JSON document. dotCMS converts it to the Block Editor (ProseMirror JSON) structure automatically on save, so the field reads back as structured content with no editor round-trip required. A value that is already a valid Tiptap/ProseMirror JSON document is detected and stored unchanged. Example: `\"body\": \"## Intro\\n\\nHello **world**.\"`.\n\n**Rich blocks in Markdown:** blocks that plain Markdown cannot express are written as fenced code blocks whose info string is a `dotcms-*` label and whose body is a small JSON object. Example — embed a contentlet:\n\n```dotcms-content\\n{\"identifier\": \"<contentlet-id>\", \"languageId\": 1}\\n```\n\nSupported labels and payload fields (**bold** = required):\n- `dotcms-content` → embedded contentlet: **`identifier`**, `languageId` (default 1). The server rebuilds the full embed data from the identifier on every read.\n- `dotcms-image` → dotCMS-bound or decorated image: **`identifier` or `src`**; optional `alt`, `title`, `href`, `target`, `textWrap`, `textAlign`, `languageId`. Plain external images need no fence — standard `` works.\n- `dotcms-video` → video: **`identifier` or `src`**; optional `mimeType`, `width`, `height`, `languageId`.\n- `dotcms-youtube` → YouTube embed: **`src`**; optional `start` (seconds), `width`, `height`.\n- `dotcms-grid` → layout grid: the verbatim `gridBlock` node JSON (`{\"type\":\"gridBlock\",\"attrs\":{\"columns\":[n,n]},\"content\":[…two gridColumn nodes…]}`).\n- `dotcms-node` → any other node type verbatim (`{\"type\": \"<nodeType>\", …}`) — the fallback for custom blocks.\n\n**Rich blocks in HTML:** the same labels are namespaced custom elements. Scalar payloads ride as attributes with **hyphenated names** (HTML lowercases attribute names, so `languageId` is spelled `language-id`, `mimeType` is `mime-type`): `<dotcms-content identifier=\"<contentlet-id>\" language-id=\"1\"></dotcms-content>`. `dotcms-ai`, `dotcms-grid` and `dotcms-node` take the same JSON object as the element's text body instead (HTML-escape `<` and `&` inside JSON string values). Always write an explicit closing tag — HTML parsing ignores the `/` in `<dotcms-video … />` and would swallow the content after it. Both carriers produce identical stored documents.\n\nBlock styling (e.g. text alignment) is set by an HTML comment on its own line immediately before the block it decorates, in Markdown and HTML alike: `<!-- dotcms:attrs {\"textAlign\":\"center\"} -->`.\n\nA Markdown/HTML write **fully replaces** the stored document; when stored rich blocks are not carried over in the submitted value, the save still succeeds and an advisory warning listing the replaced blocks is returned in the response `messages` field — carry the blocks over as fences or elements to preserve them. An invalid payload degrades to an ordinary code block (or is dropped when it carries no text to keep), never an error.",
|
|
12365
12374
|
operationId: "putFireActionById",
|
|
12366
12375
|
parameters: [
|
|
12367
12376
|
{
|
|
@@ -14509,11 +14518,11 @@ var paths = {
|
|
|
14509
14518
|
description: "Asset version to retrieve. Accepted values: working (default), live.",
|
|
14510
14519
|
schema: {
|
|
14511
14520
|
type: "string",
|
|
14512
|
-
"default": "working",
|
|
14513
14521
|
"enum": [
|
|
14514
14522
|
"working",
|
|
14515
14523
|
"live"
|
|
14516
|
-
]
|
|
14524
|
+
],
|
|
14525
|
+
"default": "working"
|
|
14517
14526
|
},
|
|
14518
14527
|
example: "working"
|
|
14519
14528
|
}
|
|
@@ -14591,11 +14600,11 @@ var paths = {
|
|
|
14591
14600
|
description: "Asset version to retrieve. Accepted values: working (default), live.",
|
|
14592
14601
|
schema: {
|
|
14593
14602
|
type: "string",
|
|
14594
|
-
"default": "working",
|
|
14595
14603
|
"enum": [
|
|
14596
14604
|
"working",
|
|
14597
14605
|
"live"
|
|
14598
|
-
]
|
|
14606
|
+
],
|
|
14607
|
+
"default": "working"
|
|
14599
14608
|
},
|
|
14600
14609
|
example: "working"
|
|
14601
14610
|
}
|
|
@@ -15698,11 +15707,11 @@ var paths = {
|
|
|
15698
15707
|
description: "Export format",
|
|
15699
15708
|
schema: {
|
|
15700
15709
|
type: "string",
|
|
15701
|
-
"default": "csv",
|
|
15702
15710
|
"enum": [
|
|
15703
15711
|
"csv",
|
|
15704
15712
|
"json"
|
|
15705
|
-
]
|
|
15713
|
+
],
|
|
15714
|
+
"default": "csv"
|
|
15706
15715
|
},
|
|
15707
15716
|
example: "csv"
|
|
15708
15717
|
},
|
package/spec.esm.js
CHANGED
|
@@ -1745,11 +1745,11 @@ var paths = {
|
|
|
1745
1745
|
description: "Sort direction: choose between ascending or descending.",
|
|
1746
1746
|
schema: {
|
|
1747
1747
|
type: "string",
|
|
1748
|
-
"default": "ASC",
|
|
1749
1748
|
"enum": [
|
|
1750
1749
|
"ASC",
|
|
1751
1750
|
"DESC"
|
|
1752
|
-
]
|
|
1751
|
+
],
|
|
1752
|
+
"default": "ASC"
|
|
1753
1753
|
}
|
|
1754
1754
|
},
|
|
1755
1755
|
{
|
|
@@ -3209,7 +3209,7 @@ var paths = {
|
|
|
3209
3209
|
"Folders"
|
|
3210
3210
|
],
|
|
3211
3211
|
summary: "Search folders",
|
|
3212
|
-
description: "Returns folders within a site matching an optional name filter and/or path scope. Supports recursive depth control, standard pagination, and sorting. With no 'name' and default path '/' + recursive=true, all site folders are returned.",
|
|
3212
|
+
description: "Returns folders within a site matching an optional name filter and/or path scope. Supports recursive depth control, standard pagination, and sorting. With no 'name' and default path '/' + recursive=true, all site folders are returned. Each folder carries the detail fields a folder-edit form needs (title, sortOrder, filesMasks, defaultFileType, showOnMenu, defaultBaseType). Set 'includePermissions=true' to also receive the permission types the requesting user holds on each folder; that flag caps 'perPage' (see the parameter description).",
|
|
3213
3213
|
operationId: "searchFolders",
|
|
3214
3214
|
parameters: [
|
|
3215
3215
|
{
|
|
@@ -3252,11 +3252,11 @@ var paths = {
|
|
|
3252
3252
|
description: "Column to sort by.",
|
|
3253
3253
|
schema: {
|
|
3254
3254
|
type: "string",
|
|
3255
|
-
"default": "name",
|
|
3256
3255
|
"enum": [
|
|
3257
3256
|
"name",
|
|
3258
3257
|
"mod_date"
|
|
3259
|
-
]
|
|
3258
|
+
],
|
|
3259
|
+
"default": "name"
|
|
3260
3260
|
}
|
|
3261
3261
|
},
|
|
3262
3262
|
{
|
|
@@ -3265,11 +3265,11 @@ var paths = {
|
|
|
3265
3265
|
description: "Sort direction",
|
|
3266
3266
|
schema: {
|
|
3267
3267
|
type: "string",
|
|
3268
|
-
"default": "ASC",
|
|
3269
3268
|
"enum": [
|
|
3270
3269
|
"ASC",
|
|
3271
3270
|
"DESC"
|
|
3272
|
-
]
|
|
3271
|
+
],
|
|
3272
|
+
"default": "ASC"
|
|
3273
3273
|
}
|
|
3274
3274
|
},
|
|
3275
3275
|
{
|
|
@@ -3291,6 +3291,15 @@ var paths = {
|
|
|
3291
3291
|
format: "int32",
|
|
3292
3292
|
"default": 40
|
|
3293
3293
|
}
|
|
3294
|
+
},
|
|
3295
|
+
{
|
|
3296
|
+
name: "includePermissions",
|
|
3297
|
+
"in": "query",
|
|
3298
|
+
description: "When true, each returned folder includes a 'permissions' array with the permission types the requesting user holds on it (READ, EDIT, PUBLISH, EDIT_PERMISSIONS, CAN_ADD_CHILDREN). When false (the default) 'permissions' is null — meaning 'not requested', which is not the same as an empty array ('requested, no grants'). Because permissions are resolved per page, enabling this flag caps 'perPage' at the value of the 'content.drive.folder.search.permissions.max.per.page' configuration property (default 200); a larger 'perPage' is rejected with a 400.",
|
|
3299
|
+
schema: {
|
|
3300
|
+
type: "boolean",
|
|
3301
|
+
"default": false
|
|
3302
|
+
}
|
|
3294
3303
|
}
|
|
3295
3304
|
],
|
|
3296
3305
|
responses: {
|
|
@@ -3302,7 +3311,7 @@ var paths = {
|
|
|
3302
3311
|
}
|
|
3303
3312
|
},
|
|
3304
3313
|
"400": {
|
|
3305
|
-
description: "'siteId' is required; 'name' must be at least 2 characters if provided"
|
|
3314
|
+
description: "'siteId' is required; 'name' must be at least 2 characters if provided; 'perPage' exceeds the maximum allowed when 'includePermissions' is true"
|
|
3306
3315
|
},
|
|
3307
3316
|
"401": {
|
|
3308
3317
|
description: "User is not authenticated"
|
|
@@ -10996,11 +11005,11 @@ var paths = {
|
|
|
10996
11005
|
description: "*Optional.* Case-insensitive parameter indicating how results are to be displayed.\n\nIn listing mode, all associated actions are returned; in editing mode (the default), it returns only the actions accessible to the contentlet's current workflow step.",
|
|
10997
11006
|
schema: {
|
|
10998
11007
|
type: "string",
|
|
10999
|
-
"default": "EDITING",
|
|
11000
11008
|
"enum": [
|
|
11001
11009
|
"EDITING",
|
|
11002
11010
|
"LISTING"
|
|
11003
|
-
]
|
|
11011
|
+
],
|
|
11012
|
+
"default": "EDITING"
|
|
11004
11013
|
}
|
|
11005
11014
|
}
|
|
11006
11015
|
],
|
|
@@ -11419,7 +11428,7 @@ var paths = {
|
|
|
11419
11428
|
"Workflow"
|
|
11420
11429
|
],
|
|
11421
11430
|
summary: "Fire action by name (multipart form)",
|
|
11422
|
-
description: "Fires a [workflow action](https://www.dotcms.com/docs/latest/managing-workflows#Actions), specified by name, on a target contentlet. Uses a multipart form to transmit its data.\n\nReturns 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.\n\n**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.\n\n**Block Editor (Story Block) fields:** send the value as a **Markdown or HTML** string — you do not need to hand-author the underlying ProseMirror/JSON document. dotCMS converts it to the Block Editor (ProseMirror JSON) structure automatically on save, so the field reads back as structured content with no editor round-trip required. A value that is already a valid Tiptap/ProseMirror JSON document is detected and stored unchanged. Example: `\"body\": \"## Intro\\n\\nHello **world**.\"`.\n\n**Rich blocks in Markdown:** blocks that plain Markdown cannot express are written as fenced code blocks whose info string is a `dotcms-*` label and whose body is a small JSON object. Example — embed a contentlet:\n\n```dotcms-content\\n{\"identifier\": \"<contentlet-id>\", \"languageId\": 1}\\n```\n\nSupported labels and payload fields (**bold** = required):\n- `dotcms-content` → embedded contentlet: **`identifier`**, `languageId` (default 1). The server rebuilds the full embed data from the identifier on every read.\n- `dotcms-image` → dotCMS-bound or decorated image: **`identifier` or `src`**; optional `alt`, `title`, `href`, `target`, `textWrap`, `textAlign`, `languageId`. Plain external images need no fence — standard `` works.\n- `dotcms-video` → video: **`identifier` or `src`**; optional `mimeType`, `width`, `height`, `languageId`.\n- `dotcms-youtube` → YouTube embed: **`src`**; optional `start` (seconds), `width`, `height`.\n- `dotcms-grid` → layout grid: the verbatim `gridBlock` node JSON (`{\"type\":\"gridBlock\",\"attrs\":{\"columns\":[n,n]},\"content\":[…two gridColumn nodes…]}`).\n- `dotcms-node` → any other node type verbatim (`{\"type\": \"<nodeType>\", …}`) — the fallback for custom blocks.\n\nBlock styling (e.g. text alignment) is set by an HTML comment on its own line immediately before the block it decorates: `<!-- dotcms:attrs {\"textAlign\":\"center\"} -->`.\n\nA Markdown/HTML write **fully replaces** the stored document; when stored rich blocks are not carried over in the submitted value, the save still succeeds and an advisory warning listing the replaced blocks is returned in the response `messages` field — carry the blocks over as fences to preserve them. An invalid
|
|
11431
|
+
description: "Fires a [workflow action](https://www.dotcms.com/docs/latest/managing-workflows#Actions), specified by name, on a target contentlet. Uses a multipart form to transmit its data.\n\nReturns 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.\n\n**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.\n\n**Block Editor (Story Block) fields:** send the value as a **Markdown or HTML** string — you do not need to hand-author the underlying ProseMirror/JSON document. dotCMS converts it to the Block Editor (ProseMirror JSON) structure automatically on save, so the field reads back as structured content with no editor round-trip required. A value that is already a valid Tiptap/ProseMirror JSON document is detected and stored unchanged. Example: `\"body\": \"## Intro\\n\\nHello **world**.\"`.\n\n**Rich blocks in Markdown:** blocks that plain Markdown cannot express are written as fenced code blocks whose info string is a `dotcms-*` label and whose body is a small JSON object. Example — embed a contentlet:\n\n```dotcms-content\\n{\"identifier\": \"<contentlet-id>\", \"languageId\": 1}\\n```\n\nSupported labels and payload fields (**bold** = required):\n- `dotcms-content` → embedded contentlet: **`identifier`**, `languageId` (default 1). The server rebuilds the full embed data from the identifier on every read.\n- `dotcms-image` → dotCMS-bound or decorated image: **`identifier` or `src`**; optional `alt`, `title`, `href`, `target`, `textWrap`, `textAlign`, `languageId`. Plain external images need no fence — standard `` works.\n- `dotcms-video` → video: **`identifier` or `src`**; optional `mimeType`, `width`, `height`, `languageId`.\n- `dotcms-youtube` → YouTube embed: **`src`**; optional `start` (seconds), `width`, `height`.\n- `dotcms-grid` → layout grid: the verbatim `gridBlock` node JSON (`{\"type\":\"gridBlock\",\"attrs\":{\"columns\":[n,n]},\"content\":[…two gridColumn nodes…]}`).\n- `dotcms-node` → any other node type verbatim (`{\"type\": \"<nodeType>\", …}`) — the fallback for custom blocks.\n\n**Rich blocks in HTML:** the same labels are namespaced custom elements. Scalar payloads ride as attributes with **hyphenated names** (HTML lowercases attribute names, so `languageId` is spelled `language-id`, `mimeType` is `mime-type`): `<dotcms-content identifier=\"<contentlet-id>\" language-id=\"1\"></dotcms-content>`. `dotcms-ai`, `dotcms-grid` and `dotcms-node` take the same JSON object as the element's text body instead (HTML-escape `<` and `&` inside JSON string values). Always write an explicit closing tag — HTML parsing ignores the `/` in `<dotcms-video … />` and would swallow the content after it. Both carriers produce identical stored documents.\n\nBlock styling (e.g. text alignment) is set by an HTML comment on its own line immediately before the block it decorates, in Markdown and HTML alike: `<!-- dotcms:attrs {\"textAlign\":\"center\"} -->`.\n\nA Markdown/HTML write **fully replaces** the stored document; when stored rich blocks are not carried over in the submitted value, the save still succeeds and an advisory warning listing the replaced blocks is returned in the response `messages` field — carry the blocks over as fences or elements to preserve them. An invalid payload degrades to an ordinary code block (or is dropped when it carries no text to keep), never an error.",
|
|
11423
11432
|
operationId: "putFireActionByNameMultipart",
|
|
11424
11433
|
parameters: [
|
|
11425
11434
|
{
|
|
@@ -11517,7 +11526,7 @@ var paths = {
|
|
|
11517
11526
|
"Workflow"
|
|
11518
11527
|
],
|
|
11519
11528
|
summary: "Fire workflow action by name",
|
|
11520
|
-
description: "Fires a [workflow action](https://www.dotcms.com/docs/latest/managing-workflows#Actions), specified by name, on a target contentlet.\n\nReturns 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.\n\n**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.\n\n**Block Editor (Story Block) fields:** send the value as a **Markdown or HTML** string — you do not need to hand-author the underlying ProseMirror/JSON document. dotCMS converts it to the Block Editor (ProseMirror JSON) structure automatically on save, so the field reads back as structured content with no editor round-trip required. A value that is already a valid Tiptap/ProseMirror JSON document is detected and stored unchanged. Example: `\"body\": \"## Intro\\n\\nHello **world**.\"`.\n\n**Rich blocks in Markdown:** blocks that plain Markdown cannot express are written as fenced code blocks whose info string is a `dotcms-*` label and whose body is a small JSON object. Example — embed a contentlet:\n\n```dotcms-content\\n{\"identifier\": \"<contentlet-id>\", \"languageId\": 1}\\n```\n\nSupported labels and payload fields (**bold** = required):\n- `dotcms-content` → embedded contentlet: **`identifier`**, `languageId` (default 1). The server rebuilds the full embed data from the identifier on every read.\n- `dotcms-image` → dotCMS-bound or decorated image: **`identifier` or `src`**; optional `alt`, `title`, `href`, `target`, `textWrap`, `textAlign`, `languageId`. Plain external images need no fence — standard `` works.\n- `dotcms-video` → video: **`identifier` or `src`**; optional `mimeType`, `width`, `height`, `languageId`.\n- `dotcms-youtube` → YouTube embed: **`src`**; optional `start` (seconds), `width`, `height`.\n- `dotcms-grid` → layout grid: the verbatim `gridBlock` node JSON (`{\"type\":\"gridBlock\",\"attrs\":{\"columns\":[n,n]},\"content\":[…two gridColumn nodes…]}`).\n- `dotcms-node` → any other node type verbatim (`{\"type\": \"<nodeType>\", …}`) — the fallback for custom blocks.\n\nBlock styling (e.g. text alignment) is set by an HTML comment on its own line immediately before the block it decorates: `<!-- dotcms:attrs {\"textAlign\":\"center\"} -->`.\n\nA Markdown/HTML write **fully replaces** the stored document; when stored rich blocks are not carried over in the submitted value, the save still succeeds and an advisory warning listing the replaced blocks is returned in the response `messages` field — carry the blocks over as fences to preserve them. An invalid
|
|
11529
|
+
description: "Fires a [workflow action](https://www.dotcms.com/docs/latest/managing-workflows#Actions), specified by name, on a target contentlet.\n\nReturns 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.\n\n**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.\n\n**Block Editor (Story Block) fields:** send the value as a **Markdown or HTML** string — you do not need to hand-author the underlying ProseMirror/JSON document. dotCMS converts it to the Block Editor (ProseMirror JSON) structure automatically on save, so the field reads back as structured content with no editor round-trip required. A value that is already a valid Tiptap/ProseMirror JSON document is detected and stored unchanged. Example: `\"body\": \"## Intro\\n\\nHello **world**.\"`.\n\n**Rich blocks in Markdown:** blocks that plain Markdown cannot express are written as fenced code blocks whose info string is a `dotcms-*` label and whose body is a small JSON object. Example — embed a contentlet:\n\n```dotcms-content\\n{\"identifier\": \"<contentlet-id>\", \"languageId\": 1}\\n```\n\nSupported labels and payload fields (**bold** = required):\n- `dotcms-content` → embedded contentlet: **`identifier`**, `languageId` (default 1). The server rebuilds the full embed data from the identifier on every read.\n- `dotcms-image` → dotCMS-bound or decorated image: **`identifier` or `src`**; optional `alt`, `title`, `href`, `target`, `textWrap`, `textAlign`, `languageId`. Plain external images need no fence — standard `` works.\n- `dotcms-video` → video: **`identifier` or `src`**; optional `mimeType`, `width`, `height`, `languageId`.\n- `dotcms-youtube` → YouTube embed: **`src`**; optional `start` (seconds), `width`, `height`.\n- `dotcms-grid` → layout grid: the verbatim `gridBlock` node JSON (`{\"type\":\"gridBlock\",\"attrs\":{\"columns\":[n,n]},\"content\":[…two gridColumn nodes…]}`).\n- `dotcms-node` → any other node type verbatim (`{\"type\": \"<nodeType>\", …}`) — the fallback for custom blocks.\n\n**Rich blocks in HTML:** the same labels are namespaced custom elements. Scalar payloads ride as attributes with **hyphenated names** (HTML lowercases attribute names, so `languageId` is spelled `language-id`, `mimeType` is `mime-type`): `<dotcms-content identifier=\"<contentlet-id>\" language-id=\"1\"></dotcms-content>`. `dotcms-ai`, `dotcms-grid` and `dotcms-node` take the same JSON object as the element's text body instead (HTML-escape `<` and `&` inside JSON string values). Always write an explicit closing tag — HTML parsing ignores the `/` in `<dotcms-video … />` and would swallow the content after it. Both carriers produce identical stored documents.\n\nBlock styling (e.g. text alignment) is set by an HTML comment on its own line immediately before the block it decorates, in Markdown and HTML alike: `<!-- dotcms:attrs {\"textAlign\":\"center\"} -->`.\n\nA Markdown/HTML write **fully replaces** the stored document; when stored rich blocks are not carried over in the submitted value, the save still succeeds and an advisory warning listing the replaced blocks is returned in the response `messages` field — carry the blocks over as fences or elements to preserve them. An invalid payload degrades to an ordinary code block (or is dropped when it carries no text to keep), never an error.",
|
|
11521
11530
|
operationId: "putFireActionByName",
|
|
11522
11531
|
parameters: [
|
|
11523
11532
|
{
|
|
@@ -11667,7 +11676,7 @@ var paths = {
|
|
|
11667
11676
|
"Workflow"
|
|
11668
11677
|
],
|
|
11669
11678
|
summary: "Fire default action (multipart form)",
|
|
11670
|
-
description: "Fires a default [system action](https://www.dotcms.com/docs/latest/managing-workflows#DefaultActions) on target contentlet. Uses a multipart form to transmit its data.\n\nReturns 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.\n\n**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.\n\n**Block Editor (Story Block) fields:** send the value as a **Markdown or HTML** string — you do not need to hand-author the underlying ProseMirror/JSON document. dotCMS converts it to the Block Editor (ProseMirror JSON) structure automatically on save, so the field reads back as structured content with no editor round-trip required. A value that is already a valid Tiptap/ProseMirror JSON document is detected and stored unchanged. Example: `\"body\": \"## Intro\\n\\nHello **world**.\"`.\n\n**Rich blocks in Markdown:** blocks that plain Markdown cannot express are written as fenced code blocks whose info string is a `dotcms-*` label and whose body is a small JSON object. Example — embed a contentlet:\n\n```dotcms-content\\n{\"identifier\": \"<contentlet-id>\", \"languageId\": 1}\\n```\n\nSupported labels and payload fields (**bold** = required):\n- `dotcms-content` → embedded contentlet: **`identifier`**, `languageId` (default 1). The server rebuilds the full embed data from the identifier on every read.\n- `dotcms-image` → dotCMS-bound or decorated image: **`identifier` or `src`**; optional `alt`, `title`, `href`, `target`, `textWrap`, `textAlign`, `languageId`. Plain external images need no fence — standard `` works.\n- `dotcms-video` → video: **`identifier` or `src`**; optional `mimeType`, `width`, `height`, `languageId`.\n- `dotcms-youtube` → YouTube embed: **`src`**; optional `start` (seconds), `width`, `height`.\n- `dotcms-grid` → layout grid: the verbatim `gridBlock` node JSON (`{\"type\":\"gridBlock\",\"attrs\":{\"columns\":[n,n]},\"content\":[…two gridColumn nodes…]}`).\n- `dotcms-node` → any other node type verbatim (`{\"type\": \"<nodeType>\", …}`) — the fallback for custom blocks.\n\nBlock styling (e.g. text alignment) is set by an HTML comment on its own line immediately before the block it decorates: `<!-- dotcms:attrs {\"textAlign\":\"center\"} -->`.\n\nA Markdown/HTML write **fully replaces** the stored document; when stored rich blocks are not carried over in the submitted value, the save still succeeds and an advisory warning listing the replaced blocks is returned in the response `messages` field — carry the blocks over as fences to preserve them. An invalid
|
|
11679
|
+
description: "Fires a default [system action](https://www.dotcms.com/docs/latest/managing-workflows#DefaultActions) on target contentlet. Uses a multipart form to transmit its data.\n\nReturns 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.\n\n**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.\n\n**Block Editor (Story Block) fields:** send the value as a **Markdown or HTML** string — you do not need to hand-author the underlying ProseMirror/JSON document. dotCMS converts it to the Block Editor (ProseMirror JSON) structure automatically on save, so the field reads back as structured content with no editor round-trip required. A value that is already a valid Tiptap/ProseMirror JSON document is detected and stored unchanged. Example: `\"body\": \"## Intro\\n\\nHello **world**.\"`.\n\n**Rich blocks in Markdown:** blocks that plain Markdown cannot express are written as fenced code blocks whose info string is a `dotcms-*` label and whose body is a small JSON object. Example — embed a contentlet:\n\n```dotcms-content\\n{\"identifier\": \"<contentlet-id>\", \"languageId\": 1}\\n```\n\nSupported labels and payload fields (**bold** = required):\n- `dotcms-content` → embedded contentlet: **`identifier`**, `languageId` (default 1). The server rebuilds the full embed data from the identifier on every read.\n- `dotcms-image` → dotCMS-bound or decorated image: **`identifier` or `src`**; optional `alt`, `title`, `href`, `target`, `textWrap`, `textAlign`, `languageId`. Plain external images need no fence — standard `` works.\n- `dotcms-video` → video: **`identifier` or `src`**; optional `mimeType`, `width`, `height`, `languageId`.\n- `dotcms-youtube` → YouTube embed: **`src`**; optional `start` (seconds), `width`, `height`.\n- `dotcms-grid` → layout grid: the verbatim `gridBlock` node JSON (`{\"type\":\"gridBlock\",\"attrs\":{\"columns\":[n,n]},\"content\":[…two gridColumn nodes…]}`).\n- `dotcms-node` → any other node type verbatim (`{\"type\": \"<nodeType>\", …}`) — the fallback for custom blocks.\n\n**Rich blocks in HTML:** the same labels are namespaced custom elements. Scalar payloads ride as attributes with **hyphenated names** (HTML lowercases attribute names, so `languageId` is spelled `language-id`, `mimeType` is `mime-type`): `<dotcms-content identifier=\"<contentlet-id>\" language-id=\"1\"></dotcms-content>`. `dotcms-ai`, `dotcms-grid` and `dotcms-node` take the same JSON object as the element's text body instead (HTML-escape `<` and `&` inside JSON string values). Always write an explicit closing tag — HTML parsing ignores the `/` in `<dotcms-video … />` and would swallow the content after it. Both carriers produce identical stored documents.\n\nBlock styling (e.g. text alignment) is set by an HTML comment on its own line immediately before the block it decorates, in Markdown and HTML alike: `<!-- dotcms:attrs {\"textAlign\":\"center\"} -->`.\n\nA Markdown/HTML write **fully replaces** the stored document; when stored rich blocks are not carried over in the submitted value, the save still succeeds and an advisory warning listing the replaced blocks is returned in the response `messages` field — carry the blocks over as fences or elements to preserve them. An invalid payload degrades to an ordinary code block (or is dropped when it carries no text to keep), never an error.",
|
|
11671
11680
|
operationId: "putFireDefaultActionMultipart",
|
|
11672
11681
|
parameters: [
|
|
11673
11682
|
{
|
|
@@ -11784,7 +11793,7 @@ var paths = {
|
|
|
11784
11793
|
"Workflow"
|
|
11785
11794
|
],
|
|
11786
11795
|
summary: "Fire system action by name",
|
|
11787
|
-
description: "Fire a [default system action](https://www.dotcms.com/docs/latest/managing-workflows#DefaultActions) by name on a target contentlet.\n\nReturns 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.\n\n**Request body** — wrap field values in a `contentlet` key:\n\n```json\n{\n \"contentlet\": {\n \"contentType\": \"<variable-or-inode>\",\n \"title\": \"My New Item\",\n \"...\": \"other field values\"\n }\n}\n```\nField 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}`.\n\n**Validation error response shape:**\n\n```json\n{\n \"entity\": \"\",\n \"errors\": [{ \"errorCode\": \"required\", \"fieldName\": \"image\", \"message\": \"The field Image is required.\" }],\n \"i18nMessagesMap\": {}, \"messages\": [], \"pagination\": null, \"permissions\": []\n}\n```\n`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.\n\n**Binary and image fields** — These fields cannot receive raw file data or asset paths in the JSON body. Use one of the patterns below.\n\n**Pattern A — single-use file (works for all binary/image fields):**\n\n1. `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.\n2. Pass that ID in the contentlet body: `{\"contentlet\": {\"contentType\": \"ResortActivities\", \"image\": \"temp_5311313004\", ...}}`.\n\n**Pattern B — reusable shared asset (`ImmutableImageField` only):**\n\n1. Upload via `/temp`, create a dotAsset contentlet: `PUT .../fire/PUBLISH` with `{\"contentlet\": {\"contentType\": \"dotAsset\", \"asset\": \"temp_<id>\"}}`.\n2. Use the returned dotAsset `identifier` as the field value on any `ImmutableImageField`.\n\n| Field `clazz` | `temp_<id>` | dotAsset `identifier` |\n|---|---|---|\n| `ImmutableBinaryField` | ✅ | ❌ (returns 400 \\\"field is required\\\") |\n| `ImmutableImageField` | ✅ | ✅ |\n\nFind a field's `clazz` by calling `GET /api/v1/contenttype/id/{idOrVar}` and reading `fields[].clazz`.\n\n⚠️ **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.\n\n⚠️ **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.\n\n**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.\n\n**Block Editor (Story Block) fields:** send the value as a **Markdown or HTML** string — you do not need to hand-author the underlying ProseMirror/JSON document. dotCMS converts it to the Block Editor (ProseMirror JSON) structure automatically on save, so the field reads back as structured content with no editor round-trip required. A value that is already a valid Tiptap/ProseMirror JSON document is detected and stored unchanged. Example: `\"body\": \"## Intro\\n\\nHello **world**.\"`.\n\n**Rich blocks in Markdown:** blocks that plain Markdown cannot express are written as fenced code blocks whose info string is a `dotcms-*` label and whose body is a small JSON object. Example — embed a contentlet:\n\n```dotcms-content\\n{\"identifier\": \"<contentlet-id>\", \"languageId\": 1}\\n```\n\nSupported labels and payload fields (**bold** = required):\n- `dotcms-content` → embedded contentlet: **`identifier`**, `languageId` (default 1). The server rebuilds the full embed data from the identifier on every read.\n- `dotcms-image` → dotCMS-bound or decorated image: **`identifier` or `src`**; optional `alt`, `title`, `href`, `target`, `textWrap`, `textAlign`, `languageId`. Plain external images need no fence — standard `` works.\n- `dotcms-video` → video: **`identifier` or `src`**; optional `mimeType`, `width`, `height`, `languageId`.\n- `dotcms-youtube` → YouTube embed: **`src`**; optional `start` (seconds), `width`, `height`.\n- `dotcms-grid` → layout grid: the verbatim `gridBlock` node JSON (`{\"type\":\"gridBlock\",\"attrs\":{\"columns\":[n,n]},\"content\":[…two gridColumn nodes…]}`).\n- `dotcms-node` → any other node type verbatim (`{\"type\": \"<nodeType>\", …}`) — the fallback for custom blocks.\n\nBlock styling (e.g. text alignment) is set by an HTML comment on its own line immediately before the block it decorates: `<!-- dotcms:attrs {\"textAlign\":\"center\"} -->`.\n\nA Markdown/HTML write **fully replaces** the stored document; when stored rich blocks are not carried over in the submitted value, the save still succeeds and an advisory warning listing the replaced blocks is returned in the response `messages` field — carry the blocks over as fences to preserve them. An invalid
|
|
11796
|
+
description: "Fire a [default system action](https://www.dotcms.com/docs/latest/managing-workflows#DefaultActions) by name on a target contentlet.\n\nReturns 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.\n\n**Request body** — wrap field values in a `contentlet` key:\n\n```json\n{\n \"contentlet\": {\n \"contentType\": \"<variable-or-inode>\",\n \"title\": \"My New Item\",\n \"...\": \"other field values\"\n }\n}\n```\nField 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}`.\n\n**Validation error response shape:**\n\n```json\n{\n \"entity\": \"\",\n \"errors\": [{ \"errorCode\": \"required\", \"fieldName\": \"image\", \"message\": \"The field Image is required.\" }],\n \"i18nMessagesMap\": {}, \"messages\": [], \"pagination\": null, \"permissions\": []\n}\n```\n`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.\n\n**Binary and image fields** — These fields cannot receive raw file data or asset paths in the JSON body. Use one of the patterns below.\n\n**Pattern A — single-use file (works for all binary/image fields):**\n\n1. `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.\n2. Pass that ID in the contentlet body: `{\"contentlet\": {\"contentType\": \"ResortActivities\", \"image\": \"temp_5311313004\", ...}}`.\n\n**Pattern B — reusable shared asset (`ImmutableImageField` only):**\n\n1. Upload via `/temp`, create a dotAsset contentlet: `PUT .../fire/PUBLISH` with `{\"contentlet\": {\"contentType\": \"dotAsset\", \"asset\": \"temp_<id>\"}}`.\n2. Use the returned dotAsset `identifier` as the field value on any `ImmutableImageField`.\n\n| Field `clazz` | `temp_<id>` | dotAsset `identifier` |\n|---|---|---|\n| `ImmutableBinaryField` | ✅ | ❌ (returns 400 \\\"field is required\\\") |\n| `ImmutableImageField` | ✅ | ✅ |\n\nFind a field's `clazz` by calling `GET /api/v1/contenttype/id/{idOrVar}` and reading `fields[].clazz`.\n\n⚠️ **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.\n\n⚠️ **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.\n\n**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.\n\n**Block Editor (Story Block) fields:** send the value as a **Markdown or HTML** string — you do not need to hand-author the underlying ProseMirror/JSON document. dotCMS converts it to the Block Editor (ProseMirror JSON) structure automatically on save, so the field reads back as structured content with no editor round-trip required. A value that is already a valid Tiptap/ProseMirror JSON document is detected and stored unchanged. Example: `\"body\": \"## Intro\\n\\nHello **world**.\"`.\n\n**Rich blocks in Markdown:** blocks that plain Markdown cannot express are written as fenced code blocks whose info string is a `dotcms-*` label and whose body is a small JSON object. Example — embed a contentlet:\n\n```dotcms-content\\n{\"identifier\": \"<contentlet-id>\", \"languageId\": 1}\\n```\n\nSupported labels and payload fields (**bold** = required):\n- `dotcms-content` → embedded contentlet: **`identifier`**, `languageId` (default 1). The server rebuilds the full embed data from the identifier on every read.\n- `dotcms-image` → dotCMS-bound or decorated image: **`identifier` or `src`**; optional `alt`, `title`, `href`, `target`, `textWrap`, `textAlign`, `languageId`. Plain external images need no fence — standard `` works.\n- `dotcms-video` → video: **`identifier` or `src`**; optional `mimeType`, `width`, `height`, `languageId`.\n- `dotcms-youtube` → YouTube embed: **`src`**; optional `start` (seconds), `width`, `height`.\n- `dotcms-grid` → layout grid: the verbatim `gridBlock` node JSON (`{\"type\":\"gridBlock\",\"attrs\":{\"columns\":[n,n]},\"content\":[…two gridColumn nodes…]}`).\n- `dotcms-node` → any other node type verbatim (`{\"type\": \"<nodeType>\", …}`) — the fallback for custom blocks.\n\n**Rich blocks in HTML:** the same labels are namespaced custom elements. Scalar payloads ride as attributes with **hyphenated names** (HTML lowercases attribute names, so `languageId` is spelled `language-id`, `mimeType` is `mime-type`): `<dotcms-content identifier=\"<contentlet-id>\" language-id=\"1\"></dotcms-content>`. `dotcms-ai`, `dotcms-grid` and `dotcms-node` take the same JSON object as the element's text body instead (HTML-escape `<` and `&` inside JSON string values). Always write an explicit closing tag — HTML parsing ignores the `/` in `<dotcms-video … />` and would swallow the content after it. Both carriers produce identical stored documents.\n\nBlock styling (e.g. text alignment) is set by an HTML comment on its own line immediately before the block it decorates, in Markdown and HTML alike: `<!-- dotcms:attrs {\"textAlign\":\"center\"} -->`.\n\nA Markdown/HTML write **fully replaces** the stored document; when stored rich blocks are not carried over in the submitted value, the save still succeeds and an advisory warning listing the replaced blocks is returned in the response `messages` field — carry the blocks over as fences or elements to preserve them. An invalid payload degrades to an ordinary code block (or is dropped when it carries no text to keep), never an error.",
|
|
11788
11797
|
operationId: "putFireDefaultSystemAction",
|
|
11789
11798
|
parameters: [
|
|
11790
11799
|
{
|
|
@@ -12252,7 +12261,7 @@ var paths = {
|
|
|
12252
12261
|
"Workflow"
|
|
12253
12262
|
],
|
|
12254
12263
|
summary: "Fire action by ID (multipart form)",
|
|
12255
|
-
description: "Fires a [workflow action](https://www.dotcms.com/docs/latest/managing-workflows#Actions), specified by identifier, on a target contentlet. Uses a multipart form to transmit its data.\n\nReturns 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.\n\n**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.\n\n**Block Editor (Story Block) fields:** send the value as a **Markdown or HTML** string — you do not need to hand-author the underlying ProseMirror/JSON document. dotCMS converts it to the Block Editor (ProseMirror JSON) structure automatically on save, so the field reads back as structured content with no editor round-trip required. A value that is already a valid Tiptap/ProseMirror JSON document is detected and stored unchanged. Example: `\"body\": \"## Intro\\n\\nHello **world**.\"`.\n\n**Rich blocks in Markdown:** blocks that plain Markdown cannot express are written as fenced code blocks whose info string is a `dotcms-*` label and whose body is a small JSON object. Example — embed a contentlet:\n\n```dotcms-content\\n{\"identifier\": \"<contentlet-id>\", \"languageId\": 1}\\n```\n\nSupported labels and payload fields (**bold** = required):\n- `dotcms-content` → embedded contentlet: **`identifier`**, `languageId` (default 1). The server rebuilds the full embed data from the identifier on every read.\n- `dotcms-image` → dotCMS-bound or decorated image: **`identifier` or `src`**; optional `alt`, `title`, `href`, `target`, `textWrap`, `textAlign`, `languageId`. Plain external images need no fence — standard `` works.\n- `dotcms-video` → video: **`identifier` or `src`**; optional `mimeType`, `width`, `height`, `languageId`.\n- `dotcms-youtube` → YouTube embed: **`src`**; optional `start` (seconds), `width`, `height`.\n- `dotcms-grid` → layout grid: the verbatim `gridBlock` node JSON (`{\"type\":\"gridBlock\",\"attrs\":{\"columns\":[n,n]},\"content\":[…two gridColumn nodes…]}`).\n- `dotcms-node` → any other node type verbatim (`{\"type\": \"<nodeType>\", …}`) — the fallback for custom blocks.\n\nBlock styling (e.g. text alignment) is set by an HTML comment on its own line immediately before the block it decorates: `<!-- dotcms:attrs {\"textAlign\":\"center\"} -->`.\n\nA Markdown/HTML write **fully replaces** the stored document; when stored rich blocks are not carried over in the submitted value, the save still succeeds and an advisory warning listing the replaced blocks is returned in the response `messages` field — carry the blocks over as fences to preserve them. An invalid
|
|
12264
|
+
description: "Fires a [workflow action](https://www.dotcms.com/docs/latest/managing-workflows#Actions), specified by identifier, on a target contentlet. Uses a multipart form to transmit its data.\n\nReturns 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.\n\n**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.\n\n**Block Editor (Story Block) fields:** send the value as a **Markdown or HTML** string — you do not need to hand-author the underlying ProseMirror/JSON document. dotCMS converts it to the Block Editor (ProseMirror JSON) structure automatically on save, so the field reads back as structured content with no editor round-trip required. A value that is already a valid Tiptap/ProseMirror JSON document is detected and stored unchanged. Example: `\"body\": \"## Intro\\n\\nHello **world**.\"`.\n\n**Rich blocks in Markdown:** blocks that plain Markdown cannot express are written as fenced code blocks whose info string is a `dotcms-*` label and whose body is a small JSON object. Example — embed a contentlet:\n\n```dotcms-content\\n{\"identifier\": \"<contentlet-id>\", \"languageId\": 1}\\n```\n\nSupported labels and payload fields (**bold** = required):\n- `dotcms-content` → embedded contentlet: **`identifier`**, `languageId` (default 1). The server rebuilds the full embed data from the identifier on every read.\n- `dotcms-image` → dotCMS-bound or decorated image: **`identifier` or `src`**; optional `alt`, `title`, `href`, `target`, `textWrap`, `textAlign`, `languageId`. Plain external images need no fence — standard `` works.\n- `dotcms-video` → video: **`identifier` or `src`**; optional `mimeType`, `width`, `height`, `languageId`.\n- `dotcms-youtube` → YouTube embed: **`src`**; optional `start` (seconds), `width`, `height`.\n- `dotcms-grid` → layout grid: the verbatim `gridBlock` node JSON (`{\"type\":\"gridBlock\",\"attrs\":{\"columns\":[n,n]},\"content\":[…two gridColumn nodes…]}`).\n- `dotcms-node` → any other node type verbatim (`{\"type\": \"<nodeType>\", …}`) — the fallback for custom blocks.\n\n**Rich blocks in HTML:** the same labels are namespaced custom elements. Scalar payloads ride as attributes with **hyphenated names** (HTML lowercases attribute names, so `languageId` is spelled `language-id`, `mimeType` is `mime-type`): `<dotcms-content identifier=\"<contentlet-id>\" language-id=\"1\"></dotcms-content>`. `dotcms-ai`, `dotcms-grid` and `dotcms-node` take the same JSON object as the element's text body instead (HTML-escape `<` and `&` inside JSON string values). Always write an explicit closing tag — HTML parsing ignores the `/` in `<dotcms-video … />` and would swallow the content after it. Both carriers produce identical stored documents.\n\nBlock styling (e.g. text alignment) is set by an HTML comment on its own line immediately before the block it decorates, in Markdown and HTML alike: `<!-- dotcms:attrs {\"textAlign\":\"center\"} -->`.\n\nA Markdown/HTML write **fully replaces** the stored document; when stored rich blocks are not carried over in the submitted value, the save still succeeds and an advisory warning listing the replaced blocks is returned in the response `messages` field — carry the blocks over as fences or elements to preserve them. An invalid payload degrades to an ordinary code block (or is dropped when it carries no text to keep), never an error.",
|
|
12256
12265
|
operationId: "putFireActionByIdMultipart",
|
|
12257
12266
|
parameters: [
|
|
12258
12267
|
{
|
|
@@ -12359,7 +12368,7 @@ var paths = {
|
|
|
12359
12368
|
"Workflow"
|
|
12360
12369
|
],
|
|
12361
12370
|
summary: "Fire action by ID",
|
|
12362
|
-
description: "Fires a [workflow action](https://www.dotcms.com/docs/latest/managing-workflows#Actions), specified by identifier, on a target contentlet.\n\nReturns 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.\n\n**Use this endpoint to fire actions that are not represented as `SystemAction` tokens** (`NEW`, `EDIT`, `PUBLISH`, etc.). The two most common are `Move` and `Copy` on the System Workflow scheme.\n\n**Move action** — relocates a contentlet to a new folder/host. Request body shape (note: `pathToMove` is a sibling of `contentlet`, **not** nested inside it):\n\n```json\n{\n \"contentlet\": { \"identifier\": \"<contentlet-identifier>\" },\n \"pathToMove\": \"//<siteHost>/<folderPath>\"\n}\n```\nAlternative shapes (`contentlet.host`+`contentlet.folder`, `contentlet.hostFolder`, `path` instead of `pathToMove`) all return `400 \"The host path is not valid: null\"`.\n\n**Copy action** — clones a contentlet. Fire with `?identifier=<source-id>` and an empty body (or `{\"contentlet\": {\"identifier\": \"<source-id>\"}}`). The Copy action id on the default System Workflow scheme is `963f6a04-5320-42e7-ab74-6d876d199946`; retrieve it for other environments via `GET /api/v1/workflow/schemes/{schemeId}/actions`. ⚠️ The response `entity` returns the **source** contentlet, not the newly-created copy — locate the copy via a follow-up `POST /api/content/_search` ordered by `modDate DESC`. The copy lands in `SYSTEM_HOST` / `SYSTEM_FOLDER`; destination hints (`pathToMove`, `host`, `folder`, `hostFolder`) are silently ignored. Fire the Move action afterwards to relocate.\n\n**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.\n\n**Block Editor (Story Block) fields:** send the value as a **Markdown or HTML** string — you do not need to hand-author the underlying ProseMirror/JSON document. dotCMS converts it to the Block Editor (ProseMirror JSON) structure automatically on save, so the field reads back as structured content with no editor round-trip required. A value that is already a valid Tiptap/ProseMirror JSON document is detected and stored unchanged. Example: `\"body\": \"## Intro\\n\\nHello **world**.\"`.\n\n**Rich blocks in Markdown:** blocks that plain Markdown cannot express are written as fenced code blocks whose info string is a `dotcms-*` label and whose body is a small JSON object. Example — embed a contentlet:\n\n```dotcms-content\\n{\"identifier\": \"<contentlet-id>\", \"languageId\": 1}\\n```\n\nSupported labels and payload fields (**bold** = required):\n- `dotcms-content` → embedded contentlet: **`identifier`**, `languageId` (default 1). The server rebuilds the full embed data from the identifier on every read.\n- `dotcms-image` → dotCMS-bound or decorated image: **`identifier` or `src`**; optional `alt`, `title`, `href`, `target`, `textWrap`, `textAlign`, `languageId`. Plain external images need no fence — standard `` works.\n- `dotcms-video` → video: **`identifier` or `src`**; optional `mimeType`, `width`, `height`, `languageId`.\n- `dotcms-youtube` → YouTube embed: **`src`**; optional `start` (seconds), `width`, `height`.\n- `dotcms-grid` → layout grid: the verbatim `gridBlock` node JSON (`{\"type\":\"gridBlock\",\"attrs\":{\"columns\":[n,n]},\"content\":[…two gridColumn nodes…]}`).\n- `dotcms-node` → any other node type verbatim (`{\"type\": \"<nodeType>\", …}`) — the fallback for custom blocks.\n\nBlock styling (e.g. text alignment) is set by an HTML comment on its own line immediately before the block it decorates: `<!-- dotcms:attrs {\"textAlign\":\"center\"} -->`.\n\nA Markdown/HTML write **fully replaces** the stored document; when stored rich blocks are not carried over in the submitted value, the save still succeeds and an advisory warning listing the replaced blocks is returned in the response `messages` field — carry the blocks over as fences to preserve them. An invalid
|
|
12371
|
+
description: "Fires a [workflow action](https://www.dotcms.com/docs/latest/managing-workflows#Actions), specified by identifier, on a target contentlet.\n\nReturns 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.\n\n**Use this endpoint to fire actions that are not represented as `SystemAction` tokens** (`NEW`, `EDIT`, `PUBLISH`, etc.). The two most common are `Move` and `Copy` on the System Workflow scheme.\n\n**Move action** — relocates a contentlet to a new folder/host. Request body shape (note: `pathToMove` is a sibling of `contentlet`, **not** nested inside it):\n\n```json\n{\n \"contentlet\": { \"identifier\": \"<contentlet-identifier>\" },\n \"pathToMove\": \"//<siteHost>/<folderPath>\"\n}\n```\nAlternative shapes (`contentlet.host`+`contentlet.folder`, `contentlet.hostFolder`, `path` instead of `pathToMove`) all return `400 \"The host path is not valid: null\"`.\n\n**Copy action** — clones a contentlet. Fire with `?identifier=<source-id>` and an empty body (or `{\"contentlet\": {\"identifier\": \"<source-id>\"}}`). The Copy action id on the default System Workflow scheme is `963f6a04-5320-42e7-ab74-6d876d199946`; retrieve it for other environments via `GET /api/v1/workflow/schemes/{schemeId}/actions`. ⚠️ The response `entity` returns the **source** contentlet, not the newly-created copy — locate the copy via a follow-up `POST /api/content/_search` ordered by `modDate DESC`. The copy lands in `SYSTEM_HOST` / `SYSTEM_FOLDER`; destination hints (`pathToMove`, `host`, `folder`, `hostFolder`) are silently ignored. Fire the Move action afterwards to relocate.\n\n**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.\n\n**Block Editor (Story Block) fields:** send the value as a **Markdown or HTML** string — you do not need to hand-author the underlying ProseMirror/JSON document. dotCMS converts it to the Block Editor (ProseMirror JSON) structure automatically on save, so the field reads back as structured content with no editor round-trip required. A value that is already a valid Tiptap/ProseMirror JSON document is detected and stored unchanged. Example: `\"body\": \"## Intro\\n\\nHello **world**.\"`.\n\n**Rich blocks in Markdown:** blocks that plain Markdown cannot express are written as fenced code blocks whose info string is a `dotcms-*` label and whose body is a small JSON object. Example — embed a contentlet:\n\n```dotcms-content\\n{\"identifier\": \"<contentlet-id>\", \"languageId\": 1}\\n```\n\nSupported labels and payload fields (**bold** = required):\n- `dotcms-content` → embedded contentlet: **`identifier`**, `languageId` (default 1). The server rebuilds the full embed data from the identifier on every read.\n- `dotcms-image` → dotCMS-bound or decorated image: **`identifier` or `src`**; optional `alt`, `title`, `href`, `target`, `textWrap`, `textAlign`, `languageId`. Plain external images need no fence — standard `` works.\n- `dotcms-video` → video: **`identifier` or `src`**; optional `mimeType`, `width`, `height`, `languageId`.\n- `dotcms-youtube` → YouTube embed: **`src`**; optional `start` (seconds), `width`, `height`.\n- `dotcms-grid` → layout grid: the verbatim `gridBlock` node JSON (`{\"type\":\"gridBlock\",\"attrs\":{\"columns\":[n,n]},\"content\":[…two gridColumn nodes…]}`).\n- `dotcms-node` → any other node type verbatim (`{\"type\": \"<nodeType>\", …}`) — the fallback for custom blocks.\n\n**Rich blocks in HTML:** the same labels are namespaced custom elements. Scalar payloads ride as attributes with **hyphenated names** (HTML lowercases attribute names, so `languageId` is spelled `language-id`, `mimeType` is `mime-type`): `<dotcms-content identifier=\"<contentlet-id>\" language-id=\"1\"></dotcms-content>`. `dotcms-ai`, `dotcms-grid` and `dotcms-node` take the same JSON object as the element's text body instead (HTML-escape `<` and `&` inside JSON string values). Always write an explicit closing tag — HTML parsing ignores the `/` in `<dotcms-video … />` and would swallow the content after it. Both carriers produce identical stored documents.\n\nBlock styling (e.g. text alignment) is set by an HTML comment on its own line immediately before the block it decorates, in Markdown and HTML alike: `<!-- dotcms:attrs {\"textAlign\":\"center\"} -->`.\n\nA Markdown/HTML write **fully replaces** the stored document; when stored rich blocks are not carried over in the submitted value, the save still succeeds and an advisory warning listing the replaced blocks is returned in the response `messages` field — carry the blocks over as fences or elements to preserve them. An invalid payload degrades to an ordinary code block (or is dropped when it carries no text to keep), never an error.",
|
|
12363
12372
|
operationId: "putFireActionById",
|
|
12364
12373
|
parameters: [
|
|
12365
12374
|
{
|
|
@@ -14507,11 +14516,11 @@ var paths = {
|
|
|
14507
14516
|
description: "Asset version to retrieve. Accepted values: working (default), live.",
|
|
14508
14517
|
schema: {
|
|
14509
14518
|
type: "string",
|
|
14510
|
-
"default": "working",
|
|
14511
14519
|
"enum": [
|
|
14512
14520
|
"working",
|
|
14513
14521
|
"live"
|
|
14514
|
-
]
|
|
14522
|
+
],
|
|
14523
|
+
"default": "working"
|
|
14515
14524
|
},
|
|
14516
14525
|
example: "working"
|
|
14517
14526
|
}
|
|
@@ -14589,11 +14598,11 @@ var paths = {
|
|
|
14589
14598
|
description: "Asset version to retrieve. Accepted values: working (default), live.",
|
|
14590
14599
|
schema: {
|
|
14591
14600
|
type: "string",
|
|
14592
|
-
"default": "working",
|
|
14593
14601
|
"enum": [
|
|
14594
14602
|
"working",
|
|
14595
14603
|
"live"
|
|
14596
|
-
]
|
|
14604
|
+
],
|
|
14605
|
+
"default": "working"
|
|
14597
14606
|
},
|
|
14598
14607
|
example: "working"
|
|
14599
14608
|
}
|
|
@@ -15696,11 +15705,11 @@ var paths = {
|
|
|
15696
15705
|
description: "Export format",
|
|
15697
15706
|
schema: {
|
|
15698
15707
|
type: "string",
|
|
15699
|
-
"default": "csv",
|
|
15700
15708
|
"enum": [
|
|
15701
15709
|
"csv",
|
|
15702
15710
|
"json"
|
|
15703
|
-
]
|
|
15711
|
+
],
|
|
15712
|
+
"default": "csv"
|
|
15704
15713
|
},
|
|
15705
15714
|
example: "csv"
|
|
15706
15715
|
},
|