@nocobase/plugin-flow-engine 2.1.0-alpha.15 → 2.1.0-alpha.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/externalVersion.js +10 -10
- package/dist/node_modules/ses/package.json +1 -1
- package/dist/node_modules/zod/package.json +1 -1
- package/dist/server/flow-surfaces/{compiler.d.ts → apply/compiler.d.ts} +1 -10
- package/dist/server/flow-surfaces/{compiler.js → apply/compiler.js} +41 -280
- package/dist/server/flow-surfaces/apply/layout.d.ts +34 -0
- package/dist/server/flow-surfaces/apply/layout.js +175 -0
- package/dist/server/flow-surfaces/apply/matching.d.ts +16 -0
- package/dist/server/flow-surfaces/apply/matching.js +181 -0
- package/dist/server/flow-surfaces/association-title-field.d.ts +20 -0
- package/dist/server/flow-surfaces/association-title-field.js +158 -0
- package/dist/server/flow-surfaces/blueprint/compile-blocks.d.ts +14 -0
- package/dist/server/flow-surfaces/blueprint/compile-blocks.js +706 -0
- package/dist/server/flow-surfaces/blueprint/compile-plan.d.ts +13 -0
- package/dist/server/flow-surfaces/blueprint/compile-plan.js +308 -0
- package/dist/server/flow-surfaces/blueprint/compile-reaction.d.ts +11 -0
- package/dist/server/flow-surfaces/blueprint/compile-reaction.js +72 -0
- package/dist/server/flow-surfaces/blueprint/index.d.ts +12 -0
- package/dist/server/flow-surfaces/blueprint/index.js +44 -0
- package/dist/server/flow-surfaces/blueprint/normalize-document.d.ts +10 -0
- package/dist/server/flow-surfaces/blueprint/normalize-document.js +296 -0
- package/dist/server/flow-surfaces/blueprint/private-utils.d.ts +26 -0
- package/dist/server/flow-surfaces/blueprint/private-utils.js +182 -0
- package/dist/server/flow-surfaces/blueprint/public-types.d.ts +153 -0
- package/dist/server/flow-surfaces/blueprint/public-types.js +24 -0
- package/dist/server/flow-surfaces/catalog-smart.d.ts +18 -0
- package/dist/server/flow-surfaces/catalog-smart.js +239 -0
- package/dist/server/flow-surfaces/catalog-smart.projector.d.ts +15 -0
- package/dist/server/flow-surfaces/catalog-smart.projector.js +157 -0
- package/dist/server/flow-surfaces/catalog-smart.types.d.ts +99 -0
- package/dist/server/flow-surfaces/catalog-smart.types.js +24 -0
- package/dist/server/flow-surfaces/catalog.d.ts +3 -0
- package/dist/server/flow-surfaces/catalog.js +163 -34
- package/dist/server/flow-surfaces/compose-compiler.d.ts +104 -0
- package/dist/server/flow-surfaces/compose-compiler.js +162 -0
- package/dist/server/flow-surfaces/compose-runtime.d.ts +89 -0
- package/dist/server/flow-surfaces/compose-runtime.js +338 -0
- package/dist/server/flow-surfaces/configure-options.js +12 -3
- package/dist/server/flow-surfaces/constants.d.ts +3 -2
- package/dist/server/flow-surfaces/constants.js +36 -3
- package/dist/server/flow-surfaces/default-action-popup.d.ts +52 -0
- package/dist/server/flow-surfaces/default-action-popup.js +258 -0
- package/dist/server/flow-surfaces/executor.d.ts +10 -0
- package/dist/server/flow-surfaces/executor.js +59 -24
- package/dist/server/flow-surfaces/field-binding-registry.d.ts +23 -0
- package/dist/server/flow-surfaces/field-binding-registry.js +391 -0
- package/dist/server/flow-surfaces/field-semantics.d.ts +1 -1
- package/dist/server/flow-surfaces/index.js +75 -0
- package/dist/server/flow-surfaces/node-use-sets.d.ts +15 -0
- package/dist/server/flow-surfaces/node-use-sets.js +114 -0
- package/dist/server/flow-surfaces/payload-shape.d.ts +9 -0
- package/dist/server/flow-surfaces/payload-shape.js +64 -0
- package/dist/server/flow-surfaces/placement.js +2 -6
- package/dist/server/flow-surfaces/planning/action-specs.d.ts +179 -0
- package/dist/server/flow-surfaces/planning/action-specs.js +190 -0
- package/dist/server/flow-surfaces/planning/compiler.d.ts +37 -0
- package/dist/server/flow-surfaces/planning/compiler.js +376 -0
- package/dist/server/flow-surfaces/planning/context.d.ts +30 -0
- package/dist/server/flow-surfaces/planning/context.js +139 -0
- package/dist/server/flow-surfaces/planning/created-keys.d.ts +34 -0
- package/dist/server/flow-surfaces/planning/created-keys.js +375 -0
- package/dist/server/flow-surfaces/planning/key-kind.d.ts +11 -0
- package/dist/server/flow-surfaces/planning/key-kind.js +86 -0
- package/dist/server/flow-surfaces/planning/key-persistence.d.ts +34 -0
- package/dist/server/flow-surfaces/planning/key-persistence.js +148 -0
- package/dist/server/flow-surfaces/planning/key-registry.d.ts +40 -0
- package/dist/server/flow-surfaces/planning/key-registry.js +206 -0
- package/dist/server/flow-surfaces/planning/runtime.d.ts +37 -0
- package/dist/server/flow-surfaces/planning/runtime.js +259 -0
- package/dist/server/flow-surfaces/planning/step-link.d.ts +14 -0
- package/dist/server/flow-surfaces/planning/step-link.js +104 -0
- package/dist/server/flow-surfaces/planning/types.d.ts +55 -0
- package/dist/server/flow-surfaces/planning/types.js +24 -0
- package/dist/server/flow-surfaces/reaction/errors.d.ts +20 -0
- package/dist/server/flow-surfaces/reaction/errors.js +69 -0
- package/dist/server/flow-surfaces/reaction/field-value.d.ts +34 -0
- package/dist/server/flow-surfaces/reaction/field-value.js +181 -0
- package/dist/server/flow-surfaces/reaction/fingerprint.d.ts +16 -0
- package/dist/server/flow-surfaces/reaction/fingerprint.js +71 -0
- package/dist/server/flow-surfaces/reaction/linkage.d.ts +136 -0
- package/dist/server/flow-surfaces/reaction/linkage.js +882 -0
- package/dist/server/flow-surfaces/reaction/meta.d.ts +11 -0
- package/dist/server/flow-surfaces/reaction/meta.js +451 -0
- package/dist/server/flow-surfaces/reaction/registry.d.ts +136 -0
- package/dist/server/flow-surfaces/reaction/registry.js +186 -0
- package/dist/server/flow-surfaces/reaction/resolver.d.ts +22 -0
- package/dist/server/flow-surfaces/reaction/resolver.js +202 -0
- package/dist/server/flow-surfaces/reaction/types.d.ts +241 -0
- package/dist/server/flow-surfaces/reaction/types.js +24 -0
- package/dist/server/flow-surfaces/reaction/utils.d.ts +17 -0
- package/dist/server/flow-surfaces/reaction/utils.js +67 -0
- package/dist/server/flow-surfaces/reaction/value-expr.d.ts +15 -0
- package/dist/server/flow-surfaces/reaction/value-expr.js +209 -0
- package/dist/server/flow-surfaces/reference-guards.d.ts +19 -0
- package/dist/server/flow-surfaces/reference-guards.js +103 -0
- package/dist/server/flow-surfaces/service-helpers.d.ts +42 -0
- package/dist/server/flow-surfaces/service-helpers.js +377 -0
- package/dist/server/flow-surfaces/service-utils.d.ts +105 -0
- package/dist/server/flow-surfaces/service-utils.js +760 -0
- package/dist/server/flow-surfaces/service.d.ts +189 -103
- package/dist/server/flow-surfaces/service.js +3975 -1770
- package/dist/server/flow-surfaces/template-compatibility.d.ts +42 -0
- package/dist/server/flow-surfaces/template-compatibility.js +189 -0
- package/dist/server/flow-surfaces/template-service-utils.d.ts +62 -0
- package/dist/server/flow-surfaces/template-service-utils.js +281 -0
- package/dist/server/flow-surfaces/types.d.ts +129 -37
- package/dist/swagger/flow-surfaces.d.ts +3773 -1581
- package/dist/swagger/flow-surfaces.examples.d.ts +1215 -0
- package/dist/swagger/flow-surfaces.examples.js +1363 -0
- package/dist/swagger/flow-surfaces.js +2209 -1684
- package/dist/swagger/flow-surfaces.template-action-docs.d.ts +62 -0
- package/dist/swagger/flow-surfaces.template-action-docs.js +121 -0
- package/dist/swagger/flow-surfaces.template-schemas.d.ts +239 -0
- package/dist/swagger/flow-surfaces.template-schemas.js +255 -0
- package/dist/swagger/index.d.ts +3773 -1581
- package/package.json +2 -2
|
@@ -30,6 +30,9 @@ __export(flow_surfaces_exports, {
|
|
|
30
30
|
});
|
|
31
31
|
module.exports = __toCommonJS(flow_surfaces_exports);
|
|
32
32
|
var import_constants = require("../server/flow-surfaces/constants");
|
|
33
|
+
var import_flow_surfaces = require("./flow-surfaces.examples");
|
|
34
|
+
var import_flow_surfaces2 = require("./flow-surfaces.template-action-docs");
|
|
35
|
+
var import_flow_surfaces3 = require("./flow-surfaces.template-schemas");
|
|
33
36
|
const FLOW_SURFACES_TAG = "flowSurfaces";
|
|
34
37
|
const ANY_OBJECT_SCHEMA = {
|
|
35
38
|
type: "object",
|
|
@@ -107,6 +110,24 @@ const RECORD_ACTION_TYPE_ENUM = [
|
|
|
107
110
|
"delete",
|
|
108
111
|
"updateRecord"
|
|
109
112
|
];
|
|
113
|
+
const APPLY_BLUEPRINT_BLOCK_TYPE_ENUM = [
|
|
114
|
+
"table",
|
|
115
|
+
"createForm",
|
|
116
|
+
"editForm",
|
|
117
|
+
"details",
|
|
118
|
+
"filterForm",
|
|
119
|
+
"list",
|
|
120
|
+
"gridCard",
|
|
121
|
+
"markdown",
|
|
122
|
+
"iframe",
|
|
123
|
+
"chart",
|
|
124
|
+
"actionPanel",
|
|
125
|
+
"jsBlock"
|
|
126
|
+
];
|
|
127
|
+
const REACTION_FINGERPRINT_DESCRIPTION = "Optional optimistic-concurrency fingerprint from `getReactionMeta.capabilities[].fingerprint`. When provided, the write fails with HTTP 409 if the current slot fingerprint no longer matches.";
|
|
128
|
+
const REACTION_RULES_REPLACE_DESCRIPTION = "Full replacement payload for the resolved reaction slot. Pass `[]` to clear all rules from that slot.";
|
|
129
|
+
const REACTION_LOCALIZED_FORM_TARGET_DESCRIPTION = "Reaction write target. Use the live block/action uid for localized edits. For form field-value and form field-linkage writes, keep passing the outer form block uid; the backend resolves the inner form-grid slot automatically.";
|
|
130
|
+
const REACTION_OUTER_FORM_TARGET_NOTE = "Pass the outer form block uid, not the inner form-grid uid.";
|
|
110
131
|
function ref(name) {
|
|
111
132
|
return {
|
|
112
133
|
$ref: `#/components/schemas/${name}`
|
|
@@ -175,1075 +196,244 @@ function valuesCompatibilityNote(description) {
|
|
|
175
196
|
"The request schema in this Swagger document describes the final business payload, not the outer SDK `values` wrapper."
|
|
176
197
|
].join("\n");
|
|
177
198
|
}
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
uid: "details-block-uid"
|
|
187
|
-
},
|
|
188
|
-
path: "record",
|
|
189
|
-
maxDepth: 3
|
|
190
|
-
},
|
|
191
|
-
compose: {
|
|
192
|
-
target: {
|
|
193
|
-
uid: "page-grid-uid"
|
|
194
|
-
},
|
|
195
|
-
mode: "append",
|
|
196
|
-
blocks: [
|
|
197
|
-
{
|
|
198
|
-
key: "filter",
|
|
199
|
-
type: "filterForm",
|
|
200
|
-
resource: {
|
|
201
|
-
dataSourceKey: "main",
|
|
202
|
-
collectionName: "users"
|
|
203
|
-
},
|
|
204
|
-
fields: [
|
|
205
|
-
{
|
|
206
|
-
fieldPath: "username",
|
|
207
|
-
target: "table"
|
|
208
|
-
},
|
|
209
|
-
{
|
|
210
|
-
fieldPath: "nickname",
|
|
211
|
-
target: "table"
|
|
212
|
-
}
|
|
213
|
-
],
|
|
214
|
-
actions: ["submit", "reset", "collapse"]
|
|
199
|
+
function buildReactionWriteRequestSchema(ruleSchemaName) {
|
|
200
|
+
return {
|
|
201
|
+
type: "object",
|
|
202
|
+
required: ["target", "rules"],
|
|
203
|
+
properties: {
|
|
204
|
+
target: {
|
|
205
|
+
allOf: [ref("FlowSurfaceWriteTarget")],
|
|
206
|
+
description: REACTION_LOCALIZED_FORM_TARGET_DESCRIPTION
|
|
215
207
|
},
|
|
216
|
-
{
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
dataSourceKey: "main",
|
|
221
|
-
collectionName: "users"
|
|
222
|
-
},
|
|
223
|
-
fields: ["username", "nickname", { fieldPath: "roles.title" }],
|
|
224
|
-
actions: ["filter", "addNew", "refresh", "bulkDelete", "link"],
|
|
225
|
-
recordActions: [
|
|
226
|
-
"view",
|
|
227
|
-
"edit",
|
|
228
|
-
{
|
|
229
|
-
type: "popup",
|
|
230
|
-
popup: {
|
|
231
|
-
mode: "replace",
|
|
232
|
-
blocks: [
|
|
233
|
-
{
|
|
234
|
-
key: "details",
|
|
235
|
-
type: "details",
|
|
236
|
-
resource: {
|
|
237
|
-
dataSourceKey: "main",
|
|
238
|
-
collectionName: "users"
|
|
239
|
-
},
|
|
240
|
-
fields: ["username", "nickname"]
|
|
241
|
-
}
|
|
242
|
-
]
|
|
243
|
-
}
|
|
244
|
-
},
|
|
245
|
-
"updateRecord",
|
|
246
|
-
"delete"
|
|
247
|
-
]
|
|
248
|
-
}
|
|
249
|
-
],
|
|
250
|
-
layout: {
|
|
251
|
-
rows: [
|
|
252
|
-
[
|
|
253
|
-
{
|
|
254
|
-
key: "filter",
|
|
255
|
-
span: 3
|
|
256
|
-
},
|
|
257
|
-
{
|
|
258
|
-
key: "table",
|
|
259
|
-
span: 7
|
|
260
|
-
}
|
|
261
|
-
]
|
|
262
|
-
]
|
|
263
|
-
}
|
|
264
|
-
},
|
|
265
|
-
composeStatic: {
|
|
266
|
-
target: {
|
|
267
|
-
uid: "page-grid-uid"
|
|
268
|
-
},
|
|
269
|
-
blocks: [
|
|
270
|
-
{
|
|
271
|
-
key: "markdown",
|
|
272
|
-
type: "markdown",
|
|
273
|
-
settings: {
|
|
274
|
-
content: "# Team handbook"
|
|
275
|
-
}
|
|
208
|
+
rules: {
|
|
209
|
+
type: "array",
|
|
210
|
+
items: ref(ruleSchemaName),
|
|
211
|
+
description: REACTION_RULES_REPLACE_DESCRIPTION
|
|
276
212
|
},
|
|
277
|
-
{
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
settings: {
|
|
281
|
-
mode: "url",
|
|
282
|
-
url: "https://example.com/embed",
|
|
283
|
-
height: 360
|
|
284
|
-
}
|
|
213
|
+
expectedFingerprint: {
|
|
214
|
+
type: "string",
|
|
215
|
+
description: REACTION_FINGERPRINT_DESCRIPTION
|
|
285
216
|
},
|
|
286
|
-
{
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
settings: {
|
|
290
|
-
layout: "list",
|
|
291
|
-
ellipsis: false
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
],
|
|
295
|
-
layout: {
|
|
296
|
-
rows: [["markdown", "iframe"], ["panel"]]
|
|
297
|
-
}
|
|
298
|
-
},
|
|
299
|
-
composeListRich: {
|
|
300
|
-
target: {
|
|
301
|
-
uid: "page-grid-uid"
|
|
302
|
-
},
|
|
303
|
-
blocks: [
|
|
304
|
-
{
|
|
305
|
-
key: "employeesList",
|
|
306
|
-
type: "list",
|
|
307
|
-
resource: {
|
|
308
|
-
dataSourceKey: "main",
|
|
309
|
-
collectionName: "employees"
|
|
310
|
-
},
|
|
311
|
-
fields: [
|
|
312
|
-
"nickname",
|
|
313
|
-
{
|
|
314
|
-
fieldPath: "department.name"
|
|
315
|
-
}
|
|
316
|
-
],
|
|
317
|
-
actions: ["addNew", "refresh"],
|
|
318
|
-
recordActions: [
|
|
319
|
-
"view",
|
|
320
|
-
"edit",
|
|
321
|
-
{
|
|
322
|
-
type: "popup",
|
|
323
|
-
popup: {
|
|
324
|
-
mode: "replace",
|
|
325
|
-
blocks: [
|
|
326
|
-
{
|
|
327
|
-
key: "details",
|
|
328
|
-
type: "details",
|
|
329
|
-
resource: {
|
|
330
|
-
dataSourceKey: "main",
|
|
331
|
-
collectionName: "employees"
|
|
332
|
-
},
|
|
333
|
-
fields: ["nickname"]
|
|
334
|
-
}
|
|
335
|
-
]
|
|
336
|
-
}
|
|
337
|
-
},
|
|
338
|
-
"delete"
|
|
339
|
-
],
|
|
340
|
-
settings: {
|
|
341
|
-
pageSize: 20,
|
|
342
|
-
layout: "vertical"
|
|
343
|
-
}
|
|
344
|
-
}
|
|
345
|
-
]
|
|
346
|
-
},
|
|
347
|
-
composeGridCardRich: {
|
|
348
|
-
target: {
|
|
349
|
-
uid: "page-grid-uid"
|
|
350
|
-
},
|
|
351
|
-
blocks: [
|
|
352
|
-
{
|
|
353
|
-
key: "employeeCards",
|
|
354
|
-
type: "gridCard",
|
|
355
|
-
resource: {
|
|
356
|
-
dataSourceKey: "main",
|
|
357
|
-
collectionName: "employees"
|
|
358
|
-
},
|
|
359
|
-
fields: [
|
|
360
|
-
"nickname",
|
|
361
|
-
{
|
|
362
|
-
fieldPath: "department.name"
|
|
363
|
-
}
|
|
364
|
-
],
|
|
365
|
-
actions: ["addNew", "refresh"],
|
|
366
|
-
recordActions: ["view", "edit", "updateRecord", "delete"],
|
|
367
|
-
settings: {
|
|
368
|
-
columns: 3,
|
|
369
|
-
rowCount: 2,
|
|
370
|
-
layout: "vertical"
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
|
-
]
|
|
374
|
-
},
|
|
375
|
-
composeJsBlock: {
|
|
376
|
-
target: {
|
|
377
|
-
uid: "page-grid-uid"
|
|
378
|
-
},
|
|
379
|
-
blocks: [
|
|
380
|
-
{
|
|
381
|
-
key: "customHero",
|
|
382
|
-
type: "jsBlock",
|
|
383
|
-
settings: {
|
|
384
|
-
title: "Custom hero",
|
|
385
|
-
description: "Rendered by JS block runtime",
|
|
386
|
-
className: "hero-shell",
|
|
387
|
-
version: "1.0.0",
|
|
388
|
-
code: "ctx.render('<div>Hello from JS block</div>');"
|
|
389
|
-
}
|
|
390
|
-
}
|
|
391
|
-
]
|
|
392
|
-
},
|
|
393
|
-
configure: {
|
|
394
|
-
target: {
|
|
395
|
-
uid: "details-field-uid"
|
|
396
|
-
},
|
|
397
|
-
changes: {
|
|
398
|
-
clickToOpen: true,
|
|
399
|
-
openView: {
|
|
400
|
-
dataSourceKey: "main",
|
|
401
|
-
collectionName: "departments",
|
|
402
|
-
associationName: "users.department",
|
|
403
|
-
mode: "drawer"
|
|
404
|
-
}
|
|
405
|
-
}
|
|
406
|
-
},
|
|
407
|
-
configureAssociationPopup: {
|
|
408
|
-
target: {
|
|
409
|
-
uid: "roles-field-wrapper-uid"
|
|
410
|
-
},
|
|
411
|
-
changes: {
|
|
412
|
-
clickToOpen: true,
|
|
413
|
-
openView: {
|
|
414
|
-
dataSourceKey: "main",
|
|
415
|
-
collectionName: "roles",
|
|
416
|
-
associationName: "users.roles",
|
|
417
|
-
mode: "drawer"
|
|
217
|
+
verify: {
|
|
218
|
+
type: "boolean",
|
|
219
|
+
description: "Reserved compatibility flag. Current v1 writes are full replace and return normalized output directly."
|
|
418
220
|
}
|
|
419
|
-
}
|
|
420
|
-
},
|
|
421
|
-
configureBlock: {
|
|
422
|
-
target: {
|
|
423
|
-
uid: "list-block-uid"
|
|
424
221
|
},
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
222
|
+
additionalProperties: false
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
function buildReactionWriteResultSchema(ruleSchemaName) {
|
|
226
|
+
return {
|
|
227
|
+
type: "object",
|
|
228
|
+
required: ["target", "resolvedScene", "resolvedSlot", "fingerprint", "normalizedRules", "canonicalRules"],
|
|
229
|
+
properties: {
|
|
230
|
+
target: {
|
|
231
|
+
allOf: [ref("FlowSurfaceReactionTargetSummary")],
|
|
232
|
+
description: "Resolved public reaction target after target normalization."
|
|
436
233
|
},
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
234
|
+
resolvedScene: {
|
|
235
|
+
allOf: [ref("FlowSurfaceReactionScene")],
|
|
236
|
+
description: "Concrete reaction scene that the backend resolved for this write, such as `form`, `details`, `subForm`, `block`, or `action`."
|
|
237
|
+
},
|
|
238
|
+
resolvedSlot: {
|
|
239
|
+
allOf: [ref("FlowSurfaceReactionSlot")],
|
|
240
|
+
description: "Concrete persisted slot selected by the backend for this write."
|
|
241
|
+
},
|
|
242
|
+
fingerprint: {
|
|
243
|
+
type: "string",
|
|
244
|
+
description: "Fresh slot fingerprint after the write completes."
|
|
245
|
+
},
|
|
246
|
+
normalizedRules: {
|
|
247
|
+
type: "array",
|
|
248
|
+
items: ref(ruleSchemaName),
|
|
249
|
+
description: "Normalized public rules persisted by the write."
|
|
250
|
+
},
|
|
251
|
+
canonicalRules: {
|
|
252
|
+
type: "array",
|
|
253
|
+
items: ANY_OBJECT_SCHEMA,
|
|
254
|
+
description: "Canonical internal rules compiled from the normalized public rules."
|
|
255
|
+
},
|
|
256
|
+
updateAssociationValues: {
|
|
257
|
+
type: "array",
|
|
258
|
+
items: {
|
|
259
|
+
type: "string"
|
|
441
260
|
}
|
|
442
|
-
],
|
|
443
|
-
layout: "vertical"
|
|
444
|
-
}
|
|
445
|
-
},
|
|
446
|
-
createMenu: {
|
|
447
|
-
title: "Employees",
|
|
448
|
-
type: "item",
|
|
449
|
-
parentMenuRouteId: 1001
|
|
450
|
-
},
|
|
451
|
-
updateMenu: {
|
|
452
|
-
menuRouteId: 1002,
|
|
453
|
-
title: "Employees Center",
|
|
454
|
-
parentMenuRouteId: null
|
|
455
|
-
},
|
|
456
|
-
configureAction: {
|
|
457
|
-
target: {
|
|
458
|
-
uid: "update-record-action-uid"
|
|
459
|
-
},
|
|
460
|
-
changes: {
|
|
461
|
-
title: "Quick update",
|
|
462
|
-
type: "primary",
|
|
463
|
-
color: "gold",
|
|
464
|
-
htmlType: "button",
|
|
465
|
-
position: "end",
|
|
466
|
-
confirm: {
|
|
467
|
-
enable: true,
|
|
468
|
-
title: "Confirm update",
|
|
469
|
-
content: "Apply assigned values?"
|
|
470
|
-
},
|
|
471
|
-
assignValues: {
|
|
472
|
-
status: "active"
|
|
473
261
|
}
|
|
474
|
-
}
|
|
475
|
-
},
|
|
476
|
-
configureJsBlock: {
|
|
477
|
-
target: {
|
|
478
|
-
uid: "js-block-uid"
|
|
479
|
-
},
|
|
480
|
-
changes: {
|
|
481
|
-
title: "Users hero",
|
|
482
|
-
description: "Rendered from FlowSurfaces configure",
|
|
483
|
-
className: "users-hero",
|
|
484
|
-
version: "1.0.1",
|
|
485
|
-
code: "ctx.render('<div>Users hero</div>');"
|
|
486
|
-
}
|
|
487
|
-
},
|
|
488
|
-
configureJsAction: {
|
|
489
|
-
target: {
|
|
490
|
-
uid: "js-action-uid"
|
|
491
262
|
},
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
263
|
+
additionalProperties: false
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
function buildReactionCapabilitySchema(kind, ruleSchemaName, extraProperties = {}) {
|
|
267
|
+
return {
|
|
268
|
+
type: "object",
|
|
269
|
+
required: ["kind", "resolvedScene", "resolvedSlot", "fingerprint", "normalizedRules", "canonicalRules", "context"],
|
|
270
|
+
properties: {
|
|
271
|
+
kind: {
|
|
272
|
+
type: "string",
|
|
273
|
+
enum: [kind]
|
|
274
|
+
},
|
|
275
|
+
resolvedScene: ref("FlowSurfaceReactionScene"),
|
|
276
|
+
resolvedSlot: ref("FlowSurfaceReactionSlot"),
|
|
277
|
+
fingerprint: {
|
|
278
|
+
type: "string"
|
|
279
|
+
},
|
|
280
|
+
normalizedRules: {
|
|
281
|
+
type: "array",
|
|
282
|
+
items: ref(ruleSchemaName)
|
|
283
|
+
},
|
|
284
|
+
canonicalRules: {
|
|
285
|
+
type: "array",
|
|
286
|
+
items: ANY_OBJECT_SCHEMA
|
|
287
|
+
},
|
|
288
|
+
context: ref("FlowSurfaceContextResponse"),
|
|
289
|
+
...extraProperties
|
|
513
290
|
},
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
291
|
+
additionalProperties: false
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
const FLOW_SURFACES_READ_ACL_NOTE = "Read actions (`get` / `describeSurface` / `catalog` / `context` / `getReactionMeta` / `listTemplates` / `getTemplate`) are open to `loggedIn` by default. Write actions still require the `ui.flowSurfaces` snippet.";
|
|
295
|
+
const templateActionDocs = (0, import_flow_surfaces2.createFlowSurfaceTemplateActionDocs)({
|
|
296
|
+
tag: FLOW_SURFACES_TAG,
|
|
297
|
+
readAclNote: FLOW_SURFACES_READ_ACL_NOTE,
|
|
298
|
+
requestBody,
|
|
299
|
+
responses,
|
|
300
|
+
valuesCompatibilityNote
|
|
301
|
+
});
|
|
302
|
+
const templateSchemas = (0, import_flow_surfaces3.createFlowSurfaceTemplateSchemas)({
|
|
303
|
+
ref,
|
|
304
|
+
stringOrIntegerSchema: STRING_OR_INTEGER_SCHEMA,
|
|
305
|
+
actionTypeEnum: ACTION_TYPE_ENUM
|
|
306
|
+
});
|
|
307
|
+
const actionDocs = {
|
|
308
|
+
catalog: {
|
|
309
|
+
tags: [FLOW_SURFACES_TAG],
|
|
310
|
+
summary: "List capabilities available in the current surface context",
|
|
311
|
+
description: valuesCompatibilityNote(
|
|
312
|
+
`Returns the block / field / action capabilities that can be created under the current target context, together with the recommended \`configureOptions\`, the underlying settings contract, event capabilities, and layout capabilities for the current node. The returned \`blocks[] / actions[] / recordActions[]\` only represent the truly available public capabilities under plugins enabled in the current instance. When \`sections\` is omitted, the server smart-selects the sections for the current target scenario, and clients should treat \`selectedSections\` in the response as the final authoritative result. For advanced field-value or linkage authoring, prefer \`getReactionMeta\` + \`set*Rules\` instead of guessing raw \`configureOptions\` keys. ${FLOW_SURFACES_READ_ACL_NOTE}`
|
|
313
|
+
),
|
|
314
|
+
requestBody: requestBody("FlowSurfaceCatalogRequest", import_flow_surfaces.flowSurfaceExamples.catalog),
|
|
315
|
+
responses: responses("FlowSurfaceCatalogResponse")
|
|
519
316
|
},
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
version: "1.0.1",
|
|
529
|
-
code: "ctx.render(String(ctx.record?.username || ''));"
|
|
530
|
-
}
|
|
317
|
+
context: {
|
|
318
|
+
tags: [FLOW_SURFACES_TAG],
|
|
319
|
+
summary: "Read ctx variable tree available under the current target",
|
|
320
|
+
description: valuesCompatibilityNote(
|
|
321
|
+
`Returns the low-level \`ctx\` variable tree available under the current target. \`path\` only accepts bare paths such as \`record\`, \`popup.record\`, and \`item.parentItem.value\`. Do not pass \`ctx.record\` or \`{{ ctx.record }}\`. For reaction authoring, use \`getReactionMeta\` as the main discovery endpoint first and use \`context\` only as a lower-level supplement when you need to inspect raw variable paths. ${FLOW_SURFACES_READ_ACL_NOTE}`
|
|
322
|
+
),
|
|
323
|
+
requestBody: requestBody("FlowSurfaceContextRequest", import_flow_surfaces.flowSurfaceExamples.context),
|
|
324
|
+
responses: responses("FlowSurfaceContextResponse")
|
|
531
325
|
},
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
version: "1.0.1",
|
|
541
|
-
code: "ctx.render(String(ctx.record?.nickname || ''));"
|
|
542
|
-
}
|
|
326
|
+
getReactionMeta: {
|
|
327
|
+
tags: [FLOW_SURFACES_TAG],
|
|
328
|
+
summary: "Read reaction capabilities, current rules, and contextual authoring metadata",
|
|
329
|
+
description: valuesCompatibilityNote(
|
|
330
|
+
`Returns the current advanced reaction capabilities for the target, including resolved scene/slot, normalized rules, canonical rules, available \`targetFields\`, \`supportedActions\`, and \`conditionMeta\` / \`valueExprMeta\` authoring metadata. This is the main discovery endpoint for CLI or AI callers before configuring field values or linkage rules. For form \`fieldValue\` / \`fieldLinkage\` authoring, callers still pass the outer form block uid; the backend resolves the concrete form-grid slot automatically. Use \`context\` only as a supplement when you need to inspect the raw variable tree behind the returned metadata. ${FLOW_SURFACES_READ_ACL_NOTE}`
|
|
331
|
+
),
|
|
332
|
+
requestBody: requestBody("FlowSurfaceGetReactionMetaRequest", import_flow_surfaces.flowSurfaceExamples.getReactionMeta),
|
|
333
|
+
responses: responses("FlowSurfaceGetReactionMetaResult")
|
|
543
334
|
},
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
335
|
+
setFieldValueRules: {
|
|
336
|
+
tags: [FLOW_SURFACES_TAG],
|
|
337
|
+
summary: "Replace field value rules on a create/edit form block",
|
|
338
|
+
description: valuesCompatibilityNote(
|
|
339
|
+
`Fully replaces the field-value slot on the target form block. ${REACTION_OUTER_FORM_TARGET_NOTE} \`rules: []\` clears the slot. \`expectedFingerprint\` should usually come from \`getReactionMeta.capabilities[].fingerprint\` and enables optimistic concurrency against the current slot state.`
|
|
340
|
+
),
|
|
341
|
+
requestBody: requestBody("FlowSurfaceSetFieldValueRulesRequest", import_flow_surfaces.flowSurfaceExamples.setFieldValueRules),
|
|
342
|
+
responses: responses("FlowSurfaceSetFieldValueRulesResult")
|
|
552
343
|
},
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
dragSort: true,
|
|
562
|
-
dragSortBy: "sort"
|
|
563
|
-
}
|
|
344
|
+
setBlockLinkageRules: {
|
|
345
|
+
tags: [FLOW_SURFACES_TAG],
|
|
346
|
+
summary: "Replace block-level linkage rules on a supported block",
|
|
347
|
+
description: valuesCompatibilityNote(
|
|
348
|
+
"Fully replaces the block-linkage slot on the target block. `rules: []` clears the slot. `expectedFingerprint` should usually come from `getReactionMeta.capabilities[].fingerprint` and enables optimistic concurrency against the current slot state."
|
|
349
|
+
),
|
|
350
|
+
requestBody: requestBody("FlowSurfaceSetBlockLinkageRulesRequest", import_flow_surfaces.flowSurfaceExamples.setBlockLinkageRules),
|
|
351
|
+
responses: responses("FlowSurfaceSetBlockLinkageRulesResult")
|
|
564
352
|
},
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
items: [
|
|
574
|
-
{
|
|
575
|
-
path: "status",
|
|
576
|
-
operator: "$eq",
|
|
577
|
-
value: "draft"
|
|
578
|
-
}
|
|
579
|
-
]
|
|
580
|
-
}
|
|
581
|
-
}
|
|
353
|
+
setFieldLinkageRules: {
|
|
354
|
+
tags: [FLOW_SURFACES_TAG],
|
|
355
|
+
summary: "Replace field-level linkage rules on a supported form/details/sub-form target",
|
|
356
|
+
description: valuesCompatibilityNote(
|
|
357
|
+
"Fully replaces the field-linkage slot on the target. The backend resolves the concrete scene automatically (`form`, `details`, or `subForm`) and returns it in `resolvedScene` / `resolvedSlot`. Supported actions are surfaced by `getReactionMeta`, commonly including `setFieldState`, `assignField`, and scene-specific defaults. For form scenes, keep passing the outer form block uid and let the backend resolve the inner grid slot. `expectedFingerprint` should usually come from `getReactionMeta.capabilities[].fingerprint`."
|
|
358
|
+
),
|
|
359
|
+
requestBody: requestBody("FlowSurfaceSetFieldLinkageRulesRequest", import_flow_surfaces.flowSurfaceExamples.setFieldLinkageRules),
|
|
360
|
+
responses: responses("FlowSurfaceSetFieldLinkageRulesResult")
|
|
582
361
|
},
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
when: {
|
|
592
|
-
path: "status",
|
|
593
|
-
operator: "$eq",
|
|
594
|
-
value: "archived"
|
|
595
|
-
},
|
|
596
|
-
set: {
|
|
597
|
-
hidden: true
|
|
598
|
-
}
|
|
599
|
-
}
|
|
600
|
-
]
|
|
601
|
-
}
|
|
362
|
+
setActionLinkageRules: {
|
|
363
|
+
tags: [FLOW_SURFACES_TAG],
|
|
364
|
+
summary: "Replace action-level linkage rules on a supported action",
|
|
365
|
+
description: valuesCompatibilityNote(
|
|
366
|
+
"Fully replaces the action-linkage slot on the target action. `rules: []` clears the slot. `expectedFingerprint` should usually come from `getReactionMeta.capabilities[].fingerprint` and enables optimistic concurrency against the current slot state."
|
|
367
|
+
),
|
|
368
|
+
requestBody: requestBody("FlowSurfaceSetActionLinkageRulesRequest", import_flow_surfaces.flowSurfaceExamples.setActionLinkageRules),
|
|
369
|
+
responses: responses("FlowSurfaceSetActionLinkageRulesResult")
|
|
602
370
|
},
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
}
|
|
617
|
-
|
|
371
|
+
get: {
|
|
372
|
+
tags: [FLOW_SURFACES_TAG],
|
|
373
|
+
summary: "Read normalized surface tree and route metadata",
|
|
374
|
+
description: [
|
|
375
|
+
"Reads the normalized Flow surface readback result as the stable read endpoint for CLI and orchestration tools.",
|
|
376
|
+
"",
|
|
377
|
+
"Only root-level locator fields are accepted. Exactly one of the following four fields must be used as the locator.",
|
|
378
|
+
"Do not wrap the payload with `{ target: { ... } }`.",
|
|
379
|
+
"Do not wrap the payload with `{ values: { ... } }`.",
|
|
380
|
+
FLOW_SURFACES_READ_ACL_NOTE,
|
|
381
|
+
"The `target` in the response only keeps lightweight locator information. Read the full node tree from `tree`.",
|
|
382
|
+
"Tabs for route-backed pages are always read from `tree.subModels.tabs`. Top-level `tabs` / `tabTrees` are no longer returned separately.",
|
|
383
|
+
"",
|
|
384
|
+
`Example: GET /api/flowSurfaces:get?uid=${import_flow_surfaces.flowSurfaceExamples.getPopupQuery.uid}`,
|
|
385
|
+
`Example: GET /api/flowSurfaces:get?pageSchemaUid=${import_flow_surfaces.flowSurfaceExamples.getPageQuery.pageSchemaUid}`
|
|
386
|
+
].join("\n"),
|
|
387
|
+
parameters: [
|
|
388
|
+
parameterRef("flowSurfaceTargetUid"),
|
|
389
|
+
parameterRef("flowSurfaceTargetPageSchemaUid"),
|
|
390
|
+
parameterRef("flowSurfaceTargetTabSchemaUid"),
|
|
391
|
+
parameterRef("flowSurfaceTargetRouteId")
|
|
392
|
+
],
|
|
393
|
+
responses: responses("FlowSurfaceGetResponse")
|
|
618
394
|
},
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
type: "table",
|
|
628
|
-
resource: {
|
|
629
|
-
binding: "associatedRecords",
|
|
630
|
-
associationField: "employee"
|
|
631
|
-
},
|
|
632
|
-
fields: ["nickname", "status"],
|
|
633
|
-
actions: ["refresh"],
|
|
634
|
-
recordActions: ["view", "edit"]
|
|
635
|
-
}
|
|
636
|
-
]
|
|
395
|
+
describeSurface: {
|
|
396
|
+
tags: [FLOW_SURFACES_TAG],
|
|
397
|
+
summary: "Read surface tree with stable keys and fingerprint",
|
|
398
|
+
description: valuesCompatibilityNote(
|
|
399
|
+
`Reads the current surface together with request-scoped bind keys, persisted declared keys, and an optimistic-concurrency fingerprint. The fingerprint is computed from the public surface tree together with the resolved key bindings and ignores key source differences such as \`request\` vs \`declared\`. The public readback strips the internal declared-key metadata path from node.stepParams. ${FLOW_SURFACES_READ_ACL_NOTE}`
|
|
400
|
+
),
|
|
401
|
+
requestBody: requestBody("FlowSurfaceDescribeSurfaceRequest", import_flow_surfaces.flowSurfaceExamples.describeSurface),
|
|
402
|
+
responses: responses("FlowSurfaceDescribeSurfaceResponse")
|
|
637
403
|
},
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
404
|
+
applyBlueprint: {
|
|
405
|
+
tags: [FLOW_SURFACES_TAG],
|
|
406
|
+
summary: "Apply a page blueprint to create or replace one Modern page",
|
|
407
|
+
description: valuesCompatibilityNote(
|
|
408
|
+
'Accepts one simplified JSON page blueprint and compiles it to internal flow-surface operations. The public blueprint describes page structure (`create` or `replace`, page metadata, ordered tabs, blocks, fields, actions, inline popups, optional reusable assets) and optional top-level `reaction.items[]` for whole-page interaction authoring. Each reaction item targets an explicit local key / bind key produced by the same blueprint run. Only explicitly listed reaction items are written. `rules: []` clears the targeted slot. Repeating the same `(type, target)` reaction slot in one blueprint is invalid. In `replace`, reaction targets always bind to the newly produced blueprint result, not historical nodes from the previous page version; if a slot must exist in the resulting surface, include it explicitly instead of relying on omission. Localized reaction edits on an existing surface should use `getReactionMeta` + `set*Rules` instead of applying a whole page blueprint again. The request body is that page-document JSON object itself and must not be JSON-stringified. Wrong: `{ "requestBody": "{\\"version\\":\\"1\\"}" }`. Internal planning details stay hidden. In `create`, `navigation.group.routeId` is the preferred way to target an existing menu group. It is exact-targeting only and cannot be mixed with existing-group metadata such as `icon`, `tooltip`, or `hideInMenu`; applyBlueprint create mode does not mutate existing group metadata, so callers should use `updateMenu` separately when that is required. When only `navigation.group.title` is provided, applyBlueprint reuses one existing same-title group when it is unique, creates a new group when none exists, and rejects ambiguous multi-match cases. Same-title reuse is title-only; if an existing group\'s metadata must change, use low-level `updateMenu` instead of applyBlueprint create. `replace` uses `target.pageSchemaUid`, updates only the explicit page-level fields provided in `page`, maps blueprint tabs to existing route-backed tab slots by index, rewrites each slot in order, removes trailing old tabs, and appends extra new tabs when needed. Tab and block keys are optional in the public blueprint; omit them unless custom layout or cross-block targeting needs a stable in-document identifier. `layout` is only allowed on tabs and inline popup documents; blocks themselves do not accept a `layout` property. Public applyBlueprint blocks do not support generic `form`; use `editForm` or `createForm`. Custom `edit` popups that provide `popup.blocks` must include exactly one `editForm` block; that `editForm` may omit `resource` and then inherits the opener\'s current-record context. When layout is omitted, applyBlueprint auto-generates a simple top-to-bottom layout. When a `replace` run expands a page to multiple tabs while the current page still has `enableTabs=false`, callers must set `page.enableTabs=true` explicitly. The response hides execution internals and returns only the resolved page target and final surface readback.'
|
|
409
|
+
),
|
|
410
|
+
requestBody: {
|
|
411
|
+
required: true,
|
|
412
|
+
description: "The JSON request body. Send the page document object itself under requestBody as an object; do not JSON.stringify it and do not wrap it in { values: ... }.",
|
|
413
|
+
content: {
|
|
414
|
+
"application/json": {
|
|
415
|
+
schema: ref("FlowSurfaceApplyBlueprintRequest"),
|
|
416
|
+
examples: {
|
|
417
|
+
createPage: {
|
|
418
|
+
summary: "Create one Modern page from a page blueprint",
|
|
419
|
+
value: import_flow_surfaces.flowSurfaceExamples.applyBlueprint
|
|
420
|
+
},
|
|
421
|
+
replacePage: {
|
|
422
|
+
summary: "Replace one existing Modern page by pageSchemaUid",
|
|
423
|
+
value: import_flow_surfaces.flowSurfaceExamples.applyBlueprintReplace
|
|
424
|
+
}
|
|
652
425
|
}
|
|
653
426
|
}
|
|
654
|
-
],
|
|
655
|
-
editMode: "drawer",
|
|
656
|
-
updateMode: "overwrite",
|
|
657
|
-
duplicateMode: "popup",
|
|
658
|
-
collapsedRows: 2,
|
|
659
|
-
defaultCollapsed: true,
|
|
660
|
-
emailFieldNames: ["email", "backupEmail"],
|
|
661
|
-
defaultSelectAllRecords: true
|
|
662
|
-
}
|
|
663
|
-
},
|
|
664
|
-
createPage: {
|
|
665
|
-
menuRouteId: 1002,
|
|
666
|
-
title: "Employees",
|
|
667
|
-
tabTitle: "Overview",
|
|
668
|
-
enableTabs: true,
|
|
669
|
-
displayTitle: true,
|
|
670
|
-
documentTitle: "Employees workspace",
|
|
671
|
-
tabDocumentTitle: "Employees overview"
|
|
672
|
-
},
|
|
673
|
-
addTab: {
|
|
674
|
-
target: {
|
|
675
|
-
uid: "employees-page-uid"
|
|
676
|
-
},
|
|
677
|
-
title: "Details",
|
|
678
|
-
icon: "TableOutlined",
|
|
679
|
-
documentTitle: "Employee details tab"
|
|
680
|
-
},
|
|
681
|
-
updateTab: {
|
|
682
|
-
target: {
|
|
683
|
-
uid: "details-tab-schema"
|
|
684
|
-
},
|
|
685
|
-
title: "Details",
|
|
686
|
-
icon: "TableOutlined",
|
|
687
|
-
documentTitle: "Employee details tab",
|
|
688
|
-
flowRegistry: {
|
|
689
|
-
beforeRenderApply: {
|
|
690
|
-
key: "beforeRenderApply",
|
|
691
|
-
on: "beforeRender",
|
|
692
|
-
steps: {}
|
|
693
427
|
}
|
|
694
|
-
}
|
|
695
|
-
},
|
|
696
|
-
addPopupTab: {
|
|
697
|
-
target: {
|
|
698
|
-
uid: "view-action-popup-page-uid"
|
|
699
428
|
},
|
|
700
|
-
|
|
701
|
-
icon: "TableOutlined",
|
|
702
|
-
documentTitle: "Popup details tab"
|
|
703
|
-
},
|
|
704
|
-
updatePopupTab: {
|
|
705
|
-
target: {
|
|
706
|
-
uid: "popup-secondary-tab-uid"
|
|
707
|
-
},
|
|
708
|
-
title: "Popup details updated",
|
|
709
|
-
icon: "AppstoreOutlined",
|
|
710
|
-
documentTitle: "Popup details updated tab",
|
|
711
|
-
flowRegistry: {
|
|
712
|
-
beforeRenderApply: {
|
|
713
|
-
key: "beforeRenderApply",
|
|
714
|
-
on: "beforeRender",
|
|
715
|
-
steps: {}
|
|
716
|
-
}
|
|
717
|
-
}
|
|
718
|
-
},
|
|
719
|
-
movePopupTab: {
|
|
720
|
-
sourceUid: "popup-secondary-tab-uid",
|
|
721
|
-
targetUid: "popup-primary-tab-uid",
|
|
722
|
-
position: "before"
|
|
723
|
-
},
|
|
724
|
-
removePopupTab: {
|
|
725
|
-
target: {
|
|
726
|
-
uid: "popup-secondary-tab-uid"
|
|
727
|
-
}
|
|
728
|
-
},
|
|
729
|
-
addBlock: {
|
|
730
|
-
target: {
|
|
731
|
-
uid: "view-action-uid"
|
|
732
|
-
},
|
|
733
|
-
type: "details",
|
|
734
|
-
resource: {
|
|
735
|
-
binding: "currentRecord"
|
|
736
|
-
}
|
|
737
|
-
},
|
|
738
|
-
addPopupAssociatedBlock: {
|
|
739
|
-
target: {
|
|
740
|
-
uid: "association-popup-action-uid"
|
|
741
|
-
},
|
|
742
|
-
type: "table",
|
|
743
|
-
resource: {
|
|
744
|
-
binding: "associatedRecords",
|
|
745
|
-
associationField: "employee"
|
|
746
|
-
}
|
|
747
|
-
},
|
|
748
|
-
addPopupOtherRecordsBlock: {
|
|
749
|
-
target: {
|
|
750
|
-
uid: "popup-action-uid"
|
|
751
|
-
},
|
|
752
|
-
type: "table",
|
|
753
|
-
resource: {
|
|
754
|
-
binding: "otherRecords",
|
|
755
|
-
dataSourceKey: "main",
|
|
756
|
-
collectionName: "departments"
|
|
757
|
-
}
|
|
758
|
-
},
|
|
759
|
-
addJsBlock: {
|
|
760
|
-
target: {
|
|
761
|
-
uid: "page-grid-uid"
|
|
762
|
-
},
|
|
763
|
-
type: "jsBlock",
|
|
764
|
-
settings: {
|
|
765
|
-
title: "Users banner",
|
|
766
|
-
description: "Custom JS rendered banner",
|
|
767
|
-
version: "1.0.0",
|
|
768
|
-
code: "ctx.render('<div>Users banner</div>');"
|
|
769
|
-
}
|
|
770
|
-
},
|
|
771
|
-
addField: {
|
|
772
|
-
target: {
|
|
773
|
-
uid: "create-form-block-uid"
|
|
774
|
-
},
|
|
775
|
-
fieldPath: "nickname",
|
|
776
|
-
renderer: "js",
|
|
777
|
-
settings: {
|
|
778
|
-
label: "Nickname (JS)",
|
|
779
|
-
code: "ctx.render(String(ctx.value?.toUpperCase?.() || ctx.value || ''));",
|
|
780
|
-
version: "1.0.0"
|
|
781
|
-
}
|
|
782
|
-
},
|
|
783
|
-
addAssociationField: {
|
|
784
|
-
target: {
|
|
785
|
-
uid: "table-block-uid"
|
|
786
|
-
},
|
|
787
|
-
fieldPath: "title",
|
|
788
|
-
associationPathName: "department",
|
|
789
|
-
settings: {
|
|
790
|
-
title: "Department title",
|
|
791
|
-
width: 240
|
|
792
|
-
},
|
|
793
|
-
popup: {
|
|
794
|
-
mode: "replace",
|
|
795
|
-
blocks: [
|
|
796
|
-
{
|
|
797
|
-
key: "departmentDetails",
|
|
798
|
-
type: "details",
|
|
799
|
-
resource: {
|
|
800
|
-
binding: "currentRecord"
|
|
801
|
-
},
|
|
802
|
-
fields: ["title", "manager.nickname"]
|
|
803
|
-
}
|
|
804
|
-
]
|
|
805
|
-
}
|
|
806
|
-
},
|
|
807
|
-
addJsColumn: {
|
|
808
|
-
target: {
|
|
809
|
-
uid: "table-block-uid"
|
|
810
|
-
},
|
|
811
|
-
type: "jsColumn",
|
|
812
|
-
settings: {
|
|
813
|
-
title: "Runtime column",
|
|
814
|
-
width: 240,
|
|
815
|
-
version: "1.0.0",
|
|
816
|
-
code: "ctx.render(String(ctx.record?.nickname || ''));"
|
|
817
|
-
}
|
|
818
|
-
},
|
|
819
|
-
addJsItem: {
|
|
820
|
-
target: {
|
|
821
|
-
uid: "create-form-grid-uid"
|
|
822
|
-
},
|
|
823
|
-
type: "jsItem",
|
|
824
|
-
settings: {
|
|
825
|
-
label: "Runtime item",
|
|
826
|
-
showLabel: true,
|
|
827
|
-
version: "1.0.0",
|
|
828
|
-
code: "ctx.render(String(ctx.record?.nickname || ''));"
|
|
829
|
-
}
|
|
830
|
-
},
|
|
831
|
-
addAction: {
|
|
832
|
-
target: {
|
|
833
|
-
uid: "filter-form-block-uid"
|
|
834
|
-
},
|
|
835
|
-
type: "submit",
|
|
836
|
-
settings: {
|
|
837
|
-
title: "Apply filters",
|
|
838
|
-
confirm: false
|
|
839
|
-
}
|
|
840
|
-
},
|
|
841
|
-
addLinkAction: {
|
|
842
|
-
target: {
|
|
843
|
-
uid: "table-block-uid"
|
|
844
|
-
},
|
|
845
|
-
type: "link",
|
|
846
|
-
settings: {
|
|
847
|
-
title: "Open docs"
|
|
848
|
-
}
|
|
849
|
-
},
|
|
850
|
-
addJsAction: {
|
|
851
|
-
target: {
|
|
852
|
-
uid: "action-panel-uid"
|
|
853
|
-
},
|
|
854
|
-
type: "js",
|
|
855
|
-
settings: {
|
|
856
|
-
title: "Run JS",
|
|
857
|
-
type: "primary",
|
|
858
|
-
version: "1.0.0",
|
|
859
|
-
code: `await ctx.runjs('console.log("hello")');`
|
|
860
|
-
}
|
|
861
|
-
},
|
|
862
|
-
addJsItemAction: {
|
|
863
|
-
target: {
|
|
864
|
-
uid: "create-form-uid"
|
|
865
|
-
},
|
|
866
|
-
type: "jsItem",
|
|
867
|
-
settings: {
|
|
868
|
-
title: "Run item JS",
|
|
869
|
-
type: "default",
|
|
870
|
-
version: "1.0.0",
|
|
871
|
-
code: `await ctx.runjs('console.log("item")');`
|
|
872
|
-
}
|
|
873
|
-
},
|
|
874
|
-
addRecordAction: {
|
|
875
|
-
target: {
|
|
876
|
-
uid: "table-block-uid"
|
|
877
|
-
},
|
|
878
|
-
type: "view",
|
|
879
|
-
settings: {
|
|
880
|
-
title: "View user",
|
|
881
|
-
openView: {
|
|
882
|
-
dataSourceKey: "main",
|
|
883
|
-
collectionName: "users",
|
|
884
|
-
mode: "drawer"
|
|
885
|
-
}
|
|
886
|
-
},
|
|
887
|
-
popup: {
|
|
888
|
-
mode: "replace",
|
|
889
|
-
blocks: [
|
|
890
|
-
{
|
|
891
|
-
key: "details",
|
|
892
|
-
type: "details",
|
|
893
|
-
resource: {
|
|
894
|
-
dataSourceKey: "main",
|
|
895
|
-
collectionName: "users"
|
|
896
|
-
},
|
|
897
|
-
fields: ["username", "nickname"]
|
|
898
|
-
}
|
|
899
|
-
]
|
|
900
|
-
}
|
|
901
|
-
},
|
|
902
|
-
addRecordJsAction: {
|
|
903
|
-
target: {
|
|
904
|
-
uid: "details-block-uid"
|
|
905
|
-
},
|
|
906
|
-
type: "js",
|
|
907
|
-
settings: {
|
|
908
|
-
title: "Inspect record",
|
|
909
|
-
type: "default",
|
|
910
|
-
version: "1.0.0",
|
|
911
|
-
code: "return currentRecord?.id;"
|
|
912
|
-
}
|
|
913
|
-
},
|
|
914
|
-
addBlocks: {
|
|
915
|
-
target: {
|
|
916
|
-
uid: "page-grid-uid"
|
|
917
|
-
},
|
|
918
|
-
blocks: [
|
|
919
|
-
{
|
|
920
|
-
key: "usersTable",
|
|
921
|
-
type: "table",
|
|
922
|
-
resourceInit: {
|
|
923
|
-
dataSourceKey: "main",
|
|
924
|
-
collectionName: "users"
|
|
925
|
-
},
|
|
926
|
-
settings: {
|
|
927
|
-
title: "Users table",
|
|
928
|
-
pageSize: 50
|
|
929
|
-
}
|
|
930
|
-
},
|
|
931
|
-
{
|
|
932
|
-
key: "teamNotes",
|
|
933
|
-
type: "markdown",
|
|
934
|
-
settings: {
|
|
935
|
-
content: "# Team notes"
|
|
936
|
-
}
|
|
937
|
-
}
|
|
938
|
-
]
|
|
939
|
-
},
|
|
940
|
-
addFields: {
|
|
941
|
-
target: {
|
|
942
|
-
uid: "table-block-uid"
|
|
943
|
-
},
|
|
944
|
-
fields: [
|
|
945
|
-
{
|
|
946
|
-
key: "username",
|
|
947
|
-
fieldPath: "username",
|
|
948
|
-
settings: {
|
|
949
|
-
title: "User name",
|
|
950
|
-
width: 220
|
|
951
|
-
},
|
|
952
|
-
popup: {
|
|
953
|
-
mode: "replace",
|
|
954
|
-
blocks: [
|
|
955
|
-
{
|
|
956
|
-
key: "details",
|
|
957
|
-
type: "details",
|
|
958
|
-
resource: {
|
|
959
|
-
binding: "currentRecord"
|
|
960
|
-
},
|
|
961
|
-
fields: ["username", "nickname"]
|
|
962
|
-
}
|
|
963
|
-
]
|
|
964
|
-
}
|
|
965
|
-
},
|
|
966
|
-
{
|
|
967
|
-
key: "nickname",
|
|
968
|
-
fieldPath: "nickname",
|
|
969
|
-
renderer: "js",
|
|
970
|
-
settings: {
|
|
971
|
-
label: "Nickname (JS)",
|
|
972
|
-
code: "return value;",
|
|
973
|
-
version: "1.0.0"
|
|
974
|
-
}
|
|
975
|
-
}
|
|
976
|
-
]
|
|
977
|
-
},
|
|
978
|
-
addActions: {
|
|
979
|
-
target: {
|
|
980
|
-
uid: "filter-form-block-uid"
|
|
981
|
-
},
|
|
982
|
-
actions: [
|
|
983
|
-
{
|
|
984
|
-
key: "submit",
|
|
985
|
-
type: "submit",
|
|
986
|
-
settings: {
|
|
987
|
-
title: "Search",
|
|
988
|
-
confirm: false
|
|
989
|
-
}
|
|
990
|
-
},
|
|
991
|
-
{
|
|
992
|
-
key: "reset",
|
|
993
|
-
type: "reset",
|
|
994
|
-
settings: {
|
|
995
|
-
title: "Reset filters"
|
|
996
|
-
}
|
|
997
|
-
}
|
|
998
|
-
]
|
|
999
|
-
},
|
|
1000
|
-
addRecordActions: {
|
|
1001
|
-
target: {
|
|
1002
|
-
uid: "table-block-uid"
|
|
1003
|
-
},
|
|
1004
|
-
recordActions: [
|
|
1005
|
-
{
|
|
1006
|
-
key: "view",
|
|
1007
|
-
type: "view",
|
|
1008
|
-
settings: {
|
|
1009
|
-
title: "View user",
|
|
1010
|
-
openView: {
|
|
1011
|
-
dataSourceKey: "main",
|
|
1012
|
-
collectionName: "users",
|
|
1013
|
-
mode: "drawer"
|
|
1014
|
-
}
|
|
1015
|
-
},
|
|
1016
|
-
popup: {
|
|
1017
|
-
mode: "replace",
|
|
1018
|
-
blocks: [
|
|
1019
|
-
{
|
|
1020
|
-
key: "details",
|
|
1021
|
-
type: "details",
|
|
1022
|
-
resource: {
|
|
1023
|
-
dataSourceKey: "main",
|
|
1024
|
-
collectionName: "users"
|
|
1025
|
-
},
|
|
1026
|
-
fields: ["username"]
|
|
1027
|
-
}
|
|
1028
|
-
]
|
|
1029
|
-
}
|
|
1030
|
-
},
|
|
1031
|
-
{
|
|
1032
|
-
key: "edit",
|
|
1033
|
-
type: "edit",
|
|
1034
|
-
settings: {
|
|
1035
|
-
title: "Edit user"
|
|
1036
|
-
}
|
|
1037
|
-
},
|
|
1038
|
-
{
|
|
1039
|
-
key: "delete",
|
|
1040
|
-
type: "delete",
|
|
1041
|
-
settings: {
|
|
1042
|
-
title: "Delete user"
|
|
1043
|
-
}
|
|
1044
|
-
}
|
|
1045
|
-
]
|
|
1046
|
-
},
|
|
1047
|
-
updateSettings: {
|
|
1048
|
-
target: {
|
|
1049
|
-
uid: "table-block-uid"
|
|
1050
|
-
},
|
|
1051
|
-
stepParams: {
|
|
1052
|
-
tableSettings: {
|
|
1053
|
-
pageSize: {
|
|
1054
|
-
pageSize: 50
|
|
1055
|
-
},
|
|
1056
|
-
tableDensity: {
|
|
1057
|
-
size: "middle"
|
|
1058
|
-
}
|
|
1059
|
-
}
|
|
1060
|
-
},
|
|
1061
|
-
flowRegistry: {
|
|
1062
|
-
beforeRenderApply: {
|
|
1063
|
-
key: "beforeRenderApply",
|
|
1064
|
-
on: "beforeRender",
|
|
1065
|
-
steps: {}
|
|
1066
|
-
}
|
|
1067
|
-
}
|
|
1068
|
-
},
|
|
1069
|
-
setEventFlows: {
|
|
1070
|
-
target: {
|
|
1071
|
-
uid: "view-action-uid"
|
|
1072
|
-
},
|
|
1073
|
-
flowRegistry: {
|
|
1074
|
-
popupSettings: {
|
|
1075
|
-
key: "popupSettings",
|
|
1076
|
-
on: "click",
|
|
1077
|
-
steps: {
|
|
1078
|
-
openView: {
|
|
1079
|
-
params: {
|
|
1080
|
-
title: "Employee details",
|
|
1081
|
-
size: "large"
|
|
1082
|
-
}
|
|
1083
|
-
}
|
|
1084
|
-
}
|
|
1085
|
-
}
|
|
1086
|
-
}
|
|
1087
|
-
},
|
|
1088
|
-
setLayout: {
|
|
1089
|
-
target: {
|
|
1090
|
-
uid: "page-grid-uid"
|
|
1091
|
-
},
|
|
1092
|
-
rows: {
|
|
1093
|
-
row1: [["block-a"], ["block-b"]]
|
|
1094
|
-
},
|
|
1095
|
-
sizes: {
|
|
1096
|
-
row1: [12, 12]
|
|
1097
|
-
},
|
|
1098
|
-
rowOrder: ["row1"]
|
|
1099
|
-
},
|
|
1100
|
-
moveNode: {
|
|
1101
|
-
sourceUid: "block-b",
|
|
1102
|
-
targetUid: "block-a",
|
|
1103
|
-
position: "before"
|
|
1104
|
-
},
|
|
1105
|
-
removeNode: {
|
|
1106
|
-
target: {
|
|
1107
|
-
uid: "obsolete-block-uid"
|
|
1108
|
-
}
|
|
1109
|
-
},
|
|
1110
|
-
mutate: {
|
|
1111
|
-
atomic: true,
|
|
1112
|
-
ops: [
|
|
1113
|
-
{
|
|
1114
|
-
opId: "menu",
|
|
1115
|
-
type: "createMenu",
|
|
1116
|
-
values: {
|
|
1117
|
-
title: "Employees",
|
|
1118
|
-
type: "item"
|
|
1119
|
-
}
|
|
1120
|
-
},
|
|
1121
|
-
{
|
|
1122
|
-
opId: "page",
|
|
1123
|
-
type: "createPage",
|
|
1124
|
-
values: {
|
|
1125
|
-
menuRouteId: {
|
|
1126
|
-
ref: "menu.routeId"
|
|
1127
|
-
},
|
|
1128
|
-
tabTitle: "Overview"
|
|
1129
|
-
}
|
|
1130
|
-
},
|
|
1131
|
-
{
|
|
1132
|
-
opId: "table",
|
|
1133
|
-
type: "addBlock",
|
|
1134
|
-
values: {
|
|
1135
|
-
target: {
|
|
1136
|
-
uid: {
|
|
1137
|
-
ref: "page.tabSchemaUid"
|
|
1138
|
-
}
|
|
1139
|
-
},
|
|
1140
|
-
type: "table",
|
|
1141
|
-
resourceInit: {
|
|
1142
|
-
dataSourceKey: "main",
|
|
1143
|
-
collectionName: "employees"
|
|
1144
|
-
}
|
|
1145
|
-
}
|
|
1146
|
-
},
|
|
1147
|
-
{
|
|
1148
|
-
type: "addField",
|
|
1149
|
-
values: {
|
|
1150
|
-
target: {
|
|
1151
|
-
uid: {
|
|
1152
|
-
ref: "table.uid"
|
|
1153
|
-
}
|
|
1154
|
-
},
|
|
1155
|
-
fieldPath: "nickname"
|
|
1156
|
-
}
|
|
1157
|
-
}
|
|
1158
|
-
]
|
|
1159
|
-
},
|
|
1160
|
-
apply: {
|
|
1161
|
-
target: {
|
|
1162
|
-
uid: "page-grid-uid"
|
|
1163
|
-
},
|
|
1164
|
-
mode: "replace",
|
|
1165
|
-
spec: {
|
|
1166
|
-
subModels: {
|
|
1167
|
-
items: [
|
|
1168
|
-
{
|
|
1169
|
-
clientKey: "table-a",
|
|
1170
|
-
use: "TableBlockModel",
|
|
1171
|
-
stepParams: {
|
|
1172
|
-
resourceSettings: {
|
|
1173
|
-
init: {
|
|
1174
|
-
dataSourceKey: "main",
|
|
1175
|
-
collectionName: "employees"
|
|
1176
|
-
}
|
|
1177
|
-
}
|
|
1178
|
-
}
|
|
1179
|
-
},
|
|
1180
|
-
{
|
|
1181
|
-
clientKey: "markdown-a",
|
|
1182
|
-
use: "MarkdownBlockModel",
|
|
1183
|
-
props: {
|
|
1184
|
-
content: "Employee handbook"
|
|
1185
|
-
}
|
|
1186
|
-
}
|
|
1187
|
-
]
|
|
1188
|
-
}
|
|
1189
|
-
}
|
|
1190
|
-
},
|
|
1191
|
-
getPopupQuery: {
|
|
1192
|
-
uid: "view-action-uid"
|
|
1193
|
-
},
|
|
1194
|
-
getPageQuery: {
|
|
1195
|
-
pageSchemaUid: "employees-page-schema"
|
|
1196
|
-
}
|
|
1197
|
-
};
|
|
1198
|
-
const FLOW_SURFACES_READ_ACL_NOTE = "Read actions (`get` / `catalog` / `context`) are open to `loggedIn` by default. Write actions still require the `ui.flowSurfaces` snippet.";
|
|
1199
|
-
const actionDocs = {
|
|
1200
|
-
catalog: {
|
|
1201
|
-
tags: [FLOW_SURFACES_TAG],
|
|
1202
|
-
summary: "List capabilities available in the current surface context",
|
|
1203
|
-
description: valuesCompatibilityNote(
|
|
1204
|
-
`Returns the block / field / action capabilities that can be created under the current target context, together with the recommended \`configureOptions\`, the underlying settings contract, event capabilities, and layout capabilities for the current node. The returned \`blocks[] / actions[] / recordActions[]\` only represent the truly available public capabilities under plugins enabled in the current instance. ${FLOW_SURFACES_READ_ACL_NOTE}`
|
|
1205
|
-
),
|
|
1206
|
-
requestBody: requestBody("FlowSurfaceCatalogRequest", examples.catalog),
|
|
1207
|
-
responses: responses("FlowSurfaceCatalogResponse")
|
|
1208
|
-
},
|
|
1209
|
-
context: {
|
|
1210
|
-
tags: [FLOW_SURFACES_TAG],
|
|
1211
|
-
summary: "Read ctx variable tree available under the current target",
|
|
1212
|
-
description: valuesCompatibilityNote(
|
|
1213
|
-
`Returns the \`ctx\` variable tree available under the current target. \`path\` only accepts bare paths such as \`record\`, \`popup.record\`, and \`item.parentItem.value\`. Do not pass \`ctx.record\` or \`{{ ctx.record }}\`. ${FLOW_SURFACES_READ_ACL_NOTE}`
|
|
1214
|
-
),
|
|
1215
|
-
requestBody: requestBody("FlowSurfaceContextRequest", examples.context),
|
|
1216
|
-
responses: responses("FlowSurfaceContextResponse")
|
|
1217
|
-
},
|
|
1218
|
-
get: {
|
|
1219
|
-
tags: [FLOW_SURFACES_TAG],
|
|
1220
|
-
summary: "Read normalized surface tree and route metadata",
|
|
1221
|
-
description: [
|
|
1222
|
-
"Reads the normalized Flow surface readback result as the stable read endpoint for CLI and orchestration tools.",
|
|
1223
|
-
"",
|
|
1224
|
-
"Only root-level locator fields are accepted. Exactly one of the following four fields must be used as the locator.",
|
|
1225
|
-
"Do not wrap the payload with `{ target: { ... } }`.",
|
|
1226
|
-
"Do not wrap the payload with `{ values: { ... } }`.",
|
|
1227
|
-
FLOW_SURFACES_READ_ACL_NOTE,
|
|
1228
|
-
"The `target` in the response only keeps lightweight locator information. Read the full node tree from `tree`.",
|
|
1229
|
-
"Tabs for route-backed pages are always read from `tree.subModels.tabs`. Top-level `tabs` / `tabTrees` are no longer returned separately.",
|
|
1230
|
-
"",
|
|
1231
|
-
`Example: GET /api/flowSurfaces:get?uid=${examples.getPopupQuery.uid}`,
|
|
1232
|
-
`Example: GET /api/flowSurfaces:get?pageSchemaUid=${examples.getPageQuery.pageSchemaUid}`
|
|
1233
|
-
].join("\n"),
|
|
1234
|
-
parameters: [
|
|
1235
|
-
parameterRef("flowSurfaceTargetUid"),
|
|
1236
|
-
parameterRef("flowSurfaceTargetPageSchemaUid"),
|
|
1237
|
-
parameterRef("flowSurfaceTargetTabSchemaUid"),
|
|
1238
|
-
parameterRef("flowSurfaceTargetRouteId")
|
|
1239
|
-
],
|
|
1240
|
-
responses: responses("FlowSurfaceGetResponse")
|
|
429
|
+
responses: responses("FlowSurfaceApplyBlueprintResponse")
|
|
1241
430
|
},
|
|
431
|
+
...templateActionDocs,
|
|
1242
432
|
compose: {
|
|
1243
433
|
tags: [FLOW_SURFACES_TAG],
|
|
1244
434
|
summary: "Compose blocks, fields, actions and simple layout under an existing surface",
|
|
1245
435
|
description: valuesCompatibilityNote(
|
|
1246
|
-
|
|
436
|
+
'Organizes content under an existing page/tab/grid/popup using the public block/action/field semantics as a low-level building primitive. The caller does not need to pass raw `use`, `fieldUse`, or `stepParams`. Blocks, fields, and actions can declare stable `key` values, and the compose result returns the same keys so later orchestration can reference nested popup or form nodes deterministically. Blocks may be created from `template`, and form templates can set `template.usage="fields"` to import only their grid fields. Popup-capable actions and fields may reuse `popup.template`. For collection blocks under a popup, check `catalog.blocks[].resourceBindings` first. The `select / subForm / bulkEditForm` scene is currently recognized only, and popup collection block creation is not supported in that scene.'
|
|
1247
437
|
),
|
|
1248
438
|
requestBody: {
|
|
1249
439
|
required: true,
|
|
@@ -1253,31 +443,31 @@ const actionDocs = {
|
|
|
1253
443
|
examples: {
|
|
1254
444
|
filterTable: {
|
|
1255
445
|
summary: "Compose a filter-form and table with block actions, record actions and a simple 3:7 row layout",
|
|
1256
|
-
value:
|
|
446
|
+
value: import_flow_surfaces.flowSurfaceExamples.compose
|
|
1257
447
|
},
|
|
1258
448
|
popupCurrentRecord: {
|
|
1259
449
|
summary: "Compose a current-record details block under a record popup surface",
|
|
1260
|
-
value:
|
|
450
|
+
value: import_flow_surfaces.flowSurfaceExamples.composePopupCurrentRecord
|
|
1261
451
|
},
|
|
1262
452
|
popupAssociatedRecords: {
|
|
1263
453
|
summary: "Compose an associated-records table under an association-field popup surface",
|
|
1264
|
-
value:
|
|
454
|
+
value: import_flow_surfaces.flowSurfaceExamples.composePopupAssociatedRecords
|
|
1265
455
|
},
|
|
1266
456
|
staticBlocks: {
|
|
1267
457
|
summary: "Compose markdown, iframe and action-panel blocks with simple settings",
|
|
1268
|
-
value:
|
|
458
|
+
value: import_flow_surfaces.flowSurfaceExamples.composeStatic
|
|
1269
459
|
},
|
|
1270
460
|
listRich: {
|
|
1271
461
|
summary: "Compose a list block with item fields, block actions and record actions",
|
|
1272
|
-
value:
|
|
462
|
+
value: import_flow_surfaces.flowSurfaceExamples.composeListRich
|
|
1273
463
|
},
|
|
1274
464
|
gridCardRich: {
|
|
1275
465
|
summary: "Compose a grid-card block with item fields, block actions and record actions",
|
|
1276
|
-
value:
|
|
466
|
+
value: import_flow_surfaces.flowSurfaceExamples.composeGridCardRich
|
|
1277
467
|
},
|
|
1278
468
|
jsBlock: {
|
|
1279
469
|
summary: "Compose a JS block with simple code/version/title settings",
|
|
1280
|
-
value:
|
|
470
|
+
value: import_flow_surfaces.flowSurfaceExamples.composeJsBlock
|
|
1281
471
|
}
|
|
1282
472
|
}
|
|
1283
473
|
}
|
|
@@ -1289,7 +479,7 @@ const actionDocs = {
|
|
|
1289
479
|
tags: [FLOW_SURFACES_TAG],
|
|
1290
480
|
summary: "Apply simple semantic changes to a page, tab, block, field or action",
|
|
1291
481
|
description: valuesCompatibilityNote(
|
|
1292
|
-
"Uses simple `changes` to update high-frequency settings such as page/tab titles, table pageSize, field clickToOpen, and action openView/confirm without requiring the caller to know internal paths. Check `catalog
|
|
482
|
+
"Uses simple `changes` to update high-frequency settings such as page/tab titles, table pageSize, field clickToOpen, and action openView/confirm without requiring the caller to know internal paths. For advanced reaction authoring, prefer `getReactionMeta` + `set*Rules`; the raw `assignRules` / `linkageRules` examples here are compatibility-only. Check `catalog.node.configureOptions` together with the relevant catalog item `configureOptions` before calling this action."
|
|
1293
483
|
),
|
|
1294
484
|
requestBody: {
|
|
1295
485
|
required: true,
|
|
@@ -1299,63 +489,63 @@ const actionDocs = {
|
|
|
1299
489
|
examples: {
|
|
1300
490
|
fieldOpenView: {
|
|
1301
491
|
summary: "Configure a field to click and open a popup view",
|
|
1302
|
-
value:
|
|
492
|
+
value: import_flow_surfaces.flowSurfaceExamples.configure
|
|
1303
493
|
},
|
|
1304
494
|
associationFieldPopup: {
|
|
1305
495
|
summary: "Configure a to-many association display field to open the clicked associated record in a popup",
|
|
1306
|
-
value:
|
|
496
|
+
value: import_flow_surfaces.flowSurfaceExamples.configureAssociationPopup
|
|
1307
497
|
},
|
|
1308
498
|
blockSettings: {
|
|
1309
499
|
summary: "Configure a list block with simple pageSize/dataScope/sorting/layout changes",
|
|
1310
|
-
value:
|
|
500
|
+
value: import_flow_surfaces.flowSurfaceExamples.configureBlock
|
|
1311
501
|
},
|
|
1312
502
|
actionSettings: {
|
|
1313
503
|
summary: "Configure an action with button appearance, confirm dialog and assign values",
|
|
1314
|
-
value:
|
|
504
|
+
value: import_flow_surfaces.flowSurfaceExamples.configureAction
|
|
1315
505
|
},
|
|
1316
506
|
jsBlockSettings: {
|
|
1317
507
|
summary: "Configure a JS block with decorator props and runJs code/version",
|
|
1318
|
-
value:
|
|
508
|
+
value: import_flow_surfaces.flowSurfaceExamples.configureJsBlock
|
|
1319
509
|
},
|
|
1320
510
|
jsActionSettings: {
|
|
1321
511
|
summary: "Configure a JS action with button text and runJs code/version",
|
|
1322
|
-
value:
|
|
512
|
+
value: import_flow_surfaces.flowSurfaceExamples.configureJsAction
|
|
1323
513
|
},
|
|
1324
514
|
jsItemActionSettings: {
|
|
1325
515
|
summary: "Configure a form JS item action with button text and runJs code/version",
|
|
1326
|
-
value:
|
|
516
|
+
value: import_flow_surfaces.flowSurfaceExamples.configureJsItemAction
|
|
1327
517
|
},
|
|
1328
518
|
jsFieldSettings: {
|
|
1329
519
|
summary: "Configure a JS field wrapper and inner JS field with code/version",
|
|
1330
|
-
value:
|
|
520
|
+
value: import_flow_surfaces.flowSurfaceExamples.configureJsField
|
|
1331
521
|
},
|
|
1332
522
|
jsColumnSettings: {
|
|
1333
523
|
summary: "Configure a JS column with width/fixed/code/version",
|
|
1334
|
-
value:
|
|
524
|
+
value: import_flow_surfaces.flowSurfaceExamples.configureJsColumn
|
|
1335
525
|
},
|
|
1336
526
|
jsItemSettings: {
|
|
1337
527
|
summary: "Configure a JS item with label and runJs code/version",
|
|
1338
|
-
value:
|
|
528
|
+
value: import_flow_surfaces.flowSurfaceExamples.configureJsItem
|
|
1339
529
|
},
|
|
1340
530
|
pageHeaderSettings: {
|
|
1341
531
|
summary: "Configure page icon and enableHeader using configureOptions",
|
|
1342
|
-
value:
|
|
532
|
+
value: import_flow_surfaces.flowSurfaceExamples.configurePage
|
|
1343
533
|
},
|
|
1344
534
|
tableAdvancedSettings: {
|
|
1345
535
|
summary: "Configure advanced table simple keys such as quickEdit/treeTable/dragSort",
|
|
1346
|
-
value:
|
|
536
|
+
value: import_flow_surfaces.flowSurfaceExamples.configureTableAdvanced
|
|
1347
537
|
},
|
|
1348
538
|
editFormSettings: {
|
|
1349
539
|
summary: "Configure edit form colon and dataScope with a FilterGroup",
|
|
1350
|
-
value:
|
|
540
|
+
value: import_flow_surfaces.flowSurfaceExamples.configureEditForm
|
|
1351
541
|
},
|
|
1352
|
-
|
|
1353
|
-
summary: "Configure details colon and linkageRules",
|
|
1354
|
-
value:
|
|
542
|
+
detailsCompatibilitySettings: {
|
|
543
|
+
summary: "Configure details colon and raw low-level linkageRules compatibility payload",
|
|
544
|
+
value: import_flow_surfaces.flowSurfaceExamples.configureDetailsCompatibility
|
|
1355
545
|
},
|
|
1356
|
-
|
|
1357
|
-
summary: "Configure action
|
|
1358
|
-
value:
|
|
546
|
+
actionBehaviorCompatibilitySettings: {
|
|
547
|
+
summary: "Configure action edit/update/duplicate modes plus raw low-level linkageRules compatibility payload",
|
|
548
|
+
value: import_flow_surfaces.flowSurfaceExamples.configureActionModesCompatibility
|
|
1359
549
|
}
|
|
1360
550
|
}
|
|
1361
551
|
}
|
|
@@ -1369,7 +559,7 @@ const actionDocs = {
|
|
|
1369
559
|
description: valuesCompatibilityNote(
|
|
1370
560
|
'Creates a FlowSurfaces menu node. `type="group"` creates a menu group. `type="item"` creates a menu item that can be bound to a modern page (v2), and automatically fills in the flowPage route, the default hidden tab route, and the RootPageModel anchor.'
|
|
1371
561
|
),
|
|
1372
|
-
requestBody: requestBody("FlowSurfaceCreateMenuRequest",
|
|
562
|
+
requestBody: requestBody("FlowSurfaceCreateMenuRequest", import_flow_surfaces.flowSurfaceExamples.createMenu),
|
|
1373
563
|
responses: responses("FlowSurfaceCreateMenuResult")
|
|
1374
564
|
},
|
|
1375
565
|
updateMenu: {
|
|
@@ -1378,7 +568,7 @@ const actionDocs = {
|
|
|
1378
568
|
description: valuesCompatibilityNote(
|
|
1379
569
|
"Updates menu display information, or moves a group / item to the top level or under another group. Only `group` and `flowPage` menu nodes are supported."
|
|
1380
570
|
),
|
|
1381
|
-
requestBody: requestBody("FlowSurfaceUpdateMenuRequest",
|
|
571
|
+
requestBody: requestBody("FlowSurfaceUpdateMenuRequest", import_flow_surfaces.flowSurfaceExamples.updateMenu),
|
|
1382
572
|
responses: responses("FlowSurfaceUpdateMenuResult")
|
|
1383
573
|
},
|
|
1384
574
|
createPage: {
|
|
@@ -1387,7 +577,7 @@ const actionDocs = {
|
|
|
1387
577
|
description: valuesCompatibilityNote(
|
|
1388
578
|
"Initializes a modern page (v2) for an existing bindable menu item through `menuRouteId` first, and fills in the default BlockGridModel. In compatibility mode, if `menuRouteId` is omitted, the old behavior still applies and a top-level menu plus page will be created automatically. Before initialization, do not call page/tab lifecycle actions such as `addTab`, `updateTab`, `moveTab`, `removeTab`, or `destroyPage`."
|
|
1389
579
|
),
|
|
1390
|
-
requestBody: requestBody("FlowSurfaceCreatePageRequest",
|
|
580
|
+
requestBody: requestBody("FlowSurfaceCreatePageRequest", import_flow_surfaces.flowSurfaceExamples.createPage),
|
|
1391
581
|
responses: responses("FlowSurfaceCreatePageResult")
|
|
1392
582
|
},
|
|
1393
583
|
destroyPage: {
|
|
@@ -1407,7 +597,7 @@ const actionDocs = {
|
|
|
1407
597
|
description: valuesCompatibilityNote(
|
|
1408
598
|
"Adds a route-backed tab under a page and fills in the corresponding grid anchor. Only `target.uid` is accepted, and it must be the canonical uid of the page. For menu-first pages, `createPage(menuRouteId=...)` must finish initialization first."
|
|
1409
599
|
),
|
|
1410
|
-
requestBody: requestBody("FlowSurfaceAddTabRequest",
|
|
600
|
+
requestBody: requestBody("FlowSurfaceAddTabRequest", import_flow_surfaces.flowSurfaceExamples.addTab),
|
|
1411
601
|
responses: responses("FlowSurfaceAddTabResult")
|
|
1412
602
|
},
|
|
1413
603
|
updateTab: {
|
|
@@ -1416,7 +606,7 @@ const actionDocs = {
|
|
|
1416
606
|
description: valuesCompatibilityNote(
|
|
1417
607
|
"Updates the route-backed fields on the tab route and its matching synthetic RootPageTabModel. Only `target.uid` is accepted, and it must be a tab uid. Pre-created tabs under uninitialized pages are not supported by this action."
|
|
1418
608
|
),
|
|
1419
|
-
requestBody: requestBody("FlowSurfaceUpdateTabRequest",
|
|
609
|
+
requestBody: requestBody("FlowSurfaceUpdateTabRequest", import_flow_surfaces.flowSurfaceExamples.updateTab),
|
|
1420
610
|
responses: responses("FlowSurfaceUpdateTabResult")
|
|
1421
611
|
},
|
|
1422
612
|
moveTab: {
|
|
@@ -1449,7 +639,7 @@ const actionDocs = {
|
|
|
1449
639
|
description: valuesCompatibilityNote(
|
|
1450
640
|
"Adds a persisted child-tab subtree under an existing popup page (`ChildPageModel`). It only works on `ChildPageModel / ChildPageTabModel`, does not read or write `desktopRoutes`, and does not auto-create a popup page."
|
|
1451
641
|
),
|
|
1452
|
-
requestBody: requestBody("FlowSurfaceAddPopupTabRequest",
|
|
642
|
+
requestBody: requestBody("FlowSurfaceAddPopupTabRequest", import_flow_surfaces.flowSurfaceExamples.addPopupTab),
|
|
1453
643
|
responses: responses("FlowSurfaceAddPopupTabResult")
|
|
1454
644
|
},
|
|
1455
645
|
updatePopupTab: {
|
|
@@ -1458,7 +648,7 @@ const actionDocs = {
|
|
|
1458
648
|
description: valuesCompatibilityNote(
|
|
1459
649
|
"Updates the props / stepParams / flowRegistry of a popup child tab (`ChildPageTabModel`) itself. Route-backed tab semantics are not involved."
|
|
1460
650
|
),
|
|
1461
|
-
requestBody: requestBody("FlowSurfaceUpdatePopupTabRequest",
|
|
651
|
+
requestBody: requestBody("FlowSurfaceUpdatePopupTabRequest", import_flow_surfaces.flowSurfaceExamples.updatePopupTab),
|
|
1462
652
|
responses: responses("FlowSurfaceUpdatePopupTabResult")
|
|
1463
653
|
},
|
|
1464
654
|
movePopupTab: {
|
|
@@ -1467,7 +657,7 @@ const actionDocs = {
|
|
|
1467
657
|
description: valuesCompatibilityNote(
|
|
1468
658
|
"Reorders `subModels.tabs` under the same popup page. Only root-level `sourceUid` / `targetUid` are accepted, and both must be sibling popup-tab uids."
|
|
1469
659
|
),
|
|
1470
|
-
requestBody: requestBody("FlowSurfaceMovePopupTabRequest",
|
|
660
|
+
requestBody: requestBody("FlowSurfaceMovePopupTabRequest", import_flow_surfaces.flowSurfaceExamples.movePopupTab),
|
|
1471
661
|
responses: responses("FlowSurfaceMovePopupTabResult")
|
|
1472
662
|
},
|
|
1473
663
|
removePopupTab: {
|
|
@@ -1476,14 +666,14 @@ const actionDocs = {
|
|
|
1476
666
|
description: valuesCompatibilityNote(
|
|
1477
667
|
"Removes the specified popup child-tab subtree. It is valid for the popup to end with 0 tabs. `removePopup` is not provided in this iteration, and the popup page is not required to keep at least one tab."
|
|
1478
668
|
),
|
|
1479
|
-
requestBody: requestBody("FlowSurfaceRemovePopupTabRequest",
|
|
669
|
+
requestBody: requestBody("FlowSurfaceRemovePopupTabRequest", import_flow_surfaces.flowSurfaceExamples.removePopupTab),
|
|
1480
670
|
responses: responses("FlowSurfaceRemovePopupTabResult")
|
|
1481
671
|
},
|
|
1482
672
|
addBlock: {
|
|
1483
673
|
tags: [FLOW_SURFACES_TAG],
|
|
1484
674
|
summary: "Add a block under a surface or grid container",
|
|
1485
675
|
description: valuesCompatibilityNote(
|
|
1486
|
-
|
|
676
|
+
'Creates a block by catalog key or an explicitly supported block use. It can also create from `template`, using `mode="reference"` or `mode="copy"`. Form templates may set `template.usage="fields"` to create a fresh host block and import only its grid fields. Popup-capable host nodes automatically receive the popup shell. For collection blocks under a popup, check `catalog.blocks[].resourceBindings` first, then pass the semantic `resource.binding`. The lower-level `resourceInit` is still accepted for compatibility, but the server validates it against popup semantics. `resource` and `resourceInit` are mutually exclusive. The `select / subForm / bulkEditForm` scene is currently recognized only, and popup collection block creation is not supported in that scene. Direct add does not accept raw `props` / `decoratorProps` / `stepParams` / `flowRegistry`. Use `settings` and reuse the public configuration semantics from `configure.changes` plus the catalog item/node `configureOptions`.'
|
|
1487
677
|
),
|
|
1488
678
|
requestBody: {
|
|
1489
679
|
required: true,
|
|
@@ -1493,19 +683,19 @@ const actionDocs = {
|
|
|
1493
683
|
examples: {
|
|
1494
684
|
popupCurrentRecord: {
|
|
1495
685
|
summary: "Create a current-record details block under a popup-capable host node",
|
|
1496
|
-
value:
|
|
686
|
+
value: import_flow_surfaces.flowSurfaceExamples.addBlock
|
|
1497
687
|
},
|
|
1498
688
|
popupAssociatedRecords: {
|
|
1499
689
|
summary: "Create an associated-records table block under an association-field popup host node",
|
|
1500
|
-
value:
|
|
690
|
+
value: import_flow_surfaces.flowSurfaceExamples.addPopupAssociatedBlock
|
|
1501
691
|
},
|
|
1502
692
|
popupOtherRecords: {
|
|
1503
693
|
summary: "Create a table bound to another collection explicitly under a popup host node",
|
|
1504
|
-
value:
|
|
694
|
+
value: import_flow_surfaces.flowSurfaceExamples.addPopupOtherRecordsBlock
|
|
1505
695
|
},
|
|
1506
696
|
jsBlock: {
|
|
1507
697
|
summary: "Create a JS block directly under a page/tab/grid container",
|
|
1508
|
-
value:
|
|
698
|
+
value: import_flow_surfaces.flowSurfaceExamples.addJsBlock
|
|
1509
699
|
}
|
|
1510
700
|
}
|
|
1511
701
|
}
|
|
@@ -1517,7 +707,7 @@ const actionDocs = {
|
|
|
1517
707
|
tags: [FLOW_SURFACES_TAG],
|
|
1518
708
|
summary: "Add a field wrapper and inner field under a field container",
|
|
1519
709
|
description: valuesCompatibilityNote(
|
|
1520
|
-
"Automatically derives the wrapper/inner-field combination from the container use and the field interface. `fieldUse` is only kept as a compatibility check and is no longer an arbitrary creation entry. Direct add does not accept raw `wrapperProps` / `fieldProps` / `props` / `decoratorProps` / `stepParams` / `flowRegistry`. Use `settings` and reuse the public configuration semantics from `configure.changes` / `
|
|
710
|
+
"Automatically derives the wrapper/inner-field combination from the container use and the field interface. It can also import a form template through `template`, using `reference` or `copy` mode for the target form grid. `fieldUse` is only kept as a compatibility check and is no longer an arbitrary creation entry. Direct add does not accept raw `wrapperProps` / `fieldProps` / `props` / `decoratorProps` / `stepParams` / `flowRegistry`. Use `settings` and reuse the public configuration semantics from `configure.changes` plus the catalog item/node `configureOptions`. Popup-capable fields can also pass `popup` directly to append a local popup subtree or `popup.template` to reuse a saved popup template in `reference` / `copy` mode. If local openView is enabled but no popup content is provided, the server fills in the popup page/tab/grid shell automatically."
|
|
1521
711
|
),
|
|
1522
712
|
requestBody: {
|
|
1523
713
|
required: true,
|
|
@@ -1527,19 +717,23 @@ const actionDocs = {
|
|
|
1527
717
|
examples: {
|
|
1528
718
|
directField: {
|
|
1529
719
|
summary: "Create a JS renderer bound field under a create form",
|
|
1530
|
-
value:
|
|
720
|
+
value: import_flow_surfaces.flowSurfaceExamples.addField
|
|
1531
721
|
},
|
|
1532
722
|
associationField: {
|
|
1533
723
|
summary: "Create an association-path field under a table block",
|
|
1534
|
-
value:
|
|
724
|
+
value: import_flow_surfaces.flowSurfaceExamples.addAssociationField
|
|
1535
725
|
},
|
|
1536
726
|
jsColumn: {
|
|
1537
727
|
summary: "Create a standalone JS column under a table field container",
|
|
1538
|
-
value:
|
|
728
|
+
value: import_flow_surfaces.flowSurfaceExamples.addJsColumn
|
|
1539
729
|
},
|
|
1540
730
|
jsItem: {
|
|
1541
731
|
summary: "Create a standalone JS item under a form field container",
|
|
1542
|
-
value:
|
|
732
|
+
value: import_flow_surfaces.flowSurfaceExamples.addJsItem
|
|
733
|
+
},
|
|
734
|
+
popupTemplate: {
|
|
735
|
+
summary: "Create a bound field that reuses a saved popup template",
|
|
736
|
+
value: import_flow_surfaces.flowSurfaceExamples.addFieldPopupTemplate
|
|
1543
737
|
}
|
|
1544
738
|
}
|
|
1545
739
|
}
|
|
@@ -1551,7 +745,7 @@ const actionDocs = {
|
|
|
1551
745
|
tags: [FLOW_SURFACES_TAG],
|
|
1552
746
|
summary: "Add a non-record action under an allowed block/form/filter-form/action-panel container",
|
|
1553
747
|
description: valuesCompatibilityNote(
|
|
1554
|
-
"Only non-record actions that are public in the catalog and visible in the current container may be created. Typical cases include table block actions, form submit, filter-form reset, and action-panel actions. Use `addRecordAction` for record actions. Direct add does not accept raw `props` / `decoratorProps` / `stepParams` / `flowRegistry`. Use `settings` and reuse `configure.changes` / `
|
|
748
|
+
"Only non-record actions that are public in the catalog and visible in the current container may be created. Typical cases include table block actions, form submit, filter-form reset, and action-panel actions. Use `addRecordAction` for record actions. Direct add does not accept raw `props` / `decoratorProps` / `stepParams` / `flowRegistry`. Use `settings` and reuse `configure.changes` plus the catalog item/node `configureOptions`. Popup-capable actions may also include `popup` directly to append a popup subtree or `popup.template` to reuse a saved popup template in `reference` / `copy` mode."
|
|
1555
749
|
),
|
|
1556
750
|
requestBody: {
|
|
1557
751
|
required: true,
|
|
@@ -1561,19 +755,19 @@ const actionDocs = {
|
|
|
1561
755
|
examples: {
|
|
1562
756
|
submit: {
|
|
1563
757
|
summary: "Create a submit action under a filter-form action container",
|
|
1564
|
-
value:
|
|
758
|
+
value: import_flow_surfaces.flowSurfaceExamples.addAction
|
|
1565
759
|
},
|
|
1566
760
|
link: {
|
|
1567
761
|
summary: "Create a link action under a table block action container",
|
|
1568
|
-
value:
|
|
762
|
+
value: import_flow_surfaces.flowSurfaceExamples.addLinkAction
|
|
1569
763
|
},
|
|
1570
764
|
js: {
|
|
1571
765
|
summary: "Create a JS action under an action-panel container",
|
|
1572
|
-
value:
|
|
766
|
+
value: import_flow_surfaces.flowSurfaceExamples.addJsAction
|
|
1573
767
|
},
|
|
1574
768
|
jsItem: {
|
|
1575
769
|
summary: "Create a form JS item action under a create/edit/form action container",
|
|
1576
|
-
value:
|
|
770
|
+
value: import_flow_surfaces.flowSurfaceExamples.addJsItemAction
|
|
1577
771
|
}
|
|
1578
772
|
}
|
|
1579
773
|
}
|
|
@@ -1585,7 +779,7 @@ const actionDocs = {
|
|
|
1585
779
|
tags: [FLOW_SURFACES_TAG],
|
|
1586
780
|
summary: "Add a record action under a record-capable owner target",
|
|
1587
781
|
description: valuesCompatibilityNote(
|
|
1588
|
-
"Only record actions that are public in the catalog and visible in the current container may be created. The public target must be a record-capable owner target such as table/details/list/gridCard. Do not pass internal container uids such as a table actions column or a list/gridCard item. Direct add does not accept raw `props` / `decoratorProps` / `stepParams` / `flowRegistry`. Use `settings` and reuse `configure.changes` / `
|
|
782
|
+
"Only record actions that are public in the catalog and visible in the current container may be created. The public target must be a record-capable owner target such as table/details/list/gridCard. Do not pass internal container uids such as a table actions column or a list/gridCard item. Direct add does not accept raw `props` / `decoratorProps` / `stepParams` / `flowRegistry`. Use `settings` and reuse `configure.changes` plus the catalog item/node `configureOptions`. Popup-capable actions may also include `popup` directly to append a popup subtree or `popup.template` to reuse a saved popup template in `reference` / `copy` mode."
|
|
1589
783
|
),
|
|
1590
784
|
requestBody: {
|
|
1591
785
|
required: true,
|
|
@@ -1595,11 +789,11 @@ const actionDocs = {
|
|
|
1595
789
|
examples: {
|
|
1596
790
|
view: {
|
|
1597
791
|
summary: "Create a view action under a table record-action owner target",
|
|
1598
|
-
value:
|
|
792
|
+
value: import_flow_surfaces.flowSurfaceExamples.addRecordAction
|
|
1599
793
|
},
|
|
1600
794
|
js: {
|
|
1601
795
|
summary: "Create a JS record action under a details block owner target",
|
|
1602
|
-
value:
|
|
796
|
+
value: import_flow_surfaces.flowSurfaceExamples.addRecordJsAction
|
|
1603
797
|
}
|
|
1604
798
|
}
|
|
1605
799
|
}
|
|
@@ -1611,18 +805,18 @@ const actionDocs = {
|
|
|
1611
805
|
tags: [FLOW_SURFACES_TAG],
|
|
1612
806
|
summary: "Add multiple blocks sequentially under the same target",
|
|
1613
807
|
description: valuesCompatibilityNote(
|
|
1614
|
-
"Creates multiple blocks sequentially under the same target. Each item may include `settings`, but raw `props` / `decoratorProps` / `stepParams` / `flowRegistry` are not accepted. Partial-success semantics apply: a failure in one item does not roll back the others. Results are returned in input order as `index/key/ok/result/error`, and each `error` always includes `message/type/code/status`."
|
|
808
|
+
"Creates multiple blocks sequentially under the same target. Each item may include `settings` or `template`, but raw `props` / `decoratorProps` / `stepParams` / `flowRegistry` are not accepted. Partial-success semantics apply: a failure in one item does not roll back the others. Results are returned in input order as `index/key/ok/result/error`, and each `error` always includes `message/type/code/status`."
|
|
1615
809
|
),
|
|
1616
|
-
requestBody: requestBody("FlowSurfaceAddBlocksRequest",
|
|
810
|
+
requestBody: requestBody("FlowSurfaceAddBlocksRequest", import_flow_surfaces.flowSurfaceExamples.addBlocks),
|
|
1617
811
|
responses: responses("FlowSurfaceAddBlocksResult")
|
|
1618
812
|
},
|
|
1619
813
|
addFields: {
|
|
1620
814
|
tags: [FLOW_SURFACES_TAG],
|
|
1621
815
|
summary: "Add multiple fields sequentially under the same target",
|
|
1622
816
|
description: valuesCompatibilityNote(
|
|
1623
|
-
"Creates multiple fields sequentially under the same target. Each item may include `settings`, and popup-capable fields may also include `popup
|
|
817
|
+
"Creates multiple fields sequentially under the same target. The request may either import one shared `template` or create explicit `fields[]`. Each item may include `settings`, and popup-capable fields may also include `popup` directly for local popup content or `popup.template` to reuse a saved popup template in `reference` / `copy` mode. Raw `wrapperProps` / `fieldProps` / `props` / `decoratorProps` / `stepParams` / `flowRegistry` are not accepted. Partial-success semantics apply: a failure in one item does not roll back the others. Results are returned in input order as `index/key/ok/result/error`, and each `error` always includes `message/type/code/status`."
|
|
1624
818
|
),
|
|
1625
|
-
requestBody: requestBody("FlowSurfaceAddFieldsRequest",
|
|
819
|
+
requestBody: requestBody("FlowSurfaceAddFieldsRequest", import_flow_surfaces.flowSurfaceExamples.addFields),
|
|
1626
820
|
responses: responses("FlowSurfaceAddFieldsResult")
|
|
1627
821
|
},
|
|
1628
822
|
addActions: {
|
|
@@ -1631,7 +825,7 @@ const actionDocs = {
|
|
|
1631
825
|
description: valuesCompatibilityNote(
|
|
1632
826
|
"Creates multiple non-record actions sequentially under the same target. Each item may include `settings`, and popup-capable actions may also include `popup`, but raw `props` / `decoratorProps` / `stepParams` / `flowRegistry` are not accepted. Partial-success semantics apply. Record actions do not belong to this entry and should use `addRecordActions` instead. Each failed item always returns an `error` with `message/type/code/status`."
|
|
1633
827
|
),
|
|
1634
|
-
requestBody: requestBody("FlowSurfaceAddActionsRequest",
|
|
828
|
+
requestBody: requestBody("FlowSurfaceAddActionsRequest", import_flow_surfaces.flowSurfaceExamples.addActions),
|
|
1635
829
|
responses: responses("FlowSurfaceAddActionsResult")
|
|
1636
830
|
},
|
|
1637
831
|
addRecordActions: {
|
|
@@ -1640,7 +834,7 @@ const actionDocs = {
|
|
|
1640
834
|
description: valuesCompatibilityNote(
|
|
1641
835
|
"Creates multiple record actions sequentially under the same target. The target must be a record-capable owner target, and the server resolves the canonical record-action container automatically. Do not pass internal container uids such as a table actions column or a list/gridCard item. Each item may include `settings`, and popup-capable actions may also include `popup`, but raw `props` / `decoratorProps` / `stepParams` / `flowRegistry` are not accepted. Partial-success semantics apply: a failure in one item does not roll back the others. Each failed item always returns an `error` with `message/type/code/status`."
|
|
1642
836
|
),
|
|
1643
|
-
requestBody: requestBody("FlowSurfaceAddRecordActionsRequest",
|
|
837
|
+
requestBody: requestBody("FlowSurfaceAddRecordActionsRequest", import_flow_surfaces.flowSurfaceExamples.addRecordActions),
|
|
1644
838
|
responses: responses("FlowSurfaceAddRecordActionsResult")
|
|
1645
839
|
},
|
|
1646
840
|
updateSettings: {
|
|
@@ -1649,7 +843,7 @@ const actionDocs = {
|
|
|
1649
843
|
description: valuesCompatibilityNote(
|
|
1650
844
|
"Updates the specified domain according to the path-level contract exposed by the catalog. Arbitrary raw tree-field patches are not accepted."
|
|
1651
845
|
),
|
|
1652
|
-
requestBody: requestBody("FlowSurfaceUpdateSettingsRequest",
|
|
846
|
+
requestBody: requestBody("FlowSurfaceUpdateSettingsRequest", import_flow_surfaces.flowSurfaceExamples.updateSettings),
|
|
1653
847
|
responses: responses("FlowSurfaceUpdateSettingsResult")
|
|
1654
848
|
},
|
|
1655
849
|
setEventFlows: {
|
|
@@ -1658,7 +852,7 @@ const actionDocs = {
|
|
|
1658
852
|
description: valuesCompatibilityNote(
|
|
1659
853
|
"Fully replaces the instance-level event flows on the current node. The server validates whether eventName, flowKey, stepKey, and the node context are all valid."
|
|
1660
854
|
),
|
|
1661
|
-
requestBody: requestBody("FlowSurfaceSetEventFlowsRequest",
|
|
855
|
+
requestBody: requestBody("FlowSurfaceSetEventFlowsRequest", import_flow_surfaces.flowSurfaceExamples.setEventFlows),
|
|
1662
856
|
responses: responses("FlowSurfaceSetEventFlowsResult")
|
|
1663
857
|
},
|
|
1664
858
|
setLayout: {
|
|
@@ -1667,14 +861,14 @@ const actionDocs = {
|
|
|
1667
861
|
description: valuesCompatibilityNote(
|
|
1668
862
|
"Fully writes the grid layout. The server strictly validates that every child is covered completely and exactly once."
|
|
1669
863
|
),
|
|
1670
|
-
requestBody: requestBody("FlowSurfaceSetLayoutRequest",
|
|
864
|
+
requestBody: requestBody("FlowSurfaceSetLayoutRequest", import_flow_surfaces.flowSurfaceExamples.setLayout),
|
|
1671
865
|
responses: responses("FlowSurfaceSetLayoutResult")
|
|
1672
866
|
},
|
|
1673
867
|
moveNode: {
|
|
1674
868
|
tags: [FLOW_SURFACES_TAG],
|
|
1675
869
|
summary: "Move a node before or after a sibling under the same parent",
|
|
1676
870
|
description: valuesCompatibilityNote("Only sibling-node reordering under the same parent/subKey is supported."),
|
|
1677
|
-
requestBody: requestBody("FlowSurfaceMoveNodeRequest",
|
|
871
|
+
requestBody: requestBody("FlowSurfaceMoveNodeRequest", import_flow_surfaces.flowSurfaceExamples.moveNode),
|
|
1678
872
|
responses: responses("FlowSurfaceMoveNodeResult")
|
|
1679
873
|
},
|
|
1680
874
|
removeNode: {
|
|
@@ -1683,16 +877,16 @@ const actionDocs = {
|
|
|
1683
877
|
description: valuesCompatibilityNote(
|
|
1684
878
|
"Removes the specified normal node and its subtree. Only `target.uid` is accepted. If you only have `pageSchemaUid / tabSchemaUid / routeId`, call `flowSurfaces:get` first. `removeNode` is not used for page/tab deletion. Use `destroyPage` for pages and `removeTab` for tabs."
|
|
1685
879
|
),
|
|
1686
|
-
requestBody: requestBody("FlowSurfaceRemoveNodeRequest",
|
|
880
|
+
requestBody: requestBody("FlowSurfaceRemoveNodeRequest", import_flow_surfaces.flowSurfaceExamples.removeNode),
|
|
1687
881
|
responses: responses("FlowSurfaceRemoveNodeResult")
|
|
1688
882
|
},
|
|
1689
883
|
mutate: {
|
|
1690
884
|
tags: [FLOW_SURFACES_TAG],
|
|
1691
885
|
summary: "Execute multiple operations atomically",
|
|
1692
886
|
description: valuesCompatibilityNote(
|
|
1693
|
-
'Executes `ops[]` in order and supports `opId` plus `{
|
|
887
|
+
'Executes `ops[]` in order and supports `opId` plus `{ step: "<opId>", path: "<field>" }` references to earlier results. `{ key: "<opId>" }` reads the whole previous result object. V1 only supports `atomic=true`.'
|
|
1694
888
|
),
|
|
1695
|
-
requestBody: requestBody("FlowSurfaceMutateRequest",
|
|
889
|
+
requestBody: requestBody("FlowSurfaceMutateRequest", import_flow_surfaces.flowSurfaceExamples.mutate),
|
|
1696
890
|
responses: responses("FlowSurfaceMutationResponse")
|
|
1697
891
|
},
|
|
1698
892
|
apply: {
|
|
@@ -1701,7 +895,7 @@ const actionDocs = {
|
|
|
1701
895
|
description: valuesCompatibilityNote(
|
|
1702
896
|
'Accepts a complete subtree spec and compiles it into an operation sequence isomorphic to `mutate`. V1 only supports `mode="replace"`.'
|
|
1703
897
|
),
|
|
1704
|
-
requestBody: requestBody("FlowSurfaceApplyRequest",
|
|
898
|
+
requestBody: requestBody("FlowSurfaceApplyRequest", import_flow_surfaces.flowSurfaceExamples.apply),
|
|
1705
899
|
responses: responses("FlowSurfaceMutationResponse")
|
|
1706
900
|
}
|
|
1707
901
|
};
|
|
@@ -1714,7 +908,7 @@ const parameters = {
|
|
|
1714
908
|
schema: {
|
|
1715
909
|
type: "string"
|
|
1716
910
|
},
|
|
1717
|
-
example:
|
|
911
|
+
example: import_flow_surfaces.flowSurfaceExamples.getPopupQuery.uid
|
|
1718
912
|
},
|
|
1719
913
|
flowSurfaceTargetPageSchemaUid: {
|
|
1720
914
|
name: "pageSchemaUid",
|
|
@@ -1748,22 +942,22 @@ const parameters = {
|
|
|
1748
942
|
}
|
|
1749
943
|
};
|
|
1750
944
|
const schemas = {
|
|
1751
|
-
|
|
945
|
+
FlowSurfaceMutateKey: {
|
|
1752
946
|
type: "object",
|
|
1753
|
-
required: ["
|
|
947
|
+
required: ["key"],
|
|
1754
948
|
properties: {
|
|
1755
|
-
|
|
949
|
+
key: {
|
|
1756
950
|
type: "string",
|
|
1757
|
-
description: "Reference to a
|
|
951
|
+
description: "Reference to a previously created runtime key, for example a prior mutate `opId`."
|
|
1758
952
|
}
|
|
1759
953
|
},
|
|
1760
954
|
additionalProperties: false
|
|
1761
955
|
},
|
|
1762
956
|
FlowSurfaceResolvableString: {
|
|
1763
|
-
oneOf: [{ type: "string" }, ref("
|
|
957
|
+
oneOf: [{ type: "string" }, ref("FlowSurfaceMutateKey"), ref("FlowSurfacePlanSelectorByStep")]
|
|
1764
958
|
},
|
|
1765
959
|
FlowSurfaceResolvableIdentifier: {
|
|
1766
|
-
oneOf: [{ type: "string" }, { type: "integer" }, ref("
|
|
960
|
+
oneOf: [{ type: "string" }, { type: "integer" }, ref("FlowSurfaceMutateKey"), ref("FlowSurfacePlanSelectorByStep")]
|
|
1767
961
|
},
|
|
1768
962
|
FlowSurfaceWriteTarget: {
|
|
1769
963
|
type: "object",
|
|
@@ -1841,53 +1035,130 @@ const schemas = {
|
|
|
1841
1035
|
},
|
|
1842
1036
|
additionalProperties: false
|
|
1843
1037
|
},
|
|
1844
|
-
|
|
1038
|
+
FlowSurfacePlanSelectorByStep: {
|
|
1845
1039
|
type: "object",
|
|
1040
|
+
required: ["step"],
|
|
1846
1041
|
properties: {
|
|
1847
|
-
|
|
1848
|
-
type: "string",
|
|
1849
|
-
enum: ["string", "number", "boolean", "object", "array"]
|
|
1850
|
-
},
|
|
1851
|
-
description: {
|
|
1042
|
+
step: {
|
|
1852
1043
|
type: "string"
|
|
1853
1044
|
},
|
|
1854
|
-
|
|
1855
|
-
type: "
|
|
1856
|
-
items: {
|
|
1857
|
-
oneOf: [{ type: "string" }, { type: "number" }, { type: "boolean" }]
|
|
1858
|
-
}
|
|
1859
|
-
},
|
|
1860
|
-
example: {},
|
|
1861
|
-
supportsFlowContext: {
|
|
1862
|
-
type: "boolean"
|
|
1045
|
+
path: {
|
|
1046
|
+
type: "string"
|
|
1863
1047
|
}
|
|
1864
1048
|
},
|
|
1865
|
-
required: ["type"],
|
|
1866
1049
|
additionalProperties: false
|
|
1867
1050
|
},
|
|
1868
|
-
|
|
1869
|
-
type: "object",
|
|
1870
|
-
additionalProperties: ref("FlowSurfaceConfigureOption")
|
|
1871
|
-
},
|
|
1872
|
-
FlowSurfaceNodeDomain: {
|
|
1873
|
-
type: "string",
|
|
1874
|
-
enum: ["props", "decoratorProps", "stepParams", "flowRegistry"]
|
|
1875
|
-
},
|
|
1876
|
-
FlowSurfaceMergeStrategy: {
|
|
1877
|
-
type: "string",
|
|
1878
|
-
enum: ["deep", "replace"]
|
|
1879
|
-
},
|
|
1880
|
-
FlowSurfaceFilterCondition: {
|
|
1051
|
+
FlowSurfaceBindKey: {
|
|
1881
1052
|
type: "object",
|
|
1053
|
+
required: ["key", "locator"],
|
|
1882
1054
|
properties: {
|
|
1883
|
-
|
|
1055
|
+
key: {
|
|
1884
1056
|
type: "string"
|
|
1885
1057
|
},
|
|
1886
|
-
|
|
1887
|
-
|
|
1058
|
+
locator: ref("FlowSurfaceReadLocator"),
|
|
1059
|
+
expectedKind: {
|
|
1060
|
+
type: "string",
|
|
1061
|
+
enum: ["page", "tab", "grid", "block", "fieldHost", "action", "popupHost", "popupPage", "popupTab", "node"]
|
|
1888
1062
|
},
|
|
1889
|
-
|
|
1890
|
-
|
|
1063
|
+
rebind: {
|
|
1064
|
+
type: "boolean"
|
|
1065
|
+
}
|
|
1066
|
+
},
|
|
1067
|
+
additionalProperties: false
|
|
1068
|
+
},
|
|
1069
|
+
FlowSurfaceKeyInfo: {
|
|
1070
|
+
type: "object",
|
|
1071
|
+
properties: {
|
|
1072
|
+
uid: {
|
|
1073
|
+
type: "string"
|
|
1074
|
+
},
|
|
1075
|
+
kind: {
|
|
1076
|
+
type: "string"
|
|
1077
|
+
},
|
|
1078
|
+
source: {
|
|
1079
|
+
type: "string",
|
|
1080
|
+
enum: ["declared", "request", "system"]
|
|
1081
|
+
},
|
|
1082
|
+
locator: ref("FlowSurfaceReadLocator")
|
|
1083
|
+
},
|
|
1084
|
+
additionalProperties: false
|
|
1085
|
+
},
|
|
1086
|
+
FlowSurfaceKeysMap: {
|
|
1087
|
+
type: "object",
|
|
1088
|
+
additionalProperties: ref("FlowSurfaceKeyInfo")
|
|
1089
|
+
},
|
|
1090
|
+
FlowSurfaceResolvedSelectorSummary: {
|
|
1091
|
+
type: "object",
|
|
1092
|
+
properties: {
|
|
1093
|
+
uid: {
|
|
1094
|
+
type: "string"
|
|
1095
|
+
},
|
|
1096
|
+
kind: {
|
|
1097
|
+
type: "string"
|
|
1098
|
+
},
|
|
1099
|
+
key: {
|
|
1100
|
+
type: "string"
|
|
1101
|
+
},
|
|
1102
|
+
source: {
|
|
1103
|
+
type: "string",
|
|
1104
|
+
enum: ["declared", "request", "system", "step"]
|
|
1105
|
+
},
|
|
1106
|
+
step: {
|
|
1107
|
+
type: "string"
|
|
1108
|
+
},
|
|
1109
|
+
path: {
|
|
1110
|
+
type: "string"
|
|
1111
|
+
}
|
|
1112
|
+
},
|
|
1113
|
+
additionalProperties: false
|
|
1114
|
+
},
|
|
1115
|
+
FlowSurfaceConfigureOption: {
|
|
1116
|
+
type: "object",
|
|
1117
|
+
properties: {
|
|
1118
|
+
type: {
|
|
1119
|
+
type: "string",
|
|
1120
|
+
enum: ["string", "number", "boolean", "object", "array"]
|
|
1121
|
+
},
|
|
1122
|
+
description: {
|
|
1123
|
+
type: "string"
|
|
1124
|
+
},
|
|
1125
|
+
enum: {
|
|
1126
|
+
type: "array",
|
|
1127
|
+
items: {
|
|
1128
|
+
oneOf: [{ type: "string" }, { type: "number" }, { type: "boolean" }]
|
|
1129
|
+
}
|
|
1130
|
+
},
|
|
1131
|
+
example: {},
|
|
1132
|
+
supportsFlowContext: {
|
|
1133
|
+
type: "boolean"
|
|
1134
|
+
}
|
|
1135
|
+
},
|
|
1136
|
+
required: ["type"],
|
|
1137
|
+
additionalProperties: false
|
|
1138
|
+
},
|
|
1139
|
+
FlowSurfaceConfigureOptions: {
|
|
1140
|
+
type: "object",
|
|
1141
|
+
additionalProperties: ref("FlowSurfaceConfigureOption")
|
|
1142
|
+
},
|
|
1143
|
+
FlowSurfaceNodeDomain: {
|
|
1144
|
+
type: "string",
|
|
1145
|
+
enum: ["props", "decoratorProps", "stepParams", "flowRegistry"]
|
|
1146
|
+
},
|
|
1147
|
+
FlowSurfaceMergeStrategy: {
|
|
1148
|
+
type: "string",
|
|
1149
|
+
enum: ["deep", "replace"]
|
|
1150
|
+
},
|
|
1151
|
+
FlowSurfaceFilterCondition: {
|
|
1152
|
+
type: "object",
|
|
1153
|
+
properties: {
|
|
1154
|
+
path: {
|
|
1155
|
+
type: "string"
|
|
1156
|
+
},
|
|
1157
|
+
operator: {
|
|
1158
|
+
type: "string"
|
|
1159
|
+
},
|
|
1160
|
+
value: {}
|
|
1161
|
+
},
|
|
1891
1162
|
required: ["path", "operator"],
|
|
1892
1163
|
additionalProperties: true
|
|
1893
1164
|
},
|
|
@@ -1968,505 +1239,1762 @@ const schemas = {
|
|
|
1968
1239
|
},
|
|
1969
1240
|
additionalProperties: false
|
|
1970
1241
|
},
|
|
1971
|
-
FlowSurfaceDomainContract: {
|
|
1242
|
+
FlowSurfaceDomainContract: {
|
|
1243
|
+
type: "object",
|
|
1244
|
+
properties: {
|
|
1245
|
+
allowedKeys: {
|
|
1246
|
+
type: "array",
|
|
1247
|
+
items: {
|
|
1248
|
+
type: "string"
|
|
1249
|
+
}
|
|
1250
|
+
},
|
|
1251
|
+
wildcard: {
|
|
1252
|
+
type: "boolean"
|
|
1253
|
+
},
|
|
1254
|
+
mergeStrategy: ref("FlowSurfaceMergeStrategy"),
|
|
1255
|
+
schema: ANY_OBJECT_SCHEMA,
|
|
1256
|
+
groups: {
|
|
1257
|
+
type: "object",
|
|
1258
|
+
additionalProperties: ref("FlowSurfaceDomainGroupContract")
|
|
1259
|
+
}
|
|
1260
|
+
},
|
|
1261
|
+
additionalProperties: false
|
|
1262
|
+
},
|
|
1263
|
+
FlowSurfaceNodeContract: {
|
|
1264
|
+
type: "object",
|
|
1265
|
+
properties: {
|
|
1266
|
+
editableDomains: {
|
|
1267
|
+
type: "array",
|
|
1268
|
+
items: ref("FlowSurfaceNodeDomain")
|
|
1269
|
+
},
|
|
1270
|
+
domains: {
|
|
1271
|
+
type: "object",
|
|
1272
|
+
properties: {
|
|
1273
|
+
props: ref("FlowSurfaceDomainContract"),
|
|
1274
|
+
decoratorProps: ref("FlowSurfaceDomainContract"),
|
|
1275
|
+
stepParams: ref("FlowSurfaceDomainContract"),
|
|
1276
|
+
flowRegistry: ref("FlowSurfaceDomainContract")
|
|
1277
|
+
},
|
|
1278
|
+
additionalProperties: false
|
|
1279
|
+
},
|
|
1280
|
+
eventCapabilities: ref("FlowSurfaceEventCapabilities"),
|
|
1281
|
+
layoutCapabilities: ref("FlowSurfaceLayoutCapabilities"),
|
|
1282
|
+
eventBindings: ANY_OBJECT_SCHEMA
|
|
1283
|
+
},
|
|
1284
|
+
additionalProperties: false
|
|
1285
|
+
},
|
|
1286
|
+
FlowSurfaceCatalogItem: {
|
|
1287
|
+
type: "object",
|
|
1288
|
+
properties: {
|
|
1289
|
+
key: {
|
|
1290
|
+
type: "string"
|
|
1291
|
+
},
|
|
1292
|
+
label: {
|
|
1293
|
+
type: "string"
|
|
1294
|
+
},
|
|
1295
|
+
use: {
|
|
1296
|
+
type: "string"
|
|
1297
|
+
},
|
|
1298
|
+
kind: {
|
|
1299
|
+
type: "string",
|
|
1300
|
+
enum: ["page", "tab", "block", "field", "action"]
|
|
1301
|
+
},
|
|
1302
|
+
scope: {
|
|
1303
|
+
type: "string",
|
|
1304
|
+
enum: ["block", "record", "form", "filterForm", "actionPanel"]
|
|
1305
|
+
},
|
|
1306
|
+
scene: {
|
|
1307
|
+
type: "string"
|
|
1308
|
+
},
|
|
1309
|
+
fieldUse: {
|
|
1310
|
+
type: "string"
|
|
1311
|
+
},
|
|
1312
|
+
wrapperUse: {
|
|
1313
|
+
type: "string"
|
|
1314
|
+
},
|
|
1315
|
+
associationPathName: {
|
|
1316
|
+
type: "string",
|
|
1317
|
+
nullable: true
|
|
1318
|
+
},
|
|
1319
|
+
defaultTargetUid: {
|
|
1320
|
+
type: "string"
|
|
1321
|
+
},
|
|
1322
|
+
targetBlockUid: {
|
|
1323
|
+
type: "string"
|
|
1324
|
+
},
|
|
1325
|
+
requiredInitParams: {
|
|
1326
|
+
type: "array",
|
|
1327
|
+
items: {
|
|
1328
|
+
type: "string"
|
|
1329
|
+
}
|
|
1330
|
+
},
|
|
1331
|
+
allowedContainerUses: {
|
|
1332
|
+
type: "array",
|
|
1333
|
+
items: {
|
|
1334
|
+
type: "string"
|
|
1335
|
+
}
|
|
1336
|
+
},
|
|
1337
|
+
editableDomains: {
|
|
1338
|
+
type: "array",
|
|
1339
|
+
items: ref("FlowSurfaceNodeDomain")
|
|
1340
|
+
},
|
|
1341
|
+
configureOptions: ref("FlowSurfaceConfigureOptions"),
|
|
1342
|
+
resourceBindings: {
|
|
1343
|
+
type: "array",
|
|
1344
|
+
items: ref("FlowSurfaceResourceBindingOption")
|
|
1345
|
+
},
|
|
1346
|
+
settingsSchema: ANY_OBJECT_SCHEMA,
|
|
1347
|
+
settingsContract: {
|
|
1348
|
+
type: "object",
|
|
1349
|
+
properties: {
|
|
1350
|
+
props: ref("FlowSurfaceDomainContract"),
|
|
1351
|
+
decoratorProps: ref("FlowSurfaceDomainContract"),
|
|
1352
|
+
stepParams: ref("FlowSurfaceDomainContract"),
|
|
1353
|
+
flowRegistry: ref("FlowSurfaceDomainContract")
|
|
1354
|
+
},
|
|
1355
|
+
additionalProperties: false
|
|
1356
|
+
},
|
|
1357
|
+
eventCapabilities: ref("FlowSurfaceEventCapabilities"),
|
|
1358
|
+
layoutCapabilities: ref("FlowSurfaceLayoutCapabilities"),
|
|
1359
|
+
createSupported: {
|
|
1360
|
+
type: "boolean"
|
|
1361
|
+
}
|
|
1362
|
+
},
|
|
1363
|
+
additionalProperties: true
|
|
1364
|
+
},
|
|
1365
|
+
FlowSurfaceCatalogSection: {
|
|
1366
|
+
type: "string",
|
|
1367
|
+
enum: ["blocks", "fields", "actions", "recordActions", "node"]
|
|
1368
|
+
},
|
|
1369
|
+
FlowSurfaceCatalogExpand: {
|
|
1370
|
+
type: "string",
|
|
1371
|
+
enum: ["item.configureOptions", "item.contracts", "item.allowedContainerUses", "node.contracts"]
|
|
1372
|
+
},
|
|
1373
|
+
FlowSurfaceCatalogPopupScenario: {
|
|
1374
|
+
type: "object",
|
|
1375
|
+
required: ["kind", "scene", "hasCurrentRecord", "hasAssociationContext"],
|
|
1376
|
+
properties: {
|
|
1377
|
+
kind: {
|
|
1378
|
+
type: "string",
|
|
1379
|
+
enum: ["plainPopup", "recordPopup", "associationPopup"]
|
|
1380
|
+
},
|
|
1381
|
+
scene: {
|
|
1382
|
+
type: "string",
|
|
1383
|
+
enum: ["new", "one", "many", "select", "subForm", "bulkEditForm", "generic"]
|
|
1384
|
+
},
|
|
1385
|
+
hasCurrentRecord: {
|
|
1386
|
+
type: "boolean"
|
|
1387
|
+
},
|
|
1388
|
+
hasAssociationContext: {
|
|
1389
|
+
type: "boolean"
|
|
1390
|
+
}
|
|
1391
|
+
},
|
|
1392
|
+
additionalProperties: false
|
|
1393
|
+
},
|
|
1394
|
+
FlowSurfaceCatalogFieldContainerScenario: {
|
|
1395
|
+
type: "object",
|
|
1396
|
+
required: ["kind"],
|
|
1397
|
+
properties: {
|
|
1398
|
+
kind: {
|
|
1399
|
+
type: "string",
|
|
1400
|
+
enum: ["form", "details", "table", "filter-form"]
|
|
1401
|
+
},
|
|
1402
|
+
targetMode: {
|
|
1403
|
+
type: "string",
|
|
1404
|
+
enum: ["single", "multiple"]
|
|
1405
|
+
}
|
|
1406
|
+
},
|
|
1407
|
+
additionalProperties: false
|
|
1408
|
+
},
|
|
1409
|
+
FlowSurfaceCatalogActionContainerScenario: {
|
|
1410
|
+
type: "object",
|
|
1411
|
+
required: ["scope"],
|
|
1412
|
+
properties: {
|
|
1413
|
+
scope: {
|
|
1414
|
+
type: "string",
|
|
1415
|
+
enum: ["block", "record", "form", "filterForm", "actionPanel"]
|
|
1416
|
+
},
|
|
1417
|
+
ownerUse: {
|
|
1418
|
+
type: "string"
|
|
1419
|
+
},
|
|
1420
|
+
recordActionContainerUse: {
|
|
1421
|
+
type: "string"
|
|
1422
|
+
}
|
|
1423
|
+
},
|
|
1424
|
+
additionalProperties: false
|
|
1425
|
+
},
|
|
1426
|
+
FlowSurfaceCatalogScenario: {
|
|
1427
|
+
type: "object",
|
|
1428
|
+
required: ["surfaceKind"],
|
|
1429
|
+
properties: {
|
|
1430
|
+
surfaceKind: {
|
|
1431
|
+
type: "string",
|
|
1432
|
+
enum: ["global", "page", "tab", "grid", "block", "node"]
|
|
1433
|
+
},
|
|
1434
|
+
popup: ref("FlowSurfaceCatalogPopupScenario"),
|
|
1435
|
+
fieldContainer: ref("FlowSurfaceCatalogFieldContainerScenario"),
|
|
1436
|
+
actionContainer: ref("FlowSurfaceCatalogActionContainerScenario")
|
|
1437
|
+
},
|
|
1438
|
+
additionalProperties: false
|
|
1439
|
+
},
|
|
1440
|
+
FlowSurfaceCatalogNodeInfo: {
|
|
1441
|
+
type: "object",
|
|
1442
|
+
required: ["editableDomains", "configureOptions"],
|
|
1443
|
+
properties: {
|
|
1444
|
+
editableDomains: {
|
|
1445
|
+
type: "array",
|
|
1446
|
+
items: ref("FlowSurfaceNodeDomain")
|
|
1447
|
+
},
|
|
1448
|
+
configureOptions: ref("FlowSurfaceConfigureOptions"),
|
|
1449
|
+
settingsSchema: ANY_OBJECT_SCHEMA,
|
|
1450
|
+
settingsContract: {
|
|
1451
|
+
type: "object",
|
|
1452
|
+
properties: {
|
|
1453
|
+
props: ref("FlowSurfaceDomainContract"),
|
|
1454
|
+
decoratorProps: ref("FlowSurfaceDomainContract"),
|
|
1455
|
+
stepParams: ref("FlowSurfaceDomainContract"),
|
|
1456
|
+
flowRegistry: ref("FlowSurfaceDomainContract")
|
|
1457
|
+
},
|
|
1458
|
+
additionalProperties: false
|
|
1459
|
+
},
|
|
1460
|
+
eventCapabilities: ref("FlowSurfaceEventCapabilities"),
|
|
1461
|
+
layoutCapabilities: ref("FlowSurfaceLayoutCapabilities")
|
|
1462
|
+
},
|
|
1463
|
+
additionalProperties: false
|
|
1464
|
+
},
|
|
1465
|
+
FlowSurfaceGetTreeNode: {
|
|
1466
|
+
type: "object",
|
|
1467
|
+
properties: {
|
|
1468
|
+
uid: {
|
|
1469
|
+
type: "string"
|
|
1470
|
+
},
|
|
1471
|
+
use: {
|
|
1472
|
+
type: "string"
|
|
1473
|
+
},
|
|
1474
|
+
subKey: {
|
|
1475
|
+
type: "string"
|
|
1476
|
+
},
|
|
1477
|
+
subType: {
|
|
1478
|
+
type: "string"
|
|
1479
|
+
},
|
|
1480
|
+
fieldUse: {
|
|
1481
|
+
type: "string"
|
|
1482
|
+
},
|
|
1483
|
+
schemaUid: {
|
|
1484
|
+
type: "string"
|
|
1485
|
+
},
|
|
1486
|
+
props: ANY_OBJECT_SCHEMA,
|
|
1487
|
+
decoratorProps: ANY_OBJECT_SCHEMA,
|
|
1488
|
+
stepParams: ANY_OBJECT_SCHEMA,
|
|
1489
|
+
flowRegistry: ANY_OBJECT_SCHEMA,
|
|
1490
|
+
template: ref("FlowSurfaceBlockTemplateRef"),
|
|
1491
|
+
fieldsTemplate: ref("FlowSurfaceTemplateRef"),
|
|
1492
|
+
popup: ref("FlowSurfacePopupSummary"),
|
|
1493
|
+
subModels: {
|
|
1494
|
+
type: "object",
|
|
1495
|
+
additionalProperties: {
|
|
1496
|
+
oneOf: [
|
|
1497
|
+
ref("FlowSurfaceGetTreeNode"),
|
|
1498
|
+
{
|
|
1499
|
+
type: "array",
|
|
1500
|
+
items: ref("FlowSurfaceGetTreeNode")
|
|
1501
|
+
}
|
|
1502
|
+
]
|
|
1503
|
+
}
|
|
1504
|
+
}
|
|
1505
|
+
},
|
|
1506
|
+
additionalProperties: true
|
|
1507
|
+
},
|
|
1508
|
+
FlowSurfaceNodeMap: {
|
|
1509
|
+
type: "object",
|
|
1510
|
+
additionalProperties: ref("FlowSurfaceGetTreeNode")
|
|
1511
|
+
},
|
|
1512
|
+
FlowSurfaceRouteMeta: {
|
|
1513
|
+
type: "object",
|
|
1514
|
+
properties: {
|
|
1515
|
+
id: STRING_OR_INTEGER_SCHEMA,
|
|
1516
|
+
type: {
|
|
1517
|
+
type: "string"
|
|
1518
|
+
},
|
|
1519
|
+
title: {
|
|
1520
|
+
type: "string"
|
|
1521
|
+
},
|
|
1522
|
+
icon: {
|
|
1523
|
+
type: "string",
|
|
1524
|
+
nullable: true
|
|
1525
|
+
},
|
|
1526
|
+
schemaUid: {
|
|
1527
|
+
type: "string"
|
|
1528
|
+
},
|
|
1529
|
+
tabSchemaName: {
|
|
1530
|
+
type: "string"
|
|
1531
|
+
},
|
|
1532
|
+
enableTabs: {
|
|
1533
|
+
type: "boolean"
|
|
1534
|
+
},
|
|
1535
|
+
hidden: {
|
|
1536
|
+
type: "boolean"
|
|
1537
|
+
},
|
|
1538
|
+
displayTitle: {
|
|
1539
|
+
type: "boolean"
|
|
1540
|
+
},
|
|
1541
|
+
sort: {
|
|
1542
|
+
type: "number"
|
|
1543
|
+
},
|
|
1544
|
+
options: ANY_OBJECT_SCHEMA,
|
|
1545
|
+
children: {
|
|
1546
|
+
type: "array",
|
|
1547
|
+
items: ref("FlowSurfaceRouteMeta")
|
|
1548
|
+
}
|
|
1549
|
+
},
|
|
1550
|
+
additionalProperties: true
|
|
1551
|
+
},
|
|
1552
|
+
FlowSurfaceNodeSpec: {
|
|
1553
|
+
type: "object",
|
|
1554
|
+
required: ["use"],
|
|
1555
|
+
properties: {
|
|
1556
|
+
uid: {
|
|
1557
|
+
type: "string"
|
|
1558
|
+
},
|
|
1559
|
+
clientKey: {
|
|
1560
|
+
type: "string"
|
|
1561
|
+
},
|
|
1562
|
+
use: {
|
|
1563
|
+
type: "string"
|
|
1564
|
+
},
|
|
1565
|
+
props: ANY_OBJECT_SCHEMA,
|
|
1566
|
+
decoratorProps: ANY_OBJECT_SCHEMA,
|
|
1567
|
+
stepParams: ANY_OBJECT_SCHEMA,
|
|
1568
|
+
flowRegistry: ANY_OBJECT_SCHEMA,
|
|
1569
|
+
subModels: {
|
|
1570
|
+
type: "object",
|
|
1571
|
+
additionalProperties: {
|
|
1572
|
+
oneOf: [
|
|
1573
|
+
ref("FlowSurfaceNodeSpec"),
|
|
1574
|
+
{
|
|
1575
|
+
type: "array",
|
|
1576
|
+
items: ref("FlowSurfaceNodeSpec")
|
|
1577
|
+
}
|
|
1578
|
+
]
|
|
1579
|
+
}
|
|
1580
|
+
}
|
|
1581
|
+
},
|
|
1582
|
+
additionalProperties: false
|
|
1583
|
+
},
|
|
1584
|
+
FlowSurfaceApplySpec: {
|
|
1585
|
+
type: "object",
|
|
1586
|
+
properties: {
|
|
1587
|
+
props: ANY_OBJECT_SCHEMA,
|
|
1588
|
+
decoratorProps: ANY_OBJECT_SCHEMA,
|
|
1589
|
+
stepParams: ANY_OBJECT_SCHEMA,
|
|
1590
|
+
flowRegistry: ANY_OBJECT_SCHEMA,
|
|
1591
|
+
subModels: {
|
|
1592
|
+
type: "object",
|
|
1593
|
+
additionalProperties: {
|
|
1594
|
+
oneOf: [
|
|
1595
|
+
ref("FlowSurfaceNodeSpec"),
|
|
1596
|
+
{
|
|
1597
|
+
type: "array",
|
|
1598
|
+
items: ref("FlowSurfaceNodeSpec")
|
|
1599
|
+
}
|
|
1600
|
+
]
|
|
1601
|
+
}
|
|
1602
|
+
}
|
|
1603
|
+
},
|
|
1604
|
+
additionalProperties: false
|
|
1605
|
+
},
|
|
1606
|
+
FlowSurfaceClientKeyMap: {
|
|
1607
|
+
type: "object",
|
|
1608
|
+
additionalProperties: {
|
|
1609
|
+
type: "string"
|
|
1610
|
+
}
|
|
1611
|
+
},
|
|
1612
|
+
FlowSurfaceResourceInit: {
|
|
1613
|
+
type: "object",
|
|
1614
|
+
properties: {
|
|
1615
|
+
dataSourceKey: {
|
|
1616
|
+
type: "string"
|
|
1617
|
+
},
|
|
1618
|
+
collectionName: {
|
|
1619
|
+
type: "string"
|
|
1620
|
+
},
|
|
1621
|
+
associationName: {
|
|
1622
|
+
type: "string"
|
|
1623
|
+
},
|
|
1624
|
+
associationPathName: {
|
|
1625
|
+
type: "string"
|
|
1626
|
+
},
|
|
1627
|
+
sourceId: STRING_OR_INTEGER_SCHEMA,
|
|
1628
|
+
filterByTk: STRING_OR_INTEGER_SCHEMA
|
|
1629
|
+
},
|
|
1630
|
+
additionalProperties: false
|
|
1631
|
+
},
|
|
1632
|
+
FlowSurfaceResourceBindingAssociationField: {
|
|
1633
|
+
type: "object",
|
|
1634
|
+
properties: {
|
|
1635
|
+
key: {
|
|
1636
|
+
type: "string"
|
|
1637
|
+
},
|
|
1638
|
+
label: {
|
|
1639
|
+
type: "string"
|
|
1640
|
+
},
|
|
1641
|
+
collectionName: {
|
|
1642
|
+
type: "string"
|
|
1643
|
+
},
|
|
1644
|
+
associationName: {
|
|
1645
|
+
type: "string"
|
|
1646
|
+
}
|
|
1647
|
+
},
|
|
1648
|
+
required: ["key", "label", "collectionName"],
|
|
1649
|
+
additionalProperties: false
|
|
1650
|
+
},
|
|
1651
|
+
FlowSurfaceResourceBindingOption: {
|
|
1652
|
+
type: "object",
|
|
1653
|
+
properties: {
|
|
1654
|
+
key: {
|
|
1655
|
+
type: "string",
|
|
1656
|
+
enum: ["currentCollection", "currentRecord", "associatedRecords", "otherRecords"]
|
|
1657
|
+
},
|
|
1658
|
+
label: {
|
|
1659
|
+
type: "string"
|
|
1660
|
+
},
|
|
1661
|
+
description: {
|
|
1662
|
+
type: "string"
|
|
1663
|
+
},
|
|
1664
|
+
requires: {
|
|
1665
|
+
type: "array",
|
|
1666
|
+
items: {
|
|
1667
|
+
type: "string"
|
|
1668
|
+
}
|
|
1669
|
+
},
|
|
1670
|
+
dataSourceKey: {
|
|
1671
|
+
type: "string"
|
|
1672
|
+
},
|
|
1673
|
+
collectionName: {
|
|
1674
|
+
type: "string"
|
|
1675
|
+
},
|
|
1676
|
+
associationFields: {
|
|
1677
|
+
type: "array",
|
|
1678
|
+
items: ref("FlowSurfaceResourceBindingAssociationField")
|
|
1679
|
+
}
|
|
1680
|
+
},
|
|
1681
|
+
required: ["key", "label"],
|
|
1682
|
+
additionalProperties: false
|
|
1683
|
+
},
|
|
1684
|
+
FlowSurfaceSemanticResourceInput: {
|
|
1685
|
+
type: "object",
|
|
1686
|
+
required: ["binding"],
|
|
1687
|
+
properties: {
|
|
1688
|
+
binding: {
|
|
1689
|
+
type: "string",
|
|
1690
|
+
enum: ["currentCollection", "currentRecord", "associatedRecords", "otherRecords"]
|
|
1691
|
+
},
|
|
1692
|
+
dataSourceKey: {
|
|
1693
|
+
type: "string"
|
|
1694
|
+
},
|
|
1695
|
+
collectionName: {
|
|
1696
|
+
type: "string"
|
|
1697
|
+
},
|
|
1698
|
+
associationField: {
|
|
1699
|
+
type: "string",
|
|
1700
|
+
description: "Canonical association field name for popup `associatedRecords` binding. In applyBlueprint authoring, prefer `associationField`; `associationPathName` is only normalized to this field for convenience when it is a single association field name."
|
|
1701
|
+
}
|
|
1702
|
+
},
|
|
1703
|
+
additionalProperties: false
|
|
1704
|
+
},
|
|
1705
|
+
FlowSurfaceBlockResourceInput: {
|
|
1706
|
+
oneOf: [ref("FlowSurfaceSemanticResourceInput"), ref("FlowSurfaceResourceInit")]
|
|
1707
|
+
},
|
|
1708
|
+
FlowSurfaceMutateResourceInit: {
|
|
1709
|
+
type: "object",
|
|
1710
|
+
properties: {
|
|
1711
|
+
dataSourceKey: ref("FlowSurfaceResolvableString"),
|
|
1712
|
+
collectionName: ref("FlowSurfaceResolvableString"),
|
|
1713
|
+
associationName: ref("FlowSurfaceResolvableString"),
|
|
1714
|
+
associationPathName: ref("FlowSurfaceResolvableString"),
|
|
1715
|
+
sourceId: ref("FlowSurfaceResolvableIdentifier"),
|
|
1716
|
+
filterByTk: ref("FlowSurfaceResolvableIdentifier")
|
|
1717
|
+
},
|
|
1718
|
+
additionalProperties: false
|
|
1719
|
+
},
|
|
1720
|
+
FlowSurfaceCatalogRequest: {
|
|
1721
|
+
type: "object",
|
|
1722
|
+
properties: {
|
|
1723
|
+
target: ref("FlowSurfaceWriteTarget"),
|
|
1724
|
+
sections: {
|
|
1725
|
+
type: "array",
|
|
1726
|
+
items: ref("FlowSurfaceCatalogSection")
|
|
1727
|
+
},
|
|
1728
|
+
expand: {
|
|
1729
|
+
type: "array",
|
|
1730
|
+
items: ref("FlowSurfaceCatalogExpand")
|
|
1731
|
+
}
|
|
1732
|
+
},
|
|
1733
|
+
additionalProperties: false
|
|
1734
|
+
},
|
|
1735
|
+
FlowSurfaceCatalogResponse: {
|
|
1736
|
+
type: "object",
|
|
1737
|
+
properties: {
|
|
1738
|
+
target: {
|
|
1739
|
+
allOf: [ref("FlowSurfaceResolvedTarget")],
|
|
1740
|
+
nullable: true
|
|
1741
|
+
},
|
|
1742
|
+
scenario: ref("FlowSurfaceCatalogScenario"),
|
|
1743
|
+
selectedSections: {
|
|
1744
|
+
type: "array",
|
|
1745
|
+
description: "Final sections returned by the server. When `sections` is omitted from the request, the server smart-selects sections for the current target scenario and clients should treat this field as authoritative.",
|
|
1746
|
+
items: ref("FlowSurfaceCatalogSection")
|
|
1747
|
+
},
|
|
1748
|
+
blocks: {
|
|
1749
|
+
type: "array",
|
|
1750
|
+
items: ref("FlowSurfaceCatalogItem")
|
|
1751
|
+
},
|
|
1752
|
+
fields: {
|
|
1753
|
+
type: "array",
|
|
1754
|
+
items: ref("FlowSurfaceCatalogItem")
|
|
1755
|
+
},
|
|
1756
|
+
actions: {
|
|
1757
|
+
type: "array",
|
|
1758
|
+
description: "Public block/form/filter-form/action-panel actions available under the resolved target.",
|
|
1759
|
+
items: ref("FlowSurfaceCatalogItem")
|
|
1760
|
+
},
|
|
1761
|
+
recordActions: {
|
|
1762
|
+
type: "array",
|
|
1763
|
+
description: "Public record/item-level actions exposed for record-capable targets such as table/details/list/gridCard.",
|
|
1764
|
+
items: ref("FlowSurfaceCatalogItem")
|
|
1765
|
+
},
|
|
1766
|
+
node: ref("FlowSurfaceCatalogNodeInfo")
|
|
1767
|
+
},
|
|
1768
|
+
additionalProperties: false
|
|
1769
|
+
},
|
|
1770
|
+
FlowSurfaceContextVarInfo: {
|
|
1771
|
+
type: "object",
|
|
1772
|
+
properties: {
|
|
1773
|
+
title: {
|
|
1774
|
+
type: "string"
|
|
1775
|
+
},
|
|
1776
|
+
type: {
|
|
1777
|
+
type: "string"
|
|
1778
|
+
},
|
|
1779
|
+
interface: {
|
|
1780
|
+
type: "string"
|
|
1781
|
+
},
|
|
1782
|
+
description: {
|
|
1783
|
+
type: "string"
|
|
1784
|
+
},
|
|
1785
|
+
disabled: {
|
|
1786
|
+
type: "boolean"
|
|
1787
|
+
},
|
|
1788
|
+
disabledReason: {
|
|
1789
|
+
type: "string"
|
|
1790
|
+
},
|
|
1791
|
+
properties: {
|
|
1792
|
+
type: "object",
|
|
1793
|
+
additionalProperties: ref("FlowSurfaceContextVarInfo")
|
|
1794
|
+
}
|
|
1795
|
+
},
|
|
1796
|
+
additionalProperties: false
|
|
1797
|
+
},
|
|
1798
|
+
FlowSurfaceContextRequest: {
|
|
1799
|
+
type: "object",
|
|
1800
|
+
required: ["target"],
|
|
1801
|
+
properties: {
|
|
1802
|
+
target: ref("FlowSurfaceWriteTarget"),
|
|
1803
|
+
path: {
|
|
1804
|
+
type: "string",
|
|
1805
|
+
description: "Bare path only, for example 'record', 'popup.record' or 'item.parentItem.value'."
|
|
1806
|
+
},
|
|
1807
|
+
maxDepth: {
|
|
1808
|
+
type: "integer",
|
|
1809
|
+
minimum: 1
|
|
1810
|
+
}
|
|
1811
|
+
},
|
|
1812
|
+
additionalProperties: false
|
|
1813
|
+
},
|
|
1814
|
+
FlowSurfaceContextResponse: {
|
|
1815
|
+
type: "object",
|
|
1816
|
+
properties: {
|
|
1817
|
+
vars: {
|
|
1818
|
+
type: "object",
|
|
1819
|
+
additionalProperties: ref("FlowSurfaceContextVarInfo")
|
|
1820
|
+
}
|
|
1821
|
+
},
|
|
1822
|
+
additionalProperties: false
|
|
1823
|
+
},
|
|
1824
|
+
FlowSurfaceDescribeSurfaceRequest: {
|
|
1825
|
+
type: "object",
|
|
1826
|
+
required: ["locator"],
|
|
1827
|
+
properties: {
|
|
1828
|
+
locator: ref("FlowSurfaceReadLocator"),
|
|
1829
|
+
bindKeys: {
|
|
1830
|
+
type: "array",
|
|
1831
|
+
items: ref("FlowSurfaceBindKey")
|
|
1832
|
+
}
|
|
1833
|
+
},
|
|
1834
|
+
additionalProperties: false
|
|
1835
|
+
},
|
|
1836
|
+
FlowSurfaceGetResponse: {
|
|
1837
|
+
type: "object",
|
|
1838
|
+
properties: {
|
|
1839
|
+
target: ref("FlowSurfaceReadTarget"),
|
|
1840
|
+
tree: ref("FlowSurfaceGetTreeNode"),
|
|
1841
|
+
nodeMap: ref("FlowSurfaceNodeMap"),
|
|
1842
|
+
pageRoute: ref("FlowSurfaceRouteMeta"),
|
|
1843
|
+
route: ref("FlowSurfaceRouteMeta")
|
|
1844
|
+
},
|
|
1845
|
+
additionalProperties: false
|
|
1846
|
+
},
|
|
1847
|
+
FlowSurfaceDescribeSurfaceResponse: {
|
|
1848
|
+
type: "object",
|
|
1849
|
+
properties: {
|
|
1850
|
+
target: ref("FlowSurfaceReadTarget"),
|
|
1851
|
+
tree: ref("FlowSurfaceGetTreeNode"),
|
|
1852
|
+
nodeMap: ref("FlowSurfaceNodeMap"),
|
|
1853
|
+
pageRoute: ref("FlowSurfaceRouteMeta"),
|
|
1854
|
+
route: ref("FlowSurfaceRouteMeta"),
|
|
1855
|
+
fingerprint: {
|
|
1856
|
+
type: "string"
|
|
1857
|
+
},
|
|
1858
|
+
keys: ref("FlowSurfaceKeysMap")
|
|
1859
|
+
},
|
|
1860
|
+
additionalProperties: false
|
|
1861
|
+
},
|
|
1862
|
+
FlowSurfacePopupSummary: {
|
|
1863
|
+
type: "object",
|
|
1864
|
+
properties: {
|
|
1865
|
+
mode: {
|
|
1866
|
+
type: "string",
|
|
1867
|
+
enum: ["local", "copy"]
|
|
1868
|
+
},
|
|
1869
|
+
pageUid: {
|
|
1870
|
+
type: "string"
|
|
1871
|
+
},
|
|
1872
|
+
tabUid: {
|
|
1873
|
+
type: "string"
|
|
1874
|
+
},
|
|
1875
|
+
gridUid: {
|
|
1876
|
+
type: "string"
|
|
1877
|
+
},
|
|
1878
|
+
template: ref("FlowSurfacePopupTemplateRef")
|
|
1879
|
+
},
|
|
1880
|
+
additionalProperties: false
|
|
1881
|
+
},
|
|
1882
|
+
...templateSchemas,
|
|
1883
|
+
FlowSurfaceComposeLayoutCell: {
|
|
1884
|
+
oneOf: [
|
|
1885
|
+
{
|
|
1886
|
+
type: "string"
|
|
1887
|
+
},
|
|
1888
|
+
{
|
|
1889
|
+
type: "object",
|
|
1890
|
+
anyOf: [{ required: ["key"] }, { required: ["uid"] }],
|
|
1891
|
+
properties: {
|
|
1892
|
+
key: {
|
|
1893
|
+
type: "string"
|
|
1894
|
+
},
|
|
1895
|
+
uid: {
|
|
1896
|
+
type: "string"
|
|
1897
|
+
},
|
|
1898
|
+
span: {
|
|
1899
|
+
type: "number"
|
|
1900
|
+
}
|
|
1901
|
+
},
|
|
1902
|
+
additionalProperties: false
|
|
1903
|
+
}
|
|
1904
|
+
]
|
|
1905
|
+
},
|
|
1906
|
+
FlowSurfaceComposeLayout: {
|
|
1907
|
+
type: "object",
|
|
1908
|
+
properties: {
|
|
1909
|
+
rows: {
|
|
1910
|
+
type: "array",
|
|
1911
|
+
items: {
|
|
1912
|
+
type: "array",
|
|
1913
|
+
items: ref("FlowSurfaceComposeLayoutCell")
|
|
1914
|
+
}
|
|
1915
|
+
}
|
|
1916
|
+
},
|
|
1917
|
+
additionalProperties: false
|
|
1918
|
+
},
|
|
1919
|
+
FlowSurfaceComposeFieldSpec: {
|
|
1920
|
+
oneOf: [
|
|
1921
|
+
{
|
|
1922
|
+
type: "string"
|
|
1923
|
+
},
|
|
1924
|
+
{
|
|
1925
|
+
type: "object",
|
|
1926
|
+
required: ["fieldPath"],
|
|
1927
|
+
properties: {
|
|
1928
|
+
key: {
|
|
1929
|
+
type: "string",
|
|
1930
|
+
description: "Optional stable field key returned in compose results."
|
|
1931
|
+
},
|
|
1932
|
+
fieldPath: {
|
|
1933
|
+
type: "string"
|
|
1934
|
+
},
|
|
1935
|
+
renderer: {
|
|
1936
|
+
type: "string",
|
|
1937
|
+
enum: ["js"],
|
|
1938
|
+
description: "Optional public renderer variant for a bound field."
|
|
1939
|
+
},
|
|
1940
|
+
associationPathName: {
|
|
1941
|
+
type: "string"
|
|
1942
|
+
},
|
|
1943
|
+
target: {
|
|
1944
|
+
type: "string",
|
|
1945
|
+
description: "Reference to another compose block key, typically used by filter-form fields."
|
|
1946
|
+
},
|
|
1947
|
+
settings: ANY_OBJECT_SCHEMA,
|
|
1948
|
+
popup: ref("FlowSurfaceComposeFieldPopup")
|
|
1949
|
+
},
|
|
1950
|
+
additionalProperties: false
|
|
1951
|
+
},
|
|
1952
|
+
{
|
|
1953
|
+
type: "object",
|
|
1954
|
+
required: ["type"],
|
|
1955
|
+
properties: {
|
|
1956
|
+
key: {
|
|
1957
|
+
type: "string",
|
|
1958
|
+
description: "Optional stable field key returned in compose results."
|
|
1959
|
+
},
|
|
1960
|
+
type: {
|
|
1961
|
+
type: "string",
|
|
1962
|
+
enum: ["jsColumn", "jsItem"],
|
|
1963
|
+
description: "Standalone synthetic public field capability. Does not accept fieldPath."
|
|
1964
|
+
},
|
|
1965
|
+
settings: ANY_OBJECT_SCHEMA
|
|
1966
|
+
},
|
|
1967
|
+
additionalProperties: false
|
|
1968
|
+
}
|
|
1969
|
+
]
|
|
1970
|
+
},
|
|
1971
|
+
FlowSurfaceTemplateRef: {
|
|
1972
|
+
type: "object",
|
|
1973
|
+
required: ["uid"],
|
|
1974
|
+
properties: {
|
|
1975
|
+
uid: {
|
|
1976
|
+
type: "string",
|
|
1977
|
+
description: "Saved template uid."
|
|
1978
|
+
},
|
|
1979
|
+
mode: {
|
|
1980
|
+
type: "string",
|
|
1981
|
+
enum: ["reference", "copy"],
|
|
1982
|
+
default: "reference"
|
|
1983
|
+
}
|
|
1984
|
+
},
|
|
1985
|
+
additionalProperties: false
|
|
1986
|
+
},
|
|
1987
|
+
FlowSurfaceBlockTemplateRef: {
|
|
1988
|
+
type: "object",
|
|
1989
|
+
required: ["uid"],
|
|
1990
|
+
properties: {
|
|
1991
|
+
uid: {
|
|
1992
|
+
type: "string"
|
|
1993
|
+
},
|
|
1994
|
+
mode: {
|
|
1995
|
+
type: "string",
|
|
1996
|
+
enum: ["reference", "copy"],
|
|
1997
|
+
default: "reference"
|
|
1998
|
+
},
|
|
1999
|
+
usage: {
|
|
2000
|
+
type: "string",
|
|
2001
|
+
enum: ["block", "fields"],
|
|
2002
|
+
description: "For form templates, choose whether to create the whole block or only import its fields."
|
|
2003
|
+
}
|
|
2004
|
+
},
|
|
2005
|
+
additionalProperties: false
|
|
2006
|
+
},
|
|
2007
|
+
FlowSurfacePopupTemplateRef: {
|
|
2008
|
+
allOf: [ref("FlowSurfaceTemplateRef")]
|
|
2009
|
+
},
|
|
2010
|
+
FlowSurfaceComposeActionPopup: {
|
|
2011
|
+
type: "object",
|
|
2012
|
+
oneOf: [
|
|
2013
|
+
{
|
|
2014
|
+
required: ["template"]
|
|
2015
|
+
},
|
|
2016
|
+
{
|
|
2017
|
+
anyOf: [{ required: ["mode"] }, { required: ["blocks"] }, { required: ["layout"] }]
|
|
2018
|
+
}
|
|
2019
|
+
],
|
|
2020
|
+
properties: {
|
|
2021
|
+
template: ref("FlowSurfacePopupTemplateRef"),
|
|
2022
|
+
mode: {
|
|
2023
|
+
type: "string",
|
|
2024
|
+
enum: ["append", "replace"]
|
|
2025
|
+
},
|
|
2026
|
+
blocks: {
|
|
2027
|
+
type: "array",
|
|
2028
|
+
items: ref("FlowSurfaceComposeBlockSpec")
|
|
2029
|
+
},
|
|
2030
|
+
layout: ref("FlowSurfaceComposeLayout")
|
|
2031
|
+
},
|
|
2032
|
+
additionalProperties: false
|
|
2033
|
+
},
|
|
2034
|
+
FlowSurfaceComposeFieldPopup: {
|
|
2035
|
+
type: "object",
|
|
2036
|
+
oneOf: [
|
|
2037
|
+
{
|
|
2038
|
+
required: ["template"]
|
|
2039
|
+
},
|
|
2040
|
+
{
|
|
2041
|
+
anyOf: [{ required: ["mode"] }, { required: ["blocks"] }, { required: ["layout"] }]
|
|
2042
|
+
}
|
|
2043
|
+
],
|
|
2044
|
+
properties: {
|
|
2045
|
+
template: ref("FlowSurfacePopupTemplateRef"),
|
|
2046
|
+
mode: {
|
|
2047
|
+
type: "string",
|
|
2048
|
+
enum: ["append", "replace"]
|
|
2049
|
+
},
|
|
2050
|
+
blocks: {
|
|
2051
|
+
type: "array",
|
|
2052
|
+
items: ref("FlowSurfaceComposeBlockSpec")
|
|
2053
|
+
},
|
|
2054
|
+
layout: ref("FlowSurfaceComposeLayout")
|
|
2055
|
+
},
|
|
2056
|
+
additionalProperties: false
|
|
2057
|
+
},
|
|
2058
|
+
FlowSurfaceComposeActionSpec: {
|
|
2059
|
+
oneOf: [
|
|
2060
|
+
{
|
|
2061
|
+
type: "string"
|
|
2062
|
+
},
|
|
2063
|
+
{
|
|
2064
|
+
type: "object",
|
|
2065
|
+
required: ["type"],
|
|
2066
|
+
properties: {
|
|
2067
|
+
key: {
|
|
2068
|
+
type: "string"
|
|
2069
|
+
},
|
|
2070
|
+
type: {
|
|
2071
|
+
type: "string",
|
|
2072
|
+
enum: NON_RECORD_ACTION_TYPE_ENUM
|
|
2073
|
+
},
|
|
2074
|
+
settings: ANY_OBJECT_SCHEMA,
|
|
2075
|
+
popup: ref("FlowSurfaceComposeActionPopup")
|
|
2076
|
+
},
|
|
2077
|
+
additionalProperties: false
|
|
2078
|
+
}
|
|
2079
|
+
]
|
|
2080
|
+
},
|
|
2081
|
+
FlowSurfaceComposeRecordActionSpec: {
|
|
2082
|
+
oneOf: [
|
|
2083
|
+
{
|
|
2084
|
+
type: "string"
|
|
2085
|
+
},
|
|
2086
|
+
{
|
|
2087
|
+
type: "object",
|
|
2088
|
+
required: ["type"],
|
|
2089
|
+
properties: {
|
|
2090
|
+
key: {
|
|
2091
|
+
type: "string"
|
|
2092
|
+
},
|
|
2093
|
+
type: {
|
|
2094
|
+
type: "string",
|
|
2095
|
+
enum: RECORD_ACTION_TYPE_ENUM
|
|
2096
|
+
},
|
|
2097
|
+
settings: ANY_OBJECT_SCHEMA,
|
|
2098
|
+
popup: ref("FlowSurfaceComposeActionPopup")
|
|
2099
|
+
},
|
|
2100
|
+
additionalProperties: false
|
|
2101
|
+
}
|
|
2102
|
+
]
|
|
2103
|
+
},
|
|
2104
|
+
FlowSurfaceComposeBlockSpec: {
|
|
2105
|
+
type: "object",
|
|
2106
|
+
required: ["key"],
|
|
2107
|
+
anyOf: [{ required: ["type"] }, { required: ["template"] }],
|
|
2108
|
+
properties: {
|
|
2109
|
+
key: {
|
|
2110
|
+
type: "string"
|
|
2111
|
+
},
|
|
2112
|
+
type: {
|
|
2113
|
+
type: "string",
|
|
2114
|
+
enum: [
|
|
2115
|
+
"table",
|
|
2116
|
+
"createForm",
|
|
2117
|
+
"editForm",
|
|
2118
|
+
"details",
|
|
2119
|
+
"filterForm",
|
|
2120
|
+
"list",
|
|
2121
|
+
"gridCard",
|
|
2122
|
+
"markdown",
|
|
2123
|
+
"iframe",
|
|
2124
|
+
"chart",
|
|
2125
|
+
"actionPanel",
|
|
2126
|
+
"jsBlock"
|
|
2127
|
+
]
|
|
2128
|
+
},
|
|
2129
|
+
template: ref("FlowSurfaceBlockTemplateRef"),
|
|
2130
|
+
resource: ref("FlowSurfaceBlockResourceInput"),
|
|
2131
|
+
settings: ANY_OBJECT_SCHEMA,
|
|
2132
|
+
fields: {
|
|
2133
|
+
type: "array",
|
|
2134
|
+
items: ref("FlowSurfaceComposeFieldSpec")
|
|
2135
|
+
},
|
|
2136
|
+
actions: {
|
|
2137
|
+
type: "array",
|
|
2138
|
+
description: "Block-level actions. For table/list/gridCard, prefer block-wide collection actions here.",
|
|
2139
|
+
items: ref("FlowSurfaceComposeActionSpec")
|
|
2140
|
+
},
|
|
2141
|
+
recordActions: {
|
|
2142
|
+
type: "array",
|
|
2143
|
+
description: "Public semantic group for record/item-level actions on record-capable blocks such as table/details/list/gridCard.",
|
|
2144
|
+
items: ref("FlowSurfaceComposeRecordActionSpec")
|
|
2145
|
+
}
|
|
2146
|
+
},
|
|
2147
|
+
additionalProperties: false
|
|
2148
|
+
},
|
|
2149
|
+
FlowSurfaceComposeRequest: {
|
|
2150
|
+
type: "object",
|
|
2151
|
+
required: ["target"],
|
|
2152
|
+
properties: {
|
|
2153
|
+
target: ref("FlowSurfaceWriteTarget"),
|
|
2154
|
+
mode: {
|
|
2155
|
+
type: "string",
|
|
2156
|
+
enum: ["append", "replace"],
|
|
2157
|
+
default: "append"
|
|
2158
|
+
},
|
|
2159
|
+
blocks: {
|
|
2160
|
+
type: "array",
|
|
2161
|
+
items: ref("FlowSurfaceComposeBlockSpec")
|
|
2162
|
+
},
|
|
2163
|
+
layout: ref("FlowSurfaceComposeLayout")
|
|
2164
|
+
},
|
|
2165
|
+
additionalProperties: false
|
|
2166
|
+
},
|
|
2167
|
+
FlowSurfaceComposeFieldResult: {
|
|
2168
|
+
type: "object",
|
|
2169
|
+
properties: {
|
|
2170
|
+
key: {
|
|
2171
|
+
type: "string"
|
|
2172
|
+
},
|
|
2173
|
+
fieldPath: {
|
|
2174
|
+
type: "string"
|
|
2175
|
+
},
|
|
2176
|
+
renderer: {
|
|
2177
|
+
type: "string",
|
|
2178
|
+
enum: ["js"]
|
|
2179
|
+
},
|
|
2180
|
+
type: {
|
|
2181
|
+
type: "string",
|
|
2182
|
+
enum: ["jsColumn", "jsItem"]
|
|
2183
|
+
},
|
|
2184
|
+
uid: {
|
|
2185
|
+
type: "string"
|
|
2186
|
+
},
|
|
2187
|
+
associationPathName: {
|
|
2188
|
+
type: "string",
|
|
2189
|
+
nullable: true
|
|
2190
|
+
},
|
|
2191
|
+
target: {
|
|
2192
|
+
type: "string"
|
|
2193
|
+
},
|
|
2194
|
+
wrapperUid: {
|
|
2195
|
+
type: "string"
|
|
2196
|
+
},
|
|
2197
|
+
fieldUid: {
|
|
2198
|
+
type: "string"
|
|
2199
|
+
},
|
|
2200
|
+
innerFieldUid: {
|
|
2201
|
+
type: "string"
|
|
2202
|
+
},
|
|
2203
|
+
popupPageUid: {
|
|
2204
|
+
type: "string"
|
|
2205
|
+
},
|
|
2206
|
+
popupTabUid: {
|
|
2207
|
+
type: "string"
|
|
2208
|
+
},
|
|
2209
|
+
popupGridUid: {
|
|
2210
|
+
type: "string"
|
|
2211
|
+
}
|
|
2212
|
+
},
|
|
2213
|
+
additionalProperties: false
|
|
2214
|
+
},
|
|
2215
|
+
FlowSurfaceComposeActionResult: {
|
|
2216
|
+
type: "object",
|
|
2217
|
+
properties: {
|
|
2218
|
+
key: {
|
|
2219
|
+
type: "string"
|
|
2220
|
+
},
|
|
2221
|
+
type: {
|
|
2222
|
+
type: "string",
|
|
2223
|
+
enum: ACTION_TYPE_ENUM
|
|
2224
|
+
},
|
|
2225
|
+
scope: {
|
|
2226
|
+
type: "string"
|
|
2227
|
+
},
|
|
2228
|
+
uid: {
|
|
2229
|
+
type: "string"
|
|
2230
|
+
},
|
|
2231
|
+
parentUid: {
|
|
2232
|
+
type: "string"
|
|
2233
|
+
},
|
|
2234
|
+
assignFormUid: {
|
|
2235
|
+
type: "string"
|
|
2236
|
+
},
|
|
2237
|
+
assignFormGridUid: {
|
|
2238
|
+
type: "string"
|
|
2239
|
+
},
|
|
2240
|
+
popupPageUid: {
|
|
2241
|
+
type: "string"
|
|
2242
|
+
},
|
|
2243
|
+
popupTabUid: {
|
|
2244
|
+
type: "string"
|
|
2245
|
+
},
|
|
2246
|
+
popupGridUid: {
|
|
2247
|
+
type: "string"
|
|
2248
|
+
}
|
|
2249
|
+
},
|
|
2250
|
+
additionalProperties: false
|
|
2251
|
+
},
|
|
2252
|
+
FlowSurfaceComposeBlockResult: {
|
|
2253
|
+
type: "object",
|
|
2254
|
+
properties: {
|
|
2255
|
+
key: {
|
|
2256
|
+
type: "string"
|
|
2257
|
+
},
|
|
2258
|
+
type: {
|
|
2259
|
+
type: "string",
|
|
2260
|
+
enum: [
|
|
2261
|
+
"table",
|
|
2262
|
+
"createForm",
|
|
2263
|
+
"editForm",
|
|
2264
|
+
"details",
|
|
2265
|
+
"filterForm",
|
|
2266
|
+
"list",
|
|
2267
|
+
"gridCard",
|
|
2268
|
+
"markdown",
|
|
2269
|
+
"iframe",
|
|
2270
|
+
"chart",
|
|
2271
|
+
"actionPanel",
|
|
2272
|
+
"jsBlock"
|
|
2273
|
+
]
|
|
2274
|
+
},
|
|
2275
|
+
uid: {
|
|
2276
|
+
type: "string"
|
|
2277
|
+
},
|
|
2278
|
+
gridUid: {
|
|
2279
|
+
type: "string"
|
|
2280
|
+
},
|
|
2281
|
+
itemUid: {
|
|
2282
|
+
type: "string"
|
|
2283
|
+
},
|
|
2284
|
+
itemGridUid: {
|
|
2285
|
+
type: "string"
|
|
2286
|
+
},
|
|
2287
|
+
actionsColumnUid: {
|
|
2288
|
+
type: "string"
|
|
2289
|
+
},
|
|
2290
|
+
fields: {
|
|
2291
|
+
type: "array",
|
|
2292
|
+
items: ref("FlowSurfaceComposeFieldResult")
|
|
2293
|
+
},
|
|
2294
|
+
actions: {
|
|
2295
|
+
type: "array",
|
|
2296
|
+
items: ref("FlowSurfaceComposeActionResult")
|
|
2297
|
+
},
|
|
2298
|
+
recordActions: {
|
|
2299
|
+
type: "array",
|
|
2300
|
+
description: "Returned record/item-level action results for record-capable public compose semantics such as table/details/list/gridCard.",
|
|
2301
|
+
items: ref("FlowSurfaceComposeActionResult")
|
|
2302
|
+
}
|
|
2303
|
+
},
|
|
2304
|
+
additionalProperties: false
|
|
2305
|
+
},
|
|
2306
|
+
FlowSurfaceComposeResult: {
|
|
2307
|
+
type: "object",
|
|
2308
|
+
properties: {
|
|
2309
|
+
target: ref("FlowSurfaceWriteTarget"),
|
|
2310
|
+
mode: {
|
|
2311
|
+
type: "string",
|
|
2312
|
+
enum: ["append", "replace"]
|
|
2313
|
+
},
|
|
2314
|
+
blocks: {
|
|
2315
|
+
type: "array",
|
|
2316
|
+
items: ref("FlowSurfaceComposeBlockResult")
|
|
2317
|
+
},
|
|
2318
|
+
layout: ref("FlowSurfaceSetLayoutResult")
|
|
2319
|
+
},
|
|
2320
|
+
additionalProperties: false
|
|
2321
|
+
},
|
|
2322
|
+
FlowSurfaceReactionKind: {
|
|
2323
|
+
type: "string",
|
|
2324
|
+
enum: ["fieldValue", "blockLinkage", "fieldLinkage", "actionLinkage"]
|
|
2325
|
+
},
|
|
2326
|
+
FlowSurfaceReactionScene: {
|
|
2327
|
+
type: "string",
|
|
2328
|
+
enum: ["form", "block", "action", "details", "subForm"]
|
|
2329
|
+
},
|
|
2330
|
+
FlowSurfaceReactionSlot: {
|
|
2331
|
+
type: "object",
|
|
2332
|
+
required: ["flowKey", "stepKey"],
|
|
2333
|
+
properties: {
|
|
2334
|
+
flowKey: {
|
|
2335
|
+
type: "string",
|
|
2336
|
+
description: "Resolved flow-settings namespace that owns this reaction slot."
|
|
2337
|
+
},
|
|
2338
|
+
stepKey: {
|
|
2339
|
+
type: "string",
|
|
2340
|
+
description: "Resolved step key inside the flow-settings namespace."
|
|
2341
|
+
},
|
|
2342
|
+
valuePath: {
|
|
2343
|
+
type: "string",
|
|
2344
|
+
nullable: true,
|
|
2345
|
+
description: "Optional nested value path when the actual rules array is stored below the step root."
|
|
2346
|
+
}
|
|
2347
|
+
},
|
|
2348
|
+
additionalProperties: false
|
|
2349
|
+
},
|
|
2350
|
+
FlowSurfaceReactionTargetSummary: {
|
|
2351
|
+
type: "object",
|
|
2352
|
+
required: ["uid"],
|
|
2353
|
+
properties: {
|
|
2354
|
+
uid: {
|
|
2355
|
+
type: "string",
|
|
2356
|
+
description: "Resolved live target uid."
|
|
2357
|
+
},
|
|
2358
|
+
publicPath: {
|
|
2359
|
+
type: "string",
|
|
2360
|
+
description: "Resolved public path or bind-key style path when available."
|
|
2361
|
+
}
|
|
2362
|
+
},
|
|
2363
|
+
additionalProperties: false
|
|
2364
|
+
},
|
|
2365
|
+
FlowSurfaceReactionFilter: {
|
|
2366
|
+
type: "object",
|
|
2367
|
+
description: "Recursive public reaction filter object. Paths must use bare ctx-style paths such as `formValues.status` or `record.id`.",
|
|
2368
|
+
additionalProperties: true,
|
|
2369
|
+
example: FILTER_GROUP_EXAMPLE
|
|
2370
|
+
},
|
|
2371
|
+
FlowSurfaceReactionLiteralValueExpr: {
|
|
2372
|
+
type: "object",
|
|
2373
|
+
required: ["source", "value"],
|
|
2374
|
+
properties: {
|
|
2375
|
+
source: {
|
|
2376
|
+
type: "string",
|
|
2377
|
+
enum: ["literal"]
|
|
2378
|
+
},
|
|
2379
|
+
value: {}
|
|
2380
|
+
},
|
|
2381
|
+
additionalProperties: false
|
|
2382
|
+
},
|
|
2383
|
+
FlowSurfaceReactionPathValueExpr: {
|
|
2384
|
+
type: "object",
|
|
2385
|
+
required: ["source", "path"],
|
|
2386
|
+
properties: {
|
|
2387
|
+
source: {
|
|
2388
|
+
type: "string",
|
|
2389
|
+
enum: ["path"]
|
|
2390
|
+
},
|
|
2391
|
+
path: {
|
|
2392
|
+
type: "string",
|
|
2393
|
+
description: "Bare reaction context path such as `formValues.status` or `record.id`."
|
|
2394
|
+
}
|
|
2395
|
+
},
|
|
2396
|
+
additionalProperties: false
|
|
2397
|
+
},
|
|
2398
|
+
FlowSurfaceReactionRunJsValueExpr: {
|
|
2399
|
+
type: "object",
|
|
2400
|
+
required: ["source", "code"],
|
|
2401
|
+
properties: {
|
|
2402
|
+
source: {
|
|
2403
|
+
type: "string",
|
|
2404
|
+
enum: ["runjs"]
|
|
2405
|
+
},
|
|
2406
|
+
code: {
|
|
2407
|
+
type: "string"
|
|
2408
|
+
},
|
|
2409
|
+
version: {
|
|
2410
|
+
type: "string",
|
|
2411
|
+
enum: ["v1", "v2"]
|
|
2412
|
+
}
|
|
2413
|
+
},
|
|
2414
|
+
additionalProperties: false
|
|
2415
|
+
},
|
|
2416
|
+
FlowSurfaceReactionValueExpr: {
|
|
2417
|
+
oneOf: [
|
|
2418
|
+
ref("FlowSurfaceReactionLiteralValueExpr"),
|
|
2419
|
+
ref("FlowSurfaceReactionPathValueExpr"),
|
|
2420
|
+
ref("FlowSurfaceReactionRunJsValueExpr")
|
|
2421
|
+
]
|
|
2422
|
+
},
|
|
2423
|
+
FlowSurfaceReactionValueExprMeta: {
|
|
2424
|
+
type: "object",
|
|
2425
|
+
required: ["supportedSources", "runjsScene"],
|
|
2426
|
+
properties: {
|
|
2427
|
+
supportedSources: {
|
|
2428
|
+
type: "array",
|
|
2429
|
+
items: {
|
|
2430
|
+
type: "string",
|
|
2431
|
+
enum: ["literal", "path", "runjs"]
|
|
2432
|
+
}
|
|
2433
|
+
},
|
|
2434
|
+
runjsScene: {
|
|
2435
|
+
type: "string",
|
|
2436
|
+
enum: ["fieldValue", "linkage"],
|
|
2437
|
+
description: 'RunJS evaluation scene used by this capability when `source: "runjs"` is allowed.'
|
|
2438
|
+
}
|
|
2439
|
+
},
|
|
2440
|
+
additionalProperties: false
|
|
2441
|
+
},
|
|
2442
|
+
FlowSurfaceReactionConditionMeta: {
|
|
2443
|
+
type: "object",
|
|
2444
|
+
required: ["operatorsByPath"],
|
|
2445
|
+
properties: {
|
|
2446
|
+
operatorsByPath: {
|
|
2447
|
+
type: "object",
|
|
2448
|
+
description: "Allowed operators keyed by bare reaction context path. Use this to drive condition builders instead of guessing path/operator pairs.",
|
|
2449
|
+
additionalProperties: {
|
|
2450
|
+
type: "array",
|
|
2451
|
+
items: {
|
|
2452
|
+
type: "string"
|
|
2453
|
+
}
|
|
2454
|
+
}
|
|
2455
|
+
}
|
|
2456
|
+
},
|
|
2457
|
+
additionalProperties: false
|
|
2458
|
+
},
|
|
2459
|
+
FlowSurfaceReactionSupportedAction: {
|
|
1972
2460
|
type: "object",
|
|
2461
|
+
required: ["type"],
|
|
1973
2462
|
properties: {
|
|
1974
|
-
|
|
2463
|
+
type: {
|
|
2464
|
+
type: "string",
|
|
2465
|
+
description: "Public reaction action type available in the resolved scene."
|
|
2466
|
+
},
|
|
2467
|
+
states: {
|
|
1975
2468
|
type: "array",
|
|
2469
|
+
description: "Supported state names when the action type is state-based.",
|
|
1976
2470
|
items: {
|
|
1977
2471
|
type: "string"
|
|
1978
2472
|
}
|
|
1979
|
-
},
|
|
1980
|
-
wildcard: {
|
|
1981
|
-
type: "boolean"
|
|
1982
|
-
},
|
|
1983
|
-
mergeStrategy: ref("FlowSurfaceMergeStrategy"),
|
|
1984
|
-
schema: ANY_OBJECT_SCHEMA,
|
|
1985
|
-
groups: {
|
|
1986
|
-
type: "object",
|
|
1987
|
-
additionalProperties: ref("FlowSurfaceDomainGroupContract")
|
|
1988
2473
|
}
|
|
1989
2474
|
},
|
|
1990
2475
|
additionalProperties: false
|
|
1991
2476
|
},
|
|
1992
|
-
|
|
2477
|
+
FlowSurfaceReactionUnavailableCapability: {
|
|
1993
2478
|
type: "object",
|
|
2479
|
+
required: ["kind", "code", "reason"],
|
|
1994
2480
|
properties: {
|
|
1995
|
-
|
|
1996
|
-
|
|
1997
|
-
|
|
1998
|
-
},
|
|
1999
|
-
domains: {
|
|
2000
|
-
type: "object",
|
|
2001
|
-
properties: {
|
|
2002
|
-
props: ref("FlowSurfaceDomainContract"),
|
|
2003
|
-
decoratorProps: ref("FlowSurfaceDomainContract"),
|
|
2004
|
-
stepParams: ref("FlowSurfaceDomainContract"),
|
|
2005
|
-
flowRegistry: ref("FlowSurfaceDomainContract")
|
|
2006
|
-
},
|
|
2007
|
-
additionalProperties: false
|
|
2481
|
+
kind: ref("FlowSurfaceReactionKind"),
|
|
2482
|
+
code: {
|
|
2483
|
+
type: "string"
|
|
2008
2484
|
},
|
|
2009
|
-
|
|
2010
|
-
|
|
2011
|
-
|
|
2485
|
+
reason: {
|
|
2486
|
+
type: "string"
|
|
2487
|
+
}
|
|
2012
2488
|
},
|
|
2013
2489
|
additionalProperties: false
|
|
2014
2490
|
},
|
|
2015
|
-
|
|
2491
|
+
FlowSurfaceFieldOption: {
|
|
2016
2492
|
type: "object",
|
|
2493
|
+
required: ["path", "label"],
|
|
2017
2494
|
properties: {
|
|
2018
|
-
|
|
2019
|
-
type: "string"
|
|
2020
|
-
},
|
|
2021
|
-
label: {
|
|
2022
|
-
type: "string"
|
|
2023
|
-
},
|
|
2024
|
-
use: {
|
|
2025
|
-
type: "string"
|
|
2026
|
-
},
|
|
2027
|
-
kind: {
|
|
2495
|
+
path: {
|
|
2028
2496
|
type: "string",
|
|
2029
|
-
|
|
2497
|
+
description: "Targetable field path in the resolved scene."
|
|
2030
2498
|
},
|
|
2031
|
-
|
|
2032
|
-
type: "string"
|
|
2033
|
-
},
|
|
2034
|
-
fieldUse: {
|
|
2499
|
+
label: {
|
|
2035
2500
|
type: "string"
|
|
2036
2501
|
},
|
|
2037
|
-
|
|
2502
|
+
interface: {
|
|
2038
2503
|
type: "string"
|
|
2039
2504
|
},
|
|
2040
|
-
|
|
2041
|
-
type: "string",
|
|
2042
|
-
nullable: true
|
|
2043
|
-
},
|
|
2044
|
-
defaultTargetUid: {
|
|
2505
|
+
type: {
|
|
2045
2506
|
type: "string"
|
|
2046
2507
|
},
|
|
2047
|
-
|
|
2048
|
-
type: "
|
|
2508
|
+
supportsDefault: {
|
|
2509
|
+
type: "boolean",
|
|
2510
|
+
description: "Whether this field can be targeted by default-value semantics."
|
|
2049
2511
|
},
|
|
2050
|
-
|
|
2051
|
-
type: "
|
|
2052
|
-
|
|
2053
|
-
type: "string"
|
|
2054
|
-
}
|
|
2512
|
+
supportsAssign: {
|
|
2513
|
+
type: "boolean",
|
|
2514
|
+
description: "Whether this field can be targeted by assignment semantics."
|
|
2055
2515
|
},
|
|
2056
|
-
|
|
2516
|
+
supportsState: {
|
|
2057
2517
|
type: "array",
|
|
2518
|
+
description: "Field-state transitions supported for this field in the resolved scene.",
|
|
2058
2519
|
items: {
|
|
2059
2520
|
type: "string"
|
|
2060
2521
|
}
|
|
2061
|
-
},
|
|
2062
|
-
editableDomains: {
|
|
2063
|
-
type: "array",
|
|
2064
|
-
items: ref("FlowSurfaceNodeDomain")
|
|
2065
|
-
},
|
|
2066
|
-
configureOptions: ref("FlowSurfaceConfigureOptions"),
|
|
2067
|
-
resourceBindings: {
|
|
2068
|
-
type: "array",
|
|
2069
|
-
items: ref("FlowSurfaceResourceBindingOption")
|
|
2070
|
-
},
|
|
2071
|
-
settingsSchema: ANY_OBJECT_SCHEMA,
|
|
2072
|
-
settingsContract: {
|
|
2073
|
-
type: "object",
|
|
2074
|
-
properties: {
|
|
2075
|
-
props: ref("FlowSurfaceDomainContract"),
|
|
2076
|
-
decoratorProps: ref("FlowSurfaceDomainContract"),
|
|
2077
|
-
stepParams: ref("FlowSurfaceDomainContract"),
|
|
2078
|
-
flowRegistry: ref("FlowSurfaceDomainContract")
|
|
2079
|
-
},
|
|
2080
|
-
additionalProperties: false
|
|
2081
|
-
},
|
|
2082
|
-
eventCapabilities: ref("FlowSurfaceEventCapabilities"),
|
|
2083
|
-
layoutCapabilities: ref("FlowSurfaceLayoutCapabilities"),
|
|
2084
|
-
createSupported: {
|
|
2085
|
-
type: "boolean"
|
|
2086
2522
|
}
|
|
2087
2523
|
},
|
|
2088
|
-
additionalProperties:
|
|
2524
|
+
additionalProperties: false
|
|
2089
2525
|
},
|
|
2090
|
-
|
|
2526
|
+
FlowSurfaceFieldValueRule: {
|
|
2091
2527
|
type: "object",
|
|
2528
|
+
required: ["targetPath", "value"],
|
|
2092
2529
|
properties: {
|
|
2093
|
-
|
|
2094
|
-
type: "string"
|
|
2095
|
-
},
|
|
2096
|
-
use: {
|
|
2530
|
+
key: {
|
|
2097
2531
|
type: "string"
|
|
2098
2532
|
},
|
|
2099
|
-
|
|
2533
|
+
title: {
|
|
2100
2534
|
type: "string"
|
|
2101
2535
|
},
|
|
2102
|
-
|
|
2103
|
-
type: "
|
|
2536
|
+
enabled: {
|
|
2537
|
+
type: "boolean"
|
|
2104
2538
|
},
|
|
2105
|
-
|
|
2106
|
-
type: "string"
|
|
2539
|
+
targetPath: {
|
|
2540
|
+
type: "string",
|
|
2541
|
+
description: "Field path that receives the computed/default value."
|
|
2107
2542
|
},
|
|
2108
|
-
|
|
2109
|
-
type: "string"
|
|
2543
|
+
mode: {
|
|
2544
|
+
type: "string",
|
|
2545
|
+
enum: ["default", "assign"],
|
|
2546
|
+
description: "`default` writes default-value semantics, while `assign` writes reactive assignment semantics for the target field."
|
|
2110
2547
|
},
|
|
2111
|
-
|
|
2112
|
-
|
|
2113
|
-
stepParams: ANY_OBJECT_SCHEMA,
|
|
2114
|
-
flowRegistry: ANY_OBJECT_SCHEMA,
|
|
2115
|
-
subModels: {
|
|
2116
|
-
type: "object",
|
|
2117
|
-
additionalProperties: {
|
|
2118
|
-
oneOf: [
|
|
2119
|
-
ref("FlowSurfaceGetTreeNode"),
|
|
2120
|
-
{
|
|
2121
|
-
type: "array",
|
|
2122
|
-
items: ref("FlowSurfaceGetTreeNode")
|
|
2123
|
-
}
|
|
2124
|
-
]
|
|
2125
|
-
}
|
|
2126
|
-
}
|
|
2548
|
+
when: ref("FlowSurfaceReactionFilter"),
|
|
2549
|
+
value: ref("FlowSurfaceReactionValueExpr")
|
|
2127
2550
|
},
|
|
2128
|
-
additionalProperties:
|
|
2129
|
-
},
|
|
2130
|
-
FlowSurfaceNodeMap: {
|
|
2131
|
-
type: "object",
|
|
2132
|
-
additionalProperties: ref("FlowSurfaceGetTreeNode")
|
|
2551
|
+
additionalProperties: false
|
|
2133
2552
|
},
|
|
2134
|
-
|
|
2553
|
+
FlowSurfaceReactionRunJsAction: {
|
|
2135
2554
|
type: "object",
|
|
2555
|
+
required: ["type", "code"],
|
|
2136
2556
|
properties: {
|
|
2137
|
-
|
|
2138
|
-
type: {
|
|
2139
|
-
type: "string"
|
|
2140
|
-
},
|
|
2141
|
-
title: {
|
|
2557
|
+
key: {
|
|
2142
2558
|
type: "string"
|
|
2143
2559
|
},
|
|
2144
|
-
|
|
2560
|
+
type: {
|
|
2145
2561
|
type: "string",
|
|
2146
|
-
|
|
2562
|
+
enum: ["runjs"]
|
|
2147
2563
|
},
|
|
2148
|
-
|
|
2564
|
+
code: {
|
|
2149
2565
|
type: "string"
|
|
2150
2566
|
},
|
|
2151
|
-
|
|
2567
|
+
version: {
|
|
2568
|
+
type: "string",
|
|
2569
|
+
enum: ["v1", "v2"]
|
|
2570
|
+
}
|
|
2571
|
+
},
|
|
2572
|
+
additionalProperties: false
|
|
2573
|
+
},
|
|
2574
|
+
FlowSurfaceBlockLinkageActionSetBlockState: {
|
|
2575
|
+
type: "object",
|
|
2576
|
+
required: ["type", "state"],
|
|
2577
|
+
properties: {
|
|
2578
|
+
key: {
|
|
2152
2579
|
type: "string"
|
|
2153
2580
|
},
|
|
2154
|
-
|
|
2155
|
-
type: "
|
|
2156
|
-
|
|
2157
|
-
hidden: {
|
|
2158
|
-
type: "boolean"
|
|
2159
|
-
},
|
|
2160
|
-
displayTitle: {
|
|
2161
|
-
type: "boolean"
|
|
2162
|
-
},
|
|
2163
|
-
sort: {
|
|
2164
|
-
type: "number"
|
|
2581
|
+
type: {
|
|
2582
|
+
type: "string",
|
|
2583
|
+
enum: ["setBlockState"]
|
|
2165
2584
|
},
|
|
2166
|
-
|
|
2167
|
-
|
|
2168
|
-
|
|
2169
|
-
items: ref("FlowSurfaceRouteMeta")
|
|
2585
|
+
state: {
|
|
2586
|
+
type: "string",
|
|
2587
|
+
enum: ["visible", "hidden"]
|
|
2170
2588
|
}
|
|
2171
2589
|
},
|
|
2172
|
-
additionalProperties:
|
|
2590
|
+
additionalProperties: false
|
|
2173
2591
|
},
|
|
2174
|
-
|
|
2592
|
+
FlowSurfaceBlockLinkageAction: {
|
|
2593
|
+
oneOf: [ref("FlowSurfaceBlockLinkageActionSetBlockState"), ref("FlowSurfaceReactionRunJsAction")]
|
|
2594
|
+
},
|
|
2595
|
+
FlowSurfaceBlockLinkageRule: {
|
|
2175
2596
|
type: "object",
|
|
2176
|
-
required: ["
|
|
2597
|
+
required: ["then"],
|
|
2177
2598
|
properties: {
|
|
2178
|
-
|
|
2599
|
+
key: {
|
|
2179
2600
|
type: "string"
|
|
2180
2601
|
},
|
|
2181
|
-
|
|
2602
|
+
title: {
|
|
2182
2603
|
type: "string"
|
|
2183
2604
|
},
|
|
2184
|
-
|
|
2185
|
-
type: "
|
|
2605
|
+
enabled: {
|
|
2606
|
+
type: "boolean"
|
|
2186
2607
|
},
|
|
2187
|
-
|
|
2188
|
-
|
|
2189
|
-
|
|
2190
|
-
|
|
2191
|
-
subModels: {
|
|
2192
|
-
type: "object",
|
|
2193
|
-
additionalProperties: {
|
|
2194
|
-
oneOf: [
|
|
2195
|
-
ref("FlowSurfaceNodeSpec"),
|
|
2196
|
-
{
|
|
2197
|
-
type: "array",
|
|
2198
|
-
items: ref("FlowSurfaceNodeSpec")
|
|
2199
|
-
}
|
|
2200
|
-
]
|
|
2201
|
-
}
|
|
2608
|
+
when: ref("FlowSurfaceReactionFilter"),
|
|
2609
|
+
then: {
|
|
2610
|
+
type: "array",
|
|
2611
|
+
items: ref("FlowSurfaceBlockLinkageAction")
|
|
2202
2612
|
}
|
|
2203
2613
|
},
|
|
2204
2614
|
additionalProperties: false
|
|
2205
2615
|
},
|
|
2206
|
-
|
|
2616
|
+
FlowSurfaceActionLinkageActionSetActionState: {
|
|
2207
2617
|
type: "object",
|
|
2618
|
+
required: ["type", "state"],
|
|
2208
2619
|
properties: {
|
|
2209
|
-
|
|
2210
|
-
|
|
2211
|
-
|
|
2212
|
-
|
|
2213
|
-
|
|
2214
|
-
|
|
2215
|
-
|
|
2216
|
-
|
|
2217
|
-
|
|
2218
|
-
|
|
2219
|
-
type: "array",
|
|
2220
|
-
items: ref("FlowSurfaceNodeSpec")
|
|
2221
|
-
}
|
|
2222
|
-
]
|
|
2223
|
-
}
|
|
2620
|
+
key: {
|
|
2621
|
+
type: "string"
|
|
2622
|
+
},
|
|
2623
|
+
type: {
|
|
2624
|
+
type: "string",
|
|
2625
|
+
enum: ["setActionState"]
|
|
2626
|
+
},
|
|
2627
|
+
state: {
|
|
2628
|
+
type: "string",
|
|
2629
|
+
enum: ["visible", "hidden", "hiddenText", "enabled", "disabled"]
|
|
2224
2630
|
}
|
|
2225
2631
|
},
|
|
2226
2632
|
additionalProperties: false
|
|
2227
2633
|
},
|
|
2228
|
-
|
|
2229
|
-
|
|
2230
|
-
additionalProperties: {
|
|
2231
|
-
type: "string"
|
|
2232
|
-
}
|
|
2634
|
+
FlowSurfaceActionLinkageAction: {
|
|
2635
|
+
oneOf: [ref("FlowSurfaceActionLinkageActionSetActionState"), ref("FlowSurfaceReactionRunJsAction")]
|
|
2233
2636
|
},
|
|
2234
|
-
|
|
2637
|
+
FlowSurfaceActionLinkageRule: {
|
|
2235
2638
|
type: "object",
|
|
2639
|
+
required: ["then"],
|
|
2236
2640
|
properties: {
|
|
2237
|
-
|
|
2238
|
-
type: "string"
|
|
2239
|
-
},
|
|
2240
|
-
collectionName: {
|
|
2641
|
+
key: {
|
|
2241
2642
|
type: "string"
|
|
2242
2643
|
},
|
|
2243
|
-
|
|
2644
|
+
title: {
|
|
2244
2645
|
type: "string"
|
|
2245
2646
|
},
|
|
2246
|
-
|
|
2247
|
-
type: "
|
|
2647
|
+
enabled: {
|
|
2648
|
+
type: "boolean"
|
|
2248
2649
|
},
|
|
2249
|
-
|
|
2250
|
-
|
|
2650
|
+
when: ref("FlowSurfaceReactionFilter"),
|
|
2651
|
+
then: {
|
|
2652
|
+
type: "array",
|
|
2653
|
+
items: ref("FlowSurfaceActionLinkageAction")
|
|
2654
|
+
}
|
|
2251
2655
|
},
|
|
2252
2656
|
additionalProperties: false
|
|
2253
2657
|
},
|
|
2254
|
-
|
|
2658
|
+
FlowSurfaceFieldLinkageAssignItem: {
|
|
2255
2659
|
type: "object",
|
|
2660
|
+
required: ["targetPath", "value"],
|
|
2256
2661
|
properties: {
|
|
2257
2662
|
key: {
|
|
2258
2663
|
type: "string"
|
|
2259
2664
|
},
|
|
2260
|
-
|
|
2261
|
-
type: "
|
|
2262
|
-
},
|
|
2263
|
-
collectionName: {
|
|
2264
|
-
type: "string"
|
|
2665
|
+
enabled: {
|
|
2666
|
+
type: "boolean"
|
|
2265
2667
|
},
|
|
2266
|
-
|
|
2668
|
+
targetPath: {
|
|
2267
2669
|
type: "string"
|
|
2268
|
-
}
|
|
2670
|
+
},
|
|
2671
|
+
when: ref("FlowSurfaceReactionFilter"),
|
|
2672
|
+
value: ref("FlowSurfaceReactionValueExpr")
|
|
2269
2673
|
},
|
|
2270
|
-
required: ["key", "label", "collectionName"],
|
|
2271
2674
|
additionalProperties: false
|
|
2272
2675
|
},
|
|
2273
|
-
|
|
2676
|
+
FlowSurfaceFieldLinkageActionSetFieldState: {
|
|
2274
2677
|
type: "object",
|
|
2678
|
+
required: ["type", "fieldPaths", "state"],
|
|
2275
2679
|
properties: {
|
|
2276
2680
|
key: {
|
|
2277
|
-
type: "string",
|
|
2278
|
-
enum: ["currentCollection", "currentRecord", "associatedRecords", "otherRecords"]
|
|
2279
|
-
},
|
|
2280
|
-
label: {
|
|
2281
2681
|
type: "string"
|
|
2282
2682
|
},
|
|
2283
|
-
|
|
2284
|
-
type: "string"
|
|
2683
|
+
type: {
|
|
2684
|
+
type: "string",
|
|
2685
|
+
enum: ["setFieldState"]
|
|
2285
2686
|
},
|
|
2286
|
-
|
|
2687
|
+
fieldPaths: {
|
|
2287
2688
|
type: "array",
|
|
2288
2689
|
items: {
|
|
2289
2690
|
type: "string"
|
|
2290
2691
|
}
|
|
2291
2692
|
},
|
|
2292
|
-
|
|
2693
|
+
state: {
|
|
2694
|
+
type: "string",
|
|
2695
|
+
enum: ["visible", "hidden", "hiddenReservedValue", "required", "notRequired", "disabled", "enabled"]
|
|
2696
|
+
}
|
|
2697
|
+
},
|
|
2698
|
+
additionalProperties: false
|
|
2699
|
+
},
|
|
2700
|
+
FlowSurfaceFieldLinkageActionAssignField: {
|
|
2701
|
+
type: "object",
|
|
2702
|
+
required: ["type", "items"],
|
|
2703
|
+
properties: {
|
|
2704
|
+
key: {
|
|
2293
2705
|
type: "string"
|
|
2294
2706
|
},
|
|
2295
|
-
|
|
2296
|
-
type: "string"
|
|
2707
|
+
type: {
|
|
2708
|
+
type: "string",
|
|
2709
|
+
enum: ["assignField"]
|
|
2297
2710
|
},
|
|
2298
|
-
|
|
2711
|
+
items: {
|
|
2299
2712
|
type: "array",
|
|
2300
|
-
items: ref("
|
|
2713
|
+
items: ref("FlowSurfaceFieldLinkageAssignItem")
|
|
2301
2714
|
}
|
|
2302
2715
|
},
|
|
2303
|
-
required: ["key", "label"],
|
|
2304
2716
|
additionalProperties: false
|
|
2305
2717
|
},
|
|
2306
|
-
|
|
2718
|
+
FlowSurfaceFieldLinkageActionSetFieldDefaultValue: {
|
|
2307
2719
|
type: "object",
|
|
2308
|
-
required: ["
|
|
2720
|
+
required: ["type", "items"],
|
|
2309
2721
|
properties: {
|
|
2310
|
-
|
|
2722
|
+
key: {
|
|
2723
|
+
type: "string"
|
|
2724
|
+
},
|
|
2725
|
+
type: {
|
|
2311
2726
|
type: "string",
|
|
2312
|
-
enum: ["
|
|
2727
|
+
enum: ["setFieldDefaultValue"]
|
|
2313
2728
|
},
|
|
2314
|
-
|
|
2729
|
+
items: {
|
|
2730
|
+
type: "array",
|
|
2731
|
+
items: ref("FlowSurfaceFieldLinkageAssignItem")
|
|
2732
|
+
}
|
|
2733
|
+
},
|
|
2734
|
+
additionalProperties: false
|
|
2735
|
+
},
|
|
2736
|
+
FlowSurfaceFieldLinkageAction: {
|
|
2737
|
+
oneOf: [
|
|
2738
|
+
ref("FlowSurfaceFieldLinkageActionSetFieldState"),
|
|
2739
|
+
ref("FlowSurfaceFieldLinkageActionAssignField"),
|
|
2740
|
+
ref("FlowSurfaceFieldLinkageActionSetFieldDefaultValue"),
|
|
2741
|
+
ref("FlowSurfaceReactionRunJsAction")
|
|
2742
|
+
]
|
|
2743
|
+
},
|
|
2744
|
+
FlowSurfaceFieldLinkageRule: {
|
|
2745
|
+
type: "object",
|
|
2746
|
+
required: ["then"],
|
|
2747
|
+
properties: {
|
|
2748
|
+
key: {
|
|
2315
2749
|
type: "string"
|
|
2316
2750
|
},
|
|
2317
|
-
|
|
2751
|
+
title: {
|
|
2318
2752
|
type: "string"
|
|
2319
2753
|
},
|
|
2320
|
-
|
|
2321
|
-
type: "
|
|
2754
|
+
enabled: {
|
|
2755
|
+
type: "boolean"
|
|
2756
|
+
},
|
|
2757
|
+
when: ref("FlowSurfaceReactionFilter"),
|
|
2758
|
+
then: {
|
|
2759
|
+
type: "array",
|
|
2760
|
+
items: ref("FlowSurfaceFieldLinkageAction")
|
|
2322
2761
|
}
|
|
2323
2762
|
},
|
|
2324
2763
|
additionalProperties: false
|
|
2325
2764
|
},
|
|
2326
|
-
|
|
2327
|
-
|
|
2765
|
+
FlowSurfaceFieldValueCapability: buildReactionCapabilitySchema("fieldValue", "FlowSurfaceFieldValueRule", {
|
|
2766
|
+
targetFields: {
|
|
2767
|
+
type: "array",
|
|
2768
|
+
description: "Fields that can receive field-value writes in the resolved scene.",
|
|
2769
|
+
items: ref("FlowSurfaceFieldOption")
|
|
2770
|
+
},
|
|
2771
|
+
valueExprMeta: {
|
|
2772
|
+
allOf: [ref("FlowSurfaceReactionValueExprMeta")],
|
|
2773
|
+
description: "Allowed value-expression sources for this capability."
|
|
2774
|
+
}
|
|
2775
|
+
}),
|
|
2776
|
+
FlowSurfaceBlockLinkageCapability: buildReactionCapabilitySchema("blockLinkage", "FlowSurfaceBlockLinkageRule", {
|
|
2777
|
+
supportedActions: {
|
|
2778
|
+
type: "array",
|
|
2779
|
+
description: "Block-level reaction actions supported in the resolved scene.",
|
|
2780
|
+
items: ref("FlowSurfaceReactionSupportedAction")
|
|
2781
|
+
},
|
|
2782
|
+
conditionMeta: {
|
|
2783
|
+
allOf: [ref("FlowSurfaceReactionConditionMeta")],
|
|
2784
|
+
description: "Condition-authoring metadata for this capability."
|
|
2785
|
+
}
|
|
2786
|
+
}),
|
|
2787
|
+
FlowSurfaceFieldLinkageCapability: buildReactionCapabilitySchema("fieldLinkage", "FlowSurfaceFieldLinkageRule", {
|
|
2788
|
+
supportedActions: {
|
|
2789
|
+
type: "array",
|
|
2790
|
+
description: "Field-linkage actions supported in the resolved scene.",
|
|
2791
|
+
items: ref("FlowSurfaceReactionSupportedAction")
|
|
2792
|
+
},
|
|
2793
|
+
targetFields: {
|
|
2794
|
+
type: "array",
|
|
2795
|
+
description: "Fields that can be targeted by field-linkage actions in the resolved scene.",
|
|
2796
|
+
items: ref("FlowSurfaceFieldOption")
|
|
2797
|
+
},
|
|
2798
|
+
conditionMeta: {
|
|
2799
|
+
allOf: [ref("FlowSurfaceReactionConditionMeta")],
|
|
2800
|
+
description: "Condition-authoring metadata for this capability."
|
|
2801
|
+
},
|
|
2802
|
+
valueExprMeta: {
|
|
2803
|
+
allOf: [ref("FlowSurfaceReactionValueExprMeta")],
|
|
2804
|
+
description: "Allowed value-expression sources for assignment/default actions in this capability."
|
|
2805
|
+
}
|
|
2806
|
+
}),
|
|
2807
|
+
FlowSurfaceActionLinkageCapability: buildReactionCapabilitySchema("actionLinkage", "FlowSurfaceActionLinkageRule", {
|
|
2808
|
+
supportedActions: {
|
|
2809
|
+
type: "array",
|
|
2810
|
+
description: "Action-linkage actions supported in the resolved scene.",
|
|
2811
|
+
items: ref("FlowSurfaceReactionSupportedAction")
|
|
2812
|
+
},
|
|
2813
|
+
conditionMeta: {
|
|
2814
|
+
allOf: [ref("FlowSurfaceReactionConditionMeta")],
|
|
2815
|
+
description: "Condition-authoring metadata for this capability."
|
|
2816
|
+
}
|
|
2817
|
+
}),
|
|
2818
|
+
FlowSurfaceReactionCapability: {
|
|
2819
|
+
oneOf: [
|
|
2820
|
+
ref("FlowSurfaceFieldValueCapability"),
|
|
2821
|
+
ref("FlowSurfaceBlockLinkageCapability"),
|
|
2822
|
+
ref("FlowSurfaceFieldLinkageCapability"),
|
|
2823
|
+
ref("FlowSurfaceActionLinkageCapability")
|
|
2824
|
+
]
|
|
2328
2825
|
},
|
|
2329
|
-
|
|
2826
|
+
FlowSurfaceGetReactionMetaRequest: {
|
|
2330
2827
|
type: "object",
|
|
2828
|
+
required: ["target"],
|
|
2331
2829
|
properties: {
|
|
2332
|
-
|
|
2333
|
-
collectionName: ref("FlowSurfaceResolvableString"),
|
|
2334
|
-
associationName: ref("FlowSurfaceResolvableString"),
|
|
2335
|
-
associationPathName: ref("FlowSurfaceResolvableString"),
|
|
2336
|
-
sourceId: ref("FlowSurfaceResolvableIdentifier"),
|
|
2337
|
-
filterByTk: ref("FlowSurfaceResolvableIdentifier")
|
|
2830
|
+
target: ref("FlowSurfaceWriteTarget")
|
|
2338
2831
|
},
|
|
2339
2832
|
additionalProperties: false
|
|
2340
2833
|
},
|
|
2341
|
-
|
|
2834
|
+
FlowSurfaceGetReactionMetaResult: {
|
|
2342
2835
|
type: "object",
|
|
2836
|
+
required: ["target", "capabilities", "unavailable"],
|
|
2343
2837
|
properties: {
|
|
2344
|
-
target: ref("
|
|
2838
|
+
target: ref("FlowSurfaceReactionTargetSummary"),
|
|
2839
|
+
capabilities: {
|
|
2840
|
+
type: "array",
|
|
2841
|
+
items: ref("FlowSurfaceReactionCapability")
|
|
2842
|
+
},
|
|
2843
|
+
unavailable: {
|
|
2844
|
+
type: "array",
|
|
2845
|
+
items: ref("FlowSurfaceReactionUnavailableCapability")
|
|
2846
|
+
}
|
|
2345
2847
|
},
|
|
2346
2848
|
additionalProperties: false
|
|
2347
2849
|
},
|
|
2348
|
-
|
|
2850
|
+
FlowSurfaceSetFieldValueRulesRequest: buildReactionWriteRequestSchema("FlowSurfaceFieldValueRule"),
|
|
2851
|
+
FlowSurfaceSetFieldValueRulesResult: buildReactionWriteResultSchema("FlowSurfaceFieldValueRule"),
|
|
2852
|
+
FlowSurfaceSetBlockLinkageRulesRequest: buildReactionWriteRequestSchema("FlowSurfaceBlockLinkageRule"),
|
|
2853
|
+
FlowSurfaceSetBlockLinkageRulesResult: buildReactionWriteResultSchema("FlowSurfaceBlockLinkageRule"),
|
|
2854
|
+
FlowSurfaceSetFieldLinkageRulesRequest: buildReactionWriteRequestSchema("FlowSurfaceFieldLinkageRule"),
|
|
2855
|
+
FlowSurfaceSetFieldLinkageRulesResult: buildReactionWriteResultSchema("FlowSurfaceFieldLinkageRule"),
|
|
2856
|
+
FlowSurfaceSetActionLinkageRulesRequest: buildReactionWriteRequestSchema("FlowSurfaceActionLinkageRule"),
|
|
2857
|
+
FlowSurfaceSetActionLinkageRulesResult: buildReactionWriteResultSchema("FlowSurfaceActionLinkageRule"),
|
|
2858
|
+
FlowSurfaceApplyBlueprintReactionItemSetFieldValueRules: {
|
|
2349
2859
|
type: "object",
|
|
2860
|
+
required: ["type", "target", "rules"],
|
|
2350
2861
|
properties: {
|
|
2351
|
-
|
|
2352
|
-
|
|
2353
|
-
|
|
2862
|
+
type: {
|
|
2863
|
+
type: "string",
|
|
2864
|
+
enum: ["setFieldValueRules"]
|
|
2354
2865
|
},
|
|
2355
|
-
|
|
2356
|
-
type: "
|
|
2357
|
-
|
|
2866
|
+
target: {
|
|
2867
|
+
type: "string",
|
|
2868
|
+
description: "Bind key or local key of the reaction target resolved from the same blueprint run. The referenced node must have an explicit key/bind key in that blueprint result. For form field-value writes, point to the form block key/path, not the inner grid node."
|
|
2358
2869
|
},
|
|
2359
|
-
|
|
2870
|
+
rules: {
|
|
2360
2871
|
type: "array",
|
|
2361
|
-
items: ref("
|
|
2872
|
+
items: ref("FlowSurfaceFieldValueRule")
|
|
2362
2873
|
},
|
|
2363
|
-
|
|
2364
|
-
type: "
|
|
2365
|
-
description: "
|
|
2366
|
-
|
|
2874
|
+
expectedFingerprint: {
|
|
2875
|
+
type: "string",
|
|
2876
|
+
description: "Optional optimistic-concurrency fingerprint from a prior `getReactionMeta` read of the same slot."
|
|
2877
|
+
}
|
|
2878
|
+
},
|
|
2879
|
+
additionalProperties: false
|
|
2880
|
+
},
|
|
2881
|
+
FlowSurfaceApplyBlueprintReactionItemSetBlockLinkageRules: {
|
|
2882
|
+
type: "object",
|
|
2883
|
+
required: ["type", "target", "rules"],
|
|
2884
|
+
properties: {
|
|
2885
|
+
type: {
|
|
2886
|
+
type: "string",
|
|
2887
|
+
enum: ["setBlockLinkageRules"]
|
|
2367
2888
|
},
|
|
2368
|
-
|
|
2369
|
-
type: "
|
|
2370
|
-
description: "
|
|
2371
|
-
items: ref("FlowSurfaceCatalogItem")
|
|
2889
|
+
target: {
|
|
2890
|
+
type: "string",
|
|
2891
|
+
description: "Bind key or local key of the reaction target resolved from the same blueprint run. The referenced node must have an explicit key/bind key in that blueprint result."
|
|
2372
2892
|
},
|
|
2373
|
-
|
|
2893
|
+
rules: {
|
|
2374
2894
|
type: "array",
|
|
2375
|
-
items: ref("
|
|
2376
|
-
},
|
|
2377
|
-
configureOptions: ref("FlowSurfaceConfigureOptions"),
|
|
2378
|
-
settingsSchema: ANY_OBJECT_SCHEMA,
|
|
2379
|
-
settingsContract: {
|
|
2380
|
-
type: "object",
|
|
2381
|
-
properties: {
|
|
2382
|
-
props: ref("FlowSurfaceDomainContract"),
|
|
2383
|
-
decoratorProps: ref("FlowSurfaceDomainContract"),
|
|
2384
|
-
stepParams: ref("FlowSurfaceDomainContract"),
|
|
2385
|
-
flowRegistry: ref("FlowSurfaceDomainContract")
|
|
2386
|
-
},
|
|
2387
|
-
additionalProperties: false
|
|
2895
|
+
items: ref("FlowSurfaceBlockLinkageRule")
|
|
2388
2896
|
},
|
|
2389
|
-
|
|
2390
|
-
|
|
2897
|
+
expectedFingerprint: {
|
|
2898
|
+
type: "string",
|
|
2899
|
+
description: "Optional optimistic-concurrency fingerprint from a prior `getReactionMeta` read of the same slot."
|
|
2900
|
+
}
|
|
2391
2901
|
},
|
|
2392
2902
|
additionalProperties: false
|
|
2393
2903
|
},
|
|
2394
|
-
|
|
2904
|
+
FlowSurfaceApplyBlueprintReactionItemSetFieldLinkageRules: {
|
|
2395
2905
|
type: "object",
|
|
2906
|
+
required: ["type", "target", "rules"],
|
|
2396
2907
|
properties: {
|
|
2397
|
-
title: {
|
|
2398
|
-
type: "string"
|
|
2399
|
-
},
|
|
2400
2908
|
type: {
|
|
2401
|
-
type: "string"
|
|
2402
|
-
|
|
2403
|
-
interface: {
|
|
2404
|
-
type: "string"
|
|
2405
|
-
},
|
|
2406
|
-
description: {
|
|
2407
|
-
type: "string"
|
|
2909
|
+
type: "string",
|
|
2910
|
+
enum: ["setFieldLinkageRules"]
|
|
2408
2911
|
},
|
|
2409
|
-
|
|
2410
|
-
type: "
|
|
2912
|
+
target: {
|
|
2913
|
+
type: "string",
|
|
2914
|
+
description: "Bind key or local key of the reaction target resolved from the same blueprint run. The referenced node must have an explicit key/bind key in that blueprint result. Form-scene field linkage still targets the form block key/path, and the backend resolves the concrete grid slot."
|
|
2411
2915
|
},
|
|
2412
|
-
|
|
2413
|
-
type: "
|
|
2916
|
+
rules: {
|
|
2917
|
+
type: "array",
|
|
2918
|
+
items: ref("FlowSurfaceFieldLinkageRule")
|
|
2414
2919
|
},
|
|
2415
|
-
|
|
2416
|
-
type: "
|
|
2417
|
-
|
|
2920
|
+
expectedFingerprint: {
|
|
2921
|
+
type: "string",
|
|
2922
|
+
description: "Optional optimistic-concurrency fingerprint from a prior `getReactionMeta` read of the same slot."
|
|
2418
2923
|
}
|
|
2419
2924
|
},
|
|
2420
2925
|
additionalProperties: false
|
|
2421
2926
|
},
|
|
2422
|
-
|
|
2927
|
+
FlowSurfaceApplyBlueprintReactionItemSetActionLinkageRules: {
|
|
2423
2928
|
type: "object",
|
|
2424
|
-
required: ["target"],
|
|
2929
|
+
required: ["type", "target", "rules"],
|
|
2425
2930
|
properties: {
|
|
2426
|
-
|
|
2427
|
-
path: {
|
|
2931
|
+
type: {
|
|
2428
2932
|
type: "string",
|
|
2429
|
-
|
|
2933
|
+
enum: ["setActionLinkageRules"]
|
|
2430
2934
|
},
|
|
2431
|
-
|
|
2432
|
-
type: "
|
|
2433
|
-
|
|
2935
|
+
target: {
|
|
2936
|
+
type: "string",
|
|
2937
|
+
description: "Bind key or local key of the reaction target resolved from the same blueprint run. The referenced node must have an explicit key/bind key in that blueprint result."
|
|
2938
|
+
},
|
|
2939
|
+
rules: {
|
|
2940
|
+
type: "array",
|
|
2941
|
+
items: ref("FlowSurfaceActionLinkageRule")
|
|
2942
|
+
},
|
|
2943
|
+
expectedFingerprint: {
|
|
2944
|
+
type: "string",
|
|
2945
|
+
description: "Optional optimistic-concurrency fingerprint from a prior `getReactionMeta` read of the same slot."
|
|
2434
2946
|
}
|
|
2435
2947
|
},
|
|
2436
2948
|
additionalProperties: false
|
|
2437
2949
|
},
|
|
2438
|
-
|
|
2950
|
+
FlowSurfaceApplyBlueprintReactionItem: {
|
|
2951
|
+
oneOf: [
|
|
2952
|
+
ref("FlowSurfaceApplyBlueprintReactionItemSetFieldValueRules"),
|
|
2953
|
+
ref("FlowSurfaceApplyBlueprintReactionItemSetBlockLinkageRules"),
|
|
2954
|
+
ref("FlowSurfaceApplyBlueprintReactionItemSetFieldLinkageRules"),
|
|
2955
|
+
ref("FlowSurfaceApplyBlueprintReactionItemSetActionLinkageRules")
|
|
2956
|
+
]
|
|
2957
|
+
},
|
|
2958
|
+
FlowSurfaceApplyBlueprintReaction: {
|
|
2439
2959
|
type: "object",
|
|
2960
|
+
required: ["items"],
|
|
2961
|
+
description: "Optional whole-page reaction authoring section for blueprint-driven interaction logic. Each item must target an explicit same-run local key / bind key. Only explicitly listed items are written. Repeating the same `(type, target)` slot is invalid. In `replace`, include every slot that must exist in the resulting surface instead of relying on omission. Use localized `getReactionMeta` + `set*Rules` for edits on existing live surfaces.",
|
|
2440
2962
|
properties: {
|
|
2441
|
-
|
|
2442
|
-
type: "
|
|
2443
|
-
|
|
2963
|
+
items: {
|
|
2964
|
+
type: "array",
|
|
2965
|
+
items: ref("FlowSurfaceApplyBlueprintReactionItem")
|
|
2444
2966
|
}
|
|
2445
2967
|
},
|
|
2446
2968
|
additionalProperties: false
|
|
2447
2969
|
},
|
|
2448
|
-
|
|
2970
|
+
FlowSurfaceApplyBlueprintAssets: {
|
|
2449
2971
|
type: "object",
|
|
2450
2972
|
properties: {
|
|
2451
|
-
|
|
2452
|
-
|
|
2453
|
-
|
|
2454
|
-
|
|
2455
|
-
|
|
2973
|
+
scripts: {
|
|
2974
|
+
type: "object",
|
|
2975
|
+
additionalProperties: ANY_OBJECT_SCHEMA
|
|
2976
|
+
},
|
|
2977
|
+
charts: {
|
|
2978
|
+
type: "object",
|
|
2979
|
+
additionalProperties: ANY_OBJECT_SCHEMA
|
|
2980
|
+
}
|
|
2456
2981
|
},
|
|
2457
2982
|
additionalProperties: false
|
|
2458
2983
|
},
|
|
2459
|
-
|
|
2984
|
+
FlowSurfaceApplyBlueprintLayoutCell: {
|
|
2460
2985
|
oneOf: [
|
|
2461
2986
|
{
|
|
2462
|
-
type: "string"
|
|
2987
|
+
type: "string",
|
|
2988
|
+
description: "Local block key string in the current tab or popup scope."
|
|
2463
2989
|
},
|
|
2464
2990
|
{
|
|
2465
2991
|
type: "object",
|
|
2992
|
+
description: "Layout cell object in the public applyBlueprint contract. Use only { key, span } to reference a local block key.",
|
|
2466
2993
|
required: ["key"],
|
|
2467
2994
|
properties: {
|
|
2468
2995
|
key: {
|
|
2469
|
-
type: "string"
|
|
2996
|
+
type: "string",
|
|
2997
|
+
description: "Local block key in the current tab or popup scope."
|
|
2470
2998
|
},
|
|
2471
2999
|
span: {
|
|
2472
3000
|
type: "number"
|
|
@@ -2476,108 +3004,97 @@ const schemas = {
|
|
|
2476
3004
|
}
|
|
2477
3005
|
]
|
|
2478
3006
|
},
|
|
2479
|
-
|
|
3007
|
+
FlowSurfaceApplyBlueprintLayout: {
|
|
2480
3008
|
type: "object",
|
|
3009
|
+
description: "Layout object allowed only on tabs and inline popup documents, never on individual blocks.",
|
|
2481
3010
|
properties: {
|
|
2482
|
-
rows: {
|
|
2483
|
-
type: "array",
|
|
2484
|
-
|
|
2485
|
-
|
|
2486
|
-
|
|
2487
|
-
|
|
2488
|
-
|
|
2489
|
-
},
|
|
2490
|
-
additionalProperties: false
|
|
2491
|
-
},
|
|
2492
|
-
FlowSurfaceComposeFieldSpec: {
|
|
2493
|
-
oneOf: [
|
|
2494
|
-
{
|
|
2495
|
-
type: "string"
|
|
2496
|
-
},
|
|
2497
|
-
{
|
|
2498
|
-
type: "object",
|
|
2499
|
-
required: ["fieldPath"],
|
|
2500
|
-
properties: {
|
|
2501
|
-
key: {
|
|
2502
|
-
type: "string"
|
|
2503
|
-
},
|
|
2504
|
-
fieldPath: {
|
|
2505
|
-
type: "string"
|
|
2506
|
-
},
|
|
2507
|
-
renderer: {
|
|
2508
|
-
type: "string",
|
|
2509
|
-
enum: ["js"],
|
|
2510
|
-
description: "Optional public renderer variant for a bound field."
|
|
2511
|
-
},
|
|
2512
|
-
associationPathName: {
|
|
2513
|
-
type: "string"
|
|
2514
|
-
},
|
|
2515
|
-
target: {
|
|
2516
|
-
type: "string",
|
|
2517
|
-
description: "Reference to another compose block key, typically used by filter-form fields."
|
|
2518
|
-
},
|
|
2519
|
-
settings: ANY_OBJECT_SCHEMA,
|
|
2520
|
-
popup: ref("FlowSurfaceComposeActionPopup")
|
|
2521
|
-
},
|
|
2522
|
-
additionalProperties: false
|
|
2523
|
-
},
|
|
2524
|
-
{
|
|
2525
|
-
type: "object",
|
|
2526
|
-
required: ["type"],
|
|
2527
|
-
properties: {
|
|
2528
|
-
key: {
|
|
2529
|
-
type: "string"
|
|
2530
|
-
},
|
|
2531
|
-
type: {
|
|
2532
|
-
type: "string",
|
|
2533
|
-
enum: ["jsColumn", "jsItem"],
|
|
2534
|
-
description: "Standalone synthetic public field capability. Does not accept fieldPath."
|
|
2535
|
-
},
|
|
2536
|
-
settings: ANY_OBJECT_SCHEMA
|
|
2537
|
-
},
|
|
2538
|
-
additionalProperties: false
|
|
3011
|
+
rows: {
|
|
3012
|
+
type: "array",
|
|
3013
|
+
description: "Two-dimensional layout grid. Each cell is either a block key string or an object { key, span }.",
|
|
3014
|
+
items: {
|
|
3015
|
+
type: "array",
|
|
3016
|
+
items: ref("FlowSurfaceApplyBlueprintLayoutCell")
|
|
3017
|
+
}
|
|
2539
3018
|
}
|
|
2540
|
-
|
|
3019
|
+
},
|
|
3020
|
+
additionalProperties: false
|
|
2541
3021
|
},
|
|
2542
|
-
|
|
3022
|
+
FlowSurfaceApplyBlueprintPopup: {
|
|
2543
3023
|
type: "object",
|
|
2544
3024
|
properties: {
|
|
3025
|
+
title: {
|
|
3026
|
+
type: "string"
|
|
3027
|
+
},
|
|
2545
3028
|
mode: {
|
|
2546
3029
|
type: "string",
|
|
2547
3030
|
enum: ["append", "replace"]
|
|
2548
3031
|
},
|
|
3032
|
+
template: ref("FlowSurfacePopupTemplateRef"),
|
|
2549
3033
|
blocks: {
|
|
2550
3034
|
type: "array",
|
|
2551
|
-
|
|
3035
|
+
description: "Inline popup blocks. For custom `edit` popups, provide exactly one `editForm` block plus any optional sibling blocks.",
|
|
3036
|
+
items: ref("FlowSurfaceApplyBlueprintBlockSpec")
|
|
2552
3037
|
},
|
|
2553
|
-
layout:
|
|
3038
|
+
layout: {
|
|
3039
|
+
allOf: [ref("FlowSurfaceApplyBlueprintLayout")],
|
|
3040
|
+
description: "Popup-scoped layout. Layout is only allowed on tabs and popup documents, not on individual blocks."
|
|
3041
|
+
}
|
|
2554
3042
|
},
|
|
2555
3043
|
additionalProperties: false
|
|
2556
3044
|
},
|
|
2557
|
-
|
|
3045
|
+
FlowSurfaceApplyBlueprintFieldSpec: {
|
|
2558
3046
|
oneOf: [
|
|
2559
3047
|
{
|
|
2560
3048
|
type: "string"
|
|
2561
3049
|
},
|
|
2562
3050
|
{
|
|
2563
3051
|
type: "object",
|
|
2564
|
-
required: ["type"],
|
|
2565
3052
|
properties: {
|
|
2566
|
-
key: {
|
|
2567
|
-
|
|
3053
|
+
key: { type: "string" },
|
|
3054
|
+
field: { type: "string" },
|
|
3055
|
+
associationPathName: { type: "string" },
|
|
3056
|
+
renderer: { type: "string" },
|
|
3057
|
+
type: { type: "string" },
|
|
3058
|
+
label: { type: "string" },
|
|
3059
|
+
target: {
|
|
3060
|
+
type: "string",
|
|
3061
|
+
description: "String block key on the same tab or popup scope, typically used by filter-form fields."
|
|
2568
3062
|
},
|
|
3063
|
+
settings: ANY_OBJECT_SCHEMA,
|
|
3064
|
+
popup: ref("FlowSurfaceApplyBlueprintPopup"),
|
|
3065
|
+
script: { type: "string" },
|
|
3066
|
+
chart: { type: "string" }
|
|
3067
|
+
},
|
|
3068
|
+
additionalProperties: false
|
|
3069
|
+
}
|
|
3070
|
+
]
|
|
3071
|
+
},
|
|
3072
|
+
FlowSurfaceApplyBlueprintActionSpec: {
|
|
3073
|
+
oneOf: [
|
|
3074
|
+
{
|
|
3075
|
+
type: "string"
|
|
3076
|
+
},
|
|
3077
|
+
{
|
|
3078
|
+
type: "object",
|
|
3079
|
+
required: ["type"],
|
|
3080
|
+
properties: {
|
|
3081
|
+
key: { type: "string" },
|
|
2569
3082
|
type: {
|
|
2570
3083
|
type: "string",
|
|
2571
|
-
enum:
|
|
3084
|
+
enum: ACTION_TYPE_ENUM,
|
|
3085
|
+
description: "Action type. On record-capable blocks (`table`, `details`, `list`, `gridCard`), record actions such as `view`, `edit`, `updateRecord`, and `delete` should normally be authored under `recordActions`; applyBlueprint also auto-promotes them from `actions` for convenience. For custom `edit` popups, include exactly one `editForm` block inside popup.blocks."
|
|
2572
3086
|
},
|
|
3087
|
+
title: { type: "string" },
|
|
2573
3088
|
settings: ANY_OBJECT_SCHEMA,
|
|
2574
|
-
popup: ref("
|
|
3089
|
+
popup: ref("FlowSurfaceApplyBlueprintPopup"),
|
|
3090
|
+
script: { type: "string" },
|
|
3091
|
+
chart: { type: "string" }
|
|
2575
3092
|
},
|
|
2576
3093
|
additionalProperties: false
|
|
2577
3094
|
}
|
|
2578
3095
|
]
|
|
2579
3096
|
},
|
|
2580
|
-
|
|
3097
|
+
FlowSurfaceApplyBlueprintRecordActionSpec: {
|
|
2581
3098
|
oneOf: [
|
|
2582
3099
|
{
|
|
2583
3100
|
type: "string"
|
|
@@ -2586,231 +3103,210 @@ const schemas = {
|
|
|
2586
3103
|
type: "object",
|
|
2587
3104
|
required: ["type"],
|
|
2588
3105
|
properties: {
|
|
2589
|
-
key: {
|
|
2590
|
-
type: "string"
|
|
2591
|
-
},
|
|
3106
|
+
key: { type: "string" },
|
|
2592
3107
|
type: {
|
|
2593
3108
|
type: "string",
|
|
2594
|
-
enum: RECORD_ACTION_TYPE_ENUM
|
|
3109
|
+
enum: RECORD_ACTION_TYPE_ENUM,
|
|
3110
|
+
description: "Record-action type for record-capable blocks such as `table`, `details`, `list`, and `gridCard`. For custom `edit` popups, include exactly one `editForm` block inside popup.blocks."
|
|
2595
3111
|
},
|
|
3112
|
+
title: { type: "string" },
|
|
2596
3113
|
settings: ANY_OBJECT_SCHEMA,
|
|
2597
|
-
popup: ref("
|
|
3114
|
+
popup: ref("FlowSurfaceApplyBlueprintPopup"),
|
|
3115
|
+
script: { type: "string" },
|
|
3116
|
+
chart: { type: "string" }
|
|
2598
3117
|
},
|
|
2599
3118
|
additionalProperties: false
|
|
2600
3119
|
}
|
|
2601
3120
|
]
|
|
2602
3121
|
},
|
|
2603
|
-
|
|
3122
|
+
FlowSurfaceApplyBlueprintBlockSpec: {
|
|
2604
3123
|
type: "object",
|
|
2605
|
-
|
|
3124
|
+
description: "Public applyBlueprint block spec. Blocks do not accept a `layout` property; use tab.layout or popup.layout instead. Generic `form` is not supported here; use `editForm` or `createForm`.",
|
|
3125
|
+
anyOf: [{ required: ["type"] }, { required: ["template"] }],
|
|
2606
3126
|
properties: {
|
|
2607
|
-
key: {
|
|
2608
|
-
type: "string"
|
|
2609
|
-
},
|
|
3127
|
+
key: { type: "string" },
|
|
2610
3128
|
type: {
|
|
2611
3129
|
type: "string",
|
|
2612
|
-
enum:
|
|
2613
|
-
|
|
2614
|
-
|
|
2615
|
-
|
|
2616
|
-
|
|
2617
|
-
|
|
2618
|
-
|
|
2619
|
-
|
|
2620
|
-
|
|
2621
|
-
|
|
2622
|
-
|
|
2623
|
-
|
|
2624
|
-
|
|
2625
|
-
|
|
3130
|
+
enum: APPLY_BLUEPRINT_BLOCK_TYPE_ENUM,
|
|
3131
|
+
description: "Public applyBlueprint block type. Generic `form` is not supported; use `editForm` or `createForm`."
|
|
3132
|
+
},
|
|
3133
|
+
title: { type: "string" },
|
|
3134
|
+
collection: {
|
|
3135
|
+
type: "string",
|
|
3136
|
+
description: "Block-level shorthand collection name. When using the nested resource object instead, use resource.collectionName there."
|
|
3137
|
+
},
|
|
3138
|
+
dataSourceKey: { type: "string" },
|
|
3139
|
+
associationPathName: {
|
|
3140
|
+
type: "string",
|
|
3141
|
+
description: "Association field path used by raw resource-init shorthand. For popup association tables, prefer `resource.binding='associatedRecords'` with `associationField`; applyBlueprint only normalizes `currentRecord|associatedRecords + associationPathName` to that canonical form when `associationPathName` is a single association field name."
|
|
3142
|
+
},
|
|
3143
|
+
binding: {
|
|
3144
|
+
type: "string",
|
|
3145
|
+
enum: ["currentCollection", "currentRecord", "associatedRecords", "otherRecords"]
|
|
3146
|
+
},
|
|
3147
|
+
associationField: {
|
|
3148
|
+
type: "string",
|
|
3149
|
+
description: "Canonical association field name for popup `associatedRecords` binding. Prefer this over `associationPathName` when authoring relation tables inside record popups."
|
|
2626
3150
|
},
|
|
2627
3151
|
resource: ref("FlowSurfaceBlockResourceInput"),
|
|
3152
|
+
template: ref("FlowSurfaceBlockTemplateRef"),
|
|
2628
3153
|
settings: ANY_OBJECT_SCHEMA,
|
|
2629
3154
|
fields: {
|
|
2630
3155
|
type: "array",
|
|
2631
|
-
items: ref("
|
|
3156
|
+
items: ref("FlowSurfaceApplyBlueprintFieldSpec")
|
|
2632
3157
|
},
|
|
2633
3158
|
actions: {
|
|
2634
3159
|
type: "array",
|
|
2635
|
-
description: "Block-level actions.
|
|
2636
|
-
items: ref("
|
|
3160
|
+
description: "Block-level actions. On record-capable blocks, `view`, `edit`, `updateRecord`, and `delete` should normally go to `recordActions`; applyBlueprint auto-promotes those common record actions when they are written here.",
|
|
3161
|
+
items: ref("FlowSurfaceApplyBlueprintActionSpec")
|
|
2637
3162
|
},
|
|
2638
3163
|
recordActions: {
|
|
2639
3164
|
type: "array",
|
|
2640
|
-
|
|
2641
|
-
|
|
2642
|
-
}
|
|
3165
|
+
items: ref("FlowSurfaceApplyBlueprintRecordActionSpec")
|
|
3166
|
+
},
|
|
3167
|
+
script: { type: "string" },
|
|
3168
|
+
chart: { type: "string" }
|
|
2643
3169
|
},
|
|
2644
3170
|
additionalProperties: false
|
|
2645
3171
|
},
|
|
2646
|
-
|
|
3172
|
+
FlowSurfaceApplyBlueprintTab: {
|
|
2647
3173
|
type: "object",
|
|
2648
|
-
required: ["
|
|
3174
|
+
required: ["blocks"],
|
|
2649
3175
|
properties: {
|
|
2650
|
-
|
|
2651
|
-
mode: {
|
|
3176
|
+
key: {
|
|
2652
3177
|
type: "string",
|
|
2653
|
-
|
|
2654
|
-
default: "append"
|
|
3178
|
+
description: "Optional local tab key used only inside the current applyBlueprint document for layout or in-document references. It is not used to match existing route-backed tabs in replace mode. When omitted, the server generates one."
|
|
2655
3179
|
},
|
|
3180
|
+
title: { type: "string" },
|
|
3181
|
+
icon: { type: "string" },
|
|
3182
|
+
documentTitle: { type: "string" },
|
|
2656
3183
|
blocks: {
|
|
2657
3184
|
type: "array",
|
|
2658
|
-
|
|
3185
|
+
minItems: 1,
|
|
3186
|
+
items: ref("FlowSurfaceApplyBlueprintBlockSpec")
|
|
2659
3187
|
},
|
|
2660
|
-
layout:
|
|
3188
|
+
layout: {
|
|
3189
|
+
allOf: [ref("FlowSurfaceApplyBlueprintLayout")],
|
|
3190
|
+
description: "Tab-scoped layout. Layout is allowed here and on popup documents, not on individual blocks."
|
|
3191
|
+
}
|
|
2661
3192
|
},
|
|
2662
3193
|
additionalProperties: false
|
|
2663
3194
|
},
|
|
2664
|
-
|
|
3195
|
+
FlowSurfaceApplyBlueprintNavigationGroup: {
|
|
2665
3196
|
type: "object",
|
|
2666
3197
|
properties: {
|
|
2667
|
-
|
|
2668
|
-
|
|
2669
|
-
|
|
2670
|
-
fieldPath: {
|
|
2671
|
-
type: "string"
|
|
3198
|
+
routeId: {
|
|
3199
|
+
...STRING_OR_INTEGER_SCHEMA,
|
|
3200
|
+
description: "Preferred existing menu-group route id for exact targeting. Do not mix it with title/icon/tooltip/hideInMenu. applyBlueprint create mode does not mutate existing group metadata; use low-level updateMenu separately when needed."
|
|
2672
3201
|
},
|
|
2673
|
-
|
|
3202
|
+
title: {
|
|
2674
3203
|
type: "string",
|
|
2675
|
-
|
|
3204
|
+
description: "Group title for create mode. When `routeId` is omitted, applyBlueprint reuses a same-title group if the match is unique, creates one when no group exists, and rejects ambiguous multi-match cases. Same-title reuse is title-only; if an existing group's metadata must change, use low-level updateMenu instead of applyBlueprint create."
|
|
2676
3205
|
},
|
|
2677
|
-
|
|
3206
|
+
icon: {
|
|
2678
3207
|
type: "string",
|
|
2679
|
-
|
|
3208
|
+
description: "Group icon used only when create mode actually creates a new menu group. Not allowed together with routeId."
|
|
2680
3209
|
},
|
|
2681
|
-
|
|
2682
|
-
type: "string"
|
|
2683
|
-
},
|
|
2684
|
-
associationPathName: {
|
|
3210
|
+
tooltip: {
|
|
2685
3211
|
type: "string",
|
|
2686
|
-
|
|
2687
|
-
},
|
|
2688
|
-
target: {
|
|
2689
|
-
type: "string"
|
|
2690
|
-
},
|
|
2691
|
-
wrapperUid: {
|
|
2692
|
-
type: "string"
|
|
2693
|
-
},
|
|
2694
|
-
fieldUid: {
|
|
2695
|
-
type: "string"
|
|
2696
|
-
},
|
|
2697
|
-
innerFieldUid: {
|
|
2698
|
-
type: "string"
|
|
2699
|
-
},
|
|
2700
|
-
popupPageUid: {
|
|
2701
|
-
type: "string"
|
|
2702
|
-
},
|
|
2703
|
-
popupTabUid: {
|
|
2704
|
-
type: "string"
|
|
3212
|
+
description: "Group tooltip used only when create mode actually creates a new menu group. Not allowed together with routeId."
|
|
2705
3213
|
},
|
|
2706
|
-
|
|
2707
|
-
type: "
|
|
3214
|
+
hideInMenu: {
|
|
3215
|
+
type: "boolean",
|
|
3216
|
+
description: "Group hidden-state used only when create mode actually creates a new menu group. Not allowed together with routeId."
|
|
2708
3217
|
}
|
|
2709
3218
|
},
|
|
2710
3219
|
additionalProperties: false
|
|
2711
3220
|
},
|
|
2712
|
-
|
|
3221
|
+
FlowSurfaceApplyBlueprintNavigation: {
|
|
2713
3222
|
type: "object",
|
|
2714
3223
|
properties: {
|
|
2715
|
-
|
|
2716
|
-
|
|
2717
|
-
|
|
2718
|
-
|
|
2719
|
-
|
|
2720
|
-
|
|
2721
|
-
|
|
2722
|
-
|
|
2723
|
-
|
|
2724
|
-
|
|
2725
|
-
parentUid: {
|
|
2726
|
-
type: "string"
|
|
2727
|
-
},
|
|
2728
|
-
assignFormUid: {
|
|
2729
|
-
type: "string"
|
|
2730
|
-
},
|
|
2731
|
-
assignFormGridUid: {
|
|
2732
|
-
type: "string"
|
|
2733
|
-
},
|
|
2734
|
-
popupPageUid: {
|
|
2735
|
-
type: "string"
|
|
2736
|
-
},
|
|
2737
|
-
popupTabUid: {
|
|
2738
|
-
type: "string"
|
|
2739
|
-
},
|
|
2740
|
-
popupGridUid: {
|
|
2741
|
-
type: "string"
|
|
3224
|
+
group: ref("FlowSurfaceApplyBlueprintNavigationGroup"),
|
|
3225
|
+
item: {
|
|
3226
|
+
type: "object",
|
|
3227
|
+
properties: {
|
|
3228
|
+
title: { type: "string" },
|
|
3229
|
+
icon: { type: "string" },
|
|
3230
|
+
tooltip: { type: "string" },
|
|
3231
|
+
hideInMenu: { type: "boolean" }
|
|
3232
|
+
},
|
|
3233
|
+
additionalProperties: false
|
|
2742
3234
|
}
|
|
2743
3235
|
},
|
|
2744
3236
|
additionalProperties: false
|
|
2745
3237
|
},
|
|
2746
|
-
|
|
3238
|
+
FlowSurfaceApplyBlueprintPage: {
|
|
2747
3239
|
type: "object",
|
|
2748
3240
|
properties: {
|
|
2749
|
-
|
|
2750
|
-
|
|
2751
|
-
},
|
|
2752
|
-
type:
|
|
3241
|
+
title: { type: "string" },
|
|
3242
|
+
icon: { type: "string" },
|
|
3243
|
+
documentTitle: { type: "string" },
|
|
3244
|
+
enableHeader: { type: "boolean" },
|
|
3245
|
+
enableTabs: { type: "boolean" },
|
|
3246
|
+
displayTitle: { type: "boolean" }
|
|
3247
|
+
},
|
|
3248
|
+
additionalProperties: false
|
|
3249
|
+
},
|
|
3250
|
+
FlowSurfaceApplyBlueprintTarget: {
|
|
3251
|
+
type: "object",
|
|
3252
|
+
required: ["pageSchemaUid"],
|
|
3253
|
+
properties: {
|
|
3254
|
+
pageSchemaUid: { type: "string" }
|
|
3255
|
+
},
|
|
3256
|
+
additionalProperties: false
|
|
3257
|
+
},
|
|
3258
|
+
FlowSurfaceApplyBlueprintRequest: {
|
|
3259
|
+
type: "object",
|
|
3260
|
+
required: ["mode", "tabs"],
|
|
3261
|
+
description: "Simplified page-structure request object for applyBlueprint. `version` may be omitted and defaults to '1'. Runtime validation enforces mode-specific rules: create does not accept target, while replace requires target.pageSchemaUid and does not use navigation.",
|
|
3262
|
+
properties: {
|
|
3263
|
+
version: {
|
|
2753
3264
|
type: "string",
|
|
2754
|
-
enum: [
|
|
2755
|
-
"table",
|
|
2756
|
-
"createForm",
|
|
2757
|
-
"editForm",
|
|
2758
|
-
"details",
|
|
2759
|
-
"filterForm",
|
|
2760
|
-
"list",
|
|
2761
|
-
"gridCard",
|
|
2762
|
-
"markdown",
|
|
2763
|
-
"iframe",
|
|
2764
|
-
"chart",
|
|
2765
|
-
"actionPanel",
|
|
2766
|
-
"jsBlock"
|
|
2767
|
-
]
|
|
2768
|
-
},
|
|
2769
|
-
uid: {
|
|
2770
|
-
type: "string"
|
|
3265
|
+
enum: ["1"]
|
|
2771
3266
|
},
|
|
2772
|
-
|
|
2773
|
-
type: "string"
|
|
3267
|
+
mode: {
|
|
3268
|
+
type: "string",
|
|
3269
|
+
enum: ["create", "replace"]
|
|
2774
3270
|
},
|
|
2775
|
-
|
|
2776
|
-
|
|
3271
|
+
target: ref("FlowSurfaceApplyBlueprintTarget"),
|
|
3272
|
+
navigation: ref("FlowSurfaceApplyBlueprintNavigation"),
|
|
3273
|
+
page: ref("FlowSurfaceApplyBlueprintPage"),
|
|
3274
|
+
tabs: {
|
|
3275
|
+
type: "array",
|
|
3276
|
+
minItems: 1,
|
|
3277
|
+
items: ref("FlowSurfaceApplyBlueprintTab")
|
|
2777
3278
|
},
|
|
2778
|
-
|
|
3279
|
+
assets: ref("FlowSurfaceApplyBlueprintAssets"),
|
|
3280
|
+
reaction: ref("FlowSurfaceApplyBlueprintReaction")
|
|
3281
|
+
},
|
|
3282
|
+
additionalProperties: false
|
|
3283
|
+
},
|
|
3284
|
+
FlowSurfaceApplyBlueprintResponseTarget: {
|
|
3285
|
+
type: "object",
|
|
3286
|
+
properties: {
|
|
3287
|
+
pageSchemaUid: {
|
|
2779
3288
|
type: "string"
|
|
2780
3289
|
},
|
|
2781
|
-
|
|
3290
|
+
pageUid: {
|
|
2782
3291
|
type: "string"
|
|
2783
|
-
},
|
|
2784
|
-
fields: {
|
|
2785
|
-
type: "array",
|
|
2786
|
-
items: ref("FlowSurfaceComposeFieldResult")
|
|
2787
|
-
},
|
|
2788
|
-
actions: {
|
|
2789
|
-
type: "array",
|
|
2790
|
-
items: ref("FlowSurfaceComposeActionResult")
|
|
2791
|
-
},
|
|
2792
|
-
recordActions: {
|
|
2793
|
-
type: "array",
|
|
2794
|
-
description: "Returned record/item-level action results for record-capable public compose semantics such as table/details/list/gridCard.",
|
|
2795
|
-
items: ref("FlowSurfaceComposeActionResult")
|
|
2796
3292
|
}
|
|
2797
3293
|
},
|
|
2798
3294
|
additionalProperties: false
|
|
2799
3295
|
},
|
|
2800
|
-
|
|
3296
|
+
FlowSurfaceApplyBlueprintResponse: {
|
|
2801
3297
|
type: "object",
|
|
3298
|
+
required: ["version", "mode", "target", "surface"],
|
|
2802
3299
|
properties: {
|
|
2803
|
-
|
|
2804
|
-
mode: {
|
|
3300
|
+
version: {
|
|
2805
3301
|
type: "string",
|
|
2806
|
-
enum: ["
|
|
3302
|
+
enum: ["1"]
|
|
2807
3303
|
},
|
|
2808
|
-
|
|
2809
|
-
|
|
2810
|
-
|
|
2811
|
-
items: ref("FlowSurfaceComposeBlockResult")
|
|
3304
|
+
mode: {
|
|
3305
|
+
type: "string",
|
|
3306
|
+
enum: ["create", "replace"]
|
|
2812
3307
|
},
|
|
2813
|
-
|
|
3308
|
+
target: ref("FlowSurfaceApplyBlueprintResponseTarget"),
|
|
3309
|
+
surface: ref("FlowSurfaceGetResponse")
|
|
2814
3310
|
},
|
|
2815
3311
|
additionalProperties: false
|
|
2816
3312
|
},
|
|
@@ -3305,6 +3801,7 @@ const schemas = {
|
|
|
3305
3801
|
use: {
|
|
3306
3802
|
type: "string"
|
|
3307
3803
|
},
|
|
3804
|
+
template: ref("FlowSurfaceBlockTemplateRef"),
|
|
3308
3805
|
resource: ref("FlowSurfaceBlockResourceInput"),
|
|
3309
3806
|
resourceInit: ref("FlowSurfaceResourceInit"),
|
|
3310
3807
|
settings: ANY_OBJECT_SCHEMA
|
|
@@ -3359,8 +3856,17 @@ const schemas = {
|
|
|
3359
3856
|
FlowSurfaceAddFieldRequest: {
|
|
3360
3857
|
type: "object",
|
|
3361
3858
|
required: ["target"],
|
|
3859
|
+
oneOf: [
|
|
3860
|
+
{
|
|
3861
|
+
required: ["template"]
|
|
3862
|
+
},
|
|
3863
|
+
{
|
|
3864
|
+
anyOf: [{ required: ["fieldPath"] }, { required: ["type"] }]
|
|
3865
|
+
}
|
|
3866
|
+
],
|
|
3362
3867
|
properties: {
|
|
3363
3868
|
target: ref("FlowSurfaceWriteTarget"),
|
|
3869
|
+
template: ref("FlowSurfaceTemplateRef"),
|
|
3364
3870
|
fieldPath: {
|
|
3365
3871
|
type: "string",
|
|
3366
3872
|
description: "Required for bound fields. Omit when using synthetic standalone types such as jsColumn/jsItem."
|
|
@@ -3396,10 +3902,10 @@ const schemas = {
|
|
|
3396
3902
|
},
|
|
3397
3903
|
targetUid: {
|
|
3398
3904
|
type: "string",
|
|
3399
|
-
description: "
|
|
3905
|
+
description: "Optional filter-form target selection key. This is not the same field as `target.uid`."
|
|
3400
3906
|
},
|
|
3401
3907
|
settings: ANY_OBJECT_SCHEMA,
|
|
3402
|
-
popup: ref("
|
|
3908
|
+
popup: ref("FlowSurfaceComposeFieldPopup")
|
|
3403
3909
|
},
|
|
3404
3910
|
additionalProperties: false
|
|
3405
3911
|
},
|
|
@@ -3572,6 +4078,7 @@ const schemas = {
|
|
|
3572
4078
|
use: {
|
|
3573
4079
|
type: "string"
|
|
3574
4080
|
},
|
|
4081
|
+
template: ref("FlowSurfaceBlockTemplateRef"),
|
|
3575
4082
|
resource: ref("FlowSurfaceBlockResourceInput"),
|
|
3576
4083
|
resourceInit: ref("FlowSurfaceResourceInit"),
|
|
3577
4084
|
settings: ANY_OBJECT_SCHEMA
|
|
@@ -3580,10 +4087,19 @@ const schemas = {
|
|
|
3580
4087
|
},
|
|
3581
4088
|
FlowSurfaceAddFieldItem: {
|
|
3582
4089
|
type: "object",
|
|
4090
|
+
oneOf: [
|
|
4091
|
+
{
|
|
4092
|
+
required: ["template"]
|
|
4093
|
+
},
|
|
4094
|
+
{
|
|
4095
|
+
anyOf: [{ required: ["fieldPath"] }, { required: ["type"] }]
|
|
4096
|
+
}
|
|
4097
|
+
],
|
|
3583
4098
|
properties: {
|
|
3584
4099
|
key: {
|
|
3585
4100
|
type: "string"
|
|
3586
4101
|
},
|
|
4102
|
+
template: ref("FlowSurfaceTemplateRef"),
|
|
3587
4103
|
fieldPath: {
|
|
3588
4104
|
type: "string"
|
|
3589
4105
|
},
|
|
@@ -3617,7 +4133,7 @@ const schemas = {
|
|
|
3617
4133
|
type: "string"
|
|
3618
4134
|
},
|
|
3619
4135
|
settings: ANY_OBJECT_SCHEMA,
|
|
3620
|
-
popup: ref("
|
|
4136
|
+
popup: ref("FlowSurfaceComposeFieldPopup")
|
|
3621
4137
|
},
|
|
3622
4138
|
additionalProperties: false
|
|
3623
4139
|
},
|
|
@@ -3673,9 +4189,18 @@ const schemas = {
|
|
|
3673
4189
|
},
|
|
3674
4190
|
FlowSurfaceAddFieldsRequest: {
|
|
3675
4191
|
type: "object",
|
|
3676
|
-
required: ["target"
|
|
4192
|
+
required: ["target"],
|
|
4193
|
+
oneOf: [
|
|
4194
|
+
{
|
|
4195
|
+
required: ["template"]
|
|
4196
|
+
},
|
|
4197
|
+
{
|
|
4198
|
+
required: ["fields"]
|
|
4199
|
+
}
|
|
4200
|
+
],
|
|
3677
4201
|
properties: {
|
|
3678
4202
|
target: ref("FlowSurfaceWriteTarget"),
|
|
4203
|
+
template: ref("FlowSurfaceTemplateRef"),
|
|
3679
4204
|
fields: {
|
|
3680
4205
|
type: "array",
|
|
3681
4206
|
items: ref("FlowSurfaceAddFieldItem")
|
|
@@ -4167,7 +4692,7 @@ const schemas = {
|
|
|
4167
4692
|
target: ref("FlowSurfaceMutateWriteTarget"),
|
|
4168
4693
|
values: {
|
|
4169
4694
|
...ANY_OBJECT_SCHEMA,
|
|
4170
|
-
description: 'Business payload for the corresponding `/flowSurfaces:<type>` action. Nested
|
|
4695
|
+
description: 'Business payload for the corresponding `/flowSurfaces:<type>` action. Nested runtime values must use `{ step: "<opId>", path: "<field>" }` or `{ key: "<opId>" }`.'
|
|
4171
4696
|
}
|
|
4172
4697
|
},
|
|
4173
4698
|
additionalProperties: false
|