@epilot/cli 0.1.10 → 0.1.12

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 (89) hide show
  1. package/README.md +18 -21
  2. package/definitions/app.json +56 -6
  3. package/definitions/automation.json +214 -1
  4. package/definitions/blueprint-manifest.json +1303 -60
  5. package/definitions/customer-portal.json +757 -81
  6. package/definitions/data-governance.json +1126 -0
  7. package/definitions/deduplication.json +135 -4
  8. package/definitions/design.json +103 -57
  9. package/definitions/email-settings.json +150 -0
  10. package/definitions/email-template.json +25 -3
  11. package/definitions/entity.json +405 -5
  12. package/definitions/erp-integration.json +3140 -1049
  13. package/definitions/integration-toolkit.json +7998 -0
  14. package/definitions/journey.json +18 -1
  15. package/definitions/kanban.json +25 -1
  16. package/definitions/message.json +202 -0
  17. package/definitions/organization.json +35 -1
  18. package/definitions/partner-directory.json +795 -229
  19. package/definitions/permissions.json +41 -6
  20. package/definitions/sharing.json +956 -0
  21. package/definitions/template-variables.json +12 -4
  22. package/definitions/webhooks.json +111 -2
  23. package/definitions/workflow-definition.json +87 -202
  24. package/definitions/workflow.json +142 -0
  25. package/dist/{access-token-PTTCRMGK.js → access-token-CIM4RLBP.js} +1 -1
  26. package/dist/add-component-AAVQVPKK.js +296 -0
  27. package/dist/{address-2FDPEPR6.js → address-EDRTUWTP.js} +1 -1
  28. package/dist/{address-suggestions-XBEK5DDQ.js → address-suggestions-S5WEST2N.js} +1 -1
  29. package/dist/{ai-agents-ZY5BNVTN.js → ai-agents-RXDDJDAR.js} +1 -1
  30. package/dist/{app-IT5FWGUK.js → api-36XROHLK.js} +5 -5
  31. package/dist/app-I3XXHZLD.js +24 -0
  32. package/dist/{audit-logs-FB4TE4TI.js → audit-logs-PXGDGJGV.js} +1 -1
  33. package/dist/{automation-JE5LDKJM.js → automation-LS6MVLP2.js} +1 -1
  34. package/dist/{billing-GOFCP5T3.js → billing-KVYFUKZK.js} +1 -1
  35. package/dist/bin/epilot.js +53 -52
  36. package/dist/{blueprint-manifest-WJIQKFYK.js → blueprint-manifest-W4ZGJD2Z.js} +1 -1
  37. package/dist/{chunk-P5IZZW4Y.js → chunk-BYAEI4Z2.js} +1 -1
  38. package/dist/chunk-CEP7S7X3.js +366 -0
  39. package/dist/{chunk-MNSG22DM.js → chunk-F6KWKTQJ.js} +124 -63
  40. package/dist/{completion-HZNPHJI4.js → completion-QP4IYMVI.js} +1 -1
  41. package/dist/{consent-DSMWWHUL.js → consent-M4QB2HPM.js} +1 -1
  42. package/dist/{customer-portal-IJYTJYUZ.js → customer-portal-SVO2YCXA.js} +1 -1
  43. package/dist/{dashboard-DOAX6XDG.js → dashboard-CYCXIX74.js} +1 -1
  44. package/dist/{data-management-C4JPPUPD.js → data-governance-DJAAIE6F.js} +6 -6
  45. package/dist/{deduplication-7OGLZLAC.js → deduplication-M3KEVJRG.js} +1 -1
  46. package/dist/deploy-4XDFWOEV.js +214 -0
  47. package/dist/{design-3CAYTWFY.js → design-UVJJ2KO2.js} +1 -1
  48. package/dist/{document-NT5JOJQV.js → document-5HB632XE.js} +1 -1
  49. package/dist/{email-settings-2M3WJTQS.js → email-settings-H7HQTDYE.js} +1 -1
  50. package/dist/{email-template-F4PLBPPC.js → email-template-2DHZ3VKF.js} +1 -1
  51. package/dist/{entity-32LKMZAU.js → entity-HED6QHG7.js} +1 -1
  52. package/dist/{entity-mapping-OBCZDYQJ.js → entity-mapping-QP22B65Z.js} +1 -1
  53. package/dist/{environments-H3TBCDQE.js → environments-6LLEIGWV.js} +1 -1
  54. package/dist/{event-catalog-NVAPTZ4M.js → event-catalog-2ZCZTATY.js} +1 -1
  55. package/dist/export-JA5N4JCJ.js +44 -0
  56. package/dist/{file-US2HR4SV.js → file-R6IIXOIZ.js} +1 -1
  57. package/dist/{iban-7QUCOULB.js → iban-EQD2VROZ.js} +1 -1
  58. package/dist/init-5KGNJEWF.js +524 -0
  59. package/dist/integration-toolkit-4CLQDSK7.js +54 -0
  60. package/dist/{journey-E5T4BZZX.js → journey-V7X2KUKH.js} +1 -1
  61. package/dist/{kanban-7UHU5VE6.js → kanban-EPI6C3FR.js} +1 -1
  62. package/dist/{message-7KY33RJE.js → message-477EJ5JO.js} +1 -1
  63. package/dist/{metering-P7BZGMY7.js → metering-5EAEKRSL.js} +1 -1
  64. package/dist/{notes-TNJ7FPA3.js → notes-CVXNRULU.js} +1 -1
  65. package/dist/{notification-6KXEFVO5.js → notification-6HXS76XP.js} +1 -1
  66. package/dist/{organization-FF4Y3PBO.js → organization-O33CZQKD.js} +1 -1
  67. package/dist/{partner-directory-VH2SBAS2.js → partner-directory-NZWGCKSB.js} +2 -2
  68. package/dist/{permissions-KENZ4HNY.js → permissions-6QEOBJ6M.js} +1 -1
  69. package/dist/{pricing-P6QZ77VJ.js → pricing-KNYSULCW.js} +1 -1
  70. package/dist/{pricing-tier-2IRJMTM6.js → pricing-tier-OCHP6SHT.js} +1 -1
  71. package/dist/{purpose-IHROR6LQ.js → purpose-NGM42XWB.js} +1 -1
  72. package/dist/remove-component-LXSRR23E.js +89 -0
  73. package/dist/review-HFOO3NXE.js +69 -0
  74. package/dist/{sandbox-62XQPOU6.js → sandbox-YX3VVAQG.js} +1 -1
  75. package/dist/sharing-X5U53KSU.js +54 -0
  76. package/dist/{submission-PUWGOYQB.js → submission-YOWVSZNA.js} +1 -1
  77. package/dist/{targeting-QB3DFYNI.js → targeting-BMZCOG72.js} +1 -1
  78. package/dist/{template-variables-IPKRUJ4E.js → template-variables-YTABZL3E.js} +1 -1
  79. package/dist/{upgrade-TNDH4WGQ.js → upgrade-SYSSIAQC.js} +1 -1
  80. package/dist/{user-2CP75TFC.js → user-3N5ZOUYS.js} +1 -1
  81. package/dist/validate-TUMXW56Y.js +53 -0
  82. package/dist/{validation-rules-GNI4EEG5.js → validation-rules-QVS7LKEP.js} +1 -1
  83. package/dist/versions-ZTWQAGXY.js +109 -0
  84. package/dist/{webhooks-2OWUX7UL.js → webhooks-6WMWACOW.js} +1 -1
  85. package/dist/{workflow-WSLERVJI.js → workflow-ZO2MKDBS.js} +1 -1
  86. package/dist/{workflow-definition-FP3WKHGG.js → workflow-definition-RCWKIPYI.js} +1 -1
  87. package/package.json +2 -1
  88. package/definitions/data-management.json +0 -962
  89. package/dist/erp-integration-UW6H55EK.js +0 -54
