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