@dotcms/ai 1.7.1-next.2367 → 26.7.21-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 +2 -2
  2. package/spec.cjs.js +16 -16
  3. package/spec.esm.js +16 -16
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dotcms/ai",
3
- "version": "1.7.1-next.2367",
3
+ "version": "26.07.21-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",
@@ -69,4 +69,4 @@
69
69
  "module": "./runtime.esm.js",
70
70
  "main": "./runtime.cjs.js",
71
71
  "types": "./runtime.d.ts"
72
- }
72
+ }
package/spec.cjs.js CHANGED
@@ -3208,7 +3208,7 @@ var paths = {
3208
3208
  {
3209
3209
  name: "name",
3210
3210
  "in": "query",
3211
- description: "Optional case-insensitive partial match on folder name (minimum 3 characters when provided)",
3211
+ description: "Optional case-insensitive partial match on folder name (minimum 2 characters when provided)",
3212
3212
  schema: {
3213
3213
  type: "string"
3214
3214
  }
@@ -3295,7 +3295,7 @@ var paths = {
3295
3295
  }
3296
3296
  },
3297
3297
  "400": {
3298
- description: "'siteId' is required; 'name' must be at least 3 characters if provided"
3298
+ description: "'siteId' is required; 'name' must be at least 2 characters if provided"
3299
3299
  },
3300
3300
  "401": {
3301
3301
  description: "User is not authenticated"
@@ -11389,7 +11389,7 @@ var paths = {
11389
11389
  "Workflow"
11390
11390
  ],
11391
11391
  summary: "Fire action by name (multipart form)",
11392
- 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** 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 is intended for plain content: if the field already holds rich blocks that Markdown cannot represent (embedded contentlets, video or layout blocks), the Markdown 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**.\"`.",
11392
+ 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**.\"`.",
11393
11393
  operationId: "putFireActionByNameMultipart",
11394
11394
  parameters: [
11395
11395
  {
@@ -11487,7 +11487,7 @@ var paths = {
11487
11487
  "Workflow"
11488
11488
  ],
11489
11489
  summary: "Fire workflow action by name",
11490
- 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** 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 is intended for plain content: if the field already holds rich blocks that Markdown cannot represent (embedded contentlets, video or layout blocks), the Markdown 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**.\"`.",
11490
+ 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**.\"`.",
11491
11491
  operationId: "putFireActionByName",
11492
11492
  parameters: [
11493
11493
  {
@@ -11637,7 +11637,7 @@ var paths = {
11637
11637
  "Workflow"
11638
11638
  ],
11639
11639
  summary: "Fire default action (multipart form)",
11640
- 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** 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 is intended for plain content: if the field already holds rich blocks that Markdown cannot represent (embedded contentlets, video or layout blocks), the Markdown 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**.\"`.",
11640
+ 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**.\"`.",
11641
11641
  operationId: "putFireDefaultActionMultipart",
11642
11642
  parameters: [
11643
11643
  {
@@ -11754,7 +11754,7 @@ var paths = {
11754
11754
  "Workflow"
11755
11755
  ],
11756
11756
  summary: "Fire system action by name",
11757
- 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** 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 is intended for plain content: if the field already holds rich blocks that Markdown cannot represent (embedded contentlets, video or layout blocks), the Markdown 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**.\"`.",
11757
+ 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**.\"`.",
11758
11758
  operationId: "putFireDefaultSystemAction",
11759
11759
  parameters: [
11760
11760
  {
@@ -12222,7 +12222,7 @@ var paths = {
12222
12222
  "Workflow"
12223
12223
  ],
12224
12224
  summary: "Fire action by ID (multipart form)",
12225
- 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** 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 is intended for plain content: if the field already holds rich blocks that Markdown cannot represent (embedded contentlets, video or layout blocks), the Markdown 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**.\"`.",
12225
+ 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**.\"`.",
12226
12226
  operationId: "putFireActionByIdMultipart",
12227
12227
  parameters: [
12228
12228
  {
@@ -12329,7 +12329,7 @@ var paths = {
12329
12329
  "Workflow"
12330
12330
  ],
12331
12331
  summary: "Fire action by ID",
12332
- 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** 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 is intended for plain content: if the field already holds rich blocks that Markdown cannot represent (embedded contentlets, video or layout blocks), the Markdown 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**.\"`.",
12332
+ 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**.\"`.",
12333
12333
  operationId: "putFireActionById",
12334
12334
  parameters: [
12335
12335
  {
@@ -13644,6 +13644,9 @@ var paths = {
13644
13644
  hasOnlyBatchActionlet: {
13645
13645
  type: "boolean"
13646
13646
  },
13647
+ hasSaveActionlet: {
13648
+ type: "boolean"
13649
+ },
13647
13650
  hasDeleteActionlet: {
13648
13651
  type: "boolean"
13649
13652
  },
@@ -13676,9 +13679,6 @@ var paths = {
13676
13679
  },
13677
13680
  hasMoveActionletActionlet: {
13678
13681
  type: "boolean"
13679
- },
13680
- hasSaveActionlet: {
13681
- type: "boolean"
13682
13682
  }
13683
13683
  }
13684
13684
  }
@@ -13918,6 +13918,9 @@ var paths = {
13918
13918
  hasOnlyBatchActionlet: {
13919
13919
  type: "boolean"
13920
13920
  },
13921
+ hasSaveActionlet: {
13922
+ type: "boolean"
13923
+ },
13921
13924
  hasDeleteActionlet: {
13922
13925
  type: "boolean"
13923
13926
  },
@@ -13950,9 +13953,6 @@ var paths = {
13950
13953
  },
13951
13954
  hasMoveActionletActionlet: {
13952
13955
  type: "boolean"
13953
- },
13954
- hasSaveActionlet: {
13955
- type: "boolean"
13956
13956
  }
13957
13957
  }
13958
13958
  },
@@ -13989,10 +13989,10 @@ var paths = {
13989
13989
  type: {
13990
13990
  type: "string"
13991
13991
  },
13992
- individualPermission: {
13992
+ bitPermission: {
13993
13993
  type: "boolean"
13994
13994
  },
13995
- bitPermission: {
13995
+ individualPermission: {
13996
13996
  type: "boolean"
13997
13997
  },
13998
13998
  roleId: {
package/spec.esm.js CHANGED
@@ -3206,7 +3206,7 @@ var paths = {
3206
3206
  {
3207
3207
  name: "name",
3208
3208
  "in": "query",
3209
- description: "Optional case-insensitive partial match on folder name (minimum 3 characters when provided)",
3209
+ description: "Optional case-insensitive partial match on folder name (minimum 2 characters when provided)",
3210
3210
  schema: {
3211
3211
  type: "string"
3212
3212
  }
@@ -3293,7 +3293,7 @@ var paths = {
3293
3293
  }
3294
3294
  },
3295
3295
  "400": {
3296
- description: "'siteId' is required; 'name' must be at least 3 characters if provided"
3296
+ description: "'siteId' is required; 'name' must be at least 2 characters if provided"
3297
3297
  },
3298
3298
  "401": {
3299
3299
  description: "User is not authenticated"
@@ -11387,7 +11387,7 @@ var paths = {
11387
11387
  "Workflow"
11388
11388
  ],
11389
11389
  summary: "Fire action by name (multipart form)",
11390
- 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** 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 is intended for plain content: if the field already holds rich blocks that Markdown cannot represent (embedded contentlets, video or layout blocks), the Markdown 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**.\"`.",
11390
+ 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**.\"`.",
11391
11391
  operationId: "putFireActionByNameMultipart",
11392
11392
  parameters: [
11393
11393
  {
@@ -11485,7 +11485,7 @@ var paths = {
11485
11485
  "Workflow"
11486
11486
  ],
11487
11487
  summary: "Fire workflow action by name",
11488
- 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** 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 is intended for plain content: if the field already holds rich blocks that Markdown cannot represent (embedded contentlets, video or layout blocks), the Markdown 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**.\"`.",
11488
+ 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**.\"`.",
11489
11489
  operationId: "putFireActionByName",
11490
11490
  parameters: [
11491
11491
  {
@@ -11635,7 +11635,7 @@ var paths = {
11635
11635
  "Workflow"
11636
11636
  ],
11637
11637
  summary: "Fire default action (multipart form)",
11638
- 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** 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 is intended for plain content: if the field already holds rich blocks that Markdown cannot represent (embedded contentlets, video or layout blocks), the Markdown 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**.\"`.",
11638
+ 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**.\"`.",
11639
11639
  operationId: "putFireDefaultActionMultipart",
11640
11640
  parameters: [
11641
11641
  {
@@ -11752,7 +11752,7 @@ var paths = {
11752
11752
  "Workflow"
11753
11753
  ],
11754
11754
  summary: "Fire system action by name",
11755
- 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** 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 is intended for plain content: if the field already holds rich blocks that Markdown cannot represent (embedded contentlets, video or layout blocks), the Markdown 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**.\"`.",
11755
+ 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**.\"`.",
11756
11756
  operationId: "putFireDefaultSystemAction",
11757
11757
  parameters: [
11758
11758
  {
@@ -12220,7 +12220,7 @@ var paths = {
12220
12220
  "Workflow"
12221
12221
  ],
12222
12222
  summary: "Fire action by ID (multipart form)",
12223
- 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** 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 is intended for plain content: if the field already holds rich blocks that Markdown cannot represent (embedded contentlets, video or layout blocks), the Markdown 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**.\"`.",
12223
+ 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**.\"`.",
12224
12224
  operationId: "putFireActionByIdMultipart",
12225
12225
  parameters: [
12226
12226
  {
@@ -12327,7 +12327,7 @@ var paths = {
12327
12327
  "Workflow"
12328
12328
  ],
12329
12329
  summary: "Fire action by ID",
12330
- 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** 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 is intended for plain content: if the field already holds rich blocks that Markdown cannot represent (embedded contentlets, video or layout blocks), the Markdown 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**.\"`.",
12330
+ 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**.\"`.",
12331
12331
  operationId: "putFireActionById",
12332
12332
  parameters: [
12333
12333
  {
@@ -13642,6 +13642,9 @@ var paths = {
13642
13642
  hasOnlyBatchActionlet: {
13643
13643
  type: "boolean"
13644
13644
  },
13645
+ hasSaveActionlet: {
13646
+ type: "boolean"
13647
+ },
13645
13648
  hasDeleteActionlet: {
13646
13649
  type: "boolean"
13647
13650
  },
@@ -13674,9 +13677,6 @@ var paths = {
13674
13677
  },
13675
13678
  hasMoveActionletActionlet: {
13676
13679
  type: "boolean"
13677
- },
13678
- hasSaveActionlet: {
13679
- type: "boolean"
13680
13680
  }
13681
13681
  }
13682
13682
  }
@@ -13916,6 +13916,9 @@ var paths = {
13916
13916
  hasOnlyBatchActionlet: {
13917
13917
  type: "boolean"
13918
13918
  },
13919
+ hasSaveActionlet: {
13920
+ type: "boolean"
13921
+ },
13919
13922
  hasDeleteActionlet: {
13920
13923
  type: "boolean"
13921
13924
  },
@@ -13948,9 +13951,6 @@ var paths = {
13948
13951
  },
13949
13952
  hasMoveActionletActionlet: {
13950
13953
  type: "boolean"
13951
- },
13952
- hasSaveActionlet: {
13953
- type: "boolean"
13954
13954
  }
13955
13955
  }
13956
13956
  },
@@ -13987,10 +13987,10 @@ var paths = {
13987
13987
  type: {
13988
13988
  type: "string"
13989
13989
  },
13990
- individualPermission: {
13990
+ bitPermission: {
13991
13991
  type: "boolean"
13992
13992
  },
13993
- bitPermission: {
13993
+ individualPermission: {
13994
13994
  type: "boolean"
13995
13995
  },
13996
13996
  roleId: {