@@ -2,7 +2,7 @@
2
2
  "openapi": "3.0.2",
3
3
  "info": {
4
4
  "title": "Email template API",
5
- "version": "1.0.0-RFC",
5
+ "version": "1.1.0",
6
6
  "description": "Email template API service\n"
7
7
  },
8
8
  "tags": [
@@ -598,6 +598,10 @@
598
598
  "description": "Updated by",
599
599
  "type": "string",
600
600
  "example": 1234
601
+ },
602
+ "json_template": {
603
+ "type": "string",
604
+ "description": "This field is used to store JSON templates. If this field is populated, then the Body html is derived from the JSON."
601
605
  }
602
606
  }
603
607
  },
@@ -688,6 +692,10 @@
688
692
  "type": "string",
689
693
  "example": 1234
690
694
  },
695
+ "json_template": {
696
+ "type": "string",
697
+ "description": "This field is used to store JSON templates. If this field is populated, then the Body html is derived from the JSON."
698
+ },
691
699
  "system_template": {
692
700
  "description": "If template is created by system (Double Opt-in, CMD invitation,...) then true, and some attributes can not be edited such as Name, To,...\nRemember to add default content of template to system_template enum for revert to original feature\n",
693
701
  "type": "boolean",
@@ -1085,6 +1093,11 @@
1085
1093
  "type": "boolean",
1086
1094
  "description": "When true, it lets to send only the email by skip creating the thread & message entities."
1087
1095
  },
