@objectstack/spec 0.3.2 → 0.3.3

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 (396) hide show
  1. package/README.md +32 -10
  2. package/dist/ai/agent.zod.d.ts +12 -12
  3. package/dist/ai/conversation.zod.d.ts +65 -65
  4. package/dist/ai/cost.zod.d.ts +125 -125
  5. package/dist/ai/index.d.ts +1 -1
  6. package/dist/ai/index.d.ts.map +1 -1
  7. package/dist/ai/index.js +1 -1
  8. package/dist/ai/model-registry.zod.d.ts +94 -94
  9. package/dist/ai/nlq.zod.d.ts +70 -70
  10. package/dist/ai/{workflow-automation.zod.d.ts → orchestration.zod.d.ts} +50 -49
  11. package/dist/ai/orchestration.zod.d.ts.map +1 -0
  12. package/dist/ai/{workflow-automation.zod.js → orchestration.zod.js} +26 -25
  13. package/dist/ai/predictive.zod.d.ts +31 -31
  14. package/dist/ai/rag-pipeline.zod.d.ts +86 -86
  15. package/dist/api/contract.zod.d.ts +121 -105
  16. package/dist/api/contract.zod.d.ts.map +1 -1
  17. package/dist/{system → api}/discovery.zod.d.ts +26 -26
  18. package/dist/api/discovery.zod.d.ts.map +1 -0
  19. package/dist/{system → api}/discovery.zod.js +9 -9
  20. package/dist/{system/api.zod.d.ts → api/endpoint.zod.d.ts} +53 -57
  21. package/dist/api/endpoint.zod.d.ts.map +1 -0
  22. package/dist/{system/api.zod.js → api/endpoint.zod.js} +3 -6
  23. package/dist/api/index.d.ts +4 -0
  24. package/dist/api/index.d.ts.map +1 -1
  25. package/dist/api/index.js +4 -0
  26. package/dist/{system → api}/realtime.zod.d.ts +4 -4
  27. package/dist/api/realtime.zod.d.ts.map +1 -0
  28. package/dist/api/router.zod.d.ts +182 -0
  29. package/dist/api/router.zod.d.ts.map +1 -0
  30. package/dist/api/router.zod.js +103 -0
  31. package/dist/{system/auth.zod.d.ts → auth/config.zod.d.ts} +191 -191
  32. package/dist/auth/config.zod.d.ts.map +1 -0
  33. package/dist/{system → auth}/identity.zod.d.ts +8 -8
  34. package/dist/auth/identity.zod.d.ts.map +1 -0
  35. package/dist/auth/index.d.ts +7 -0
  36. package/dist/auth/index.d.ts.map +1 -0
  37. package/dist/auth/index.js +22 -0
  38. package/dist/{system → auth}/organization.zod.d.ts +5 -5
  39. package/dist/auth/organization.zod.d.ts.map +1 -0
  40. package/dist/{system → auth}/policy.zod.d.ts +3 -3
  41. package/dist/auth/policy.zod.d.ts.map +1 -0
  42. package/dist/{system/auth-protocol.d.ts → auth/protocol.d.ts} +1 -1
  43. package/dist/auth/protocol.d.ts.map +1 -0
  44. package/dist/auth/role.zod.d.ts.map +1 -0
  45. package/dist/{data → automation}/flow.zod.d.ts +34 -16
  46. package/dist/automation/flow.zod.d.ts.map +1 -0
  47. package/dist/{data → automation}/flow.zod.js +6 -1
  48. package/dist/automation/index.d.ts +4 -0
  49. package/dist/automation/index.d.ts.map +1 -0
  50. package/dist/automation/index.js +19 -0
  51. package/dist/{system → automation}/webhook.zod.d.ts +2 -2
  52. package/dist/automation/webhook.zod.d.ts.map +1 -0
  53. package/dist/automation/workflow.zod.d.ts +2045 -0
  54. package/dist/automation/workflow.zod.d.ts.map +1 -0
  55. package/dist/{data → automation}/workflow.zod.js +24 -1
  56. package/dist/data/dataset.zod.d.ts +2 -2
  57. package/dist/data/field.zod.d.ts +443 -213
  58. package/dist/data/field.zod.d.ts.map +1 -1
  59. package/dist/data/field.zod.js +29 -1
  60. package/dist/data/filter.zod.d.ts +167 -30
  61. package/dist/data/filter.zod.d.ts.map +1 -1
  62. package/dist/data/filter.zod.js +25 -13
  63. package/dist/data/hook.zod.d.ts +191 -0
  64. package/dist/data/hook.zod.d.ts.map +1 -0
  65. package/dist/data/hook.zod.js +144 -0
  66. package/dist/data/index.d.ts +4 -17
  67. package/dist/data/index.d.ts.map +1 -1
  68. package/dist/data/index.js +4 -17
  69. package/dist/data/mapping.zod.d.ts +103 -91
  70. package/dist/data/mapping.zod.d.ts.map +1 -1
  71. package/dist/data/object.zod.d.ts +387 -127
  72. package/dist/data/object.zod.d.ts.map +1 -1
  73. package/dist/data/object.zod.js +87 -42
  74. package/dist/data/query.zod.d.ts +98 -169
  75. package/dist/data/query.zod.d.ts.map +1 -1
  76. package/dist/data/query.zod.js +42 -130
  77. package/dist/data/validation.zod.d.ts +166 -26
  78. package/dist/data/validation.zod.d.ts.map +1 -1
  79. package/dist/data/validation.zod.js +38 -16
  80. package/dist/{system → driver}/datasource.zod.d.ts +42 -8
  81. package/dist/driver/datasource.zod.d.ts.map +1 -0
  82. package/dist/{system → driver}/datasource.zod.js +17 -13
  83. package/dist/driver/driver.zod.d.ts +3392 -0
  84. package/dist/driver/driver.zod.d.ts.map +1 -0
  85. package/dist/{system → driver}/driver.zod.js +99 -0
  86. package/dist/driver/index.d.ts +5 -0
  87. package/dist/driver/index.d.ts.map +1 -0
  88. package/dist/driver/index.js +20 -0
  89. package/dist/driver/mongo.zod.d.ts +107 -0
  90. package/dist/driver/mongo.zod.d.ts.map +1 -0
  91. package/dist/driver/mongo.zod.js +80 -0
  92. package/dist/driver/postgres.zod.d.ts +134 -0
  93. package/dist/driver/postgres.zod.d.ts.map +1 -0
  94. package/dist/driver/postgres.zod.js +88 -0
  95. package/dist/hub/composer.zod.d.ts +2768 -0
  96. package/dist/hub/composer.zod.d.ts.map +1 -0
  97. package/dist/hub/composer.zod.js +111 -0
  98. package/dist/hub/index.d.ts +6 -0
  99. package/dist/hub/index.d.ts.map +1 -0
  100. package/dist/hub/index.js +22 -0
  101. package/dist/{system → hub}/license.zod.d.ts +11 -7
  102. package/dist/hub/license.zod.d.ts.map +1 -0
  103. package/dist/{system → hub}/license.zod.js +5 -3
  104. package/dist/hub/marketplace.zod.d.ts +191 -0
  105. package/dist/hub/marketplace.zod.d.ts.map +1 -0
  106. package/dist/hub/marketplace.zod.js +85 -0
  107. package/dist/hub/space.zod.d.ts +383 -0
  108. package/dist/hub/space.zod.d.ts.map +1 -0
  109. package/dist/hub/space.zod.js +103 -0
  110. package/dist/{system → hub}/tenant.zod.d.ts +73 -47
  111. package/dist/hub/tenant.zod.d.ts.map +1 -0
  112. package/dist/{system → hub}/tenant.zod.js +36 -10
  113. package/dist/index.d.ts +11 -4
  114. package/dist/index.d.ts.map +1 -1
  115. package/dist/index.js +12 -5
  116. package/dist/kernel/context.zod.d.ts +56 -0
  117. package/dist/kernel/context.zod.d.ts.map +1 -0
  118. package/dist/kernel/context.zod.js +43 -0
  119. package/dist/kernel/index.d.ts +12 -0
  120. package/dist/kernel/index.d.ts.map +1 -0
  121. package/dist/kernel/index.js +27 -0
  122. package/dist/kernel/logger.zod.d.ts +111 -0
  123. package/dist/kernel/logger.zod.d.ts.map +1 -0
  124. package/dist/kernel/logger.zod.js +75 -0
  125. package/dist/kernel/manifest.zod.d.ts +2153 -0
  126. package/dist/kernel/manifest.zod.d.ts.map +1 -0
  127. package/dist/{system → kernel}/manifest.zod.js +40 -0
  128. package/dist/{system → kernel}/plugin.zod.d.ts +598 -318
  129. package/dist/kernel/plugin.zod.d.ts.map +1 -0
  130. package/dist/{system → kernel}/plugin.zod.js +13 -0
  131. package/dist/kernel/scoped-storage.zod.d.ts +81 -0
  132. package/dist/kernel/scoped-storage.zod.d.ts.map +1 -0
  133. package/dist/kernel/scoped-storage.zod.js +66 -0
  134. package/dist/permission/index.d.ts +12 -0
  135. package/dist/permission/index.d.ts.map +1 -0
  136. package/dist/permission/index.js +27 -0
  137. package/dist/{data → permission}/permission.zod.d.ts +34 -3
  138. package/dist/permission/permission.zod.d.ts.map +1 -0
  139. package/dist/{data → permission}/permission.zod.js +10 -1
  140. package/dist/permission/sharing.zod.d.ts +146 -0
  141. package/dist/permission/sharing.zod.d.ts.map +1 -0
  142. package/dist/permission/sharing.zod.js +88 -0
  143. package/dist/permission/territory.zod.d.ts.map +1 -0
  144. package/dist/system/audit.zod.d.ts +52 -52
  145. package/dist/system/events.zod.d.ts +17 -17
  146. package/dist/system/index.d.ts +1 -20
  147. package/dist/system/index.d.ts.map +1 -1
  148. package/dist/system/index.js +3 -20
  149. package/dist/system/job.zod.d.ts +13 -13
  150. package/dist/ui/action.zod.d.ts +13 -13
  151. package/dist/ui/app.zod.d.ts +11 -11
  152. package/dist/ui/dashboard.zod.d.ts +12 -12
  153. package/dist/ui/page.zod.d.ts +2 -2
  154. package/dist/ui/report.zod.d.ts +7 -7
  155. package/dist/ui/theme.zod.d.ts +42 -42
  156. package/dist/ui/view.zod.d.ts +55 -55
  157. package/dist/ui/widget.zod.d.ts +61 -28
  158. package/dist/ui/widget.zod.d.ts.map +1 -1
  159. package/json-schema/ai/{AIWorkflowAutomation.json → AIOrchestration.json} +5 -5
  160. package/json-schema/ai/{AIWorkflowExecutionResult.json → AIOrchestrationExecutionResult.json} +2 -2
  161. package/json-schema/ai/{AIWorkflowTrigger.json → AIOrchestrationTrigger.json} +2 -2
  162. package/json-schema/ai/{BatchAIWorkflowExecution.json → BatchAIOrchestrationExecution.json} +3 -3
  163. package/json-schema/{system → api}/ApiEndpoint.json +3 -1
  164. package/json-schema/{system → api}/ApiRoutes.json +7 -7
  165. package/json-schema/{system → api}/Discovery.json +7 -7
  166. package/json-schema/api/ExportRequest.json +402 -438
  167. package/json-schema/{system → api}/HttpMethod.json +3 -1
  168. package/json-schema/api/RouteCategory.json +17 -0
  169. package/json-schema/api/RouteDefinition.json +77 -0
  170. package/json-schema/api/RouterConfig.json +117 -0
  171. package/json-schema/{data → automation}/Flow.json +31 -1
  172. package/json-schema/{data → automation}/FlowEdge.json +9 -0
  173. package/json-schema/{data/WorkflowRule.json → automation/TimeTrigger.json} +35 -25
  174. package/json-schema/automation/WorkflowRule.json +1031 -0
  175. package/json-schema/data/AggregationNode.json +23 -0
  176. package/json-schema/data/AsyncValidation.json +49 -2
  177. package/json-schema/data/ComparisonOperator.json +52 -0
  178. package/json-schema/data/ConditionalValidation.json +693 -46
  179. package/json-schema/data/CrossFieldValidation.json +33 -2
  180. package/json-schema/data/CurrencyConfig.json +35 -0
  181. package/json-schema/data/CurrencyValue.json +26 -0
  182. package/json-schema/data/CustomValidator.json +37 -10
  183. package/json-schema/data/Field.json +30 -0
  184. package/json-schema/data/FieldOperators.json +78 -0
  185. package/json-schema/data/FieldReference.json +19 -0
  186. package/json-schema/data/FormatValidation.json +33 -2
  187. package/json-schema/data/Hook.json +95 -0
  188. package/json-schema/data/HookContext.json +88 -0
  189. package/json-schema/data/HookEvent.json +29 -0
  190. package/json-schema/data/Index.json +10 -0
  191. package/json-schema/data/JSONValidation.json +85 -0
  192. package/json-schema/data/JoinNode.json +197 -213
  193. package/json-schema/data/{TriggerAction.json → JoinStrategy.json} +6 -5
  194. package/json-schema/data/NormalizedFilter.json +234 -0
  195. package/json-schema/data/Object.json +1580 -28
  196. package/json-schema/data/ObjectCapabilities.json +30 -12
  197. package/json-schema/data/Query.json +246 -262
  198. package/json-schema/data/RangeOperator.json +26 -0
  199. package/json-schema/data/ScriptValidation.json +33 -2
  200. package/json-schema/data/SearchConfig.json +36 -0
  201. package/json-schema/data/StateMachineValidation.json +33 -2
  202. package/json-schema/data/UniquenessValidation.json +33 -2
  203. package/json-schema/data/ValidationRule.json +693 -46
  204. package/json-schema/{system → driver}/Datasource.json +35 -0
  205. package/json-schema/{system → driver}/DriverCapabilities.json +10 -0
  206. package/json-schema/{system → driver}/DriverInterface.json +10 -0
  207. package/json-schema/{system → driver}/DriverOptions.json +11 -0
  208. package/json-schema/driver/MongoConfig.json +82 -0
  209. package/json-schema/driver/PostgresConfig.json +98 -0
  210. package/json-schema/hub/BillOfMaterials.json +70 -0
  211. package/json-schema/hub/ComposerRequest.json +86 -0
  212. package/json-schema/hub/ComposerResponse.json +2645 -0
  213. package/json-schema/hub/ConflictReport.json +53 -0
  214. package/json-schema/hub/DependencyRequirement.json +36 -0
  215. package/json-schema/hub/DeploymentTarget.json +38 -0
  216. package/json-schema/hub/HubSpace.json +279 -0
  217. package/json-schema/{system → hub}/License.json +11 -3
  218. package/json-schema/hub/MarketplacePlugin.json +141 -0
  219. package/json-schema/hub/PluginAuthor.json +26 -0
  220. package/json-schema/hub/PluginPricing.json +43 -0
  221. package/json-schema/hub/SpaceSubscription.json +77 -0
  222. package/json-schema/hub/SubscriptionStatus.json +16 -0
  223. package/json-schema/{system → hub}/Tenant.json +3 -5
  224. package/json-schema/kernel/FileMetadata.json +43 -0
  225. package/json-schema/kernel/KernelContext.json +62 -0
  226. package/json-schema/kernel/LogEntry.json +63 -0
  227. package/json-schema/kernel/LogFormat.json +15 -0
  228. package/json-schema/kernel/LogLevel.json +17 -0
  229. package/json-schema/kernel/LoggerConfig.json +70 -0
  230. package/json-schema/kernel/Manifest.json +2557 -0
  231. package/json-schema/{system → kernel}/PluginContext.json +8 -1
  232. package/json-schema/kernel/RuntimeMode.json +16 -0
  233. package/json-schema/kernel/ScopedStorageConfig.json +54 -0
  234. package/json-schema/kernel/StorageAdapterType.json +17 -0
  235. package/json-schema/kernel/StorageScope.json +18 -0
  236. package/json-schema/permission/CriteriaSharingRule.json +82 -0
  237. package/json-schema/{data → permission}/OWDModel.json +2 -1
  238. package/json-schema/{data → permission}/ObjectPermission.json +15 -0
  239. package/json-schema/permission/OwnerSharingRule.json +102 -0
  240. package/json-schema/{data → permission}/PermissionSet.json +15 -0
  241. package/json-schema/permission/ShareRecipientType.json +16 -0
  242. package/json-schema/{data → permission}/SharingLevel.json +2 -1
  243. package/json-schema/permission/SharingRule.json +182 -0
  244. package/json-schema/{data → permission}/SharingRuleType.json +1 -3
  245. package/json-schema/ui/FieldWidgetProps.json +30 -0
  246. package/llms.txt +182 -0
  247. package/package.json +38 -16
  248. package/prompts/README.md +18 -0
  249. package/prompts/architecture.md +81 -0
  250. package/prompts/implement-objectai.md +39 -0
  251. package/prompts/implement-objectos.md +48 -0
  252. package/prompts/implement-objectql.md +39 -0
  253. package/prompts/implement-objectui.md +46 -0
  254. package/prompts/instructions.md +91 -0
  255. package/dist/ai/workflow-automation.zod.d.ts.map +0 -1
  256. package/dist/data/flow.zod.d.ts.map +0 -1
  257. package/dist/data/permission.zod.d.ts.map +0 -1
  258. package/dist/data/sharing.zod.d.ts +0 -63
  259. package/dist/data/sharing.zod.d.ts.map +0 -1
  260. package/dist/data/sharing.zod.js +0 -57
  261. package/dist/data/trigger.zod.d.ts +0 -354
  262. package/dist/data/trigger.zod.d.ts.map +0 -1
  263. package/dist/data/trigger.zod.js +0 -195
  264. package/dist/data/workflow.zod.d.ts +0 -986
  265. package/dist/data/workflow.zod.d.ts.map +0 -1
  266. package/dist/system/api.zod.d.ts.map +0 -1
  267. package/dist/system/auth-protocol.d.ts.map +0 -1
  268. package/dist/system/auth.zod.d.ts.map +0 -1
  269. package/dist/system/datasource.zod.d.ts.map +0 -1
  270. package/dist/system/discovery.zod.d.ts.map +0 -1
  271. package/dist/system/driver.zod.d.ts +0 -1631
  272. package/dist/system/driver.zod.d.ts.map +0 -1
  273. package/dist/system/identity.zod.d.ts.map +0 -1
  274. package/dist/system/license.zod.d.ts.map +0 -1
  275. package/dist/system/manifest.zod.d.ts +0 -397
  276. package/dist/system/manifest.zod.d.ts.map +0 -1
  277. package/dist/system/organization.zod.d.ts.map +0 -1
  278. package/dist/system/plugin.zod.d.ts.map +0 -1
  279. package/dist/system/policy.zod.d.ts.map +0 -1
  280. package/dist/system/realtime.zod.d.ts.map +0 -1
  281. package/dist/system/role.zod.d.ts.map +0 -1
  282. package/dist/system/tenant.zod.d.ts.map +0 -1
  283. package/dist/system/territory.zod.d.ts.map +0 -1
  284. package/dist/system/webhook.zod.d.ts.map +0 -1
  285. package/json-schema/README.md +0 -127
  286. package/json-schema/data/FieldMapping.json +0 -83
  287. package/json-schema/data/FilterNode.json +0 -52
  288. package/json-schema/data/FilterOperator.json +0 -26
  289. package/json-schema/data/LogicOperator.json +0 -14
  290. package/json-schema/data/Mapping.json +0 -598
  291. package/json-schema/data/SharingRule.json +0 -58
  292. package/json-schema/data/TransformType.json +0 -18
  293. package/json-schema/data/Trigger.json +0 -73
  294. package/json-schema/data/TriggerContext.json +0 -61
  295. package/json-schema/data/TriggerTiming.json +0 -13
  296. package/json-schema/system/Manifest.json +0 -315
  297. /package/dist/{system → api}/realtime.zod.js +0 -0
  298. /package/dist/{system/auth.zod.js → auth/config.zod.js} +0 -0
  299. /package/dist/{system → auth}/identity.zod.js +0 -0
  300. /package/dist/{system → auth}/organization.zod.js +0 -0
  301. /package/dist/{system → auth}/policy.zod.js +0 -0
  302. /package/dist/{system/auth-protocol.js → auth/protocol.js} +0 -0
  303. /package/dist/{system → auth}/role.zod.d.ts +0 -0
  304. /package/dist/{system → auth}/role.zod.js +0 -0
  305. /package/dist/{system → automation}/webhook.zod.js +0 -0
  306. /package/dist/{system → permission}/territory.zod.d.ts +0 -0
  307. /package/dist/{system → permission}/territory.zod.js +0 -0
  308. /package/json-schema/{system → api}/ApiCapabilities.json +0 -0
  309. /package/json-schema/{system → api}/ApiMapping.json +0 -0
  310. /package/json-schema/{system → api}/Presence.json +0 -0
  311. /package/json-schema/{system → api}/PresenceStatus.json +0 -0
  312. /package/json-schema/{system → api}/RateLimit.json +0 -0
  313. /package/json-schema/{system → api}/RealtimeAction.json +0 -0
  314. /package/json-schema/{system → api}/RealtimeEvent.json +0 -0
  315. /package/json-schema/{system → api}/RealtimeEventType.json +0 -0
  316. /package/json-schema/{system → api}/Subscription.json +0 -0
  317. /package/json-schema/{system → api}/SubscriptionEvent.json +0 -0
  318. /package/json-schema/{system → api}/TransportProtocol.json +0 -0
  319. /package/json-schema/{system → auth}/Account.json +0 -0
  320. /package/json-schema/{system → auth}/AccountLinkingConfig.json +0 -0
  321. /package/json-schema/{system → auth}/AuditPolicy.json +0 -0
  322. /package/json-schema/{system → auth}/AuthConfig.json +0 -0
  323. /package/json-schema/{system → auth}/AuthPluginConfig.json +0 -0
  324. /package/json-schema/{system → auth}/AuthStrategy.json +0 -0
  325. /package/json-schema/{system → auth}/CSRFConfig.json +0 -0
  326. /package/json-schema/{system → auth}/DatabaseAdapter.json +0 -0
  327. /package/json-schema/{system → auth}/DatabaseMapping.json +0 -0
  328. /package/json-schema/{system → auth}/EmailPasswordConfig.json +0 -0
  329. /package/json-schema/{system → auth}/EnterpriseAuthConfig.json +0 -0
  330. /package/json-schema/{system → auth}/Invitation.json +0 -0
  331. /package/json-schema/{system → auth}/InvitationStatus.json +0 -0
  332. /package/json-schema/{system → auth}/LDAPConfig.json +0 -0
  333. /package/json-schema/{system → auth}/MagicLinkConfig.json +0 -0
  334. /package/json-schema/{system → auth}/Member.json +0 -0
  335. /package/json-schema/{system → auth}/NetworkPolicy.json +0 -0
  336. /package/json-schema/{system → auth}/OAuthProvider.json +0 -0
  337. /package/json-schema/{system → auth}/OIDCConfig.json +0 -0
  338. /package/json-schema/{system → auth}/Organization.json +0 -0
  339. /package/json-schema/{system → auth}/PasskeyConfig.json +0 -0
  340. /package/json-schema/{system → auth}/PasswordPolicy.json +0 -0
  341. /package/json-schema/{system → auth}/Policy.json +0 -0
  342. /package/json-schema/{system → auth}/RateLimitConfig.json +0 -0
  343. /package/json-schema/{system → auth}/Role.json +0 -0
  344. /package/json-schema/{system → auth}/SAMLConfig.json +0 -0
  345. /package/json-schema/{system → auth}/Session.json +0 -0
  346. /package/json-schema/{system → auth}/SessionConfig.json +0 -0
  347. /package/json-schema/{system → auth}/SessionPolicy.json +0 -0
  348. /package/json-schema/{system → auth}/StandardAuthProvider.json +0 -0
  349. /package/json-schema/{system → auth}/TwoFactorConfig.json +0 -0
  350. /package/json-schema/{system → auth}/User.json +0 -0
  351. /package/json-schema/{system → auth}/UserFieldMapping.json +0 -0
  352. /package/json-schema/{system → auth}/VerificationToken.json +0 -0
  353. /package/json-schema/{data → automation}/CustomScriptAction.json +0 -0
  354. /package/json-schema/{data → automation}/EmailAlertAction.json +0 -0
  355. /package/json-schema/{data → automation}/FieldUpdateAction.json +0 -0
  356. /package/json-schema/{data → automation}/FlowNode.json +0 -0
  357. /package/json-schema/{data → automation}/FlowNodeAction.json +0 -0
  358. /package/json-schema/{data → automation}/FlowVariable.json +0 -0
  359. /package/json-schema/{data → automation}/HttpCallAction.json +0 -0
  360. /package/json-schema/{data → automation}/PushNotificationAction.json +0 -0
  361. /package/json-schema/{data → automation}/SlackMessageAction.json +0 -0
  362. /package/json-schema/{data → automation}/SmsNotificationAction.json +0 -0
  363. /package/json-schema/{data → automation}/TaskCreationAction.json +0 -0
  364. /package/json-schema/{data → automation}/TeamsMessageAction.json +0 -0
  365. /package/json-schema/{system → automation}/Webhook.json +0 -0
  366. /package/json-schema/{system → automation}/WebhookReceiver.json +0 -0
  367. /package/json-schema/{data → automation}/WebhookTriggerAction.json +0 -0
  368. /package/json-schema/{system → automation}/WebhookTriggerType.json +0 -0
  369. /package/json-schema/{data → automation}/WorkflowAction.json +0 -0
  370. /package/json-schema/{data → automation}/WorkflowTriggerType.json +0 -0
  371. /package/json-schema/{system → driver}/DatasourceCapabilities.json +0 -0
  372. /package/json-schema/{system → driver}/DriverDefinition.json +0 -0
  373. /package/json-schema/{system → driver}/DriverType.json +0 -0
  374. /package/json-schema/{system → hub}/DatabaseLevelIsolationStrategy.json +0 -0
  375. /package/json-schema/{system → hub}/Feature.json +0 -0
  376. /package/json-schema/{system → hub}/LevelIsolationStrategySchema.json +0 -0
  377. /package/json-schema/{system → hub}/MetricType.json +0 -0
  378. /package/json-schema/{system → hub}/Plan.json +0 -0
  379. /package/json-schema/{system → hub}/RowLevelIsolationStrategy.json +0 -0
  380. /package/json-schema/{system → hub}/TenantIsolationConfig.json +0 -0
  381. /package/json-schema/{system → hub}/TenantIsolationLevel.json +0 -0
  382. /package/json-schema/{system → hub}/TenantQuota.json +0 -0
  383. /package/json-schema/{system → hub}/TenantSecurityPolicy.json +0 -0
  384. /package/json-schema/{system → kernel}/I18nContext.json +0 -0
  385. /package/json-schema/{system → kernel}/Logger.json +0 -0
  386. /package/json-schema/{system → kernel}/ObjectQLClient.json +0 -0
  387. /package/json-schema/{system → kernel}/Plugin.json +0 -0
  388. /package/json-schema/{system → kernel}/PluginLifecycle.json +0 -0
  389. /package/json-schema/{system → kernel}/Router.json +0 -0
  390. /package/json-schema/{system → kernel}/Scheduler.json +0 -0
  391. /package/json-schema/{system → kernel}/ScopedStorage.json +0 -0
  392. /package/json-schema/{system → kernel}/SystemAPI.json +0 -0
  393. /package/json-schema/{data → permission}/FieldPermission.json +0 -0
  394. /package/json-schema/{system → permission}/Territory.json +0 -0
  395. /package/json-schema/{system → permission}/TerritoryModel.json +0 -0
  396. /package/json-schema/{system → permission}/TerritoryType.json +0 -0
