@cxtms/cx-schema 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/README.md +384 -0
  2. package/dist/cli.d.ts +6 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +1523 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/index.d.ts +7 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +11 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/types.d.ts +111 -0
  11. package/dist/types.d.ts.map +1 -0
  12. package/dist/types.js +6 -0
  13. package/dist/types.js.map +1 -0
  14. package/dist/utils/schemaLoader.d.ts +17 -0
  15. package/dist/utils/schemaLoader.d.ts.map +1 -0
  16. package/dist/utils/schemaLoader.js +134 -0
  17. package/dist/utils/schemaLoader.js.map +1 -0
  18. package/dist/validator.d.ts +64 -0
  19. package/dist/validator.d.ts.map +1 -0
  20. package/dist/validator.js +380 -0
  21. package/dist/validator.js.map +1 -0
  22. package/dist/workflowValidator.d.ts +64 -0
  23. package/dist/workflowValidator.d.ts.map +1 -0
  24. package/dist/workflowValidator.js +410 -0
  25. package/dist/workflowValidator.js.map +1 -0
  26. package/package.json +50 -0
  27. package/schemas/actions/all.json +26 -0
  28. package/schemas/actions/confirm.json +21 -0
  29. package/schemas/actions/consoleLog.json +16 -0
  30. package/schemas/actions/dialog.json +25 -0
  31. package/schemas/actions/fileDownload.json +16 -0
  32. package/schemas/actions/forEach.json +31 -0
  33. package/schemas/actions/if.json +12 -0
  34. package/schemas/actions/mutation.json +25 -0
  35. package/schemas/actions/navigate.json +18 -0
  36. package/schemas/actions/navigateBack.json +22 -0
  37. package/schemas/actions/navigateBackOrClose.json +21 -0
  38. package/schemas/actions/notification.json +19 -0
  39. package/schemas/actions/openBarcodeScanner.json +104 -0
  40. package/schemas/actions/query.json +32 -0
  41. package/schemas/actions/refresh.json +13 -0
  42. package/schemas/actions/resetDirtyState.json +22 -0
  43. package/schemas/actions/setFields.json +21 -0
  44. package/schemas/actions/setStore.json +13 -0
  45. package/schemas/actions/validateForm.json +15 -0
  46. package/schemas/actions/workflow.json +24 -0
  47. package/schemas/components/README.md +147 -0
  48. package/schemas/components/appComponent.json +50 -0
  49. package/schemas/components/barcodeScanner.json +69 -0
  50. package/schemas/components/button.json +123 -0
  51. package/schemas/components/calendar.json +489 -0
  52. package/schemas/components/card.json +176 -0
  53. package/schemas/components/collection.json +54 -0
  54. package/schemas/components/dataGrid.json +119 -0
  55. package/schemas/components/datasource.json +151 -0
  56. package/schemas/components/dropdown.json +57 -0
  57. package/schemas/components/field-collection.json +618 -0
  58. package/schemas/components/field.json +265 -0
  59. package/schemas/components/form.json +234 -0
  60. package/schemas/components/index.json +68 -0
  61. package/schemas/components/layout.json +69 -0
  62. package/schemas/components/module.json +138 -0
  63. package/schemas/components/navDropdown.json +36 -0
  64. package/schemas/components/navbar.json +78 -0
  65. package/schemas/components/navbarItem.json +28 -0
  66. package/schemas/components/navbarLink.json +36 -0
  67. package/schemas/components/row.json +31 -0
  68. package/schemas/components/tab.json +34 -0
  69. package/schemas/components/tabs.json +35 -0
  70. package/schemas/components/timeline.json +172 -0
  71. package/schemas/components/timelineGrid.json +324 -0
  72. package/schemas/fields/README.md +66 -0
  73. package/schemas/fields/attachment.json +156 -0
  74. package/schemas/fields/autocomplete-googleplaces.json +130 -0
  75. package/schemas/fields/checkbox.json +82 -0
  76. package/schemas/fields/date.json +88 -0
  77. package/schemas/fields/datetime.json +75 -0
  78. package/schemas/fields/email.json +75 -0
  79. package/schemas/fields/index.json +53 -0
  80. package/schemas/fields/number.json +91 -0
  81. package/schemas/fields/password.json +70 -0
  82. package/schemas/fields/radio.json +94 -0
  83. package/schemas/fields/rangedatetime.json +56 -0
  84. package/schemas/fields/select-async.json +334 -0
  85. package/schemas/fields/select.json +115 -0
  86. package/schemas/fields/tel.json +79 -0
  87. package/schemas/fields/text.json +86 -0
  88. package/schemas/fields/textarea.json +95 -0
  89. package/schemas/fields/time.json +91 -0
  90. package/schemas/fields/url.json +74 -0
  91. package/schemas/schema.graphql +10492 -0
  92. package/schemas/schemas.json +598 -0
  93. package/schemas/workflows/activity.json +111 -0
  94. package/schemas/workflows/common/condition.json +48 -0
  95. package/schemas/workflows/common/expression.json +76 -0
  96. package/schemas/workflows/common/mapping.json +134 -0
  97. package/schemas/workflows/input.json +76 -0
  98. package/schemas/workflows/output.json +41 -0
  99. package/schemas/workflows/schedule.json +26 -0
  100. package/schemas/workflows/tasks/accounting-transaction.json +95 -0
  101. package/schemas/workflows/tasks/all.json +34 -0
  102. package/schemas/workflows/tasks/attachment.json +94 -0
  103. package/schemas/workflows/tasks/charge.json +90 -0
  104. package/schemas/workflows/tasks/commodity.json +89 -0
  105. package/schemas/workflows/tasks/contact.json +82 -0
  106. package/schemas/workflows/tasks/csv.json +79 -0
  107. package/schemas/workflows/tasks/document-render.json +105 -0
  108. package/schemas/workflows/tasks/document-send.json +84 -0
  109. package/schemas/workflows/tasks/email-send.json +110 -0
  110. package/schemas/workflows/tasks/error.json +72 -0
  111. package/schemas/workflows/tasks/export.json +90 -0
  112. package/schemas/workflows/tasks/foreach.json +69 -0
  113. package/schemas/workflows/tasks/generic.json +47 -0
  114. package/schemas/workflows/tasks/graphql.json +78 -0
  115. package/schemas/workflows/tasks/httpRequest.json +119 -0
  116. package/schemas/workflows/tasks/job.json +88 -0
  117. package/schemas/workflows/tasks/log.json +73 -0
  118. package/schemas/workflows/tasks/map.json +58 -0
  119. package/schemas/workflows/tasks/order.json +87 -0
  120. package/schemas/workflows/tasks/payment.json +85 -0
  121. package/schemas/workflows/tasks/setVariable.json +76 -0
  122. package/schemas/workflows/tasks/switch.json +75 -0
  123. package/schemas/workflows/tasks/template.json +73 -0
  124. package/schemas/workflows/tasks/validation.json +90 -0
  125. package/schemas/workflows/tasks/while.json +53 -0
  126. package/schemas/workflows/tasks/workflow-execute.json +82 -0
  127. package/schemas/workflows/trigger.json +86 -0
  128. package/schemas/workflows/variable.json +46 -0
  129. package/schemas/workflows/workflow.json +172 -0
  130. package/scripts/postinstall.js +161 -0
  131. package/scripts/setup-vscode.js +80 -0
  132. package/templates/module.yaml +83 -0
  133. package/templates/workflow.yaml +100 -0