1096
+ "CompleteThread": {
1097
+ "type": "boolean",
1098
+ "description": "Whether the thread is marked as Done immediately after sending the message",
1099
+ "default": false
1100
+ },
1088
1101
  "BulkSendMessageRequest": {
1089
1102
  "type": "object",
1090
1103
  "description": "It takes a list of entity ids, treating each as a separate mainEntity to construct individual messages.\nFor e.g; if there some opportunityIds are provided, then each opportunityId is treated as a separate mainEntity to construct individual messages.\n",
@@ -1096,6 +1109,9 @@
1096
1109
  "skip_creating_entities": {
1097
1110
  "$ref": "#/components/schemas/SkipCreatingEntities"
1098
1111
  },
1112
+ "complete_thread": {
1113
+ "$ref": "#/components/schemas/CompleteThread"
1114
+ },
1099
1115
  "email_template_id": {
1100
1116
  "type": "string",
1101
1117
  "description": "ID of email template to use for sending bulk emails",
@@ -1104,7 +1120,7 @@
1104
1120
  "must_include_unsubscribe_link": {
1105
1121
  "type": "boolean",
1106
1122
  "description": "If true then include unsubscribe link in the email body\n",
1107
- "default": true
1123
+ "default": false
1108
1124
  },
1109
1125
  "recipient_ids": {
1110
1126
  "type": "array",
@@ -1134,6 +1150,9 @@
1134
1150
  "skip_creating_entities": {
1135
1151
  "$ref": "#/components/schemas/SkipCreatingEntities"
1136
1152
  },
1153
+ "complete_thread": {
1154
+ "$ref": "#/components/schemas/CompleteThread"
1155
+ },
1137
1156
  "email_template_id": {
1138
1157
  "type": "string",
1139
1158
  "description": "ID of email template to use for sending bulk emails",
@@ -1142,7 +1161,7 @@
1142
1161
  "must_include_unsubscribe_link": {
1143
1162
  "type": "boolean",
1144
1163
  "description": "If true then include unsubscribe link in the email body\n",
1145
- "default": true
1164
+ "default": false
1146
1165
  },
1147
1166
  "recipient_query": {
1148
1167
  "type": "string",
@@ -1192,6 +1211,9 @@
1192
1211
  "skip_creating_entities": {
1193
1212
  "$ref": "#/components/schemas/SkipCreatingEntities"
1194
1213
  },
1214
+ "complete_thread": {
1215
+ "$ref": "#/components/schemas/CompleteThread"
1216
+ },
1195
1217
  "status": {
1196
1218
  "type": "string",
1197
1219
  "description": "Status of the bulk message action\n* PROCESSING: Bulk message action is processing the request\n* QUEUEING: Bulk message action is generating emails to send in a queue\n* SENDING: Bulk message action is sending emails from the queue\n* SUCCESS: Bulk message action is completed successfully\n* FAILED: Bulk message action is failed\n* CANCELLED: Bulk message action was cancelled\n",
@@ -66,6 +66,16 @@
66
66
  "in": "query",
67
67
  "name": "unpublished",
68
68
  "description": "Return unpublished draft schemas",
69
+ "deprecated": true,
70
+ "schema": {
71
+ "type": "boolean",
72
+ "default": false
73
+ }
74
+ },
75
+ {
76
+ "in": "query",
77
+ "name": "latest",
78
+ "description": "When true, return the latest version instead of the frozen version for frozen schemas.",
69
79
  "schema": {
70
80
  "type": "boolean",
71
81
  "default": false
@@ -83,6 +93,105 @@
83
93
  },
84
94
  "style": "form",
85
95
  "explode": false
96
+ },
97
+ {
98
+ "in": "query",
99
+ "name": "include",
100
+ "description": "List of schema slugs to include in the results. When provided, only these schemas are returned. Accepts a comma-separated list of slugs.",
101
+ "schema": {
102
+ "type": "array",
103
+ "items": {
104
+ "type": "string"
105
+ }
106
+ },
107
+ "style": "form",
108
+ "explode": false
109
+ }
110
+ ],
111
+ "tags": [
112
+ "Schemas"
113
+ ],
114
+ "responses": {
115
+ "200": {
116
+ "description": "Success",
117
+ "content": {
118
+ "application/json": {
119
+ "schema": {
120
+ "type": "object",
121
+ "properties": {
122
+ "results": {
123
+ "type": "array",
124
+ "items": {
125
+ "$ref": "#/components/schemas/EntitySchemaItem"
126
+ }
127
+ }
128
+ }
129
+ }
130
+ }
131
+ }
132
+ }
133
+ }
134
+ }
135
+ },
136
+ "/v2/entity/schemas": {
137
+ "get": {
138
+ "operationId": "listSchemasV2",
139
+ "summary": "listSchemasV2",
140
+ "description": "Get the latest versions of all schemas.\nReturns summary schemas by default (only summary attributes, no capabilities).\nUse ?full=true for complete schemas.\n",
141
+ "parameters": [
142
+ {
143
+ "in": "query",
144
+ "name": "full",
145
+ "description": "Return full schemas including all attributes and capabilities",
146
+ "schema": {
147
+ "type": "boolean",
148
+ "default": false
149
+ }
150
+ },
151
+ {
152
+ "in": "query",
153
+ "name": "unpublished",
154
+ "description": "Return unpublished draft schemas",
155
+ "deprecated": true,
156
+ "schema": {
157
+ "type": "boolean",
158
+ "default": false
159
+ }
160
+ },
161
+ {
162
+ "in": "query",
163
+ "name": "latest",
164
+ "description": "When true, return the latest version instead of the frozen version for frozen schemas.",
165
+ "schema": {
166
+ "type": "boolean",
167
+ "default": false
168
+ }
169
+ },
170
+ {
171
+ "in": "query",
172
+ "name": "exclude",
173
+ "description": "List of schema slugs to exclude from the results. Accepts a comma-separated list of slugs to exclude from the results.",
174
+ "schema": {
175
+ "type": "array",
176
+ "items": {
177
+ "type": "string"
178
+ }
179
+ },
180
+ "style": "form",
181
+ "explode": false
182
+ },
183
+ {
184
+ "in": "query",
185
+ "name": "include",
186
+ "description": "List of schema slugs to include in the results. When provided, only these schemas are returned. Accepts a comma-separated list of slugs.",
187
+ "schema": {
188
+ "type": "array",
189
+ "items": {
190
+ "type": "string"
191
+ }
192
+ },
193
+ "style": "form",
194
+ "explode": false
86
195
  }
87
196
  ],
88
197
  "tags": [
@@ -114,7 +223,7 @@
114
223
  "get": {
115
224
  "operationId": "getSchema",
116
225
  "summary": "getSchema",
117
- "description": "By default gets the latest version of the Schema and to get the specific version of schema pass the id.",
226
+ "description": "By default gets the current version of the Schema (frozen version if frozen, otherwise latest).\nPass ?latest=true to get the latest version when the schema is frozen.\nPass ?id= to get a specific version by ID.\n",
118
227
  "tags": [
119
228
  "Schemas"
120
229
  ],
@@ -128,6 +237,15 @@
128
237
  "schema": {
129
238
  "$ref": "#/components/schemas/SchemaId"
130
239
  }
240
+ },
241
+ {
242
+ "in": "query",
243
+ "name": "latest",
244
+ "description": "When true, return the latest version instead of the frozen version for frozen schemas.",
245
+ "schema": {
246
+ "type": "boolean",
247
+ "default": false
248
+ }
131
249
  }
132
250
  ],
133
251
  "responses": {
@@ -149,7 +267,7 @@
149
267
  "put": {
150
268
  "operationId": "putSchema",
151
269
  "summary": "putSchema",
152
- "description": "Create or update a schema with a new version",
270
+ "description": "Create or update a schema with a new version.\nWhen the schema is frozen, writes update the latest version without affecting the frozen version.\n",
153
271
  "tags": [
154
272
  "Schemas"
155
273
  ],
@@ -160,6 +278,7 @@
160
278
  {
161
279
  "in": "query",
162
280
  "name": "draft",
281
+ "deprecated": true,
163
282
  "schema": {
164
283
  "default": false,
165
284
  "type": "boolean"
@@ -657,6 +776,7 @@
657
776
  }
658
777
  },
659
778
  "drafts": {
779
+ "deprecated": true,
660
780
  "type": "array",
661
781
  "items": {
662
782
  "$ref": "#/components/schemas/EntitySchemaItem"
@@ -667,8 +787,17 @@
667
787
  "type": "boolean"
668
788
  },
669
789
  "drafts_more": {
790
+ "deprecated": true,
670
791
  "description": "Pagination: Whether more drafts are available",
671
792
  "type": "boolean"
793
+ },
794
+ "frozen_version": {
795
+ "description": "The version ID that is currently frozen, if any",
796
+ "allOf": [
797
+ {
798
+ "$ref": "#/components/schemas/SchemaId"
799
+ }
800
+ ]
672
801
  }
673
802
  },
674
803
  "required": [
@@ -682,6 +811,85 @@
682
811
  }
683
812
  }
684
813
  },
814
+ "/v1/entity/schemas/{slug}/freeze": {
815
+ "post": {
816
+ "operationId": "freezeSchema",
817
+ "summary": "freezeSchema",
818
+ "description": "Freeze a schema at its current version, or at a specific version.\nWhen frozen, getSchema returns the frozen version by default.\nNew edits via putSchema update the latest version without affecting the frozen version.\n",
819
+ "tags": [
820
+ "Schemas"
821
+ ],
822
+ "parameters": [
823
+ {
824
+ "$ref": "#/components/parameters/EntitySlugPathParam"
825
+ }
826
+ ],
827
+ "requestBody": {
828
+ "content": {
829
+ "application/json": {
830
+ "schema": {
831
+ "type": "object",
832
+ "properties": {
833
+ "version_id": {
834
+ "description": "Freeze to a specific version ID. Defaults to the current version.",
835
+ "allOf": [
836
+ {
837
+ "$ref": "#/components/schemas/SchemaId"
838
+ }
839
+ ]
840
+ }
841
+ }
842
+ }
843
+ }
844
+ }
845
+ },
846
+ "responses": {
847
+ "200": {
848
+ "description": "Schema frozen successfully",
849
+ "content": {
850
+ "application/json": {
851
+ "schema": {
852
+ "$ref": "#/components/schemas/EntitySchemaItem"
853
+ }
854
+ }
855
+ }
856
+ },
857
+ "404": {
858
+ "$ref": "#/components/responses/NotFoundError"
859
+ }
860
+ }
861
+ }
862
+ },
863
+ "/v1/entity/schemas/{slug}/unfreeze": {
864
+ "post": {
865
+ "operationId": "unfreezeSchema",
866
+ "summary": "unfreezeSchema",
867
+ "description": "Unfreeze a schema. Promotes the latest version to the current version for all users.\n",
868
+ "tags": [
869
+ "Schemas"
870
+ ],
871
+ "parameters": [
872
+ {
873
+ "$ref": "#/components/parameters/EntitySlugPathParam"
874
+ }
875
+ ],
876
+ "responses": {
877
+ "200": {
878
+ "description": "Schema unfrozen successfully",
879
+ "content": {
880
+ "application/json": {
881
+ "schema": {
882
+ "$ref": "#/components/schemas/EntitySchemaItem"
883
+ }
884
+ }
885
+ }
886
+ },
887
+ "404": {
888
+ "$ref": "#/components/responses/NotFoundError"
889
+ }
890
+ }
891
+ }
892
+ },
685
893
  "/v1/entity/schemas/{slug}/capabilities/available": {
686
894
  "get": {
687
895
  "operationId": "listAvailableCapabilities",
@@ -1673,7 +1881,7 @@
1673
1881
  "post": {
1674
1882
  "operationId": "createActivity",
1675
1883
  "summary": "createActivity",
1676
- "description": "Create an activity that can be displayed in activity feeds.\n\n- All activites are published as events on the event bus\n- Entity mutations are always part of an activity\n",
1884
+ "description": "Create an activity that can be displayed in activity feeds.\n\n- All activites are published as events on the event bus\n- Entity mutations are always part of an activity\n- When more than 10 entities are passed, the first 10 are attached synchronously and the rest are processed asynchronously to avoid DynamoDB throttling\n",
1677
1885
  "tags": [
1678
1886
  "Activity"
1679
1887
  ],
@@ -3074,7 +3282,7 @@
3074
3282
  }
3075
3283
  },
3076
3284
  "deleted": {
3077
- "type": "object",
3285
+ "type": "array",
3078
3286
  "items": {
3079
3287
  "$ref": "#/components/schemas/ClassificationId"
3080
3288
  }
@@ -3331,6 +3539,34 @@
3331
3539
  "schema": {
3332
3540
  "$ref": "#/components/schemas/TaxonomySearchIncludeArchivedParam"
3333
3541
  }
3542
+ },
3543
+ {
3544
+ "in": "query",
3545
+ "name": "exclude_types",
3546
+ "description": "Taxonomy type(s) to exclude from the results. Useful to filter out relation labels, schema labels, and system labels.\n",
3547
+ "schema": {
3548
+ "anyOf": [
3549
+ {
3550
+ "type": "string",
3551
+ "enum": [
3552
+ "relation",
3553
+ "schema",
3554
+ "system"
3555
+ ]
3556
+ },
3557
+ {
3558
+ "type": "array",
3559
+ "items": {
3560
+ "type": "string",
3561
+ "enum": [
3562
+ "relation",
3563
+ "schema",
3564
+ "system"
3565
+ ]
3566
+ }
3567
+ }
3568
+ ]
3569
+ }
3334
3570
  }
3335
3571
  ],
3336
3572
  "requestBody": {
@@ -4474,6 +4710,7 @@
4474
4710
  "example": false
4475
4711
  },
4476
4712
  "draft": {
4713
+ "deprecated": true,
4477
4714
  "type": "boolean",
4478
4715
  "example": false
4479
4716
  },
@@ -4698,6 +4935,16 @@
4698
4935
  "type": "string"
4699
4936
  }
4700
4937
  },
4938
+ "_manifest": {
4939
+ "type": "array",
4940
+ "description": "Manifest ID used to create the schema",
4941
+ "items": {
4942
+ "type": "string",
4943
+ "format": "uuid",
4944
+ "example": "123e4567-e89b-12d3-a456-426614174000"
4945
+ },
4946
+ "nullable": true
4947
+ },
4701
4948
  "explicit_search_mappings": {
4702
4949
  "$ref": "#/components/schemas/SearchMappings"
4703
4950
  },
@@ -4743,6 +4990,18 @@
4743
4990
  "type": "string"
4744
4991
  }
4745
4992
  }
