@dotcms/ai 1.5.6-beta.1 → 1.6.0-next.36

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 +7 -27
  2. package/spec.cjs.js +129 -82
  3. package/spec.esm.js +129 -82
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dotcms/ai",
3
- "version": "1.5.6-beta.1",
3
+ "version": "1.6.0-next.36",
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",
@@ -16,30 +16,10 @@
16
16
  },
17
17
  "exports": {
18
18
  "./package.json": "./package.json",
19
- "./runtime": {
20
- "module": "./runtime.esm.js",
21
- "types": "./runtime.d.ts",
22
- "import": "./runtime.cjs.mjs",
23
- "default": "./runtime.cjs.js"
24
- },
25
- "./sandbox": {
26
- "module": "./runtime.esm.js",
27
- "types": "./src/sandbox/index.d.ts",
28
- "import": "./runtime.cjs.mjs",
29
- "default": "./runtime.cjs.js"
30
- },
31
- "./adapter": {
32
- "module": "./runtime.esm.js",
33
- "types": "./src/adapter/index.d.ts",
34
- "import": "./runtime.cjs.mjs",
35
- "default": "./runtime.cjs.js"
36
- },
37
- "./spec": {
38
- "module": "./spec.esm.js",
39
- "types": "./src/spec/index.d.ts",
40
- "import": "./spec.cjs.js",
41
- "default": "./spec.cjs.js"
42
- },
19
+ "./runtime": "./src/runtime.ts",
20
+ "./sandbox": "./src/sandbox/index.ts",
21
+ "./adapter": "./src/adapter/index.ts",
22
+ "./spec": "./src/spec/index.ts",
43
23
  ".": {
44
24
  "module": "./runtime.esm.js",
45
25
  "types": "./runtime.d.ts",
@@ -56,7 +36,7 @@
56
36
  "typesVersions": {
57
37
  "*": {
58
38
  "runtime": [
59
- "./runtime.d.ts"
39
+ "./src/runtime.d.ts"
60
40
  ],
61
41
  "sandbox": [
62
42
  "./src/sandbox/index.d.ts"
@@ -89,4 +69,4 @@
89
69
  "module": "./runtime.esm.js",
90
70
  "main": "./runtime.cjs.js",
91
71
  "types": "./runtime.d.ts"
92
- }
72
+ }
package/spec.cjs.js CHANGED
@@ -989,7 +989,7 @@ var paths = {
989
989
  requestBody: {
990
990
  description: "Updated container configuration data including identifier and modified properties",
991
991
  content: {
992
- "*/*": {
992
+ "application/json": {
993
993
  schema: {
994
994
  required: [
995
995
  "title"
@@ -1135,7 +1135,7 @@ var paths = {
1135
1135
  requestBody: {
1136
1136
  description: "Container configuration data including title, code, content type structures, and display settings",
1137
1137
  content: {
1138
- "*/*": {
1138
+ "application/json": {
1139
1139
  schema: {
1140
1140
  required: [
1141
1141
  "title"
@@ -3149,61 +3149,41 @@ var paths = {
3149
3149
  }
3150
3150
  }
3151
3151
  },
3152
- "/api/v1/folder/byPath": {
3153
- post: {
3152
+ "/api/v1/folder/sitename/{siteName}/uri/{uri}": {
3153
+ get: {
3154
3154
  tags: [
3155
3155
  "Folders"
3156
3156
  ],
3157
- summary: "Find subfolders by path",
3158
- description: "Retrieves subfolders of a given path, filtered by the path sent. The path format supports site-specific search (//siteName/path) or global search (/path). For example: '//default/folder1/' returns subfolder1, subfolder2 under folder1 in the 'default' site. '/folder1/s' returns all subfolders starting with 's' under folder1 across all sites.",
3159
- operationId: "findSubFoldersByPath",
3157
+ summary: "Load a folder by site name and URI",
3158
+ description: "Retrieves a folder by its URI path within the specified site.",
3159
+ operationId: "loadFolderByURI",
3160
3160
  parameters: [
3161
3161
  {
3162
- name: "offset",
3163
- "in": "query",
3164
- description: "Number of results to skip for pagination. Must be >= 0.",
3162
+ name: "siteName",
3163
+ "in": "path",
3164
+ required: true,
3165
3165
  schema: {
3166
- type: "integer",
3167
- format: "int32",
3168
- "default": 0
3166
+ type: "string"
3169
3167
  }
3170
3168
  },
3171
3169
  {
3172
- name: "limit",
3173
- "in": "query",
3174
- description: "Maximum number of results to return. Default 40. Use -1 for unlimited (capped at 10000 as a safety limit).",
3170
+ name: "uri",
3171
+ "in": "path",
3172
+ required: true,
3175
3173
  schema: {
3176
- type: "integer",
3177
- format: "int32",
3178
- "default": 40
3174
+ pattern: ".+",
3175
+ type: "string"
3179
3176
  }
3180
3177
  }
3181
3178
  ],
3182
- requestBody: {
3183
- content: {
3184
- "*/*": {
3185
- schema: {
3186
- type: "object",
3187
- properties: {
3188
- path: {
3189
- type: "string"
3190
- }
3191
- }
3192
- }
3193
- }
3194
- }
3195
- },
3196
3179
  responses: {
3197
3180
  "200": {
3198
- description: "Subfolders retrieved successfully",
3181
+ description: "Folder retrieved successfully",
3199
3182
  content: {
3200
3183
  "application/json": {
3201
3184
  }
3202
3185
  }
3203
3186
  },
3204
- "400": {
3205
- description: "Path property must be sent"
3206
- },
3207
3187
  "401": {
3208
3188
  description: "Authentication required"
3209
3189
  },
@@ -3211,54 +3191,117 @@ var paths = {
3211
3191
  description: "Insufficient permissions"
3212
3192
  },
3213
3193
  "404": {
3214
- description: "Site not found"
3194
+ description: "Folder not found"
3215
3195
  }
3216
3196
  }
3217
3197
  }
3218
3198
  },
3219
- "/api/v1/folder/sitename/{siteName}/uri/{uri}": {
3199
+ "/api/v1/folder/search": {
3220
3200
  get: {
3221
3201
  tags: [
3222
3202
  "Folders"
3223
3203
  ],
3224
- summary: "Load a folder by site name and URI",
3225
- description: "Retrieves a folder by its URI path within the specified site.",
3226
- operationId: "loadFolderByURI",
3204
+ summary: "Search folders",
3205
+ description: "Returns folders within a site matching an optional name filter and/or path scope. Supports recursive depth control, standard pagination, and sorting. With no 'name' and default path '/' + recursive=true, all site folders are returned.",
3206
+ operationId: "searchFolders",
3227
3207
  parameters: [
3228
3208
  {
3229
- name: "siteName",
3230
- "in": "path",
3231
- required: true,
3209
+ name: "name",
3210
+ "in": "query",
3211
+ description: "Optional case-insensitive partial match on folder name (minimum 3 characters when provided)",
3232
3212
  schema: {
3233
3213
  type: "string"
3234
3214
  }
3235
3215
  },
3236
3216
  {
3237
- name: "uri",
3238
- "in": "path",
3239
- required: true,
3217
+ name: "path",
3218
+ "in": "query",
3219
+ description: "Path scope for the search. Defaults to '/' (site root).",
3220
+ schema: {
3221
+ type: "string",
3222
+ "default": "/"
3223
+ }
3224
+ },
3225
+ {
3226
+ name: "recursive",
3227
+ "in": "query",
3228
+ description: "false = direct children of 'path' only (default); true = search all descendants",
3229
+ schema: {
3230
+ type: "boolean",
3231
+ "default": false
3232
+ }
3233
+ },
3234
+ {
3235
+ name: "siteId",
3236
+ "in": "query",
3237
+ description: "Site ID to scope the search (required)",
3240
3238
  schema: {
3241
- pattern: ".+",
3242
3239
  type: "string"
3243
3240
  }
3241
+ },
3242
+ {
3243
+ name: "orderby",
3244
+ "in": "query",
3245
+ description: "Column to sort by.",
3246
+ schema: {
3247
+ type: "string",
3248
+ "enum": [
3249
+ "name",
3250
+ "mod_date"
3251
+ ],
3252
+ "default": "name"
3253
+ }
3254
+ },
3255
+ {
3256
+ name: "direction",
3257
+ "in": "query",
3258
+ description: "Sort direction",
3259
+ schema: {
3260
+ type: "string",
3261
+ "enum": [
3262
+ "ASC",
3263
+ "DESC"
3264
+ ],
3265
+ "default": "ASC"
3266
+ }
3267
+ },
3268
+ {
3269
+ name: "page",
3270
+ "in": "query",
3271
+ description: "Page number (1-based, default 1)",
3272
+ schema: {
3273
+ type: "integer",
3274
+ format: "int32",
3275
+ "default": 1
3276
+ }
3277
+ },
3278
+ {
3279
+ name: "per_page",
3280
+ "in": "query",
3281
+ description: "Number of results per page (default 40)",
3282
+ schema: {
3283
+ type: "integer",
3284
+ format: "int32",
3285
+ "default": 40
3286
+ }
3244
3287
  }
3245
3288
  ],
3246
3289
  responses: {
3247
3290
  "200": {
3248
- description: "Folder retrieved successfully",
3291
+ description: "Paginated list of matching folders",
3249
3292
  content: {
3250
3293
  "application/json": {
3251
3294
  }
3252
3295
  }
3253
3296
  },
3254
- "401": {
3255
- description: "Authentication required"
3297
+ "400": {
3298
+ description: "'siteId' is required; 'name' must be at least 3 characters if provided"
3256
3299
  },
3257
- "403": {
3258
- description: "Insufficient permissions"
3300
+ "401": {
3301
+ description: "User is not authenticated"
3259
3302
  },
3260
- "404": {
3261
- description: "Folder not found"
3303
+ "500": {
3304
+ description: "Internal server error"
3262
3305
  }
3263
3306
  }
3264
3307
  }
@@ -5218,8 +5261,9 @@ var paths = {
5218
5261
  }
5219
5262
  ],
5220
5263
  requestBody: {
5264
+ description: "Updated site properties. 'siteName' (the hostname) is required.",
5221
5265
  content: {
5222
- "*/*": {
5266
+ "application/json": {
5223
5267
  schema: {
5224
5268
  type: "object",
5225
5269
  properties: {
@@ -5298,7 +5342,8 @@ var paths = {
5298
5342
  }
5299
5343
  }
5300
5344
  }
5301
- }
5345
+ },
5346
+ required: true
5302
5347
  },
5303
5348
  responses: {
5304
5349
  "200": {
@@ -5330,8 +5375,9 @@ var paths = {
5330
5375
  description: "Creates a new site with the provided properties including hostname, aliases, tag storage, SEO settings, and optional site variables.",
5331
5376
  operationId: "createSite",
5332
5377
  requestBody: {
5378
+ description: "Site properties to create. 'siteName' (the hostname) is required.",
5333
5379
  content: {
5334
- "*/*": {
5380
+ "application/json": {
5335
5381
  schema: {
5336
5382
  type: "object",
5337
5383
  properties: {
@@ -5410,7 +5456,8 @@ var paths = {
5410
5456
  }
5411
5457
  }
5412
5458
  }
5413
- }
5459
+ },
5460
+ required: true
5414
5461
  },
5415
5462
  responses: {
5416
5463
  "200": {
@@ -7639,7 +7686,7 @@ var paths = {
7639
7686
  requestBody: {
7640
7687
  description: "Template data to update. Must include the template identifier.",
7641
7688
  content: {
7642
- "*/*": {
7689
+ "application/json": {
7643
7690
  schema: {
7644
7691
  required: [
7645
7692
  "title"
@@ -7877,7 +7924,7 @@ var paths = {
7877
7924
  requestBody: {
7878
7925
  description: "Template data to create",
7879
7926
  content: {
7880
- "*/*": {
7927
+ "application/json": {
7881
7928
  schema: {
7882
7929
  required: [
7883
7930
  "title"
@@ -11342,7 +11389,7 @@ var paths = {
11342
11389
  "Workflow"
11343
11390
  ],
11344
11391
  summary: "Fire action by name (multipart form)",
11345
- 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 an HTML or Markdown string — do not hand-author the underlying ProseMirror/JSON document. The value is stored as-is and converted to the Block Editor structure when the contentlet is opened in the editor. Example: `\"body\": \"<h2>Intro</h2><p>Hello <strong>world</strong>.</p>\"`.",
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**.\"`.",
11346
11393
  operationId: "putFireActionByNameMultipart",
11347
11394
  parameters: [
11348
11395
  {
@@ -11440,7 +11487,7 @@ var paths = {
11440
11487
  "Workflow"
11441
11488
  ],
11442
11489
  summary: "Fire workflow action by name",
11443
- 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 an HTML or Markdown string — do not hand-author the underlying ProseMirror/JSON document. The value is stored as-is and converted to the Block Editor structure when the contentlet is opened in the editor. Example: `\"body\": \"<h2>Intro</h2><p>Hello <strong>world</strong>.</p>\"`.",
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**.\"`.",
11444
11491
  operationId: "putFireActionByName",
11445
11492
  parameters: [
11446
11493
  {
@@ -11590,7 +11637,7 @@ var paths = {
11590
11637
  "Workflow"
11591
11638
  ],
11592
11639
  summary: "Fire default action (multipart form)",
11593
- 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 an HTML or Markdown string — do not hand-author the underlying ProseMirror/JSON document. The value is stored as-is and converted to the Block Editor structure when the contentlet is opened in the editor. Example: `\"body\": \"<h2>Intro</h2><p>Hello <strong>world</strong>.</p>\"`.",
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**.\"`.",
11594
11641
  operationId: "putFireDefaultActionMultipart",
11595
11642
  parameters: [
11596
11643
  {
@@ -11707,7 +11754,7 @@ var paths = {
11707
11754
  "Workflow"
11708
11755
  ],
11709
11756
  summary: "Fire system action by name",
11710
- 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 an HTML or Markdown string — do not hand-author the underlying ProseMirror/JSON document. The value is stored as-is and converted to the Block Editor structure when the contentlet is opened in the editor. Example: `\"body\": \"<h2>Intro</h2><p>Hello <strong>world</strong>.</p>\"`.",
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**.\"`.",
11711
11758
  operationId: "putFireDefaultSystemAction",
11712
11759
  parameters: [
11713
11760
  {
@@ -12175,7 +12222,7 @@ var paths = {
12175
12222
  "Workflow"
12176
12223
  ],
12177
12224
  summary: "Fire action by ID (multipart form)",
12178
- 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 an HTML or Markdown string — do not hand-author the underlying ProseMirror/JSON document. The value is stored as-is and converted to the Block Editor structure when the contentlet is opened in the editor. Example: `\"body\": \"<h2>Intro</h2><p>Hello <strong>world</strong>.</p>\"`.",
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**.\"`.",
12179
12226
  operationId: "putFireActionByIdMultipart",
12180
12227
  parameters: [
12181
12228
  {
@@ -12282,7 +12329,7 @@ var paths = {
12282
12329
  "Workflow"
12283
12330
  ],
12284
12331
  summary: "Fire action by ID",
12285
- 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 an HTML or Markdown string — do not hand-author the underlying ProseMirror/JSON document. The value is stored as-is and converted to the Block Editor structure when the contentlet is opened in the editor. Example: `\"body\": \"<h2>Intro</h2><p>Hello <strong>world</strong>.</p>\"`.",
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**.\"`.",
12286
12333
  operationId: "putFireActionById",
12287
12334
  parameters: [
12288
12335
  {
@@ -13597,6 +13644,12 @@ var paths = {
13597
13644
  hasOnlyBatchActionlet: {
13598
13645
  type: "boolean"
13599
13646
  },
13647
+ hasDeleteActionlet: {
13648
+ type: "boolean"
13649
+ },
13650
+ hasResetActionlet: {
13651
+ type: "boolean"
13652
+ },
13600
13653
  hasPublishActionlet: {
13601
13654
  type: "boolean"
13602
13655
  },
@@ -13626,12 +13679,6 @@ var paths = {
13626
13679
  },
13627
13680
  hasSaveActionlet: {
13628
13681
  type: "boolean"
13629
- },
13630
- hasDeleteActionlet: {
13631
- type: "boolean"
13632
- },
13633
- hasResetActionlet: {
13634
- type: "boolean"
13635
13682
  }
13636
13683
  }
13637
13684
  }
@@ -13871,6 +13918,12 @@ var paths = {
13871
13918
  hasOnlyBatchActionlet: {
13872
13919
  type: "boolean"
13873
13920
  },
13921
+ hasDeleteActionlet: {
13922
+ type: "boolean"
13923
+ },
13924
+ hasResetActionlet: {
13925
+ type: "boolean"
13926
+ },
13874
13927
  hasPublishActionlet: {
13875
13928
  type: "boolean"
13876
13929
  },
@@ -13900,12 +13953,6 @@ var paths = {
13900
13953
  },
13901
13954
  hasSaveActionlet: {
13902
13955
  type: "boolean"
13903
- },
13904
- hasDeleteActionlet: {
13905
- type: "boolean"
13906
- },
13907
- hasResetActionlet: {
13908
- type: "boolean"
13909
13956
  }
13910
13957
  }
13911
13958
  },
@@ -13942,10 +13989,10 @@ var paths = {
13942
13989
  type: {
13943
13990
  type: "string"
13944
13991
  },
13945
- bitPermission: {
13992
+ individualPermission: {
13946
13993
  type: "boolean"
13947
13994
  },
13948
- individualPermission: {
13995
+ bitPermission: {
13949
13996
  type: "boolean"
13950
13997
  },
13951
13998
  roleId: {
package/spec.esm.js CHANGED
@@ -987,7 +987,7 @@ var paths = {
987
987
  requestBody: {
988
988
  description: "Updated container configuration data including identifier and modified properties",
989
989
  content: {
990
- "*/*": {
990
+ "application/json": {
991
991
  schema: {
992
992
  required: [
993
993
  "title"
@@ -1133,7 +1133,7 @@ var paths = {
1133
1133
  requestBody: {
1134
1134
  description: "Container configuration data including title, code, content type structures, and display settings",
1135
1135
  content: {
1136
- "*/*": {
1136
+ "application/json": {
1137
1137
  schema: {
1138
1138
  required: [
1139
1139
  "title"
@@ -3147,61 +3147,41 @@ var paths = {
3147
3147
  }
3148
3148
  }
3149
3149
  },
3150
- "/api/v1/folder/byPath": {
3151
- post: {
3150
+ "/api/v1/folder/sitename/{siteName}/uri/{uri}": {
3151
+ get: {
3152
3152
  tags: [
3153
3153
  "Folders"
3154
3154
  ],
3155
- summary: "Find subfolders by path",
3156
- description: "Retrieves subfolders of a given path, filtered by the path sent. The path format supports site-specific search (//siteName/path) or global search (/path). For example: '//default/folder1/' returns subfolder1, subfolder2 under folder1 in the 'default' site. '/folder1/s' returns all subfolders starting with 's' under folder1 across all sites.",
3157
- operationId: "findSubFoldersByPath",
3155
+ summary: "Load a folder by site name and URI",
3156
+ description: "Retrieves a folder by its URI path within the specified site.",
3157
+ operationId: "loadFolderByURI",
3158
3158
  parameters: [
3159
3159
  {
3160
- name: "offset",
3161
- "in": "query",
3162
- description: "Number of results to skip for pagination. Must be >= 0.",
3160
+ name: "siteName",
3161
+ "in": "path",
3162
+ required: true,
3163
3163
  schema: {
3164
- type: "integer",
3165
- format: "int32",
3166
- "default": 0
3164
+ type: "string"
3167
3165
  }
3168
3166
  },
3169
3167
  {
3170
- name: "limit",
3171
- "in": "query",
3172
- description: "Maximum number of results to return. Default 40. Use -1 for unlimited (capped at 10000 as a safety limit).",
3168
+ name: "uri",
3169
+ "in": "path",
3170
+ required: true,
3173
3171
  schema: {
3174
- type: "integer",
3175
- format: "int32",
3176
- "default": 40
3172
+ pattern: ".+",
3173
+ type: "string"
3177
3174
  }
3178
3175
  }
3179
3176
  ],
3180
- requestBody: {
3181
- content: {
3182
- "*/*": {
3183
- schema: {
3184
- type: "object",
3185
- properties: {
3186
- path: {
3187
- type: "string"
3188
- }
3189
- }
3190
- }
3191
- }
3192
- }
3193
- },
3194
3177
  responses: {
3195
3178
  "200": {
3196
- description: "Subfolders retrieved successfully",
3179
+ description: "Folder retrieved successfully",
3197
3180
  content: {
3198
3181
  "application/json": {
3199
3182
  }
3200
3183
  }
3201
3184
  },
3202
- "400": {
3203
- description: "Path property must be sent"
3204
- },
3205
3185
  "401": {
3206
3186
  description: "Authentication required"
3207
3187
  },
@@ -3209,54 +3189,117 @@ var paths = {
3209
3189
  description: "Insufficient permissions"
3210
3190
  },
3211
3191
  "404": {
3212
- description: "Site not found"
3192
+ description: "Folder not found"
3213
3193
  }
3214
3194
  }
3215
3195
  }
3216
3196
  },
3217
- "/api/v1/folder/sitename/{siteName}/uri/{uri}": {
3197
+ "/api/v1/folder/search": {
3218
3198
  get: {
3219
3199
  tags: [
3220
3200
  "Folders"
3221
3201
  ],
3222
- summary: "Load a folder by site name and URI",
3223
- description: "Retrieves a folder by its URI path within the specified site.",
3224
- operationId: "loadFolderByURI",
3202
+ summary: "Search folders",
3203
+ description: "Returns folders within a site matching an optional name filter and/or path scope. Supports recursive depth control, standard pagination, and sorting. With no 'name' and default path '/' + recursive=true, all site folders are returned.",
3204
+ operationId: "searchFolders",
3225
3205
  parameters: [
3226
3206
  {
3227
- name: "siteName",
3228
- "in": "path",
3229
- required: true,
3207
+ name: "name",
3208
+ "in": "query",
3209
+ description: "Optional case-insensitive partial match on folder name (minimum 3 characters when provided)",
3230
3210
  schema: {
3231
3211
  type: "string"
3232
3212
  }
3233
3213
  },
3234
3214
  {
3235
- name: "uri",
3236
- "in": "path",
3237
- required: true,
3215
+ name: "path",
3216
+ "in": "query",
3217
+ description: "Path scope for the search. Defaults to '/' (site root).",
3218
+ schema: {
3219
+ type: "string",
3220
+ "default": "/"
3221
+ }
3222
+ },
3223
+ {
3224
+ name: "recursive",
3225
+ "in": "query",
3226
+ description: "false = direct children of 'path' only (default); true = search all descendants",
3227
+ schema: {
3228
+ type: "boolean",
3229
+ "default": false
3230
+ }
3231
+ },
3232
+ {
3233
+ name: "siteId",
3234
+ "in": "query",
3235
+ description: "Site ID to scope the search (required)",
3238
3236
  schema: {
3239
- pattern: ".+",
3240
3237
  type: "string"
3241
3238
  }
3239
+ },
3240
+ {
3241
+ name: "orderby",
3242
+ "in": "query",
3243
+ description: "Column to sort by.",
3244
+ schema: {
3245
+ type: "string",
3246
+ "enum": [
3247
+ "name",
3248
+ "mod_date"
3249
+ ],
3250
+ "default": "name"
3251
+ }
3252
+ },
3253
+ {
3254
+ name: "direction",
3255
+ "in": "query",
3256
+ description: "Sort direction",
3257
+ schema: {
3258
+ type: "string",
3259
+ "enum": [
3260
+ "ASC",
3261
+ "DESC"
3262
+ ],
3263
+ "default": "ASC"
3264
+ }
3265
+ },
3266
+ {
3267
+ name: "page",
3268
+ "in": "query",
3269
+ description: "Page number (1-based, default 1)",
3270
+ schema: {
3271
+ type: "integer",
3272
+ format: "int32",
3273
+ "default": 1
3274
+ }
3275
+ },
3276
+ {
3277
+ name: "per_page",
3278
+ "in": "query",
3279
+ description: "Number of results per page (default 40)",
3280
+ schema: {
3281
+ type: "integer",
3282
+ format: "int32",
3283
+ "default": 40
3284
+ }
3242
3285
  }
3243
3286
  ],
3244
3287
  responses: {
3245
3288
  "200": {
3246
- description: "Folder retrieved successfully",
3289
+ description: "Paginated list of matching folders",
3247
3290
  content: {
3248
3291
  "application/json": {
3249
3292
  }
3250
3293
  }
3251
3294
  },
3252
- "401": {
3253
- description: "Authentication required"
3295
+ "400": {
3296
+ description: "'siteId' is required; 'name' must be at least 3 characters if provided"
3254
3297
  },
3255
- "403": {
3256
- description: "Insufficient permissions"
3298
+ "401": {
3299
+ description: "User is not authenticated"
3257
3300
  },
3258
- "404": {
3259
- description: "Folder not found"
3301
+ "500": {
3302
+ description: "Internal server error"
3260
3303
  }
3261
3304
  }
3262
3305
  }
@@ -5216,8 +5259,9 @@ var paths = {
5216
5259
  }
5217
5260
  ],
5218
5261
  requestBody: {
5262
+ description: "Updated site properties. 'siteName' (the hostname) is required.",
5219
5263
  content: {
5220
- "*/*": {
5264
+ "application/json": {
5221
5265
  schema: {
5222
5266
  type: "object",
5223
5267
  properties: {
@@ -5296,7 +5340,8 @@ var paths = {
5296
5340
  }
5297
5341
  }
5298
5342
  }
5299
- }
5343
+ },
5344
+ required: true
5300
5345
  },
5301
5346
  responses: {
5302
5347
  "200": {
@@ -5328,8 +5373,9 @@ var paths = {
5328
5373
  description: "Creates a new site with the provided properties including hostname, aliases, tag storage, SEO settings, and optional site variables.",
5329
5374
  operationId: "createSite",
5330
5375
  requestBody: {
5376
+ description: "Site properties to create. 'siteName' (the hostname) is required.",
5331
5377
  content: {
5332
- "*/*": {
5378
+ "application/json": {
5333
5379
  schema: {
5334
5380
  type: "object",
5335
5381
  properties: {
@@ -5408,7 +5454,8 @@ var paths = {
5408
5454
  }
5409
5455
  }
5410
5456
  }
5411
- }
5457
+ },
5458
+ required: true
5412
5459
  },
5413
5460
  responses: {
5414
5461
  "200": {
@@ -7637,7 +7684,7 @@ var paths = {
7637
7684
  requestBody: {
7638
7685
  description: "Template data to update. Must include the template identifier.",
7639
7686
  content: {
7640
- "*/*": {
7687
+ "application/json": {
7641
7688
  schema: {
7642
7689
  required: [
7643
7690
  "title"
@@ -7875,7 +7922,7 @@ var paths = {
7875
7922
  requestBody: {
7876
7923
  description: "Template data to create",
7877
7924
  content: {
7878
- "*/*": {
7925
+ "application/json": {
7879
7926
  schema: {
7880
7927
  required: [
7881
7928
  "title"
@@ -11340,7 +11387,7 @@ var paths = {
11340
11387
  "Workflow"
11341
11388
  ],
11342
11389
  summary: "Fire action by name (multipart form)",
11343
- 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 an HTML or Markdown string — do not hand-author the underlying ProseMirror/JSON document. The value is stored as-is and converted to the Block Editor structure when the contentlet is opened in the editor. Example: `\"body\": \"<h2>Intro</h2><p>Hello <strong>world</strong>.</p>\"`.",
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**.\"`.",
11344
11391
  operationId: "putFireActionByNameMultipart",
11345
11392
  parameters: [
11346
11393
  {
@@ -11438,7 +11485,7 @@ var paths = {
11438
11485
  "Workflow"
11439
11486
  ],
11440
11487
  summary: "Fire workflow action by name",
11441
- 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 an HTML or Markdown string — do not hand-author the underlying ProseMirror/JSON document. The value is stored as-is and converted to the Block Editor structure when the contentlet is opened in the editor. Example: `\"body\": \"<h2>Intro</h2><p>Hello <strong>world</strong>.</p>\"`.",
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**.\"`.",
11442
11489
  operationId: "putFireActionByName",
11443
11490
  parameters: [
11444
11491
  {
@@ -11588,7 +11635,7 @@ var paths = {
11588
11635
  "Workflow"
11589
11636
  ],
11590
11637
  summary: "Fire default action (multipart form)",
11591
- 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 an HTML or Markdown string — do not hand-author the underlying ProseMirror/JSON document. The value is stored as-is and converted to the Block Editor structure when the contentlet is opened in the editor. Example: `\"body\": \"<h2>Intro</h2><p>Hello <strong>world</strong>.</p>\"`.",
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**.\"`.",
11592
11639
  operationId: "putFireDefaultActionMultipart",
11593
11640
  parameters: [
11594
11641
  {
@@ -11705,7 +11752,7 @@ var paths = {
11705
11752
  "Workflow"
11706
11753
  ],
11707
11754
  summary: "Fire system action by name",
11708
- 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 an HTML or Markdown string — do not hand-author the underlying ProseMirror/JSON document. The value is stored as-is and converted to the Block Editor structure when the contentlet is opened in the editor. Example: `\"body\": \"<h2>Intro</h2><p>Hello <strong>world</strong>.</p>\"`.",
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**.\"`.",
11709
11756
  operationId: "putFireDefaultSystemAction",
11710
11757
  parameters: [
11711
11758
  {
@@ -12173,7 +12220,7 @@ var paths = {
12173
12220
  "Workflow"
12174
12221
  ],
12175
12222
  summary: "Fire action by ID (multipart form)",
12176
- 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 an HTML or Markdown string — do not hand-author the underlying ProseMirror/JSON document. The value is stored as-is and converted to the Block Editor structure when the contentlet is opened in the editor. Example: `\"body\": \"<h2>Intro</h2><p>Hello <strong>world</strong>.</p>\"`.",
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**.\"`.",
12177
12224
  operationId: "putFireActionByIdMultipart",
12178
12225
  parameters: [
12179
12226
  {
@@ -12280,7 +12327,7 @@ var paths = {
12280
12327
  "Workflow"
12281
12328
  ],
12282
12329
  summary: "Fire action by ID",
12283
- 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 an HTML or Markdown string — do not hand-author the underlying ProseMirror/JSON document. The value is stored as-is and converted to the Block Editor structure when the contentlet is opened in the editor. Example: `\"body\": \"<h2>Intro</h2><p>Hello <strong>world</strong>.</p>\"`.",
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**.\"`.",
12284
12331
  operationId: "putFireActionById",
12285
12332
  parameters: [
12286
12333
  {
@@ -13595,6 +13642,12 @@ var paths = {
13595
13642
  hasOnlyBatchActionlet: {
13596
13643
  type: "boolean"
13597
13644
  },
13645
+ hasDeleteActionlet: {
13646
+ type: "boolean"
13647
+ },
13648
+ hasResetActionlet: {
13649
+ type: "boolean"
13650
+ },
13598
13651
  hasPublishActionlet: {
13599
13652
  type: "boolean"
13600
13653
  },
@@ -13624,12 +13677,6 @@ var paths = {
13624
13677
  },
13625
13678
  hasSaveActionlet: {
13626
13679
  type: "boolean"
13627
- },
13628
- hasDeleteActionlet: {
13629
- type: "boolean"
13630
- },
13631
- hasResetActionlet: {
13632
- type: "boolean"
13633
13680
  }
13634
13681
  }
13635
13682
  }
@@ -13869,6 +13916,12 @@ var paths = {
13869
13916
  hasOnlyBatchActionlet: {
13870
13917
  type: "boolean"
13871
13918
  },
13919
+ hasDeleteActionlet: {
13920
+ type: "boolean"
13921
+ },
13922
+ hasResetActionlet: {
13923
+ type: "boolean"
13924
+ },
13872
13925
  hasPublishActionlet: {
13873
13926
  type: "boolean"
13874
13927
  },
@@ -13898,12 +13951,6 @@ var paths = {
13898
13951
  },
13899
13952
  hasSaveActionlet: {
13900
13953
  type: "boolean"
13901
- },
13902
- hasDeleteActionlet: {
13903
- type: "boolean"
13904
- },
13905
- hasResetActionlet: {
13906
- type: "boolean"
13907
13954
  }
13908
13955
  }
13909
13956
  },
@@ -13940,10 +13987,10 @@ var paths = {
13940
13987
  type: {
13941
13988
  type: "string"
13942
13989
  },
13943
- bitPermission: {
13990
+ individualPermission: {
13944
13991
  type: "boolean"
13945
13992
  },
13946
- individualPermission: {
13993
+ bitPermission: {
13947
13994
  type: "boolean"
13948
13995
  },
13949
13996
  roleId: {