@dotcms/ai 26.7.30-1 → 26.8.3-1

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.
Files changed (3) hide show
  1. package/package.json +1 -1
  2. package/spec.cjs.js +26 -26
  3. package/spec.esm.js +26 -26
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dotcms/ai",
3
- "version": "26.07.30-01",
3
+ "version": "26.08.03-01",
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
@@ -11403,7 +11403,7 @@ var paths = {
11403
11403
  "Workflow"
11404
11404
  ],
11405
11405
  summary: "Fire action by name (multipart form)",
11406
- 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. Markdown and HTML are intended for plain content: if the field already holds rich blocks that they cannot represent (embedded contentlets, video or layout blocks), the value is ignored and the existing document is preserved to modify such a field, send a full Tiptap/ProseMirror JSON document. Example: `\"body\": \"## Intro\\n\\nHello **world**.\"`.",
11406
+ 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 `![alt](url \"title\")` 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 fence payload degrades to an ordinary code block, never an error.",
11407
11407
  operationId: "putFireActionByNameMultipart",
11408
11408
  parameters: [
11409
11409
  {
@@ -11501,7 +11501,7 @@ var paths = {
11501
11501
  "Workflow"
11502
11502
  ],
11503
11503
  summary: "Fire workflow action by name",
11504
- 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. Markdown and HTML are intended for plain content: if the field already holds rich blocks that they cannot represent (embedded contentlets, video or layout blocks), the value is ignored and the existing document is preserved to modify such a field, send a full Tiptap/ProseMirror JSON document. Example: `\"body\": \"## Intro\\n\\nHello **world**.\"`.",
11504
+ 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 `![alt](url \"title\")` 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 fence payload degrades to an ordinary code block, never an error.",
11505
11505
  operationId: "putFireActionByName",
11506
11506
  parameters: [
11507
11507
  {
@@ -11651,7 +11651,7 @@ var paths = {
11651
11651
  "Workflow"
11652
11652
  ],
11653
11653
  summary: "Fire default action (multipart form)",
11654
- 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. Markdown and HTML are intended for plain content: if the field already holds rich blocks that they cannot represent (embedded contentlets, video or layout blocks), the value is ignored and the existing document is preserved to modify such a field, send a full Tiptap/ProseMirror JSON document. Example: `\"body\": \"## Intro\\n\\nHello **world**.\"`.",
11654
+ 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 `![alt](url \"title\")` 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 fence payload degrades to an ordinary code block, never an error.",
11655
11655
  operationId: "putFireDefaultActionMultipart",
11656
11656
  parameters: [
11657
11657
  {
@@ -11768,7 +11768,7 @@ var paths = {
11768
11768
  "Workflow"
11769
11769
  ],
11770
11770
  summary: "Fire system action by name",
11771
- 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. Markdown and HTML are intended for plain content: if the field already holds rich blocks that they cannot represent (embedded contentlets, video or layout blocks), the value is ignored and the existing document is preserved to modify such a field, send a full Tiptap/ProseMirror JSON document. Example: `\"body\": \"## Intro\\n\\nHello **world**.\"`.",
11771
+ 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 `![alt](url \"title\")` 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 fence payload degrades to an ordinary code block, never an error.",
11772
11772
  operationId: "putFireDefaultSystemAction",
11773
11773
  parameters: [
11774
11774
  {
@@ -12236,7 +12236,7 @@ var paths = {
12236
12236
  "Workflow"
12237
12237
  ],
12238
12238
  summary: "Fire action by ID (multipart form)",
12239
- 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. Markdown and HTML are intended for plain content: if the field already holds rich blocks that they cannot represent (embedded contentlets, video or layout blocks), the value is ignored and the existing document is preserved to modify such a field, send a full Tiptap/ProseMirror JSON document. Example: `\"body\": \"## Intro\\n\\nHello **world**.\"`.",
12239
+ 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 `![alt](url \"title\")` 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 fence payload degrades to an ordinary code block, never an error.",
12240
12240
  operationId: "putFireActionByIdMultipart",
12241
12241
  parameters: [
12242
12242
  {
@@ -12343,7 +12343,7 @@ var paths = {
12343
12343
  "Workflow"
12344
12344
  ],
12345
12345
  summary: "Fire action by ID",
12346
- 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. Markdown and HTML are intended for plain content: if the field already holds rich blocks that they cannot represent (embedded contentlets, video or layout blocks), the value is ignored and the existing document is preserved to modify such a field, send a full Tiptap/ProseMirror JSON document. Example: `\"body\": \"## Intro\\n\\nHello **world**.\"`.",
12346
+ 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 `![alt](url \"title\")` 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 fence payload degrades to an ordinary code block, never an error.",
12347
12347
  operationId: "putFireActionById",
12348
12348
  parameters: [
12349
12349
  {
@@ -13658,6 +13658,15 @@ var paths = {
13658
13658
  hasOnlyBatchActionlet: {
13659
13659
  type: "boolean"
13660
13660
  },
13661
+ hasSaveActionlet: {
13662
+ type: "boolean"
13663
+ },
13664
+ hasDeleteActionlet: {
13665
+ type: "boolean"
13666
+ },
13667
+ hasResetActionlet: {
13668
+ type: "boolean"
13669
+ },
13661
13670
  hasPublishActionlet: {
13662
13671
  type: "boolean"
13663
13672
  },
@@ -13684,15 +13693,6 @@ var paths = {
13684
13693
  },
13685
13694
  hasMoveActionletActionlet: {
13686
13695
  type: "boolean"
13687
- },
13688
- hasSaveActionlet: {
13689
- type: "boolean"
13690
- },
13691
- hasDeleteActionlet: {
13692
- type: "boolean"
13693
- },
13694
- hasResetActionlet: {
13695
- type: "boolean"
13696
13696
  }
13697
13697
  }
13698
13698
  }
@@ -13932,6 +13932,15 @@ var paths = {
13932
13932
  hasOnlyBatchActionlet: {
13933
13933
  type: "boolean"
13934
13934
  },
13935
+ hasSaveActionlet: {
13936
+ type: "boolean"
13937
+ },
13938
+ hasDeleteActionlet: {
13939
+ type: "boolean"
13940
+ },
13941
+ hasResetActionlet: {
13942
+ type: "boolean"
13943
+ },
13935
13944
  hasPublishActionlet: {
13936
13945
  type: "boolean"
13937
13946
  },
@@ -13958,15 +13967,6 @@ var paths = {
13958
13967
  },
13959
13968
  hasMoveActionletActionlet: {
13960
13969
  type: "boolean"
13961
- },
13962
- hasSaveActionlet: {
13963
- type: "boolean"
13964
- },
13965
- hasDeleteActionlet: {
13966
- type: "boolean"
13967
- },
13968
- hasResetActionlet: {
13969
- type: "boolean"
13970
13970
  }
13971
13971
  }
13972
13972
  },
@@ -14003,10 +14003,10 @@ var paths = {
14003
14003
  type: {
14004
14004
  type: "string"
14005
14005
  },
14006
- bitPermission: {
14006
+ individualPermission: {
14007
14007
  type: "boolean"
14008
14008
  },
14009
- individualPermission: {
14009
+ bitPermission: {
14010
14010
  type: "boolean"
14011
14011
  },
14012
14012
  roleId: {
package/spec.esm.js CHANGED
@@ -11401,7 +11401,7 @@ var paths = {
11401
11401
  "Workflow"
11402
11402
  ],
11403
11403
  summary: "Fire action by name (multipart form)",
11404
- 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. Markdown and HTML are intended for plain content: if the field already holds rich blocks that they cannot represent (embedded contentlets, video or layout blocks), the value is ignored and the existing document is preserved to modify such a field, send a full Tiptap/ProseMirror JSON document. Example: `\"body\": \"## Intro\\n\\nHello **world**.\"`.",
11404
+ 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 `![alt](url \"title\")` 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 fence payload degrades to an ordinary code block, never an error.",
11405
11405
  operationId: "putFireActionByNameMultipart",
11406
11406
  parameters: [
11407
11407
  {
@@ -11499,7 +11499,7 @@ var paths = {
11499
11499
  "Workflow"
11500
11500
  ],
11501
11501
  summary: "Fire workflow action by name",
11502
- 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. Markdown and HTML are intended for plain content: if the field already holds rich blocks that they cannot represent (embedded contentlets, video or layout blocks), the value is ignored and the existing document is preserved to modify such a field, send a full Tiptap/ProseMirror JSON document. Example: `\"body\": \"## Intro\\n\\nHello **world**.\"`.",
11502
+ 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 `![alt](url \"title\")` 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 fence payload degrades to an ordinary code block, never an error.",
11503
11503
  operationId: "putFireActionByName",
11504
11504
  parameters: [
11505
11505
  {
@@ -11649,7 +11649,7 @@ var paths = {
11649
11649
  "Workflow"
11650
11650
  ],
11651
11651
  summary: "Fire default action (multipart form)",
11652
- 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. Markdown and HTML are intended for plain content: if the field already holds rich blocks that they cannot represent (embedded contentlets, video or layout blocks), the value is ignored and the existing document is preserved to modify such a field, send a full Tiptap/ProseMirror JSON document. Example: `\"body\": \"## Intro\\n\\nHello **world**.\"`.",
11652
+ 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 `![alt](url \"title\")` 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 fence payload degrades to an ordinary code block, never an error.",
11653
11653
  operationId: "putFireDefaultActionMultipart",
11654
11654
  parameters: [
11655
11655
  {
@@ -11766,7 +11766,7 @@ var paths = {
11766
11766
  "Workflow"
11767
11767
  ],
11768
11768
  summary: "Fire system action by name",
11769
- 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. Markdown and HTML are intended for plain content: if the field already holds rich blocks that they cannot represent (embedded contentlets, video or layout blocks), the value is ignored and the existing document is preserved to modify such a field, send a full Tiptap/ProseMirror JSON document. Example: `\"body\": \"## Intro\\n\\nHello **world**.\"`.",
11769
+ 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 `![alt](url \"title\")` 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 fence payload degrades to an ordinary code block, never an error.",
11770
11770
  operationId: "putFireDefaultSystemAction",
11771
11771
  parameters: [
11772
11772
  {
@@ -12234,7 +12234,7 @@ var paths = {
12234
12234
  "Workflow"
12235
12235
  ],
12236
12236
  summary: "Fire action by ID (multipart form)",
12237
- 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. Markdown and HTML are intended for plain content: if the field already holds rich blocks that they cannot represent (embedded contentlets, video or layout blocks), the value is ignored and the existing document is preserved to modify such a field, send a full Tiptap/ProseMirror JSON document. Example: `\"body\": \"## Intro\\n\\nHello **world**.\"`.",
12237
+ 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 `![alt](url \"title\")` 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 fence payload degrades to an ordinary code block, never an error.",
12238
12238
  operationId: "putFireActionByIdMultipart",
12239
12239
  parameters: [
12240
12240
  {
@@ -12341,7 +12341,7 @@ var paths = {
12341
12341
  "Workflow"
12342
12342
  ],
12343
12343
  summary: "Fire action by ID",
12344
- 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. Markdown and HTML are intended for plain content: if the field already holds rich blocks that they cannot represent (embedded contentlets, video or layout blocks), the value is ignored and the existing document is preserved to modify such a field, send a full Tiptap/ProseMirror JSON document. Example: `\"body\": \"## Intro\\n\\nHello **world**.\"`.",
12344
+ 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 `![alt](url \"title\")` 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 fence payload degrades to an ordinary code block, never an error.",
12345
12345
  operationId: "putFireActionById",
12346
12346
  parameters: [
12347
12347
  {
@@ -13656,6 +13656,15 @@ var paths = {
13656
13656
  hasOnlyBatchActionlet: {
13657
13657
  type: "boolean"
13658
13658
  },
13659
+ hasSaveActionlet: {
13660
+ type: "boolean"
13661
+ },
13662
+ hasDeleteActionlet: {
13663
+ type: "boolean"
13664
+ },
13665
+ hasResetActionlet: {
13666
+ type: "boolean"
13667
+ },
13659
13668
  hasPublishActionlet: {
13660
13669
  type: "boolean"
13661
13670
  },
@@ -13682,15 +13691,6 @@ var paths = {
13682
13691
  },
13683
13692
  hasMoveActionletActionlet: {
13684
13693
  type: "boolean"
13685
- },
13686
- hasSaveActionlet: {
13687
- type: "boolean"
13688
- },
13689
- hasDeleteActionlet: {
13690
- type: "boolean"
13691
- },
13692
- hasResetActionlet: {
13693
- type: "boolean"
13694
13694
  }
13695
13695
  }
13696
13696
  }
@@ -13930,6 +13930,15 @@ var paths = {
13930
13930
  hasOnlyBatchActionlet: {
13931
13931
  type: "boolean"
13932
13932
  },
13933
+ hasSaveActionlet: {
13934
+ type: "boolean"
13935
+ },
13936
+ hasDeleteActionlet: {
13937
+ type: "boolean"
13938
+ },
13939
+ hasResetActionlet: {
13940
+ type: "boolean"
13941
+ },
13933
13942
  hasPublishActionlet: {
13934
13943
  type: "boolean"
13935
13944
  },
@@ -13956,15 +13965,6 @@ var paths = {
13956
13965
  },
13957
13966
  hasMoveActionletActionlet: {
13958
13967
  type: "boolean"
13959
- },
13960
- hasSaveActionlet: {
13961
- type: "boolean"
13962
- },
13963
- hasDeleteActionlet: {
13964
- type: "boolean"
13965
- },
13966
- hasResetActionlet: {
13967
- type: "boolean"
13968
13968
  }
13969
13969
  }
13970
13970
  },
@@ -14001,10 +14001,10 @@ var paths = {
14001
14001
  type: {
14002
14002
  type: "string"
14003
14003
  },
14004
- bitPermission: {
14004
+ individualPermission: {
14005
14005
  type: "boolean"
14006
14006
  },
14007
- individualPermission: {
14007
+ bitPermission: {
14008
14008
  type: "boolean"
14009
14009
  },
14010
14010
  roleId: {