4993
+ },
4994
+ "frozen": {
4995
+ "description": "Indicates this schema is currently frozen. Present when the returned version is the frozen version.",
4996
+ "type": "boolean"
4997
+ },
4998
+ "latest": {
4999
+ "description": "Indicates this is the latest version of the schema. Both frozen and latest can be true if no changes were made since freezing.",
5000
+ "type": "boolean"
5001
+ },
5002
+ "_summary": {
5003
+ "description": "Indicates this is a truncated summary schema (attributes trimmed to summary_attributes only, no capabilities or group_settings)",
5004
+ "type": "boolean"
4746
5005
  }
4747
5006
  }
4748
5007
  },
@@ -5004,6 +5263,9 @@
5004
5263
  {
5005
5264
  "$ref": "#/components/schemas/NumberAttribute"
5006
5265
  },
5266
+ {
5267
+ "$ref": "#/components/schemas/TableAttribute"
5268
+ },
5007
5269
  {
5008
5270
  "$ref": "#/components/schemas/ConsentAttribute"
5009
5271
  },
@@ -5607,6 +5869,11 @@
5607
5869
  "public-read",
5608
5870
  "private"
5609
5871
  ]
5872
+ },
5873
+ "file_size_bytes": {
5874
+ "type": "integer",
5875
+ "description": "The maximum file size in bytes. Used to derive file_size and file_size_unit in the UI.",
5876
+ "example": 5000000
5610
5877
  }