@@ -0,0 +1,48 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "Workflow Condition",
4
+ "description": "Condition evaluation patterns for workflow execution control",
5
+ "definitions": {
6
+ "condition": {
7
+ "type": "object",
8
+ "properties": {
9
+ "expression": {
10
+ "type": "string",
11
+ "description": "NCalc expression that evaluates to boolean"
12
+ }
13
+ },
14
+ "required": ["expression"],
15
+ "additionalProperties": false
16
+ },
17
+ "conditionArray": {
18
+ "type": "array",
19
+ "items": {
20
+ "$ref": "#/definitions/condition"
21
+ },
22
+ "description": "Array of conditions (all must be true)"
23
+ },
24
+ "simpleCondition": {
25
+ "oneOf": [
26
+ {
27
+ "type": "string",
28
+ "description": "Simple condition expression string"
29
+ },
30
+ {
31
+ "$ref": "#/definitions/condition"
32
+ }
33
+ ]
34
+ }
35
+ },
36
+ "x-examples": {
37
+ "singleCondition": {
38
+ "expression": "[status] = 'Active'"
39
+ },
40
+ "multipleConditions": [
41
+ { "expression": "[isValid] = true" },
42
+ { "expression": "[amount] > 0" }
43
+ ],
44
+ "complexExpression": {
45
+ "expression": "([status] = 'Completed' || [status] = 'Failed') && [notifyUser] = true"
46
+ }
47
+ }
48
+ }
@@ -0,0 +1,76 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "NCalc Expression",
4
+ "description": "NCalc expression patterns for workflow conditions and calculations",
5
+ "definitions": {
6
+ "expression": {
7
+ "type": "string",
8
+ "description": "NCalc expression string",
9
+ "x-examples": [
10
+ "[orderTotal] > 1000",
11
+ "[status] = 'Approved'",
12
+ "isNullOrEmpty([value?]) = false",
13
+ "[status] = 'Completed' || [status] = 'Failed'",
14
+ "format('{0:F2}', [weight])",
15
+ "convertWeight([value], [fromUnit], [toUnit])",
16
+ "formatDate([date], 'MM.dd.yyyy hh:mm', 'en-US')",
17
+ "sum([collection], [each.property])",
18
+ "distinct([collection])",
19
+ "length([array])",
20
+ "All([items], [item.isValid])",
21
+ "Any([items], [item.status] = 'Complete')",
22
+ "contains([text], 'search')",
23
+ "base64(format('{0}:{1}', [user], [password]))",
24
+ "replace([value], 'pattern', 'replacement')",
25
+ "lower([value])",
26
+ "upper([value])",
27
+ "trim(first(split([string], '(')))",
28
+ "join([array], [item.name], ', ')"
29
+ ]
30
+ },
31
+ "templateExpression": {
32
+ "type": "string",
33
+ "description": "Template expression with variable substitution",
34
+ "x-examples": [
35
+ "{{ orderId }}",
36
+ "{{ customer.name }}",
37
+ "{{ order?.customValues?.isConsolidated? }}",
38
+ "Order-{{ orderNumber }}-{{ Date.Now.ToString('yyyyMMdd') }}"
39
+ ]
40
+ },
41
+ "safeNavigation": {
42
+ "type": "string",
43
+ "description": "Path with optional chaining using ?",
44
+ "x-examples": [
45
+ "order?.customer?.email?",
46
+ "items?[0]?.name?",
47
+ "activity?.step?.output?"
48
+ ]
49
+ },
50
+ "variableConverters": {
51
+ "type": "string",
52
+ "description": "Variable type converters",
53
+ "enum": [
54
+ "string",
55
+ "int",
56
+ "decimal",
57
+ "bool",
58
+ "datetime",
59
+ "luceneString",
60
+ "emptyIfNull",
61
+ "nullIfEmpty",
62
+ "transliterate",
63
+ "parseJson",
64
+ "toJson"
65
+ ],
66
+ "x-examples": [
67
+ "[int orderId]",
68
+ "[decimal amount]",
69
+ "[string value]",
70
+ "[bool isActive]",
71
+ "[datetime createdDate]",
72
+ "[luceneString searchTerm]"
73
+ ]
74
+ }
75
+ }
76
+ }
@@ -0,0 +1,134 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "Workflow Mapping",
4
+ "description": "Input/output mapping patterns for workflow data flow",
5
+ "definitions": {
6
+ "outputMapping": {
7
+ "type": "object",
8
+ "properties": {
9
+ "name": {
10
+ "type": "string",
11
+ "description": "Output variable name"
12
+ },
13
+ "mapping": {
14
+ "type": "string",
15
+ "description": "Path to extract value from result"
16
+ }
17
+ },
18
+ "required": ["name", "mapping"],
19
+ "additionalProperties": false
20
+ },
21
+ "variableMapping": {
22
+ "oneOf": [
23
+ {
24
+ "type": "string",
25
+ "description": "Simple template expression"
26
+ },
27
+ {
28
+ "type": "object",
29
+ "properties": {
30
+ "expression": {
31
+ "type": "string",
32
+ "description": "NCalc expression"
33
+ }
34
+ },
35
+ "additionalProperties": true
36
+ },
37
+ {
38
+ "type": "object",
39
+ "properties": {
40
+ "switch": {
41
+ "type": "object",
42
+ "properties": {
43
+ "expression": {
44
+ "type": "string"
45
+ }
46
+ }
47
+ },
48
+ "cases": {
49
+ "type": "object",
50
+ "additionalProperties": true
51
+ },
52
+ "default": {}
53
+ }
54
+ },
55
+ {
56
+ "type": "object",
57
+ "properties": {
58
+ "extends": {
59
+ "type": "string",
60
+ "description": "Extend an existing object"
61
+ },
62
+ "defaultIfNull": {},
63
+ "mapping": {}
64
+ }
65
+ },
66
+ {
67
+ "type": "object",
68
+ "properties": {
69
+ "foreach": {
70
+ "type": "string",
71
+ "description": "Collection to iterate"
72
+ },
73
+ "mapping": {
74
+ "type": "object",
75
+ "additionalProperties": true
76
+ }
77
+ }
78
+ },
79
+ {
80
+ "type": "object",
81
+ "properties": {
82
+ "coalesce": {
83
+ "type": "array",
84
+ "items": {},
85
+ "description": "Return first non-null value"
86
+ }
87
+ }
88
+ }
89
+ ]
90
+ },
91
+ "pathExpression": {
92
+ "type": "string",
93
+ "description": "Dot-notation path to access nested values",
94
+ "x-examples": [
95
+ "activityName.stepName.outputVariable",
96
+ "orders.items?[0]?.jobs[0]?.jobId",
97
+ "order?.customValues?.isConsolidated?",
98
+ "orders?[orderType=\"ParcelShipment\"]?[0]?",
99
+ "carriers[contactId=(carrierId)]",
100
+ "charges[applyToContactId=(carrierId)]",
101
+ "commodities[**]",
102
+ "commodities[**][-1]"
103
+ ]
104
+ }
105
+ },
106
+ "x-examples": {
107
+ "simpleMapping": {
108
+ "name": "orderId",
109
+ "mapping": "getOrder.order.orderId"
110
+ },
111
+ "safeNavMapping": {
112
+ "name": "customValue",
113
+ "mapping": "order?.customValues?.value?"
114
+ },
115
+ "templateMapping": "Order_{{ order.orderNumber }}.pdf",
116
+ "switchMapping": {
117
+ "switch": {
118
+ "expression": "[orderType]"
119
+ },
120
+ "cases": {
121
+ "Air": "air-template",
122
+ "Ocean": "ocean-template"
123
+ },
124
+ "default": "default-template"
125
+ },
126
+ "foreachMapping": {
127
+ "foreach": "items?",
128
+ "mapping": {
129
+ "id": "{{ item.id }}",
130
+ "name": "{{ item.name }}"
131
+ }
132
+ }
133
+ }
134
+ }
@@ -0,0 +1,76 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "Workflow Input Parameter",
4
+ "description": "Definition of a workflow input parameter",
5
+ "type": "object",
6
+ "properties": {
7
+ "name": {
8
+ "type": "string",
9
+ "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$",
10
+ "description": "Input parameter name (must be valid identifier)"
11
+ },
12
+ "type": {
13
+ "type": "string",
14
+ "description": "Input parameter type (e.g., text, number, integer, boolean, date, datetime, options, object, array, or custom entity types)"
15
+ },
16
+ "props": {
17
+ "type": "object",
18
+ "description": "Input properties and configuration",
19
+ "properties": {
20
+ "displayName": {
21
+ "type": "string",
22
+ "description": "Human-readable display name"
23
+ },
24
+ "description": {
25
+ "type": "string",
26
+ "description": "Description of the input parameter"
27
+ },
28
+ "required": {
29
+ "type": "boolean",
30
+ "description": "Whether input is required"
31
+ },
32
+ "multiple": {
33
+ "type": "boolean",
34
+ "description": "Whether multiple values are allowed"
35
+ },
36
+ "visible": {
37
+ "type": "boolean",
38
+ "description": "Whether input is visible in UI"
39
+ },
40
+ "defaultValue": {
41
+ "description": "Default value for the input"
42
+ },
43
+ "mapping": {
44
+ "type": "string",
45
+ "description": "Maps to entity property (e.g., 'order.orderId')"
46
+ },
47
+ "filter": {
48
+ "type": "string",
49
+ "description": "Filter expression for entity inputs"
50
+ },
51
+ "options": {
52
+ "type": "array",
53
+ "description": "Available options for 'options' type",
54
+ "items": {
55
+ "type": "object",
56
+ "properties": {
57
+ "name": {
58
+ "type": "string"
59
+ },
60
+ "value": {}
61
+ },
62
+ "required": ["name", "value"]
63
+ }
64
+ },
65
+ "additionalProperties": {
66
+ "type": "object",
67
+ "description": "Additional input properties",
68
+ "additionalProperties": true
69
+ }
70
+ },
71
+ "additionalProperties": true
72
+ }
73
+ },
74
+ "required": ["name"],
75
+ "additionalProperties": true
76
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "Workflow Output",
4
+ "description": "Definition of a workflow output",
5
+ "type": "object",
6
+ "properties": {
7
+ "name": {
8
+ "type": "string",
9
+ "description": "Output name identifier"
10
+ },
11
+ "mapping": {
12
+ "type": "string",
13
+ "description": "Path to variable value (e.g., 'activityName.stepName.outputVar')"
14
+ },
15
+ "additionalProperties": {
16
+ "type": "object",
17
+ "description": "Additional output configuration",
18
+ "properties": {
19
+ "displayName": {
20
+ "type": "string"
21
+ },
22
+ "description": {
23
+ "type": "string"
24
+ },
25
+ "visible": {
26
+ "type": "boolean"
27
+ },
28
+ "type": {
29
+ "type": "string",
30
+ "enum": ["json", "text"]
31
+ },
32
+ "multiple": {
33
+ "type": "boolean"
34
+ }
35
+ },
36
+ "additionalProperties": true
37
+ }
38
+ },
39
+ "required": ["name", "mapping"],
40
+ "additionalProperties": true
41
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "Workflow Schedule",
4
+ "description": "Definition of a scheduled workflow execution",
5
+ "type": "object",
6
+ "properties": {
7
+ "cron": {
8
+ "type": "string",
9
+ "description": "Cron expression for scheduled execution (e.g., '30 0 1-7 * 6')"
10
+ },
11
+ "displayName": {
12
+ "type": "string",
13
+ "description": "Human-readable description of the schedule"
14
+ },
15
+ "enabled": {
16
+ "type": "boolean",
17
+ "description": "Whether the schedule is enabled"
18
+ },
19
+ "timezone": {
20
+ "type": "string",
21
+ "description": "Timezone for the schedule"
22
+ }
23
+ },
24
+ "required": ["cron"],
25
+ "additionalProperties": true
26
+ }
@@ -0,0 +1,95 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "Accounting Transaction Tasks",
4
+ "description": "Accounting transaction operations (invoices, bills, payments)",
5
+ "type": "object",
6
+ "properties": {
7
+ "task": {
8
+ "type": "string",
9
+ "enum": [
10
+ "AccountingTransaction/Generate@1",
11
+ "AccountingTransaction/Update@1",
12
+ "AccountingTransaction/Delete@1",
13
+ "AccountingTransaction/ApplyCreditToInvoices@1"
14
+ ],
15
+ "description": "Task type identifier"
16
+ },
17
+ "name": {
18
+ "type": "string",
19
+ "description": "Step name identifier"
20
+ },
21
+ "description": {
22
+ "type": "string",
23
+ "description": "Step description"
24
+ },
25
+ "conditions": {
26
+ "type": "array",
27
+ "items": {
28
+ "type": "object",
29
+ "properties": {
30
+ "expression": {
31
+ "type": "string"
32
+ }
33
+ },
34
+ "required": ["expression"]
35
+ }
36
+ },
37
+ "continueOnError": {
38
+ "type": "boolean"
39
+ },
40
+ "inputs": {
41
+ "type": "object",
42
+ "description": "Accounting transaction inputs",
43
+ "properties": {
44
+ "accountingTransactionId": {
45
+ "type": "string",
46
+ "description": "Transaction ID"
47
+ },
48
+ "type": {
49
+ "type": "string",
50
+ "enum": ["Invoice", "Bill", "CreditMemo", "Payment"],
51
+ "description": "Transaction type"
52
+ },
53
+ "orderId": {
54
+ "type": "string",
55
+ "description": "Associated order ID"
56
+ },
57
+ "jobId": {
58
+ "type": "string",
59
+ "description": "Associated job ID"
60
+ },
61
+ "customerId": {
62
+ "type": "string",
63
+ "description": "Customer contact ID"
64
+ },
65
+ "appendToExistingInvoice": {
66
+ "type": "boolean",
67
+ "description": "Append charges to existing unpaid invoice"
68
+ },
69
+ "entity": {
70
+ "type": "object",
71
+ "description": "Transaction entity data",
72
+ "additionalProperties": true
73
+ }
74
+ },
75
+ "additionalProperties": true
76
+ },
77
+ "outputs": {
78
+ "type": "array",
79
+ "items": {
80
+ "type": "object",
81
+ "properties": {
82
+ "name": {
83
+ "type": "string"
84
+ },
85
+ "mapping": {
86
+ "type": "string"
87
+ }
88
+ },
89
+ "required": ["name", "mapping"]
90
+ }
91
+ }
92
+ },
93
+ "required": ["task"],
94
+ "additionalProperties": true
95
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "All Workflow Tasks",
4
+ "description": "Aggregator schema for all workflow task types. Uses anyOf to allow matching any known task type or falling back to generic task structure.",
5
+ "type": "object",
6
+ "anyOf": [
7
+ { "$ref": "foreach.json" },
8
+ { "$ref": "switch.json" },
9
+ { "$ref": "while.json" },
10
+ { "$ref": "validation.json" },
11
+ { "$ref": "map.json" },
12
+ { "$ref": "setVariable.json" },
13
+ { "$ref": "httpRequest.json" },
14
+ { "$ref": "log.json" },
15
+ { "$ref": "error.json" },
16
+ { "$ref": "csv.json" },
17
+ { "$ref": "export.json" },
18
+ { "$ref": "template.json" },
19
+ { "$ref": "graphql.json" },
20
+ { "$ref": "order.json" },
21
+ { "$ref": "contact.json" },
22
+ { "$ref": "commodity.json" },
23
+ { "$ref": "job.json" },
24
+ { "$ref": "attachment.json" },
25
+ { "$ref": "email-send.json" },
26
+ { "$ref": "document-render.json" },
27
+ { "$ref": "document-send.json" },
28
+ { "$ref": "charge.json" },
29
+ { "$ref": "accounting-transaction.json" },
30
+ { "$ref": "payment.json" },
31
+ { "$ref": "workflow-execute.json" },
32
+ { "$ref": "generic.json" }
33
+ ]
34
+ }
@@ -0,0 +1,94 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "Attachment Tasks",
4
+ "description": "Attachment entity CRUD operations",
5
+ "type": "object",
6
+ "properties": {
7
+ "task": {
8
+ "type": "string",
9
+ "enum": [
10
+ "Attachment/Create@1",
11
+ "Attachment/Update@1",
12
+ "Attachment/Delete@1",
13
+ "Attachment/Get@1"
14
+ ],
15
+ "description": "Task type identifier"
16
+ },
17
+ "name": {
18
+ "type": "string",
19
+ "description": "Step name identifier"
20
+ },
21
+ "description": {
22
+ "type": "string",
23
+ "description": "Step description"
24
+ },
25
+ "conditions": {
26
+ "type": "array",
27
+ "items": {
28
+ "type": "object",
29
+ "properties": {
30
+ "expression": {
31
+ "type": "string"
32
+ }
33
+ },
34
+ "required": ["expression"]
35
+ }
36
+ },
37
+ "continueOnError": {
38
+ "type": "boolean"
39
+ },
40
+ "inputs": {
41
+ "type": "object",
42
+ "description": "Attachment operation inputs",
43
+ "properties": {
44
+ "attachmentId": {
45
+ "type": "string",
46
+ "description": "Attachment ID"
47
+ },
48
+ "entityName": {
49
+ "type": "string",
50
+ "description": "Parent entity name"
51
+ },
52
+ "entityId": {
53
+ "type": "string",
54
+ "description": "Parent entity ID"
55
+ },
56
+ "fileName": {
57
+ "type": "string",
58
+ "description": "Attachment file name"
59
+ },
60
+ "content": {
61
+ "type": "string",
62
+ "description": "File content (base64)"
63
+ },
64
+ "contentType": {
65
+ "type": "string",
66
+ "description": "MIME content type"
67
+ },
68
+ "entity": {
69
+ "type": "object",
70
+ "description": "Attachment entity data",
71
+ "additionalProperties": true
72
+ }
73
+ },
74
+ "additionalProperties": true
75
+ },
76
+ "outputs": {
77
+ "type": "array",
78
+ "items": {
79
+ "type": "object",
80
+ "properties": {
81
+ "name": {
82
+ "type": "string"
83
+ },
84
+ "mapping": {
85
+ "type": "string"
86
+ }
87
+ },
88
+ "required": ["name", "mapping"]
89
+ }
90
+ }
91
+ },
92
+ "required": ["task"],
93
+ "additionalProperties": true
94
+ }