@@ -0,0 +1,2645 @@
1
+ {
2
+ "$ref": "#/definitions/ComposerResponse",
3
+ "definitions": {
4
+ "ComposerResponse": {
5
+ "type": "object",
6
+ "properties": {
7
+ "success": {
8
+ "type": "boolean"
9
+ },
10
+ "manifest": {
11
+ "type": "object",
12
+ "properties": {
13
+ "id": {
14
+ "type": "string",
15
+ "description": "Unique package identifier (reverse domain style)"
16
+ },
17
+ "version": {
18
+ "type": "string",
19
+ "pattern": "^\\d+\\.\\d+\\.\\d+$",
20
+ "description": "Package version (semantic versioning)"
21
+ },
22
+ "type": {
23
+ "type": "string",
24
+ "enum": [
25
+ "app",
26
+ "plugin",
27
+ "driver",
28
+ "module"
29
+ ],
30
+ "description": "Type of package"
31
+ },
32
+ "name": {
33
+ "type": "string",
34
+ "description": "Human-readable package name"
35
+ },
36
+ "description": {
37
+ "type": "string",
38
+ "description": "Package description"
39
+ },
40
+ "permissions": {
41
+ "type": "array",
42
+ "items": {
43
+ "type": "string"
44
+ },
45
+ "description": "Array of required permission strings"
46
+ },
47
+ "objects": {
48
+ "type": "array",
49
+ "items": {
50
+ "type": "string"
51
+ },
52
+ "description": "Glob patterns for ObjectQL schemas files"
53
+ },
54
+ "definitions": {
55
+ "type": "object",
56
+ "properties": {
57
+ "objects": {
58
+ "type": "object",
59
+ "additionalProperties": {
60
+ "type": "object",
61
+ "properties": {
62
+ "name": {
63
+ "type": "string",
64
+ "pattern": "^[a-z_][a-z0-9_]*$",
65
+ "description": "Machine unique key (snake_case). Immutable."
66
+ },
67
+ "label": {
68
+ "type": "string",
69
+ "description": "Human readable singular label (e.g. \"Account\")"
70
+ },
71
+ "pluralLabel": {
72
+ "type": "string",
73
+ "description": "Human readable plural label (e.g. \"Accounts\")"
74
+ },
75
+ "description": {
76
+ "type": "string",
77
+ "description": "Developer documentation / description"
78
+ },
79
+ "icon": {
80
+ "type": "string",
81
+ "description": "Icon name (Lucide/Material) for UI representation"
82
+ },
83
+ "tags": {
84
+ "type": "array",
85
+ "items": {
86
+ "type": "string"
87
+ },
88
+ "description": "Categorization tags (e.g. \"sales\", \"system\", \"reference\")"
89
+ },
90
+ "active": {
91
+ "type": "boolean",
92
+ "default": true,
93
+ "description": "Is the object active and usable"
94
+ },
95
+ "isSystem": {
96
+ "type": "boolean",
97
+ "default": false,
98
+ "description": "Is system object (protected from deletion)"
99
+ },
100
+ "abstract": {
101
+ "type": "boolean",
102
+ "default": false,
103
+ "description": "Is abstract base object (cannot be instantiated)"
104
+ },
105
+ "datasource": {
106
+ "type": "string",
107
+ "default": "default",
108
+ "description": "Target Datasource ID. \"default\" is the primary DB."
109
+ },
110
+ "tableName": {
111
+ "type": "string",
112
+ "description": "Physical table/collection name in the target datasource"
113
+ },
114
+ "fields": {
115
+ "type": "object",
116
+ "additionalProperties": {
117
+ "type": "object",
118
+ "properties": {
119
+ "name": {
120
+ "type": "string",
121
+ "pattern": "^[a-z_][a-z0-9_]*$",
122
+ "description": "Machine name (snake_case)"
123
+ },
124
+ "label": {
125
+ "type": "string",
126
+ "description": "Human readable label"
127
+ },
128
+ "type": {
129
+ "type": "string",
130
+ "enum": [
131
+ "text",
132
+ "textarea",
133
+ "email",
134
+ "url",
135
+ "phone",
136
+ "password",
137
+ "markdown",
138
+ "html",
139
+ "richtext",
140
+ "number",
141
+ "currency",
142
+ "percent",
143
+ "date",
144
+ "datetime",
145
+ "time",
146
+ "boolean",
147
+ "select",
148
+ "lookup",
149
+ "master_detail",
150
+ "image",
151
+ "file",
152
+ "avatar",
153
+ "formula",
154
+ "summary",
155
+ "autonumber",
156
+ "location",
157
+ "geolocation",
158
+ "address",
159
+ "code",
160
+ "color",
161
+ "rating",
162
+ "slider",
163
+ "signature",
164
+ "qrcode"
165
+ ],
166
+ "description": "Field Data Type"
167
+ },
168
+ "description": {
169
+ "type": "string",
170
+ "description": "Tooltip/Help text"
171
+ },
172
+ "format": {
173
+ "type": "string",
174
+ "description": "Format string (e.g. email, phone)"
175
+ },
176
+ "required": {
177
+ "type": "boolean",
178
+ "default": false,
179
+ "description": "Is required"
180
+ },
181
+ "searchable": {
182
+ "type": "boolean",
183
+ "default": false,
184
+ "description": "Is searchable"
185
+ },
186
+ "multiple": {
187
+ "type": "boolean",
188
+ "default": false,
189
+ "description": "Allow multiple values (Stores as Array/JSON). Applicable for select, lookup, file, image."
190
+ },
191
+ "unique": {
192
+ "type": "boolean",
193
+ "default": false,
194
+ "description": "Is unique constraint"
195
+ },
196
+ "defaultValue": {
197
+ "description": "Default value"
198
+ },
199
+ "maxLength": {
200
+ "type": "number",
201
+ "description": "Max character length"
202
+ },
203
+ "minLength": {
204
+ "type": "number",
205
+ "description": "Min character length"
206
+ },
207
+ "precision": {
208
+ "type": "number",
209
+ "description": "Total digits"
210
+ },
211
+ "scale": {
212
+ "type": "number",
213
+ "description": "Decimal places"
214
+ },
215
+ "min": {
216
+ "type": "number",
217
+ "description": "Minimum value"
218
+ },
219
+ "max": {
220
+ "type": "number",
221
+ "description": "Maximum value"
222
+ },
223
+ "options": {
224
+ "type": "array",
225
+ "items": {
226
+ "type": "object",
227
+ "properties": {
228
+ "label": {
229
+ "type": "string",
230
+ "description": "Display label"
231
+ },
232
+ "value": {
233
+ "type": "string",
234
+ "description": "Stored value"
235
+ },
236
+ "color": {
237
+ "type": "string",
238
+ "description": "Color code for badges/charts"
239
+ },
240
+ "default": {
241
+ "type": "boolean",
242
+ "description": "Is default option"
243
+ }
244
+ },
245
+ "required": [
246
+ "label",
247
+ "value"
248
+ ],
249
+ "additionalProperties": false
250
+ },
251
+ "description": "Static options for select/multiselect"
252
+ },
253
+ "reference": {
254
+ "type": "string",
255
+ "description": "Target Object Name"
256
+ },
257
+ "referenceFilters": {
258
+ "type": "array",
259
+ "items": {
260
+ "type": "string"
261
+ },
262
+ "description": "Filters applied to lookup dialogs (e.g. \"active = true\")"
263
+ },
264
+ "writeRequiresMasterRead": {
265
+ "type": "boolean",
266
+ "description": "If true, user needs read access to master record to edit this field"
267
+ },
268
+ "deleteBehavior": {
269
+ "type": "string",
270
+ "enum": [
271
+ "set_null",
272
+ "cascade",
273
+ "restrict"
274
+ ],
275
+ "default": "set_null",
276
+ "description": "What happens if referenced record is deleted"
277
+ },
278
+ "expression": {
279
+ "type": "string",
280
+ "description": "Formula expression"
281
+ },
282
+ "formula": {
283
+ "type": "string",
284
+ "description": "Deprecated: Use expression"
285
+ },
286
+ "summaryOperations": {
287
+ "type": "object",
288
+ "properties": {
289
+ "object": {
290
+ "type": "string"
291
+ },
292
+ "field": {
293
+ "type": "string"
294
+ },
295
+ "function": {
296
+ "type": "string",
297
+ "enum": [
298
+ "count",
299
+ "sum",
300
+ "min",
301
+ "max",
302
+ "avg"
303
+ ]
304
+ }
305
+ },
306
+ "required": [
307
+ "object",
308
+ "field",
309
+ "function"
310
+ ],
311
+ "additionalProperties": false,
312
+ "description": "Roll-up summary definition"
313
+ },
314
+ "language": {
315
+ "type": "string",
316
+ "description": "Programming language for syntax highlighting (e.g., javascript, python, sql)"
317
+ },
318
+ "theme": {
319
+ "type": "string",
320
+ "description": "Code editor theme (e.g., dark, light, monokai)"
321
+ },
322
+ "lineNumbers": {
323
+ "type": "boolean",
324
+ "description": "Show line numbers in code editor"
325
+ },
326
+ "maxRating": {
327
+ "type": "number",
328
+ "description": "Maximum rating value (default: 5)"
329
+ },
330
+ "allowHalf": {
331
+ "type": "boolean",
332
+ "description": "Allow half-star ratings"
333
+ },
334
+ "displayMap": {
335
+ "type": "boolean",
336
+ "description": "Display map widget for location field"
337
+ },
338
+ "allowGeocoding": {
339
+ "type": "boolean",
340
+ "description": "Allow address-to-coordinate conversion"
341
+ },
342
+ "addressFormat": {
343
+ "type": "string",
344
+ "enum": [
345
+ "us",
346
+ "uk",
347
+ "international"
348
+ ],
349
+ "description": "Address format template"
350
+ },
351
+ "colorFormat": {
352
+ "type": "string",
353
+ "enum": [
354
+ "hex",
355
+ "rgb",
356
+ "rgba",
357
+ "hsl"
358
+ ],
359
+ "description": "Color value format"
360
+ },
361
+ "allowAlpha": {
362
+ "type": "boolean",
363
+ "description": "Allow transparency/alpha channel"
364
+ },
365
+ "presetColors": {
366
+ "type": "array",
367
+ "items": {
368
+ "type": "string"
369
+ },
370
+ "description": "Preset color options"
371
+ },
372
+ "step": {
373
+ "type": "number",
374
+ "description": "Step increment for slider (default: 1)"
375
+ },
376
+ "showValue": {
377
+ "type": "boolean",
378
+ "description": "Display current value on slider"
379
+ },
380
+ "marks": {
381
+ "type": "object",
382
+ "additionalProperties": {
383
+ "type": "string"
384
+ },
385
+ "description": "Custom marks/labels at specific values (e.g., {0: \"Low\", 50: \"Medium\", 100: \"High\"})"
386
+ },
387
+ "barcodeFormat": {
388
+ "type": "string",
389
+ "enum": [
390
+ "qr",
391
+ "ean13",
392
+ "ean8",
393
+ "code128",
394
+ "code39",
395
+ "upca",
396
+ "upce"
397
+ ],
398
+ "description": "Barcode format type"
399
+ },
400
+ "qrErrorCorrection": {
401
+ "type": "string",
402
+ "enum": [
403
+ "L",
404
+ "M",
405
+ "Q",
406
+ "H"
407
+ ],
408
+ "description": "QR code error correction level (L=7%, M=15%, Q=25%, H=30%). Only applicable when barcodeFormat is \"qr\""
409
+ },
410
+ "displayValue": {
411
+ "type": "boolean",
412
+ "description": "Display human-readable value below barcode/QR code"
413
+ },
414
+ "allowScanning": {
415
+ "type": "boolean",
416
+ "description": "Enable camera scanning for barcode/QR code input"
417
+ },
418
+ "currencyConfig": {
419
+ "type": "object",
420
+ "properties": {
421
+ "precision": {
422
+ "type": "integer",
423
+ "minimum": 0,
424
+ "maximum": 10,
425
+ "default": 2,
426
+ "description": "Decimal precision (default: 2)"
427
+ },
428
+ "currencyMode": {
429
+ "type": "string",
430
+ "enum": [
431
+ "dynamic",
432
+ "fixed"
433
+ ],
434
+ "default": "dynamic",
435
+ "description": "Currency mode: dynamic (user selectable) or fixed (single currency)"
436
+ },
437
+ "defaultCurrency": {
438
+ "type": "string",
439
+ "minLength": 3,
440
+ "maxLength": 3,
441
+ "default": "CNY",
442
+ "description": "Default or fixed currency code (ISO 4217, e.g., USD, CNY, EUR)"
443
+ }
444
+ },
445
+ "additionalProperties": false,
446
+ "description": "Configuration for currency field type"
447
+ },
448
+ "hidden": {
449
+ "type": "boolean",
450
+ "default": false,
451
+ "description": "Hidden from default UI"
452
+ },
453
+ "readonly": {
454
+ "type": "boolean",
455
+ "default": false,
456
+ "description": "Read-only in UI"
457
+ },
458
+ "encryption": {
459
+ "type": "boolean",
460
+ "default": false,
461
+ "description": "Encrypt at rest"
462
+ },
463
+ "index": {
464
+ "type": "boolean",
465
+ "default": false,
466
+ "description": "Create standard database index"
467
+ },
468
+ "externalId": {
469
+ "type": "boolean",
470
+ "default": false,
471
+ "description": "Is external ID for upsert operations"
472
+ }
473
+ },
474
+ "required": [
475
+ "type"
476
+ ],
477
+ "additionalProperties": false
478
+ },
479
+ "description": "Field definitions map"
480
+ },
481
+ "indexes": {
482
+ "type": "array",
483
+ "items": {
484
+ "type": "object",
485
+ "properties": {
486
+ "name": {
487
+ "type": "string",
488
+ "description": "Index name"
489
+ },
490
+ "fields": {
491
+ "type": "array",
492
+ "items": {
493
+ "type": "string"
494
+ },
495
+ "description": "Fields included in the index"
496
+ },
497
+ "unique": {
498
+ "type": "boolean",
499
+ "description": "Whether the index is unique"
500
+ },
501
+ "type": {
502
+ "type": "string",
503
+ "enum": [
504
+ "btree",
505
+ "hash",
506
+ "gin",
507
+ "gist"
508
+ ],
509
+ "description": "Index type (default: btree)"
510
+ }
511
+ },
512
+ "required": [
513
+ "fields"
514
+ ],
515
+ "additionalProperties": false
516
+ },
517
+ "description": "Database performance indexes"
518
+ },
519
+ "validations": {
520
+ "type": "array",
521
+ "items": {
522
+ "anyOf": [
523
+ {
524
+ "type": "object",
525
+ "properties": {
526
+ "name": {
527
+ "type": "string",
528
+ "pattern": "^[a-z_][a-z0-9_]*$",
529
+ "description": "Unique rule name (snake_case)"
530
+ },
531
+ "label": {
532
+ "type": "string",
533
+ "description": "Human-readable label for the rule listing"
534
+ },
535
+ "description": {
536
+ "type": "string",
537
+ "description": "Administrative notes explaining the business reason"
538
+ },
539
+ "active": {
540
+ "type": "boolean",
541
+ "default": true
542
+ },
543
+ "events": {
544
+ "type": "array",
545
+ "items": {
546
+ "type": "string",
547
+ "enum": [
548
+ "insert",
549
+ "update",
550
+ "delete"
551
+ ]
552
+ },
553
+ "default": [
554
+ "insert",
555
+ "update"
556
+ ],
557
+ "description": "Validation contexts"
558
+ },
559
+ "tags": {
560
+ "type": "array",
561
+ "items": {
562
+ "type": "string"
563
+ },
564
+ "description": "Categorization tags (e.g., \"compliance\", \"billing\")"
565
+ },
566
+ "severity": {
567
+ "type": "string",
568
+ "enum": [
569
+ "error",
570
+ "warning",
571
+ "info"
572
+ ],
573
+ "default": "error"
574
+ },
575
+ "message": {
576
+ "type": "string",
577
+ "description": "Error message to display to the user"
578
+ },
579
+ "type": {
580
+ "type": "string",
581
+ "const": "script"
582
+ },
583
+ "condition": {
584
+ "type": "string",
585
+ "description": "Formula expression. If TRUE, validation fails. (e.g. amount < 0)"
586
+ }
587
+ },
588
+ "required": [
589
+ "name",
590
+ "message",
591
+ "type",
592
+ "condition"
593
+ ],
594
+ "additionalProperties": false
595
+ },
596
+ {
597
+ "type": "object",
598
+ "properties": {
599
+ "name": {
600
+ "type": "string",
601
+ "pattern": "^[a-z_][a-z0-9_]*$",
602
+ "description": "Unique rule name (snake_case)"
603
+ },
604
+ "label": {
605
+ "type": "string",
606
+ "description": "Human-readable label for the rule listing"
607
+ },
608
+ "description": {
609
+ "type": "string",
610
+ "description": "Administrative notes explaining the business reason"
611
+ },
612
+ "active": {
613
+ "type": "boolean",
614
+ "default": true
615
+ },
616
+ "events": {
617
+ "type": "array",
618
+ "items": {
619
+ "type": "string",
620
+ "enum": [
621
+ "insert",
622
+ "update",
623
+ "delete"
624
+ ]
625
+ },
626
+ "default": [
627
+ "insert",
628
+ "update"
629
+ ],
630
+ "description": "Validation contexts"
631
+ },
632
+ "tags": {
633
+ "type": "array",
634
+ "items": {
635
+ "type": "string"
636
+ },
637
+ "description": "Categorization tags (e.g., \"compliance\", \"billing\")"
638
+ },
639
+ "severity": {
640
+ "type": "string",
641
+ "enum": [
642
+ "error",
643
+ "warning",
644
+ "info"
645
+ ],
646
+ "default": "error"
647
+ },
648
+ "message": {
649
+ "type": "string",
650
+ "description": "Error message to display to the user"
651
+ },
652
+ "type": {
653
+ "type": "string",
654
+ "const": "unique"
655
+ },
656
+ "fields": {
657
+ "type": "array",
658
+ "items": {
659
+ "type": "string"
660
+ },
661
+ "description": "Fields that must be combined unique"
662
+ },
663
+ "scope": {
664
+ "type": "string",
665
+ "description": "Formula condition for scope (e.g. active = true)"
666
+ },
667
+ "caseSensitive": {
668
+ "type": "boolean",
669
+ "default": true
670
+ }
671
+ },
672
+ "required": [
673
+ "name",
674
+ "message",
675
+ "type",
676
+ "fields"
677
+ ],
678
+ "additionalProperties": false
679
+ },
680
+ {
681
+ "type": "object",
682
+ "properties": {
683
+ "name": {
684
+ "type": "string",
685
+ "pattern": "^[a-z_][a-z0-9_]*$",
686
+ "description": "Unique rule name (snake_case)"
687
+ },
688
+ "label": {
689
+ "type": "string",
690
+ "description": "Human-readable label for the rule listing"
691
+ },
692
+ "description": {
693
+ "type": "string",
694
+ "description": "Administrative notes explaining the business reason"
695
+ },
696
+ "active": {
697
+ "type": "boolean",
698
+ "default": true
699
+ },
700
+ "events": {
701
+ "type": "array",
702
+ "items": {
703
+ "type": "string",
704
+ "enum": [
705
+ "insert",
706
+ "update",
707
+ "delete"
708
+ ]
709
+ },
710
+ "default": [
711
+ "insert",
712
+ "update"
713
+ ],
714
+ "description": "Validation contexts"
715
+ },
716
+ "tags": {
717
+ "type": "array",
718
+ "items": {
719
+ "type": "string"
720
+ },
721
+ "description": "Categorization tags (e.g., \"compliance\", \"billing\")"
722
+ },
723
+ "severity": {
724
+ "type": "string",
725
+ "enum": [
726
+ "error",
727
+ "warning",
728
+ "info"
729
+ ],
730
+ "default": "error"
731
+ },
732
+ "message": {
733
+ "type": "string",
734
+ "description": "Error message to display to the user"
735
+ },
736
+ "type": {
737
+ "type": "string",
738
+ "const": "state_machine"
739
+ },
740
+ "field": {
741
+ "type": "string",
742
+ "description": "State field (e.g. status)"
743
+ },
744
+ "transitions": {
745
+ "type": "object",
746
+ "additionalProperties": {
747
+ "type": "array",
748
+ "items": {
749
+ "type": "string"
750
+ }
751
+ },
752
+ "description": "Map of { OldState: [AllowedNewStates] }"
753
+ }
754
+ },
755
+ "required": [
756
+ "name",
757
+ "message",
758
+ "type",
759
+ "field",
760
+ "transitions"
761
+ ],
762
+ "additionalProperties": false
763
+ },
764
+ {
765
+ "type": "object",
766
+ "properties": {
767
+ "name": {
768
+ "type": "string",
769
+ "pattern": "^[a-z_][a-z0-9_]*$",
770
+ "description": "Unique rule name (snake_case)"
771
+ },
772
+ "label": {
773
+ "type": "string",
774
+ "description": "Human-readable label for the rule listing"
775
+ },
776
+ "description": {
777
+ "type": "string",
778
+ "description": "Administrative notes explaining the business reason"
779
+ },
780
+ "active": {
781
+ "type": "boolean",
782
+ "default": true
783
+ },
784
+ "events": {
785
+ "type": "array",
786
+ "items": {
787
+ "type": "string",
788
+ "enum": [
789
+ "insert",
790
+ "update",
791
+ "delete"
792
+ ]
793
+ },
794
+ "default": [
795
+ "insert",
796
+ "update"
797
+ ],
798
+ "description": "Validation contexts"
799
+ },
800
+ "tags": {
801
+ "type": "array",
802
+ "items": {
803
+ "type": "string"
804
+ },
805
+ "description": "Categorization tags (e.g., \"compliance\", \"billing\")"
806
+ },
807
+ "severity": {
808
+ "type": "string",
809
+ "enum": [
810
+ "error",
811
+ "warning",
812
+ "info"
813
+ ],
814
+ "default": "error"
815
+ },
816
+ "message": {
817
+ "type": "string",
818
+ "description": "Error message to display to the user"
819
+ },
820
+ "type": {
821
+ "type": "string",
822
+ "const": "format"
823
+ },
824
+ "field": {
825
+ "type": "string"
826
+ },
827
+ "regex": {
828
+ "type": "string"
829
+ },
830
+ "format": {
831
+ "type": "string",
832
+ "enum": [
833
+ "email",
834
+ "url",
835
+ "phone",
836
+ "json"
837
+ ]
838
+ }
839
+ },
840
+ "required": [
841
+ "name",
842
+ "message",
843
+ "type",
844
+ "field"
845
+ ],
846
+ "additionalProperties": false
847
+ },
848
+ {
849
+ "type": "object",
850
+ "properties": {
851
+ "name": {
852
+ "type": "string",
853
+ "pattern": "^[a-z_][a-z0-9_]*$",
854
+ "description": "Unique rule name (snake_case)"
855
+ },
856
+ "label": {
857
+ "type": "string",
858
+ "description": "Human-readable label for the rule listing"
859
+ },
860
+ "description": {
861
+ "type": "string",
862
+ "description": "Administrative notes explaining the business reason"
863
+ },
864
+ "active": {
865
+ "type": "boolean",
866
+ "default": true
867
+ },
868
+ "events": {
869
+ "type": "array",
870
+ "items": {
871
+ "type": "string",
872
+ "enum": [
873
+ "insert",
874
+ "update",
875
+ "delete"
876
+ ]
877
+ },
878
+ "default": [
879
+ "insert",
880
+ "update"
881
+ ],
882
+ "description": "Validation contexts"
883
+ },
884
+ "tags": {
885
+ "type": "array",
886
+ "items": {
887
+ "type": "string"
888
+ },
889
+ "description": "Categorization tags (e.g., \"compliance\", \"billing\")"
890
+ },
891
+ "severity": {
892
+ "type": "string",
893
+ "enum": [
894
+ "error",
895
+ "warning",
896
+ "info"
897
+ ],
898
+ "default": "error"
899
+ },
900
+ "message": {
901
+ "type": "string",
902
+ "description": "Error message to display to the user"
903
+ },
904
+ "type": {
905
+ "type": "string",
906
+ "const": "cross_field"
907
+ },
908
+ "condition": {
909
+ "type": "string",
910
+ "description": "Formula expression comparing fields (e.g. \"end_date > start_date\")"
911
+ },
912
+ "fields": {
913
+ "type": "array",
914
+ "items": {
915
+ "type": "string"
916
+ },
917
+ "description": "Fields involved in the validation"
918
+ }
919
+ },
920
+ "required": [
921
+ "name",
922
+ "message",
923
+ "type",
924
+ "condition",
925
+ "fields"
926
+ ],
927
+ "additionalProperties": false
928
+ },
929
+ {
930
+ "type": "object",
931
+ "properties": {
932
+ "name": {
933
+ "type": "string",
934
+ "pattern": "^[a-z_][a-z0-9_]*$",
935
+ "description": "Unique rule name (snake_case)"
936
+ },
937
+ "label": {
938
+ "type": "string",
939
+ "description": "Human-readable label for the rule listing"
940
+ },
941
+ "description": {
942
+ "type": "string",
943
+ "description": "Administrative notes explaining the business reason"
944
+ },
945
+ "active": {
946
+ "type": "boolean",
947
+ "default": true
948
+ },
949
+ "events": {
950
+ "type": "array",
951
+ "items": {
952
+ "type": "string",
953
+ "enum": [
954
+ "insert",
955
+ "update",
956
+ "delete"
957
+ ]
958
+ },
959
+ "default": [
960
+ "insert",
961
+ "update"
962
+ ],
963
+ "description": "Validation contexts"
964
+ },
965
+ "tags": {
966
+ "type": "array",
967
+ "items": {
968
+ "type": "string"
969
+ },
970
+ "description": "Categorization tags (e.g., \"compliance\", \"billing\")"
971
+ },
972
+ "severity": {
973
+ "type": "string",
974
+ "enum": [
975
+ "error",
976
+ "warning",
977
+ "info"
978
+ ],
979
+ "default": "error"
980
+ },
981
+ "message": {
982
+ "type": "string",
983
+ "description": "Error message to display to the user"
984
+ },
985
+ "type": {
986
+ "type": "string",
987
+ "const": "json_schema"
988
+ },
989
+ "field": {
990
+ "type": "string",
991
+ "description": "JSON field to validate"
992
+ },
993
+ "schema": {
994
+ "type": "object",
995
+ "additionalProperties": {},
996
+ "description": "JSON Schema object definition"
997
+ }
998
+ },
999
+ "required": [
1000
+ "name",
1001
+ "message",
1002
+ "type",
1003
+ "field",
1004
+ "schema"
1005
+ ],
1006
+ "additionalProperties": false
1007
+ },
1008
+ {
1009
+ "type": "object",
1010
+ "properties": {
1011
+ "name": {
1012
+ "type": "string",
1013
+ "pattern": "^[a-z_][a-z0-9_]*$",
1014
+ "description": "Unique rule name (snake_case)"
1015
+ },
1016
+ "label": {
1017
+ "type": "string",
1018
+ "description": "Human-readable label for the rule listing"
1019
+ },
1020
+ "description": {
1021
+ "type": "string",
1022
+ "description": "Administrative notes explaining the business reason"
1023
+ },
1024
+ "active": {
1025
+ "type": "boolean",
1026
+ "default": true
1027
+ },
1028
+ "events": {
1029
+ "type": "array",
1030
+ "items": {
1031
+ "type": "string",
1032
+ "enum": [
1033
+ "insert",
1034
+ "update",
1035
+ "delete"
1036
+ ]
1037
+ },
1038
+ "default": [
1039
+ "insert",
1040
+ "update"
1041
+ ],
1042
+ "description": "Validation contexts"
1043
+ },
1044
+ "tags": {
1045
+ "type": "array",
1046
+ "items": {
1047
+ "type": "string"
1048
+ },
1049
+ "description": "Categorization tags (e.g., \"compliance\", \"billing\")"
1050
+ },
1051
+ "severity": {
1052
+ "type": "string",
1053
+ "enum": [
1054
+ "error",
1055
+ "warning",
1056
+ "info"
1057
+ ],
1058
+ "default": "error"
1059
+ },
1060
+ "message": {
1061
+ "type": "string",
1062
+ "description": "Error message to display to the user"
1063
+ },
1064
+ "type": {
1065
+ "type": "string",
1066
+ "const": "async"
1067
+ },
1068
+ "field": {
1069
+ "type": "string",
1070
+ "description": "Field to validate"
1071
+ },
1072
+ "validatorUrl": {
1073
+ "type": "string",
1074
+ "description": "External API endpoint for validation"
1075
+ },
1076
+ "method": {
1077
+ "type": "string",
1078
+ "enum": [
1079
+ "GET",
1080
+ "POST"
1081
+ ],
1082
+ "default": "GET",
1083
+ "description": "HTTP method for external call"
1084
+ },
1085
+ "headers": {
1086
+ "type": "object",
1087
+ "additionalProperties": {
1088
+ "type": "string"
1089
+ },
1090
+ "description": "Custom headers for the request"
1091
+ },
1092
+ "validatorFunction": {
1093
+ "type": "string",
1094
+ "description": "Reference to custom validator function"
1095
+ },
1096
+ "timeout": {
1097
+ "type": "number",
1098
+ "default": 5000,
1099
+ "description": "Timeout in milliseconds"
1100
+ },
1101
+ "debounce": {
1102
+ "type": "number",
1103
+ "description": "Debounce delay in milliseconds"
1104
+ },
1105
+ "params": {
1106
+ "type": "object",
1107
+ "additionalProperties": {},
1108
+ "description": "Additional parameters to pass to validator"
1109
+ }
1110
+ },
1111
+ "required": [
1112
+ "name",
1113
+ "message",
1114
+ "type",
1115
+ "field"
1116
+ ],
1117
+ "additionalProperties": false
1118
+ },
1119
+ {
1120
+ "type": "object",
1121
+ "properties": {
1122
+ "name": {
1123
+ "type": "string",
1124
+ "pattern": "^[a-z_][a-z0-9_]*$",
1125
+ "description": "Unique rule name (snake_case)"
1126
+ },
1127
+ "label": {
1128
+ "type": "string",
1129
+ "description": "Human-readable label for the rule listing"
1130
+ },
1131
+ "description": {
1132
+ "type": "string",
1133
+ "description": "Administrative notes explaining the business reason"
1134
+ },
1135
+ "active": {
1136
+ "type": "boolean",
1137
+ "default": true
1138
+ },
1139
+ "events": {
1140
+ "type": "array",
1141
+ "items": {
1142
+ "type": "string",
1143
+ "enum": [
1144
+ "insert",
1145
+ "update",
1146
+ "delete"
1147
+ ]
1148
+ },
1149
+ "default": [
1150
+ "insert",
1151
+ "update"
1152
+ ],
1153
+ "description": "Validation contexts"
1154
+ },
1155
+ "tags": {
1156
+ "type": "array",
1157
+ "items": {
1158
+ "type": "string"
1159
+ },
1160
+ "description": "Categorization tags (e.g., \"compliance\", \"billing\")"
1161
+ },
1162
+ "severity": {
1163
+ "type": "string",
1164
+ "enum": [
1165
+ "error",
1166
+ "warning",
1167
+ "info"
1168
+ ],
1169
+ "default": "error"
1170
+ },
1171
+ "message": {
1172
+ "type": "string",
1173
+ "description": "Error message to display to the user"
1174
+ },
1175
+ "type": {
1176
+ "type": "string",
1177
+ "const": "custom"
1178
+ },
1179
+ "handler": {
1180
+ "type": "string",
1181
+ "description": "Name of the custom validation function registered in the system"
1182
+ },
1183
+ "params": {
1184
+ "type": "object",
1185
+ "additionalProperties": {},
1186
+ "description": "Parameters passed to the custom handler"
1187
+ }
1188
+ },
1189
+ "required": [
1190
+ "name",
1191
+ "message",
1192
+ "type",
1193
+ "handler"
1194
+ ],
1195
+ "additionalProperties": false
1196
+ },
1197
+ {
1198
+ "type": "object",
1199
+ "properties": {
1200
+ "name": {
1201
+ "type": "string",
1202
+ "pattern": "^[a-z_][a-z0-9_]*$",
1203
+ "description": "Unique rule name (snake_case)"
1204
+ },
1205
+ "label": {
1206
+ "type": "string",
1207
+ "description": "Human-readable label for the rule listing"
1208
+ },
1209
+ "description": {
1210
+ "type": "string",
1211
+ "description": "Administrative notes explaining the business reason"
1212
+ },
1213
+ "active": {
1214
+ "type": "boolean",
1215
+ "default": true
1216
+ },
1217
+ "events": {
1218
+ "type": "array",
1219
+ "items": {
1220
+ "type": "string",
1221
+ "enum": [
1222
+ "insert",
1223
+ "update",
1224
+ "delete"
1225
+ ]
1226
+ },
1227
+ "default": [
1228
+ "insert",
1229
+ "update"
1230
+ ],
1231
+ "description": "Validation contexts"
1232
+ },
1233
+ "tags": {
1234
+ "type": "array",
1235
+ "items": {
1236
+ "type": "string"
1237
+ },
1238
+ "description": "Categorization tags (e.g., \"compliance\", \"billing\")"
1239
+ },
1240
+ "severity": {
1241
+ "type": "string",
1242
+ "enum": [
1243
+ "error",
1244
+ "warning",
1245
+ "info"
1246
+ ],
1247
+ "default": "error"
1248
+ },
1249
+ "message": {
1250
+ "type": "string",
1251
+ "description": "Error message to display to the user"
1252
+ },
1253
+ "type": {
1254
+ "type": "string",
1255
+ "const": "conditional"
1256
+ },
1257
+ "when": {
1258
+ "type": "string",
1259
+ "description": "Condition formula (e.g. \"type = 'enterprise'\")"
1260
+ },
1261
+ "then": {
1262
+ "anyOf": [
1263
+ {
1264
+ "type": "object",
1265
+ "properties": {
1266
+ "name": {
1267
+ "type": "string",
1268
+ "pattern": "^[a-z_][a-z0-9_]*$",
1269
+ "description": "Unique rule name (snake_case)"
1270
+ },
1271
+ "label": {
1272
+ "type": "string",
1273
+ "description": "Human-readable label for the rule listing"
1274
+ },
1275
+ "description": {
1276
+ "type": "string",
1277
+ "description": "Administrative notes explaining the business reason"
1278
+ },
1279
+ "active": {
1280
+ "type": "boolean",
1281
+ "default": true
1282
+ },
1283
+ "events": {
1284
+ "type": "array",
1285
+ "items": {
1286
+ "type": "string",
1287
+ "enum": [
1288
+ "insert",
1289
+ "update",
1290
+ "delete"
1291
+ ]
1292
+ },
1293
+ "default": [
1294
+ "insert",
1295
+ "update"
1296
+ ],
1297
+ "description": "Validation contexts"
1298
+ },
1299
+ "tags": {
1300
+ "type": "array",
1301
+ "items": {
1302
+ "type": "string"
1303
+ },
1304
+ "description": "Categorization tags (e.g., \"compliance\", \"billing\")"
1305
+ },
1306
+ "severity": {
1307
+ "type": "string",
1308
+ "enum": [
1309
+ "error",
1310
+ "warning",
1311
+ "info"
1312
+ ],
1313
+ "default": "error"
1314
+ },
1315
+ "message": {
1316
+ "type": "string",
1317
+ "description": "Error message to display to the user"
1318
+ },
1319
+ "type": {
1320
+ "type": "string",
1321
+ "const": "script"
1322
+ },
1323
+ "condition": {
1324
+ "type": "string",
1325
+ "description": "Formula expression. If TRUE, validation fails. (e.g. amount < 0)"
1326
+ }
1327
+ },
1328
+ "required": [
1329
+ "name",
1330
+ "message",
1331
+ "type",
1332
+ "condition"
1333
+ ],
1334
+ "additionalProperties": false
1335
+ },
1336
+ {
1337
+ "type": "object",
1338
+ "properties": {
1339
+ "name": {
1340
+ "type": "string",
1341
+ "pattern": "^[a-z_][a-z0-9_]*$",
1342
+ "description": "Unique rule name (snake_case)"
1343
+ },
1344
+ "label": {
1345
+ "type": "string",
1346
+ "description": "Human-readable label for the rule listing"
1347
+ },
1348
+ "description": {
1349
+ "type": "string",
1350
+ "description": "Administrative notes explaining the business reason"
1351
+ },
1352
+ "active": {
1353
+ "type": "boolean",
1354
+ "default": true
1355
+ },
1356
+ "events": {
1357
+ "type": "array",
1358
+ "items": {
1359
+ "type": "string",
1360
+ "enum": [
1361
+ "insert",
1362
+ "update",
1363
+ "delete"
1364
+ ]
1365
+ },
1366
+ "default": [
1367
+ "insert",
1368
+ "update"
1369
+ ],
1370
+ "description": "Validation contexts"
1371
+ },
1372
+ "tags": {
1373
+ "type": "array",
1374
+ "items": {
1375
+ "type": "string"
1376
+ },
1377
+ "description": "Categorization tags (e.g., \"compliance\", \"billing\")"
1378
+ },
1379
+ "severity": {
1380
+ "type": "string",
1381
+ "enum": [
1382
+ "error",
1383
+ "warning",
1384
+ "info"
1385
+ ],
1386
+ "default": "error"
1387
+ },
1388
+ "message": {
1389
+ "type": "string",
1390
+ "description": "Error message to display to the user"
1391
+ },
1392
+ "type": {
1393
+ "type": "string",
1394
+ "const": "unique"
1395
+ },
1396
+ "fields": {
1397
+ "type": "array",
1398
+ "items": {
1399
+ "type": "string"
1400
+ },
1401
+ "description": "Fields that must be combined unique"
1402
+ },
1403
+ "scope": {
1404
+ "type": "string",
1405
+ "description": "Formula condition for scope (e.g. active = true)"
1406
+ },
1407
+ "caseSensitive": {
1408
+ "type": "boolean",
1409
+ "default": true
1410
+ }
1411
+ },
1412
+ "required": [
1413
+ "name",
1414
+ "message",
1415
+ "type",
1416
+ "fields"
1417
+ ],
1418
+ "additionalProperties": false
1419
+ },
1420
+ {
1421
+ "type": "object",
1422
+ "properties": {
1423
+ "name": {
1424
+ "type": "string",
1425
+ "pattern": "^[a-z_][a-z0-9_]*$",
1426
+ "description": "Unique rule name (snake_case)"
1427
+ },
1428
+ "label": {
1429
+ "type": "string",
1430
+ "description": "Human-readable label for the rule listing"
1431
+ },
1432
+ "description": {
1433
+ "type": "string",
1434
+ "description": "Administrative notes explaining the business reason"
1435
+ },
1436
+ "active": {
1437
+ "type": "boolean",
1438
+ "default": true
1439
+ },
1440
+ "events": {
1441
+ "type": "array",
1442
+ "items": {
1443
+ "type": "string",
1444
+ "enum": [
1445
+ "insert",
1446
+ "update",
1447
+ "delete"
1448
+ ]
1449
+ },
1450
+ "default": [
1451
+ "insert",
1452
+ "update"
1453
+ ],
1454
+ "description": "Validation contexts"
1455
+ },
1456
+ "tags": {
1457
+ "type": "array",
1458
+ "items": {
1459
+ "type": "string"
1460
+ },
1461
+ "description": "Categorization tags (e.g., \"compliance\", \"billing\")"
1462
+ },
1463
+ "severity": {
1464
+ "type": "string",
1465
+ "enum": [
1466
+ "error",
1467
+ "warning",
1468
+ "info"
1469
+ ],
1470
+ "default": "error"
1471
+ },
1472
+ "message": {
1473
+ "type": "string",
1474
+ "description": "Error message to display to the user"
1475
+ },
1476
+ "type": {
1477
+ "type": "string",
1478
+ "const": "state_machine"
1479
+ },
1480
+ "field": {
1481
+ "type": "string",
1482
+ "description": "State field (e.g. status)"
1483
+ },
1484
+ "transitions": {
1485
+ "type": "object",
1486
+ "additionalProperties": {
1487
+ "type": "array",
1488
+ "items": {
1489
+ "type": "string"
1490
+ }
1491
+ },
1492
+ "description": "Map of { OldState: [AllowedNewStates] }"
1493
+ }
1494
+ },
1495
+ "required": [
1496
+ "name",
1497
+ "message",
1498
+ "type",
1499
+ "field",
1500
+ "transitions"
1501
+ ],
1502
+ "additionalProperties": false
1503
+ },
1504
+ {
1505
+ "type": "object",
1506
+ "properties": {
1507
+ "name": {
1508
+ "type": "string",
1509
+ "pattern": "^[a-z_][a-z0-9_]*$",
1510
+ "description": "Unique rule name (snake_case)"
1511
+ },
1512
+ "label": {
1513
+ "type": "string",
1514
+ "description": "Human-readable label for the rule listing"
1515
+ },
1516
+ "description": {
1517
+ "type": "string",
1518
+ "description": "Administrative notes explaining the business reason"
1519
+ },
1520
+ "active": {
1521
+ "type": "boolean",
1522
+ "default": true
1523
+ },
1524
+ "events": {
1525
+ "type": "array",
1526
+ "items": {
1527
+ "type": "string",
1528
+ "enum": [
1529
+ "insert",
1530
+ "update",
1531
+ "delete"
1532
+ ]
1533
+ },
1534
+ "default": [
1535
+ "insert",
1536
+ "update"
1537
+ ],
1538
+ "description": "Validation contexts"
1539
+ },
1540
+ "tags": {
1541
+ "type": "array",
1542
+ "items": {
1543
+ "type": "string"
1544
+ },
1545
+ "description": "Categorization tags (e.g., \"compliance\", \"billing\")"
1546
+ },
1547
+ "severity": {
1548
+ "type": "string",
1549
+ "enum": [
1550
+ "error",
1551
+ "warning",
1552
+ "info"
1553
+ ],
1554
+ "default": "error"
1555
+ },
1556
+ "message": {
1557
+ "type": "string",
1558
+ "description": "Error message to display to the user"
1559
+ },
1560
+ "type": {
1561
+ "type": "string",
1562
+ "const": "format"
1563
+ },
1564
+ "field": {
1565
+ "type": "string"
1566
+ },
1567
+ "regex": {
1568
+ "type": "string"
1569
+ },
1570
+ "format": {
1571
+ "type": "string",
1572
+ "enum": [
1573
+ "email",
1574
+ "url",
1575
+ "phone",
1576
+ "json"
1577
+ ]
1578
+ }
1579
+ },
1580
+ "required": [
1581
+ "name",
1582
+ "message",
1583
+ "type",
1584
+ "field"
1585
+ ],
1586
+ "additionalProperties": false
1587
+ },
1588
+ {
1589
+ "type": "object",
1590
+ "properties": {
1591
+ "name": {
1592
+ "type": "string",
1593
+ "pattern": "^[a-z_][a-z0-9_]*$",
1594
+ "description": "Unique rule name (snake_case)"
1595
+ },
1596
+ "label": {
1597
+ "type": "string",
1598
+ "description": "Human-readable label for the rule listing"
1599
+ },
1600
+ "description": {
1601
+ "type": "string",
1602
+ "description": "Administrative notes explaining the business reason"
1603
+ },
1604
+ "active": {
1605
+ "type": "boolean",
1606
+ "default": true
1607
+ },
1608
+ "events": {
1609
+ "type": "array",
1610
+ "items": {
1611
+ "type": "string",
1612
+ "enum": [
1613
+ "insert",
1614
+ "update",
1615
+ "delete"
1616
+ ]
1617
+ },
1618
+ "default": [
1619
+ "insert",
1620
+ "update"
1621
+ ],
1622
+ "description": "Validation contexts"
1623
+ },
1624
+ "tags": {
1625
+ "type": "array",
1626
+ "items": {
1627
+ "type": "string"
1628
+ },
1629
+ "description": "Categorization tags (e.g., \"compliance\", \"billing\")"
1630
+ },
1631
+ "severity": {
1632
+ "type": "string",
1633
+ "enum": [
1634
+ "error",
1635
+ "warning",
1636
+ "info"
1637
+ ],
1638
+ "default": "error"
1639
+ },
1640
+ "message": {
1641
+ "type": "string",
1642
+ "description": "Error message to display to the user"
1643
+ },
1644
+ "type": {
1645
+ "type": "string",
1646
+ "const": "cross_field"
1647
+ },
1648
+ "condition": {
1649
+ "type": "string",
1650
+ "description": "Formula expression comparing fields (e.g. \"end_date > start_date\")"
1651
+ },
1652
+ "fields": {
1653
+ "type": "array",
1654
+ "items": {
1655
+ "type": "string"
1656
+ },
1657
+ "description": "Fields involved in the validation"
1658
+ }
1659
+ },
1660
+ "required": [
1661
+ "name",
1662
+ "message",
1663
+ "type",
1664
+ "condition",
1665
+ "fields"
1666
+ ],
1667
+ "additionalProperties": false
1668
+ },
1669
+ {
1670
+ "type": "object",
1671
+ "properties": {
1672
+ "name": {
1673
+ "type": "string",
1674
+ "pattern": "^[a-z_][a-z0-9_]*$",
1675
+ "description": "Unique rule name (snake_case)"
1676
+ },
1677
+ "label": {
1678
+ "type": "string",
1679
+ "description": "Human-readable label for the rule listing"
1680
+ },
1681
+ "description": {
1682
+ "type": "string",
1683
+ "description": "Administrative notes explaining the business reason"
1684
+ },
1685
+ "active": {
1686
+ "type": "boolean",
1687
+ "default": true
1688
+ },
1689
+ "events": {
1690
+ "type": "array",
1691
+ "items": {
1692
+ "type": "string",
1693
+ "enum": [
1694
+ "insert",
1695
+ "update",
1696
+ "delete"
1697
+ ]
1698
+ },
1699
+ "default": [
1700
+ "insert",
1701
+ "update"
1702
+ ],
1703
+ "description": "Validation contexts"
1704
+ },
1705
+ "tags": {
1706
+ "type": "array",
1707
+ "items": {
1708
+ "type": "string"
1709
+ },
1710
+ "description": "Categorization tags (e.g., \"compliance\", \"billing\")"
1711
+ },
1712
+ "severity": {
1713
+ "type": "string",
1714
+ "enum": [
1715
+ "error",
1716
+ "warning",
1717
+ "info"
1718
+ ],
1719
+ "default": "error"
1720
+ },
1721
+ "message": {
1722
+ "type": "string",
1723
+ "description": "Error message to display to the user"
1724
+ },
1725
+ "type": {
1726
+ "type": "string",
1727
+ "const": "json_schema"
1728
+ },
1729
+ "field": {
1730
+ "type": "string",
1731
+ "description": "JSON field to validate"
1732
+ },
1733
+ "schema": {
1734
+ "type": "object",
1735
+ "additionalProperties": {},
1736
+ "description": "JSON Schema object definition"
1737
+ }
1738
+ },
1739
+ "required": [
1740
+ "name",
1741
+ "message",
1742
+ "type",
1743
+ "field",
1744
+ "schema"
1745
+ ],
1746
+ "additionalProperties": false
1747
+ },
1748
+ {
1749
+ "type": "object",
1750
+ "properties": {
1751
+ "name": {
1752
+ "type": "string",
1753
+ "pattern": "^[a-z_][a-z0-9_]*$",
1754
+ "description": "Unique rule name (snake_case)"
1755
+ },
1756
+ "label": {
1757
+ "type": "string",
1758
+ "description": "Human-readable label for the rule listing"
1759
+ },
1760
+ "description": {
1761
+ "type": "string",
1762
+ "description": "Administrative notes explaining the business reason"
1763
+ },
1764
+ "active": {
1765
+ "type": "boolean",
1766
+ "default": true
1767
+ },
1768
+ "events": {
1769
+ "type": "array",
1770
+ "items": {
1771
+ "type": "string",
1772
+ "enum": [
1773
+ "insert",
1774
+ "update",
1775
+ "delete"
1776
+ ]
1777
+ },
1778
+ "default": [
1779
+ "insert",
1780
+ "update"
1781
+ ],
1782
+ "description": "Validation contexts"
1783
+ },
1784
+ "tags": {
1785
+ "type": "array",
1786
+ "items": {
1787
+ "type": "string"
1788
+ },
1789
+ "description": "Categorization tags (e.g., \"compliance\", \"billing\")"
1790
+ },
1791
+ "severity": {
1792
+ "type": "string",
1793
+ "enum": [
1794
+ "error",
1795
+ "warning",
1796
+ "info"
1797
+ ],
1798
+ "default": "error"
1799
+ },
1800
+ "message": {
1801
+ "type": "string",
1802
+ "description": "Error message to display to the user"
1803
+ },
1804
+ "type": {
1805
+ "type": "string",
1806
+ "const": "async"
1807
+ },
1808
+ "field": {
1809
+ "type": "string",
1810
+ "description": "Field to validate"
1811
+ },
1812
+ "validatorUrl": {
1813
+ "type": "string",
1814
+ "description": "External API endpoint for validation"
1815
+ },
1816
+ "method": {
1817
+ "type": "string",
1818
+ "enum": [
1819
+ "GET",
1820
+ "POST"
1821
+ ],
1822
+ "default": "GET",
1823
+ "description": "HTTP method for external call"
1824
+ },
1825
+ "headers": {
1826
+ "type": "object",
1827
+ "additionalProperties": {
1828
+ "type": "string"
1829
+ },
1830
+ "description": "Custom headers for the request"
1831
+ },
1832
+ "validatorFunction": {
1833
+ "type": "string",
1834
+ "description": "Reference to custom validator function"
1835
+ },
1836
+ "timeout": {
1837
+ "type": "number",
1838
+ "default": 5000,
1839
+ "description": "Timeout in milliseconds"
1840
+ },
1841
+ "debounce": {
1842
+ "type": "number",
1843
+ "description": "Debounce delay in milliseconds"
1844
+ },
1845
+ "params": {
1846
+ "type": "object",
1847
+ "additionalProperties": {},
1848
+ "description": "Additional parameters to pass to validator"
1849
+ }
1850
+ },
1851
+ "required": [
1852
+ "name",
1853
+ "message",
1854
+ "type",
1855
+ "field"
1856
+ ],
1857
+ "additionalProperties": false
1858
+ },
1859
+ {
1860
+ "type": "object",
1861
+ "properties": {
1862
+ "name": {
1863
+ "type": "string",
1864
+ "pattern": "^[a-z_][a-z0-9_]*$",
1865
+ "description": "Unique rule name (snake_case)"
1866
+ },
1867
+ "label": {
1868
+ "type": "string",
1869
+ "description": "Human-readable label for the rule listing"
1870
+ },
1871
+ "description": {
1872
+ "type": "string",
1873
+ "description": "Administrative notes explaining the business reason"
1874
+ },
1875
+ "active": {
1876
+ "type": "boolean",
1877
+ "default": true
1878
+ },
1879
+ "events": {
1880
+ "type": "array",
1881
+ "items": {
1882
+ "type": "string",
1883
+ "enum": [
1884
+ "insert",
1885
+ "update",
1886
+ "delete"
1887
+ ]
1888
+ },
1889
+ "default": [
1890
+ "insert",
1891
+ "update"
1892
+ ],
1893
+ "description": "Validation contexts"
1894
+ },
1895
+ "tags": {
1896
+ "type": "array",
1897
+ "items": {
1898
+ "type": "string"
1899
+ },
1900
+ "description": "Categorization tags (e.g., \"compliance\", \"billing\")"
1901
+ },
1902
+ "severity": {
1903
+ "type": "string",
1904
+ "enum": [
1905
+ "error",
1906
+ "warning",
1907
+ "info"
1908
+ ],
1909
+ "default": "error"
1910
+ },
1911
+ "message": {
1912
+ "type": "string",
1913
+ "description": "Error message to display to the user"
1914
+ },
1915
+ "type": {
1916
+ "type": "string",
1917
+ "const": "custom"
1918
+ },
1919
+ "handler": {
1920
+ "type": "string",
1921
+ "description": "Name of the custom validation function registered in the system"
1922
+ },
1923
+ "params": {
1924
+ "type": "object",
1925
+ "additionalProperties": {},
1926
+ "description": "Parameters passed to the custom handler"
1927
+ }
1928
+ },
1929
+ "required": [
1930
+ "name",
1931
+ "message",
1932
+ "type",
1933
+ "handler"
1934
+ ],
1935
+ "additionalProperties": false
1936
+ },
1937
+ {}
1938
+ ],
1939
+ "description": "Validation rule to apply when condition is true"
1940
+ },
1941
+ "otherwise": {
1942
+ "description": "Validation rule to apply when condition is false"
1943
+ }
1944
+ },
1945
+ "required": [
1946
+ "name",
1947
+ "message",
1948
+ "type",
1949
+ "when",
1950
+ "then"
1951
+ ],
1952
+ "additionalProperties": false
1953
+ }
1954
+ ]
1955
+ },
1956
+ "description": "Object-level validation rules"
1957
+ },
1958
+ "titleFormat": {
1959
+ "type": "string",
1960
+ "description": "Title expression (e.g. \"{name} - {code}\"). Overrides nameField."
1961
+ },
1962
+ "compactLayout": {
1963
+ "type": "array",
1964
+ "items": {
1965
+ "type": "string"
1966
+ },
1967
+ "description": "Primary fields for hover/cards/lookups"
1968
+ },
1969
+ "search": {
1970
+ "type": "object",
1971
+ "properties": {
1972
+ "fields": {
1973
+ "type": "array",
1974
+ "items": {
1975
+ "type": "string"
1976
+ },
1977
+ "description": "Fields to index for full-text search weighting"
1978
+ },
1979
+ "displayFields": {
1980
+ "type": "array",
1981
+ "items": {
1982
+ "type": "string"
1983
+ },
1984
+ "description": "Fields to display in search result cards"
1985
+ },
1986
+ "filters": {
1987
+ "type": "array",
1988
+ "items": {
1989
+ "type": "string"
1990
+ },
1991
+ "description": "Default filters for search results"
1992
+ }
1993
+ },
1994
+ "required": [
1995
+ "fields"
1996
+ ],
1997
+ "additionalProperties": false,
1998
+ "description": "Search engine configuration"
1999
+ },
2000
+ "enable": {
2001
+ "type": "object",
2002
+ "properties": {
2003
+ "trackHistory": {
2004
+ "type": "boolean",
2005
+ "default": false,
2006
+ "description": "Enable field history tracking for audit compliance"
2007
+ },
2008
+ "searchable": {
2009
+ "type": "boolean",
2010
+ "default": true,
2011
+ "description": "Index records for global search"
2012
+ },
2013
+ "apiEnabled": {
2014
+ "type": "boolean",
2015
+ "default": true,
2016
+ "description": "Expose object via automatic APIs"
2017
+ },
2018
+ "apiMethods": {
2019
+ "type": "array",
2020
+ "items": {
2021
+ "type": "string",
2022
+ "enum": [
2023
+ "get",
2024
+ "list",
2025
+ "create",
2026
+ "update",
2027
+ "delete",
2028
+ "upsert",
2029
+ "bulk",
2030
+ "aggregate",
2031
+ "history",
2032
+ "search",
2033
+ "restore",
2034
+ "purge",
2035
+ "import",
2036
+ "export"
2037
+ ]
2038
+ },
2039
+ "description": "Whitelist of allowed API operations"
2040
+ },
2041
+ "files": {
2042
+ "type": "boolean",
2043
+ "default": false,
2044
+ "description": "Enable file attachments and document management"
2045
+ },
2046
+ "feeds": {
2047
+ "type": "boolean",
2048
+ "default": false,
2049
+ "description": "Enable social feed, comments, and mentions (Chatter-like)"
2050
+ },
2051
+ "activities": {
2052
+ "type": "boolean",
2053
+ "default": false,
2054
+ "description": "Enable standard tasks and events tracking"
2055
+ },
2056
+ "trash": {
2057
+ "type": "boolean",
2058
+ "default": true,
2059
+ "description": "Enable soft-delete with restore capability"
2060
+ },
2061
+ "mru": {
2062
+ "type": "boolean",
2063
+ "default": true,
2064
+ "description": "Track Most Recently Used (MRU) list for users"
2065
+ },
2066
+ "clone": {
2067
+ "type": "boolean",
2068
+ "default": true,
2069
+ "description": "Allow record deep cloning"
2070
+ }
2071
+ },
2072
+ "additionalProperties": false,
2073
+ "description": "Enabled system features modules"
2074
+ }
2075
+ },
2076
+ "required": [
2077
+ "name",
2078
+ "fields"
2079
+ ],
2080
+ "additionalProperties": false
2081
+ },
2082
+ "description": "Map of compiled Object Schemas (Name -> Schema)"
2083
+ },
2084
+ "datasource": {
2085
+ "type": "object",
2086
+ "additionalProperties": {
2087
+ "type": "object",
2088
+ "properties": {
2089
+ "name": {
2090
+ "type": "string",
2091
+ "pattern": "^[a-z_][a-z0-9_]*$",
2092
+ "description": "Unique datasource identifier"
2093
+ },
2094
+ "label": {
2095
+ "type": "string",
2096
+ "description": "Display label"
2097
+ },
2098
+ "driver": {
2099
+ "type": "string",
2100
+ "description": "Underlying driver type"
2101
+ },
2102
+ "config": {
2103
+ "type": "object",
2104
+ "additionalProperties": {},
2105
+ "description": "Driver specific configuration"
2106
+ },
2107
+ "pool": {
2108
+ "type": "object",
2109
+ "properties": {
2110
+ "min": {
2111
+ "type": "number",
2112
+ "default": 0,
2113
+ "description": "Minimum connections"
2114
+ },
2115
+ "max": {
2116
+ "type": "number",
2117
+ "default": 10,
2118
+ "description": "Maximum connections"
2119
+ },
2120
+ "idleTimeoutMillis": {
2121
+ "type": "number",
2122
+ "default": 30000,
2123
+ "description": "Idle timeout"
2124
+ },
2125
+ "connectionTimeoutMillis": {
2126
+ "type": "number",
2127
+ "default": 3000,
2128
+ "description": "Connection establishment timeout"
2129
+ }
2130
+ },
2131
+ "additionalProperties": false,
2132
+ "description": "Connection pool settings"
2133
+ },
2134
+ "readReplicas": {
2135
+ "type": "array",
2136
+ "items": {
2137
+ "type": "object",
2138
+ "additionalProperties": {}
2139
+ },
2140
+ "description": "Read-only replica configurations"
2141
+ },
2142
+ "capabilities": {
2143
+ "type": "object",
2144
+ "properties": {
2145
+ "transactions": {
2146
+ "type": "boolean",
2147
+ "default": false
2148
+ },
2149
+ "queryFilters": {
2150
+ "type": "boolean",
2151
+ "default": false
2152
+ },
2153
+ "queryAggregations": {
2154
+ "type": "boolean",
2155
+ "default": false
2156
+ },
2157
+ "querySorting": {
2158
+ "type": "boolean",
2159
+ "default": false
2160
+ },
2161
+ "queryPagination": {
2162
+ "type": "boolean",
2163
+ "default": false
2164
+ },
2165
+ "queryWindowFunctions": {
2166
+ "type": "boolean",
2167
+ "default": false
2168
+ },
2169
+ "querySubqueries": {
2170
+ "type": "boolean",
2171
+ "default": false
2172
+ },
2173
+ "joins": {
2174
+ "type": "boolean",
2175
+ "default": false
2176
+ },
2177
+ "fullTextSearch": {
2178
+ "type": "boolean",
2179
+ "default": false
2180
+ },
2181
+ "readOnly": {
2182
+ "type": "boolean",
2183
+ "default": false
2184
+ },
2185
+ "dynamicSchema": {
2186
+ "type": "boolean",
2187
+ "default": false
2188
+ }
2189
+ },
2190
+ "additionalProperties": false,
2191
+ "description": "Capability overrides"
2192
+ },
2193
+ "description": {
2194
+ "type": "string",
2195
+ "description": "Internal description"
2196
+ },
2197
+ "active": {
2198
+ "type": "boolean",
2199
+ "default": true,
2200
+ "description": "Is datasource enabled"
2201
+ }
2202
+ },
2203
+ "required": [
2204
+ "name",
2205
+ "driver",
2206
+ "config"
2207
+ ],
2208
+ "additionalProperties": false
2209
+ },
2210
+ "description": "Map of compiled Datasource Schemas"
2211
+ }
2212
+ },
2213
+ "additionalProperties": false,
2214
+ "description": "Inline resource definitions (for serverless/compiled runtimes)"
2215
+ },
2216
+ "datasources": {
2217
+ "type": "array",
2218
+ "items": {
2219
+ "type": "string"
2220
+ },
2221
+ "description": "Glob patterns for Datasource definitions"
2222
+ },
2223
+ "dependencies": {
2224
+ "type": "object",
2225
+ "additionalProperties": {
2226
+ "type": "string"
2227
+ },
2228
+ "description": "Package dependencies"
2229
+ },
2230
+ "configuration": {
2231
+ "type": "object",
2232
+ "properties": {
2233
+ "title": {
2234
+ "type": "string"
2235
+ },
2236
+ "properties": {
2237
+ "type": "object",
2238
+ "additionalProperties": {
2239
+ "type": "object",
2240
+ "properties": {
2241
+ "type": {
2242
+ "type": "string",
2243
+ "enum": [
2244
+ "string",
2245
+ "number",
2246
+ "boolean",
2247
+ "array",
2248
+ "object"
2249
+ ],
2250
+ "description": "Data type of the setting"
2251
+ },
2252
+ "default": {
2253
+ "description": "Default value"
2254
+ },
2255
+ "description": {
2256
+ "type": "string",
2257
+ "description": "Tooltip description"
2258
+ },
2259
+ "required": {
2260
+ "type": "boolean",
2261
+ "description": "Is this setting required?"
2262
+ },
2263
+ "secret": {
2264
+ "type": "boolean",
2265
+ "description": "If true, value is encrypted/masked (e.g. API Keys)"
2266
+ },
2267
+ "enum": {
2268
+ "type": "array",
2269
+ "items": {
2270
+ "type": "string"
2271
+ },
2272
+ "description": "Allowed values for select inputs"
2273
+ }
2274
+ },
2275
+ "required": [
2276
+ "type"
2277
+ ],
2278
+ "additionalProperties": false
2279
+ },
2280
+ "description": "Map of configuration keys to their definitions"
2281
+ }
2282
+ },
2283
+ "required": [
2284
+ "properties"
2285
+ ],
2286
+ "additionalProperties": false,
2287
+ "description": "Plugin configuration settings"
2288
+ },
2289
+ "contributes": {
2290
+ "type": "object",
2291
+ "properties": {
2292
+ "kinds": {
2293
+ "type": "array",
2294
+ "items": {
2295
+ "type": "object",
2296
+ "properties": {
2297
+ "id": {
2298
+ "type": "string",
2299
+ "description": "The generic identifier of the kind (e.g., \"sys.bi.report\")"
2300
+ },
2301
+ "globs": {
2302
+ "type": "array",
2303
+ "items": {
2304
+ "type": "string"
2305
+ },
2306
+ "description": "File patterns to watch (e.g., [\"**/*.report.ts\"])"
2307
+ },
2308
+ "description": {
2309
+ "type": "string",
2310
+ "description": "Description of what this kind represents"
2311
+ }
2312
+ },
2313
+ "required": [
2314
+ "id",
2315
+ "globs"
2316
+ ],
2317
+ "additionalProperties": false
2318
+ },
2319
+ "description": "New Metadata Types to recognize"
2320
+ },
2321
+ "events": {
2322
+ "type": "array",
2323
+ "items": {
2324
+ "type": "string"
2325
+ },
2326
+ "description": "Events this plugin listens to"
2327
+ },
2328
+ "menus": {
2329
+ "type": "object",
2330
+ "additionalProperties": {
2331
+ "type": "array",
2332
+ "items": {
2333
+ "type": "object",
2334
+ "properties": {
2335
+ "id": {
2336
+ "type": "string"
2337
+ },
2338
+ "label": {
2339
+ "type": "string"
2340
+ },
2341
+ "command": {
2342
+ "type": "string"
2343
+ }
2344
+ },
2345
+ "required": [
2346
+ "id",
2347
+ "label"
2348
+ ],
2349
+ "additionalProperties": false
2350
+ }
2351
+ },
2352
+ "description": "UI Menu contributions"
2353
+ },
2354
+ "themes": {
2355
+ "type": "array",
2356
+ "items": {
2357
+ "type": "object",
2358
+ "properties": {
2359
+ "id": {
2360
+ "type": "string"
2361
+ },
2362
+ "label": {
2363
+ "type": "string"
2364
+ },
2365
+ "path": {
2366
+ "type": "string"
2367
+ }
2368
+ },
2369
+ "required": [
2370
+ "id",
2371
+ "label",
2372
+ "path"
2373
+ ],
2374
+ "additionalProperties": false
2375
+ },
2376
+ "description": "Theme contributions"
2377
+ },
2378
+ "translations": {
2379
+ "type": "array",
2380
+ "items": {
2381
+ "type": "object",
2382
+ "properties": {
2383
+ "locale": {
2384
+ "type": "string"
2385
+ },
2386
+ "path": {
2387
+ "type": "string"
2388
+ }
2389
+ },
2390
+ "required": [
2391
+ "locale",
2392
+ "path"
2393
+ ],
2394
+ "additionalProperties": false
2395
+ },
2396
+ "description": "Translation resources"
2397
+ },
2398
+ "actions": {
2399
+ "type": "array",
2400
+ "items": {
2401
+ "type": "object",
2402
+ "properties": {
2403
+ "name": {
2404
+ "type": "string",
2405
+ "description": "Unique action name"
2406
+ },
2407
+ "label": {
2408
+ "type": "string"
2409
+ },
2410
+ "description": {
2411
+ "type": "string"
2412
+ },
2413
+ "input": {
2414
+ "description": "Input validation schema"
2415
+ },
2416
+ "output": {
2417
+ "description": "Output schema"
2418
+ }
2419
+ },
2420
+ "required": [
2421
+ "name"
2422
+ ],
2423
+ "additionalProperties": false
2424
+ },
2425
+ "description": "Exposed server actions"
2426
+ },
2427
+ "drivers": {
2428
+ "type": "array",
2429
+ "items": {
2430
+ "type": "object",
2431
+ "properties": {
2432
+ "id": {
2433
+ "type": "string",
2434
+ "description": "Driver unique identifier (e.g. \"postgres\", \"mongo\")"
2435
+ },
2436
+ "label": {
2437
+ "type": "string",
2438
+ "description": "Human readable name"
2439
+ },
2440
+ "description": {
2441
+ "type": "string"
2442
+ }
2443
+ },
2444
+ "required": [
2445
+ "id",
2446
+ "label"
2447
+ ],
2448
+ "additionalProperties": false
2449
+ },
2450
+ "description": "Driver contributions"
2451
+ },
2452
+ "fieldTypes": {
2453
+ "type": "array",
2454
+ "items": {
2455
+ "type": "object",
2456
+ "properties": {
2457
+ "name": {
2458
+ "type": "string",
2459
+ "description": "Unique field type name (e.g. \"vector\")"
2460
+ },
2461
+ "label": {
2462
+ "type": "string",
2463
+ "description": "Display label"
2464
+ },
2465
+ "description": {
2466
+ "type": "string"
2467
+ }
2468
+ },
2469
+ "required": [
2470
+ "name",
2471
+ "label"
2472
+ ],
2473
+ "additionalProperties": false
2474
+ },
2475
+ "description": "Field Type contributions"
2476
+ },
2477
+ "functions": {
2478
+ "type": "array",
2479
+ "items": {
2480
+ "type": "object",
2481
+ "properties": {
2482
+ "name": {
2483
+ "type": "string",
2484
+ "description": "Function name (e.g. \"distance\")"
2485
+ },
2486
+ "description": {
2487
+ "type": "string"
2488
+ },
2489
+ "args": {
2490
+ "type": "array",
2491
+ "items": {
2492
+ "type": "string"
2493
+ },
2494
+ "description": "Argument types"
2495
+ },
2496
+ "returnType": {
2497
+ "type": "string"
2498
+ }
2499
+ },
2500
+ "required": [
2501
+ "name"
2502
+ ],
2503
+ "additionalProperties": false
2504
+ },
2505
+ "description": "Query Function contributions"
2506
+ }
2507
+ },
2508
+ "additionalProperties": false,
2509
+ "description": "Platform contributions"
2510
+ },
2511
+ "data": {
2512
+ "type": "array",
2513
+ "items": {
2514
+ "type": "object",
2515
+ "properties": {
2516
+ "object": {
2517
+ "type": "string",
2518
+ "description": "Target Object Name"
2519
+ },
2520
+ "records": {
2521
+ "type": "array",
2522
+ "items": {
2523
+ "type": "object",
2524
+ "additionalProperties": {}
2525
+ },
2526
+ "description": "List of records to insert"
2527
+ },
2528
+ "mode": {
2529
+ "type": "string",
2530
+ "enum": [
2531
+ "upsert",
2532
+ "insert",
2533
+ "ignore"
2534
+ ],
2535
+ "default": "upsert",
2536
+ "description": "Seeding mode"
2537
+ }
2538
+ },
2539
+ "required": [
2540
+ "object",
2541
+ "records"
2542
+ ],
2543
+ "additionalProperties": false
2544
+ },
2545
+ "description": "Initial seed data"
2546
+ },
2547
+ "extensions": {
2548
+ "type": "object",
2549
+ "additionalProperties": {},
2550
+ "description": "Extension points and contributions"
2551
+ }
2552
+ },
2553
+ "required": [
2554
+ "id",
2555
+ "version",
2556
+ "type",
2557
+ "name"
2558
+ ],
2559
+ "additionalProperties": false,
2560
+ "description": "The compiled System Manifest"
2561
+ },
2562
+ "manifestUrl": {
2563
+ "type": "string",
2564
+ "format": "uri",
2565
+ "description": "Presigned download URL"
2566
+ },
2567
+ "buildId": {
2568
+ "type": "string"
2569
+ },
2570
+ "timestamp": {
2571
+ "type": "string",
2572
+ "format": "date-time"
2573
+ },
2574
+ "duration": {
2575
+ "type": "number",
2576
+ "description": "Compilation time in ms"
2577
+ },
2578
+ "conflicts": {
2579
+ "type": "array",
2580
+ "items": {
2581
+ "type": "object",
2582
+ "properties": {
2583
+ "resourceType": {
2584
+ "type": "string",
2585
+ "enum": [
2586
+ "object",
2587
+ "field",
2588
+ "api",
2589
+ "ui"
2590
+ ],
2591
+ "description": "Type of colliding resource"
2592
+ },
2593
+ "resourceId": {
2594
+ "type": "string",
2595
+ "description": "ID of the resource"
2596
+ },
2597
+ "sources": {
2598
+ "type": "array",
2599
+ "items": {
2600
+ "type": "string"
2601
+ },
2602
+ "description": "List of plugin IDs defining this resource"
2603
+ },
2604
+ "resolution": {
2605
+ "type": "string",
2606
+ "description": "How it was resolved (e.g. \"com.example.erp won\")"
2607
+ },
2608
+ "severity": {
2609
+ "type": "string",
2610
+ "enum": [
2611
+ "info",
2612
+ "warning",
2613
+ "error"
2614
+ ],
2615
+ "description": "Severity of the conflict"
2616
+ }
2617
+ },
2618
+ "required": [
2619
+ "resourceType",
2620
+ "resourceId",
2621
+ "sources",
2622
+ "resolution",
2623
+ "severity"
2624
+ ],
2625
+ "additionalProperties": false
2626
+ }
2627
+ },
2628
+ "errors": {
2629
+ "type": "array",
2630
+ "items": {
2631
+ "type": "string"
2632
+ }
2633
+ }
2634
+ },
2635
+ "required": [
2636
+ "success",
2637
+ "buildId",
2638
+ "timestamp",
2639
+ "duration"
2640
+ ],
2641
+ "additionalProperties": false
2642
+ }
2643
+ },
2644
+ "$schema": "http://json-schema.org/draft-07/schema#"
2645
+ }