5611
5878
  },
5612
5879
  "required": [
@@ -6244,6 +6511,104 @@
6244
6511
  }
6245
6512
  ]
6246
6513
  },
6514
+ "TableAttribute": {
6515
+ "allOf": [
6516
+ {
6517
+ "$ref": "#/components/schemas/BaseAttribute"
6518
+ },
6519
+ {
6520
+ "type": "object",
6521
+ "description": "Dynamic data table with configurable columns. Data is stored as an array of objects where each object represents a row.",
6522
+ "properties": {
6523
+ "type": {
6524
+ "type": "string",
6525
+ "enum": [
6526
+ "table"
6527
+ ]
6528
+ },
6529
+ "columns": {
6530
+ "type": "array",
6531
+ "description": "Column definitions for the table",
6532
+ "items": {
6533
+ "type": "object",
6534
+ "properties": {
6535
+ "name": {
6536
+ "type": "string",
6537
+ "description": "The column identifier (used as object key in row data)"
6538
+ },
6539
+ "label": {
6540
+ "type": "string",
6541
+ "description": "Display label for the column header"
6542
+ },
6543
+ "type": {
6544
+ "type": "string",
6545
+ "description": "The data type for cells in this column",
6546
+ "enum": [
6547
+ "string",
6548
+ "number",
6549
+ "date",
6550
+ "boolean"
6551
+ ],
6552
+ "default": "string"
6553
+ },
6554
+ "width": {
6555
+ "type": "string",
6556
+ "description": "Optional column width (e.g., \"100px\", \"20%\")"
6557
+ },
6558
+ "required": {
6559
+ "type": "boolean",
6560
+ "description": "Whether this column is required for each row",
6561
+ "default": false
6562
+ },
6563
+ "bold": {
6564
+ "type": "boolean",
6565
+ "description": "When true, the row is rendered in bold (only applies in transposed mode)",
6566
+ "default": false
6567
+ }
6568
+ },
6569
+ "required": [
6570
+ "name",
6571
+ "label"
6572
+ ]
6573
+ }
6574
+ },
6575
+ "min_rows": {
6576
+ "type": "integer",
6577
+ "description": "Minimum number of rows required",
6578
+ "minimum": 0,
6579
+ "default": 0
6580
+ },
6581
+ "max_rows": {
6582
+ "type": "integer",
6583
+ "description": "Maximum number of rows allowed (or maximum periods when transposed)",
6584
+ "minimum": 1
6585
+ },
6586
+ "transposed": {
6587
+ "type": "boolean",
6588
+ "description": "Enable transposed layout where rows become metrics and columns become periods",
6589
+ "default": false
6590
+ },
6591
+ "column_header": {
6592
+ "type": "object",
6593
+ "description": "Configuration for column headers in transposed mode",
6594
+ "properties": {
6595
+ "template": {
6596
+ "type": "string",
6597
+ "description": "Header label pattern with {{i}} as index placeholder (e.g., \"Year {{i}}\")",
6598
+ "example": "Year {{i}}"
6599
+ },
6600
+ "start": {
6601
+ "type": "integer",
6602
+ "description": "Starting index value for the template placeholder",
6603
+ "default": 0,
6604
+ "minimum": 0
6605
+ }
6606
+ }
6607
+ }
6608
+ }
6609
+ }
6610
+ ]
6611
+ },
6247
6612
  "ConsentAttribute": {
6248
6613
  "allOf": [
6249
6614
  {
@@ -6746,6 +7111,24 @@
6746
7111
  "items": {
6747
7112
  "$ref": "#/components/schemas/SettingFlag"
6748
7113
  }
7114
+ },
7115
+ "schemas": {
7116
+ "type": "array",
7117
+ "description": "Schema-specific configuration for the capability",
7118
+ "items": {
7119
+ "type": "object",
7120
+ "additionalProperties": true,
7121
+ "required": [
7122
+ "schema"
7123
+ ],
7124
+ "properties": {
7125
+ "schema": {
7126
+ "type": "string",
7127
+ "description": "Entity schema slug",
7128
+ "example": "contact"
7129
+ }
7130
+ }
7131
+ }
6749
7132
  }
6750
7133
  },
6751
7134
  "required": [
@@ -7070,10 +7453,13 @@
7070
7453
  }
7071
7454
  },
7072
7455
  "NullableEntity": {
7073
- "nullable": true,
7074
7456
  "allOf": [
7075
7457
  {
7076
7458
  "$ref": "#/components/schemas/Entity"
7459
+ },
7460
+ {
7461
+ "type": "object",
7462
+ "nullable": true
7077
7463
  }
7078
7464
  ]
7079
7465
  },
@@ -8467,6 +8853,20 @@
8467
8853
  ]
8468
8854
  }
8469
8855
  }
8856
+ },
8857
+ "_workflow_origin": {
8858
+ "type": "object",
8859
+ "description": "Internal property for workflow origin tracking and infinite loop prevention.\nPopulated when an entity update originates from a workflow execution.\nThis allows downstream automation services to prevent circular triggering.\n",
8860
+ "properties": {
8861
+ "workflow_exec_id": {
8862
+ "type": "string",
8863
+ "description": "The ID of the workflow execution that triggered this entity update"
8864
+ },
8865
+ "flow_template_id": {
8866
+ "type": "string",
8867
+ "description": "The flow template ID - used to detect and prevent circular triggering"
8868
+ }
8869
+ }
8470
8870
  }
8471
8871
  },
8472
8872
  "required": [