@objectstack/spec 0.3.2 → 0.4.1

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 (523) 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 +54 -54
  4. package/dist/ai/cost.zod.d.ts +135 -135
  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 +91 -91
  9. package/dist/ai/nlq.zod.d.ts +72 -72
  10. package/dist/ai/{workflow-automation.zod.d.ts → orchestration.zod.d.ts} +51 -50
  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 +27 -27
  14. package/dist/ai/rag-pipeline.zod.d.ts +102 -102
  15. package/dist/api/contract.zod.d.ts +213 -197
  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 +6 -0
  24. package/dist/api/index.d.ts.map +1 -1
  25. package/dist/api/index.js +6 -0
  26. package/dist/api/odata.zod.d.ts +482 -0
  27. package/dist/api/odata.zod.d.ts.map +1 -0
  28. package/dist/api/odata.zod.js +401 -0
  29. package/dist/{system → api}/realtime.zod.d.ts +4 -4
  30. package/dist/api/realtime.zod.d.ts.map +1 -0
  31. package/dist/api/router.zod.d.ts +182 -0
  32. package/dist/api/router.zod.d.ts.map +1 -0
  33. package/dist/api/router.zod.js +103 -0
  34. package/dist/{system/auth.zod.d.ts → auth/config.zod.d.ts} +199 -199
  35. package/dist/auth/config.zod.d.ts.map +1 -0
  36. package/dist/{system → auth}/identity.zod.d.ts +8 -8
  37. package/dist/auth/identity.zod.d.ts.map +1 -0
  38. package/dist/auth/index.d.ts +8 -0
  39. package/dist/auth/index.d.ts.map +1 -0
  40. package/dist/auth/index.js +23 -0
  41. package/dist/{system → auth}/organization.zod.d.ts +7 -7
  42. package/dist/auth/organization.zod.d.ts.map +1 -0
  43. package/dist/{system → auth}/policy.zod.d.ts +3 -3
  44. package/dist/auth/policy.zod.d.ts.map +1 -0
  45. package/dist/{system/auth-protocol.d.ts → auth/protocol.d.ts} +1 -1
  46. package/dist/auth/protocol.d.ts.map +1 -0
  47. package/dist/{system → auth}/role.zod.d.ts +14 -0
  48. package/dist/auth/role.zod.d.ts.map +1 -0
  49. package/dist/{system → auth}/role.zod.js +16 -1
  50. package/dist/auth/scim.zod.d.ts +2732 -0
  51. package/dist/auth/scim.zod.d.ts.map +1 -0
  52. package/dist/auth/scim.zod.js +811 -0
  53. package/dist/automation/approval.zod.d.ts +643 -0
  54. package/dist/automation/approval.zod.d.ts.map +1 -0
  55. package/dist/automation/approval.zod.js +84 -0
  56. package/dist/automation/connector.zod.d.ts +1284 -0
  57. package/dist/automation/connector.zod.d.ts.map +1 -0
  58. package/dist/automation/connector.zod.js +500 -0
  59. package/dist/automation/etl.zod.d.ts +623 -0
  60. package/dist/automation/etl.zod.d.ts.map +1 -0
  61. package/dist/automation/etl.zod.js +359 -0
  62. package/dist/{data → automation}/flow.zod.d.ts +40 -22
  63. package/dist/automation/flow.zod.d.ts.map +1 -0
  64. package/dist/{data → automation}/flow.zod.js +6 -1
  65. package/dist/automation/index.d.ts +8 -0
  66. package/dist/automation/index.d.ts.map +1 -0
  67. package/dist/automation/index.js +23 -0
  68. package/dist/automation/sync.zod.d.ts +854 -0
  69. package/dist/automation/sync.zod.d.ts.map +1 -0
  70. package/dist/automation/sync.zod.js +444 -0
  71. package/dist/{system → automation}/webhook.zod.d.ts +26 -3
  72. package/dist/automation/webhook.zod.d.ts.map +1 -0
  73. package/dist/{system → automation}/webhook.zod.js +27 -3
  74. package/dist/automation/workflow.zod.d.ts +2059 -0
  75. package/dist/automation/workflow.zod.d.ts.map +1 -0
  76. package/dist/{data → automation}/workflow.zod.js +40 -2
  77. package/dist/data/dataset.zod.d.ts +2 -2
  78. package/dist/data/field.zod.d.ts +779 -219
  79. package/dist/data/field.zod.d.ts.map +1 -1
  80. package/dist/data/field.zod.js +128 -16
  81. package/dist/data/filter.zod.d.ts +167 -30
  82. package/dist/data/filter.zod.d.ts.map +1 -1
  83. package/dist/data/filter.zod.js +25 -13
  84. package/dist/data/hook.zod.d.ts +191 -0
  85. package/dist/data/hook.zod.d.ts.map +1 -0
  86. package/dist/data/hook.zod.js +144 -0
  87. package/dist/data/index.d.ts +4 -17
  88. package/dist/data/index.d.ts.map +1 -1
  89. package/dist/data/index.js +4 -17
  90. package/dist/data/mapping.zod.d.ts +117 -93
  91. package/dist/data/mapping.zod.d.ts.map +1 -1
  92. package/dist/data/mapping.zod.js +16 -3
  93. package/dist/data/object.zod.d.ts +485 -131
  94. package/dist/data/object.zod.d.ts.map +1 -1
  95. package/dist/data/object.zod.js +87 -42
  96. package/dist/data/query.zod.d.ts +98 -169
  97. package/dist/data/query.zod.d.ts.map +1 -1
  98. package/dist/data/query.zod.js +42 -130
  99. package/dist/data/validation.zod.d.ts +166 -26
  100. package/dist/data/validation.zod.d.ts.map +1 -1
  101. package/dist/data/validation.zod.js +38 -16
  102. package/dist/hub/composer.zod.d.ts +871 -0
  103. package/dist/hub/composer.zod.d.ts.map +1 -0
  104. package/dist/hub/composer.zod.js +111 -0
  105. package/dist/hub/index.d.ts +6 -0
  106. package/dist/hub/index.d.ts.map +1 -0
  107. package/dist/hub/index.js +22 -0
  108. package/dist/{system → hub}/license.zod.d.ts +13 -9
  109. package/dist/hub/license.zod.d.ts.map +1 -0
  110. package/dist/{system → hub}/license.zod.js +5 -3
  111. package/dist/hub/marketplace.zod.d.ts +191 -0
  112. package/dist/hub/marketplace.zod.d.ts.map +1 -0
  113. package/dist/hub/marketplace.zod.js +85 -0
  114. package/dist/hub/space.zod.d.ts +383 -0
  115. package/dist/hub/space.zod.d.ts.map +1 -0
  116. package/dist/hub/space.zod.js +103 -0
  117. package/dist/{system → hub}/tenant.zod.d.ts +73 -47
  118. package/dist/hub/tenant.zod.d.ts.map +1 -0
  119. package/dist/{system → hub}/tenant.zod.js +36 -10
  120. package/dist/index.d.ts +11 -4
  121. package/dist/index.d.ts.map +1 -1
  122. package/dist/index.js +15 -5
  123. package/dist/permission/index.d.ts +14 -0
  124. package/dist/permission/index.d.ts.map +1 -0
  125. package/dist/permission/index.js +29 -0
  126. package/dist/{data → permission}/permission.zod.d.ts +48 -3
  127. package/dist/permission/permission.zod.d.ts.map +1 -0
  128. package/dist/{data → permission}/permission.zod.js +26 -2
  129. package/dist/permission/rls.zod.d.ts +605 -0
  130. package/dist/permission/rls.zod.d.ts.map +1 -0
  131. package/dist/permission/rls.zod.js +615 -0
  132. package/dist/permission/sharing.zod.d.ts +146 -0
  133. package/dist/permission/sharing.zod.d.ts.map +1 -0
  134. package/dist/permission/sharing.zod.js +88 -0
  135. package/dist/{system → permission}/territory.zod.d.ts +13 -0
  136. package/dist/permission/territory.zod.d.ts.map +1 -0
  137. package/dist/{system → permission}/territory.zod.js +15 -1
  138. package/dist/shared/identifiers.zod.d.ts +87 -0
  139. package/dist/shared/identifiers.zod.d.ts.map +1 -0
  140. package/dist/shared/identifiers.zod.js +101 -0
  141. package/dist/shared/index.d.ts +6 -0
  142. package/dist/shared/index.d.ts.map +1 -0
  143. package/dist/shared/index.js +21 -0
  144. package/dist/stack.zod.d.ts +19869 -0
  145. package/dist/stack.zod.d.ts.map +1 -0
  146. package/dist/stack.zod.js +248 -0
  147. package/dist/system/audit.zod.d.ts +58 -58
  148. package/dist/system/context.zod.d.ts +56 -0
  149. package/dist/system/context.zod.d.ts.map +1 -0
  150. package/dist/system/context.zod.js +43 -0
  151. package/dist/system/datasource.zod.d.ts +40 -6
  152. package/dist/system/datasource.zod.d.ts.map +1 -1
  153. package/dist/system/datasource.zod.js +17 -13
  154. package/dist/system/driver/mongo.zod.d.ts +107 -0
  155. package/dist/system/driver/mongo.zod.d.ts.map +1 -0
  156. package/dist/system/driver/mongo.zod.js +80 -0
  157. package/dist/system/driver/postgres.zod.d.ts +134 -0
  158. package/dist/system/driver/postgres.zod.d.ts.map +1 -0
  159. package/dist/system/driver/postgres.zod.js +88 -0
  160. package/dist/system/driver.zod.d.ts +2249 -488
  161. package/dist/system/driver.zod.d.ts.map +1 -1
  162. package/dist/system/driver.zod.js +99 -0
  163. package/dist/system/events.zod.d.ts +8 -5
  164. package/dist/system/events.zod.d.ts.map +1 -1
  165. package/dist/system/events.zod.js +5 -1
  166. package/dist/system/feature.zod.d.ts +131 -0
  167. package/dist/system/feature.zod.d.ts.map +1 -0
  168. package/dist/system/feature.zod.js +45 -0
  169. package/dist/system/index.d.ts +11 -20
  170. package/dist/system/index.d.ts.map +1 -1
  171. package/dist/system/index.js +15 -20
  172. package/dist/system/job.zod.d.ts +5 -5
  173. package/dist/system/logger.zod.d.ts +111 -0
  174. package/dist/system/logger.zod.d.ts.map +1 -0
  175. package/dist/system/logger.zod.js +75 -0
  176. package/dist/system/manifest.zod.d.ts +136 -18
  177. package/dist/system/manifest.zod.d.ts.map +1 -1
  178. package/dist/system/manifest.zod.js +28 -0
  179. package/dist/system/plugin.zod.d.ts +598 -318
  180. package/dist/system/plugin.zod.d.ts.map +1 -1
  181. package/dist/system/plugin.zod.js +13 -0
  182. package/dist/system/scoped-storage.zod.d.ts +81 -0
  183. package/dist/system/scoped-storage.zod.d.ts.map +1 -0
  184. package/dist/system/scoped-storage.zod.js +66 -0
  185. package/dist/ui/action.zod.d.ts +42 -17
  186. package/dist/ui/action.zod.d.ts.map +1 -1
  187. package/dist/ui/action.zod.js +30 -1
  188. package/dist/ui/app.zod.d.ts +26 -11
  189. package/dist/ui/app.zod.d.ts.map +1 -1
  190. package/dist/ui/app.zod.js +32 -4
  191. package/dist/ui/block.zod.d.ts +265 -0
  192. package/dist/ui/block.zod.d.ts.map +1 -0
  193. package/dist/ui/block.zod.js +90 -0
  194. package/dist/ui/component.zod.d.ts +265 -0
  195. package/dist/ui/component.zod.d.ts.map +1 -0
  196. package/dist/ui/component.zod.js +90 -0
  197. package/dist/ui/dashboard.zod.d.ts +15 -15
  198. package/dist/ui/dashboard.zod.d.ts.map +1 -1
  199. package/dist/ui/dashboard.zod.js +18 -8
  200. package/dist/ui/index.d.ts +1 -0
  201. package/dist/ui/index.d.ts.map +1 -1
  202. package/dist/ui/index.js +1 -0
  203. package/dist/ui/page.zod.d.ts +23 -5
  204. package/dist/ui/page.zod.d.ts.map +1 -1
  205. package/dist/ui/page.zod.js +37 -4
  206. package/dist/ui/report.zod.d.ts +12 -12
  207. package/dist/ui/theme.zod.d.ts +42 -42
  208. package/dist/ui/view.zod.d.ts +302 -290
  209. package/dist/ui/view.zod.d.ts.map +1 -1
  210. package/dist/ui/view.zod.js +32 -3
  211. package/dist/ui/widget.zod.d.ts +730 -29
  212. package/dist/ui/widget.zod.d.ts.map +1 -1
  213. package/dist/ui/widget.zod.js +294 -1
  214. package/json-schema/ai/{AIWorkflowAutomation.json → AIOrchestration.json} +5 -5
  215. package/json-schema/ai/{AIWorkflowExecutionResult.json → AIOrchestrationExecutionResult.json} +2 -2
  216. package/json-schema/ai/{AIWorkflowTrigger.json → AIOrchestrationTrigger.json} +2 -2
  217. package/json-schema/ai/{BatchAIWorkflowExecution.json → BatchAIOrchestrationExecution.json} +3 -3
  218. package/json-schema/{system → api}/ApiEndpoint.json +3 -1
  219. package/json-schema/{system → api}/ApiRoutes.json +7 -7
  220. package/json-schema/{system → api}/Discovery.json +7 -7
  221. package/json-schema/api/ExportRequest.json +402 -438
  222. package/json-schema/{system → api}/HttpMethod.json +3 -1
  223. package/json-schema/api/ODataError.json +65 -0
  224. package/json-schema/api/ODataFilterFunction.json +39 -0
  225. package/json-schema/api/ODataFilterOperator.json +24 -0
  226. package/json-schema/api/ODataMetadata.json +115 -0
  227. package/json-schema/api/ODataQuery.json +89 -0
  228. package/json-schema/api/ODataResponse.json +37 -0
  229. package/json-schema/api/RouteCategory.json +17 -0
  230. package/json-schema/api/RouteDefinition.json +77 -0
  231. package/json-schema/api/RouterConfig.json +117 -0
  232. package/json-schema/{system → auth}/Role.json +3 -2
  233. package/json-schema/auth/SCIMAddress.json +50 -0
  234. package/json-schema/auth/SCIMEmail.json +38 -0
  235. package/json-schema/auth/SCIMEnterpriseUser.json +55 -0
  236. package/json-schema/auth/SCIMError.json +52 -0
  237. package/json-schema/auth/SCIMGroup.json +102 -0
  238. package/json-schema/auth/SCIMGroupReference.json +36 -0
  239. package/json-schema/auth/SCIMListResponse.json +606 -0
  240. package/json-schema/auth/SCIMMemberReference.json +36 -0
  241. package/json-schema/auth/SCIMMeta.json +35 -0
  242. package/json-schema/auth/SCIMName.json +36 -0
  243. package/json-schema/auth/SCIMPatchOperation.json +31 -0
  244. package/json-schema/auth/SCIMPatchRequest.json +56 -0
  245. package/json-schema/auth/SCIMPhoneNumber.json +40 -0
  246. package/json-schema/auth/SCIMUser.json +462 -0
  247. package/json-schema/automation/ApprovalAction.json +35 -0
  248. package/json-schema/automation/ApprovalActionType.json +15 -0
  249. package/json-schema/automation/ApprovalProcess.json +326 -0
  250. package/json-schema/automation/ApprovalStep.json +147 -0
  251. package/json-schema/automation/ApproverType.json +16 -0
  252. package/json-schema/automation/AuthField.json +73 -0
  253. package/json-schema/automation/Authentication.json +159 -0
  254. package/json-schema/automation/AuthenticationType.json +18 -0
  255. package/json-schema/automation/ConflictResolution.json +16 -0
  256. package/json-schema/automation/Connector.json +440 -0
  257. package/json-schema/automation/ConnectorCategory.json +26 -0
  258. package/json-schema/automation/ConnectorInstance.json +69 -0
  259. package/json-schema/automation/ConnectorOperation.json +117 -0
  260. package/json-schema/automation/ConnectorTrigger.json +54 -0
  261. package/json-schema/automation/DataDestinationConfig.json +89 -0
  262. package/json-schema/automation/DataSourceConfig.json +34 -0
  263. package/json-schema/automation/DataSyncConfig.json +355 -0
  264. package/json-schema/automation/ETLDestination.json +57 -0
  265. package/json-schema/automation/ETLEndpointType.json +19 -0
  266. package/json-schema/automation/ETLPipeline.json +252 -0
  267. package/json-schema/automation/ETLPipelineRun.json +107 -0
  268. package/json-schema/automation/ETLRunStatus.json +17 -0
  269. package/json-schema/automation/ETLSource.json +60 -0
  270. package/json-schema/{data/LogicOperator.json → automation/ETLSyncMode.json} +5 -5
  271. package/json-schema/automation/ETLTransformation.json +46 -0
  272. package/json-schema/automation/ETLTransformationType.json +21 -0
  273. package/json-schema/automation/FieldMapping.json +36 -0
  274. package/json-schema/{data → automation}/Flow.json +31 -1
  275. package/json-schema/{data → automation}/FlowEdge.json +9 -0
  276. package/json-schema/automation/OAuth2Config.json +43 -0
  277. package/json-schema/automation/OperationParameter.json +59 -0
  278. package/json-schema/automation/OperationType.json +17 -0
  279. package/json-schema/automation/SyncDirection.json +14 -0
  280. package/json-schema/automation/SyncExecutionResult.json +135 -0
  281. package/json-schema/automation/SyncExecutionStatus.json +17 -0
  282. package/json-schema/{data/TriggerTiming.json → automation/SyncMode.json} +5 -4
  283. package/json-schema/{data/WorkflowRule.json → automation/TimeTrigger.json} +35 -25
  284. package/json-schema/{system → automation}/Webhook.json +3 -1
  285. package/json-schema/{system → automation}/WebhookReceiver.json +3 -1
  286. package/json-schema/automation/WorkflowRule.json +1032 -0
  287. package/json-schema/data/AggregationNode.json +23 -0
  288. package/json-schema/data/AsyncValidation.json +49 -2
  289. package/json-schema/data/ComparisonOperator.json +52 -0
  290. package/json-schema/data/ConditionalValidation.json +693 -46
  291. package/json-schema/data/CrossFieldValidation.json +33 -2
  292. package/json-schema/data/CurrencyConfig.json +35 -0
  293. package/json-schema/data/CurrencyValue.json +26 -0
  294. package/json-schema/data/CustomValidator.json +37 -10
  295. package/json-schema/data/Field.json +92 -4
  296. package/json-schema/data/FieldOperators.json +78 -0
  297. package/json-schema/data/FieldReference.json +19 -0
  298. package/json-schema/data/FieldType.json +12 -2
  299. package/json-schema/data/FormatValidation.json +33 -2
  300. package/json-schema/data/Hook.json +95 -0
  301. package/json-schema/data/HookContext.json +88 -0
  302. package/json-schema/data/HookEvent.json +29 -0
  303. package/json-schema/data/Index.json +10 -0
  304. package/json-schema/data/JSONValidation.json +85 -0
  305. package/json-schema/data/JoinNode.json +197 -213
  306. package/json-schema/data/JoinStrategy.json +15 -0
  307. package/json-schema/data/NormalizedFilter.json +234 -0
  308. package/json-schema/data/Object.json +1642 -32
  309. package/json-schema/data/ObjectCapabilities.json +30 -12
  310. package/json-schema/data/Query.json +246 -262
  311. package/json-schema/data/RangeOperator.json +26 -0
  312. package/json-schema/data/ScriptValidation.json +33 -2
  313. package/json-schema/data/SearchConfig.json +36 -0
  314. package/json-schema/data/SelectOption.json +4 -2
  315. package/json-schema/data/StateMachineValidation.json +33 -2
  316. package/json-schema/data/UniquenessValidation.json +33 -2
  317. package/json-schema/data/ValidationRule.json +693 -46
  318. package/json-schema/data/VectorConfig.json +51 -0
  319. package/json-schema/hub/BillOfMaterials.json +70 -0
  320. package/json-schema/hub/ComposerRequest.json +86 -0
  321. package/json-schema/hub/ComposerResponse.json +483 -0
  322. package/json-schema/hub/ConflictReport.json +53 -0
  323. package/json-schema/hub/DependencyRequirement.json +36 -0
  324. package/json-schema/hub/DeploymentTarget.json +38 -0
  325. package/json-schema/hub/HubSpace.json +279 -0
  326. package/json-schema/{system → hub}/License.json +11 -3
  327. package/json-schema/hub/MarketplacePlugin.json +141 -0
  328. package/json-schema/hub/PluginAuthor.json +26 -0
  329. package/json-schema/hub/PluginPricing.json +43 -0
  330. package/json-schema/hub/SpaceSubscription.json +77 -0
  331. package/json-schema/hub/SubscriptionStatus.json +16 -0
  332. package/json-schema/{system → hub}/Tenant.json +3 -5
  333. package/json-schema/permission/CriteriaSharingRule.json +82 -0
  334. package/json-schema/{data → permission}/OWDModel.json +2 -1
  335. package/json-schema/{data → permission}/ObjectPermission.json +15 -0
  336. package/json-schema/permission/OwnerSharingRule.json +102 -0
  337. package/json-schema/{data → permission}/PermissionSet.json +18 -1
  338. package/json-schema/permission/RLSConfig.json +59 -0
  339. package/json-schema/permission/RLSEvaluationResult.json +40 -0
  340. package/json-schema/{data/TriggerAction.json → permission/RLSOperation.json} +5 -3
  341. package/json-schema/permission/RLSUserContext.json +51 -0
  342. package/json-schema/permission/RowLevelSecurityPolicy.json +77 -0
  343. package/json-schema/permission/ShareRecipientType.json +16 -0
  344. package/json-schema/{data → permission}/SharingLevel.json +2 -1
  345. package/json-schema/permission/SharingRule.json +182 -0
  346. package/json-schema/{data → permission}/SharingRuleType.json +1 -3
  347. package/json-schema/{system → permission}/Territory.json +3 -1
  348. package/json-schema/shared/EventName.json +12 -0
  349. package/json-schema/shared/SnakeCaseIdentifier.json +12 -0
  350. package/json-schema/shared/SystemIdentifier.json +12 -0
  351. package/json-schema/system/Datasource.json +35 -0
  352. package/json-schema/system/DriverCapabilities.json +10 -0
  353. package/json-schema/system/DriverInterface.json +10 -0
  354. package/json-schema/system/DriverOptions.json +11 -0
  355. package/json-schema/system/Event.json +3 -2
  356. package/json-schema/system/FeatureFlag.json +87 -0
  357. package/json-schema/system/FeatureStrategy.json +16 -0
  358. package/json-schema/system/FileMetadata.json +43 -0
  359. package/json-schema/system/KernelContext.json +62 -0
  360. package/json-schema/system/LogEntry.json +63 -0
  361. package/json-schema/system/LogFormat.json +15 -0
  362. package/json-schema/system/LogLevel.json +17 -0
  363. package/json-schema/system/LoggerConfig.json +70 -0
  364. package/json-schema/system/Manifest.json +80 -0
  365. package/json-schema/system/MongoConfig.json +82 -0
  366. package/json-schema/system/PluginContext.json +8 -1
  367. package/json-schema/system/PostgresConfig.json +98 -0
  368. package/json-schema/system/RuntimeMode.json +16 -0
  369. package/json-schema/system/ScopedStorageConfig.json +54 -0
  370. package/json-schema/system/StorageAdapterType.json +17 -0
  371. package/json-schema/system/StorageScope.json +18 -0
  372. package/json-schema/ui/Action.json +25 -4
  373. package/json-schema/ui/ActionParam.json +12 -2
  374. package/json-schema/ui/App.json +18 -7
  375. package/json-schema/ui/ChartType.json +9 -1
  376. package/json-schema/ui/Dashboard.json +9 -1
  377. package/json-schema/ui/DashboardNavItem.json +3 -1
  378. package/json-schema/ui/DashboardWidget.json +9 -1
  379. package/json-schema/ui/FieldWidgetProps.json +92 -4
  380. package/json-schema/ui/FormView.json +4 -1
  381. package/json-schema/ui/GroupNavItem.json +3 -1
  382. package/json-schema/ui/ListView.json +7 -1
  383. package/json-schema/ui/NavigationItem.json +15 -5
  384. package/json-schema/ui/ObjectNavItem.json +3 -1
  385. package/json-schema/ui/Page.json +36 -4
  386. package/json-schema/ui/PageCardProps.json +32 -0
  387. package/json-schema/ui/PageComponent.json +33 -3
  388. package/json-schema/ui/PageComponentType.json +32 -0
  389. package/json-schema/ui/PageHeaderProps.json +39 -0
  390. package/json-schema/ui/PageNavItem.json +3 -1
  391. package/json-schema/ui/PageRegion.json +33 -3
  392. package/json-schema/ui/PageTabsProps.json +55 -0
  393. package/json-schema/ui/RecordDetailsProps.json +37 -0
  394. package/json-schema/ui/RecordHighlightsProps.json +24 -0
  395. package/json-schema/ui/RecordRelatedListProps.json +39 -0
  396. package/json-schema/ui/UrlNavItem.json +3 -1
  397. package/json-schema/ui/View.json +22 -4
  398. package/json-schema/ui/WidgetEvent.json +42 -0
  399. package/json-schema/ui/WidgetLifecycle.json +40 -0
  400. package/json-schema/ui/WidgetManifest.json +262 -0
  401. package/json-schema/ui/WidgetProperty.json +58 -0
  402. package/llms.txt +182 -0
  403. package/package.json +38 -16
  404. package/prompts/README.md +18 -0
  405. package/prompts/architecture.md +81 -0
  406. package/prompts/create-new-project.md +85 -0
  407. package/prompts/implement-objectai.md +39 -0
  408. package/prompts/implement-objectos.md +48 -0
  409. package/prompts/implement-objectql.md +39 -0
  410. package/prompts/implement-objectui.md +46 -0
  411. package/prompts/instructions.md +91 -0
  412. package/dist/ai/workflow-automation.zod.d.ts.map +0 -1
  413. package/dist/data/flow.zod.d.ts.map +0 -1
  414. package/dist/data/permission.zod.d.ts.map +0 -1
  415. package/dist/data/sharing.zod.d.ts +0 -63
  416. package/dist/data/sharing.zod.d.ts.map +0 -1
  417. package/dist/data/sharing.zod.js +0 -57
  418. package/dist/data/trigger.zod.d.ts +0 -354
  419. package/dist/data/trigger.zod.d.ts.map +0 -1
  420. package/dist/data/trigger.zod.js +0 -195
  421. package/dist/data/workflow.zod.d.ts +0 -986
  422. package/dist/data/workflow.zod.d.ts.map +0 -1
  423. package/dist/system/api.zod.d.ts.map +0 -1
  424. package/dist/system/auth-protocol.d.ts.map +0 -1
  425. package/dist/system/auth.zod.d.ts.map +0 -1
  426. package/dist/system/discovery.zod.d.ts.map +0 -1
  427. package/dist/system/identity.zod.d.ts.map +0 -1
  428. package/dist/system/license.zod.d.ts.map +0 -1
  429. package/dist/system/organization.zod.d.ts.map +0 -1
  430. package/dist/system/policy.zod.d.ts.map +0 -1
  431. package/dist/system/realtime.zod.d.ts.map +0 -1
  432. package/dist/system/role.zod.d.ts.map +0 -1
  433. package/dist/system/tenant.zod.d.ts.map +0 -1
  434. package/dist/system/territory.zod.d.ts.map +0 -1
  435. package/dist/system/webhook.zod.d.ts.map +0 -1
  436. package/json-schema/README.md +0 -127
  437. package/json-schema/data/FieldMapping.json +0 -83
  438. package/json-schema/data/FilterNode.json +0 -52
  439. package/json-schema/data/FilterOperator.json +0 -26
  440. package/json-schema/data/Mapping.json +0 -598
  441. package/json-schema/data/SharingRule.json +0 -58
  442. package/json-schema/data/TransformType.json +0 -18
  443. package/json-schema/data/Trigger.json +0 -73
  444. package/json-schema/data/TriggerContext.json +0 -61
  445. /package/dist/{system → api}/realtime.zod.js +0 -0
  446. /package/dist/{system/auth.zod.js → auth/config.zod.js} +0 -0
  447. /package/dist/{system → auth}/identity.zod.js +0 -0
  448. /package/dist/{system → auth}/organization.zod.js +0 -0
  449. /package/dist/{system → auth}/policy.zod.js +0 -0
  450. /package/dist/{system/auth-protocol.js → auth/protocol.js} +0 -0
  451. /package/json-schema/{system → api}/ApiCapabilities.json +0 -0
  452. /package/json-schema/{system → api}/ApiMapping.json +0 -0
  453. /package/json-schema/{system → api}/Presence.json +0 -0
  454. /package/json-schema/{system → api}/PresenceStatus.json +0 -0
  455. /package/json-schema/{system → api}/RateLimit.json +0 -0
  456. /package/json-schema/{system → api}/RealtimeAction.json +0 -0
  457. /package/json-schema/{system → api}/RealtimeEvent.json +0 -0
  458. /package/json-schema/{system → api}/RealtimeEventType.json +0 -0
  459. /package/json-schema/{system → api}/Subscription.json +0 -0
  460. /package/json-schema/{system → api}/SubscriptionEvent.json +0 -0
  461. /package/json-schema/{system → api}/TransportProtocol.json +0 -0
  462. /package/json-schema/{system → auth}/Account.json +0 -0
  463. /package/json-schema/{system → auth}/AccountLinkingConfig.json +0 -0
  464. /package/json-schema/{system → auth}/AuditPolicy.json +0 -0
  465. /package/json-schema/{system → auth}/AuthConfig.json +0 -0
  466. /package/json-schema/{system → auth}/AuthPluginConfig.json +0 -0
  467. /package/json-schema/{system → auth}/AuthStrategy.json +0 -0
  468. /package/json-schema/{system → auth}/CSRFConfig.json +0 -0
  469. /package/json-schema/{system → auth}/DatabaseAdapter.json +0 -0
  470. /package/json-schema/{system → auth}/DatabaseMapping.json +0 -0
  471. /package/json-schema/{system → auth}/EmailPasswordConfig.json +0 -0
  472. /package/json-schema/{system → auth}/EnterpriseAuthConfig.json +0 -0
  473. /package/json-schema/{system → auth}/Invitation.json +0 -0
  474. /package/json-schema/{system → auth}/InvitationStatus.json +0 -0
  475. /package/json-schema/{system → auth}/LDAPConfig.json +0 -0
  476. /package/json-schema/{system → auth}/MagicLinkConfig.json +0 -0
  477. /package/json-schema/{system → auth}/Member.json +0 -0
  478. /package/json-schema/{system → auth}/NetworkPolicy.json +0 -0
  479. /package/json-schema/{system → auth}/OAuthProvider.json +0 -0
  480. /package/json-schema/{system → auth}/OIDCConfig.json +0 -0
  481. /package/json-schema/{system → auth}/Organization.json +0 -0
  482. /package/json-schema/{system → auth}/PasskeyConfig.json +0 -0
  483. /package/json-schema/{system → auth}/PasswordPolicy.json +0 -0
  484. /package/json-schema/{system → auth}/Policy.json +0 -0
  485. /package/json-schema/{system → auth}/RateLimitConfig.json +0 -0
  486. /package/json-schema/{system → auth}/SAMLConfig.json +0 -0
  487. /package/json-schema/{system → auth}/Session.json +0 -0
  488. /package/json-schema/{system → auth}/SessionConfig.json +0 -0
  489. /package/json-schema/{system → auth}/SessionPolicy.json +0 -0
  490. /package/json-schema/{system → auth}/StandardAuthProvider.json +0 -0
  491. /package/json-schema/{system → auth}/TwoFactorConfig.json +0 -0
  492. /package/json-schema/{system → auth}/User.json +0 -0
  493. /package/json-schema/{system → auth}/UserFieldMapping.json +0 -0
  494. /package/json-schema/{system → auth}/VerificationToken.json +0 -0
  495. /package/json-schema/{data → automation}/CustomScriptAction.json +0 -0
  496. /package/json-schema/{data → automation}/EmailAlertAction.json +0 -0
  497. /package/json-schema/{data → automation}/FieldUpdateAction.json +0 -0
  498. /package/json-schema/{data → automation}/FlowNode.json +0 -0
  499. /package/json-schema/{data → automation}/FlowNodeAction.json +0 -0
  500. /package/json-schema/{data → automation}/FlowVariable.json +0 -0
  501. /package/json-schema/{data → automation}/HttpCallAction.json +0 -0
  502. /package/json-schema/{data → automation}/PushNotificationAction.json +0 -0
  503. /package/json-schema/{data → automation}/SlackMessageAction.json +0 -0
  504. /package/json-schema/{data → automation}/SmsNotificationAction.json +0 -0
  505. /package/json-schema/{data → automation}/TaskCreationAction.json +0 -0
  506. /package/json-schema/{data → automation}/TeamsMessageAction.json +0 -0
  507. /package/json-schema/{data → automation}/WebhookTriggerAction.json +0 -0
  508. /package/json-schema/{system → automation}/WebhookTriggerType.json +0 -0
  509. /package/json-schema/{data → automation}/WorkflowAction.json +0 -0
  510. /package/json-schema/{data → automation}/WorkflowTriggerType.json +0 -0
  511. /package/json-schema/{system → hub}/DatabaseLevelIsolationStrategy.json +0 -0
  512. /package/json-schema/{system → hub}/Feature.json +0 -0
  513. /package/json-schema/{system → hub}/LevelIsolationStrategySchema.json +0 -0
  514. /package/json-schema/{system → hub}/MetricType.json +0 -0
  515. /package/json-schema/{system → hub}/Plan.json +0 -0
  516. /package/json-schema/{system → hub}/RowLevelIsolationStrategy.json +0 -0
  517. /package/json-schema/{system → hub}/TenantIsolationConfig.json +0 -0
  518. /package/json-schema/{system → hub}/TenantIsolationLevel.json +0 -0
  519. /package/json-schema/{system → hub}/TenantQuota.json +0 -0
  520. /package/json-schema/{system → hub}/TenantSecurityPolicy.json +0 -0
  521. /package/json-schema/{data → permission}/FieldPermission.json +0 -0
  522. /package/json-schema/{system → permission}/TerritoryModel.json +0 -0
  523. /package/json-schema/{system → permission}/TerritoryType.json +0 -0
@@ -7,38 +7,55 @@
7
7
  "name": {
8
8
  "type": "string",
9
9
  "pattern": "^[a-z_][a-z0-9_]*$",
10
- "description": "Machine name (snake_case)"
10
+ "description": "Machine unique key (snake_case). Immutable."
11
11
  },
12
12
  "label": {
13
13
  "type": "string",
14
- "description": "Singular Label (e.g. \"Account\")"
14
+ "description": "Human readable singular label (e.g. \"Account\")"
15
15
  },
16
16
  "pluralLabel": {
17
17
  "type": "string",
18
- "description": "Plural Label (e.g. \"Accounts\")"
18
+ "description": "Human readable plural label (e.g. \"Accounts\")"
19
19
  },
20
20
  "description": {
21
21
  "type": "string",
22
- "description": "Internal description"
22
+ "description": "Developer documentation / description"
23
23
  },
24
24
  "icon": {
25
25
  "type": "string",
26
- "description": "Lucide icon name"
26
+ "description": "Icon name (Lucide/Material) for UI representation"
27
+ },
28
+ "tags": {
29
+ "type": "array",
30
+ "items": {
31
+ "type": "string"
32
+ },
33
+ "description": "Categorization tags (e.g. \"sales\", \"system\", \"reference\")"
34
+ },
35
+ "active": {
36
+ "type": "boolean",
37
+ "default": true,
38
+ "description": "Is the object active and usable"
39
+ },
40
+ "isSystem": {
41
+ "type": "boolean",
42
+ "default": false,
43
+ "description": "Is system object (protected from deletion)"
44
+ },
45
+ "abstract": {
46
+ "type": "boolean",
47
+ "default": false,
48
+ "description": "Is abstract base object (cannot be instantiated)"
27
49
  },
28
50
  "datasource": {
29
51
  "type": "string",
30
52
  "default": "default",
31
- "description": "Target Datasource ID (e.g. \"postgres\", \"salesforce\"). references sys_datasource."
53
+ "description": "Target Datasource ID. \"default\" is the primary DB."
32
54
  },
33
55
  "tableName": {
34
56
  "type": "string",
35
57
  "description": "Physical table/collection name in the target datasource"
36
58
  },
37
- "isSystem": {
38
- "type": "boolean",
39
- "default": false,
40
- "description": "Is system object (protected)"
41
- },
42
59
  "fields": {
43
60
  "type": "object",
44
61
  "additionalProperties": {
@@ -72,24 +89,34 @@
72
89
  "datetime",
73
90
  "time",
74
91
  "boolean",
92
+ "toggle",
75
93
  "select",
94
+ "multiselect",
95
+ "radio",
96
+ "checkboxes",
76
97
  "lookup",
77
98
  "master_detail",
99
+ "tree",
78
100
  "image",
79
101
  "file",
80
102
  "avatar",
103
+ "video",
104
+ "audio",
81
105
  "formula",
82
106
  "summary",
83
107
  "autonumber",
84
108
  "location",
85
- "geolocation",
86
109
  "address",
87
110
  "code",
111
+ "json",
88
112
  "color",
89
113
  "rating",
90
114
  "slider",
91
115
  "signature",
92
- "qrcode"
116
+ "qrcode",
117
+ "progress",
118
+ "tags",
119
+ "vector"
93
120
  ],
94
121
  "description": "Field Data Type"
95
122
  },
@@ -155,11 +182,13 @@
155
182
  "properties": {
156
183
  "label": {
157
184
  "type": "string",
158
- "description": "Display label"
185
+ "description": "Display label (human-readable, any case allowed)"
159
186
  },
160
187
  "value": {
161
188
  "type": "string",
162
- "description": "Stored value"
189
+ "minLength": 2,
190
+ "pattern": "^[a-z][a-z0-9_.]*$",
191
+ "description": "Stored value (lowercase machine identifier)"
163
192
  },
164
193
  "color": {
165
194
  "type": "string",
@@ -343,6 +372,82 @@
343
372
  "type": "boolean",
344
373
  "description": "Enable camera scanning for barcode/QR code input"
345
374
  },
375
+ "currencyConfig": {
376
+ "type": "object",
377
+ "properties": {
378
+ "precision": {
379
+ "type": "integer",
380
+ "minimum": 0,
381
+ "maximum": 10,
382
+ "default": 2,
383
+ "description": "Decimal precision (default: 2)"
384
+ },
385
+ "currencyMode": {
386
+ "type": "string",
387
+ "enum": [
388
+ "dynamic",
389
+ "fixed"
390
+ ],
391
+ "default": "dynamic",
392
+ "description": "Currency mode: dynamic (user selectable) or fixed (single currency)"
393
+ },
394
+ "defaultCurrency": {
395
+ "type": "string",
396
+ "minLength": 3,
397
+ "maxLength": 3,
398
+ "default": "CNY",
399
+ "description": "Default or fixed currency code (ISO 4217, e.g., USD, CNY, EUR)"
400
+ }
401
+ },
402
+ "additionalProperties": false,
403
+ "description": "Configuration for currency field type"
404
+ },
405
+ "vectorConfig": {
406
+ "type": "object",
407
+ "properties": {
408
+ "dimensions": {
409
+ "type": "integer",
410
+ "minimum": 1,
411
+ "maximum": 10000,
412
+ "description": "Vector dimensionality (e.g., 1536 for OpenAI embeddings)"
413
+ },
414
+ "distanceMetric": {
415
+ "type": "string",
416
+ "enum": [
417
+ "cosine",
418
+ "euclidean",
419
+ "dotProduct",
420
+ "manhattan"
421
+ ],
422
+ "default": "cosine",
423
+ "description": "Distance/similarity metric for vector search"
424
+ },
425
+ "normalized": {
426
+ "type": "boolean",
427
+ "default": false,
428
+ "description": "Whether vectors are normalized (unit length)"
429
+ },
430
+ "indexed": {
431
+ "type": "boolean",
432
+ "default": true,
433
+ "description": "Whether to create a vector index for fast similarity search"
434
+ },
435
+ "indexType": {
436
+ "type": "string",
437
+ "enum": [
438
+ "hnsw",
439
+ "ivfflat",
440
+ "flat"
441
+ ],
442
+ "description": "Vector index algorithm (HNSW for high accuracy, IVFFlat for large datasets)"
443
+ }
444
+ },
445
+ "required": [
446
+ "dimensions"
447
+ ],
448
+ "additionalProperties": false,
449
+ "description": "Configuration for vector field type (AI/ML embeddings)"
450
+ },
346
451
  "hidden": {
347
452
  "type": "boolean",
348
453
  "default": false,
@@ -374,7 +479,7 @@
374
479
  ],
375
480
  "additionalProperties": false
376
481
  },
377
- "description": "Map of field definitions"
482
+ "description": "Field definitions map"
378
483
  },
379
484
  "indexes": {
380
485
  "type": "array",
@@ -395,6 +500,16 @@
395
500
  "unique": {
396
501
  "type": "boolean",
397
502
  "description": "Whether the index is unique"
503
+ },
504
+ "type": {
505
+ "type": "string",
506
+ "enum": [
507
+ "btree",
508
+ "hash",
509
+ "gin",
510
+ "gist"
511
+ ],
512
+ "description": "Index type (default: btree)"
398
513
  }
399
514
  },
400
515
  "required": [
@@ -402,26 +517,1506 @@
402
517
  ],
403
518
  "additionalProperties": false
404
519
  },
405
- "description": "Database indexes definition"
520
+ "description": "Database performance indexes"
521
+ },
522
+ "validations": {
523
+ "type": "array",
524
+ "items": {
525
+ "anyOf": [
526
+ {
527
+ "type": "object",
528
+ "properties": {
529
+ "name": {
530
+ "type": "string",
531
+ "pattern": "^[a-z_][a-z0-9_]*$",
532
+ "description": "Unique rule name (snake_case)"
533
+ },
534
+ "label": {
535
+ "type": "string",
536
+ "description": "Human-readable label for the rule listing"
537
+ },
538
+ "description": {
539
+ "type": "string",
540
+ "description": "Administrative notes explaining the business reason"
541
+ },
542
+ "active": {
543
+ "type": "boolean",
544
+ "default": true
545
+ },
546
+ "events": {
547
+ "type": "array",
548
+ "items": {
549
+ "type": "string",
550
+ "enum": [
551
+ "insert",
552
+ "update",
553
+ "delete"
554
+ ]
555
+ },
556
+ "default": [
557
+ "insert",
558
+ "update"
559
+ ],
560
+ "description": "Validation contexts"
561
+ },
562
+ "tags": {
563
+ "type": "array",
564
+ "items": {
565
+ "type": "string"
566
+ },
567
+ "description": "Categorization tags (e.g., \"compliance\", \"billing\")"
568
+ },
569
+ "severity": {
570
+ "type": "string",
571
+ "enum": [
572
+ "error",
573
+ "warning",
574
+ "info"
575
+ ],
576
+ "default": "error"
577
+ },
578
+ "message": {
579
+ "type": "string",
580
+ "description": "Error message to display to the user"
581
+ },
582
+ "type": {
583
+ "type": "string",
584
+ "const": "script"
585
+ },
586
+ "condition": {
587
+ "type": "string",
588
+ "description": "Formula expression. If TRUE, validation fails. (e.g. amount < 0)"
589
+ }
590
+ },
591
+ "required": [
592
+ "name",
593
+ "message",
594
+ "type",
595
+ "condition"
596
+ ],
597
+ "additionalProperties": false
598
+ },
599
+ {
600
+ "type": "object",
601
+ "properties": {
602
+ "name": {
603
+ "type": "string",
604
+ "pattern": "^[a-z_][a-z0-9_]*$",
605
+ "description": "Unique rule name (snake_case)"
606
+ },
607
+ "label": {
608
+ "type": "string",
609
+ "description": "Human-readable label for the rule listing"
610
+ },
611
+ "description": {
612
+ "type": "string",
613
+ "description": "Administrative notes explaining the business reason"
614
+ },
615
+ "active": {
616
+ "type": "boolean",
617
+ "default": true
618
+ },
619
+ "events": {
620
+ "type": "array",
621
+ "items": {
622
+ "type": "string",
623
+ "enum": [
624
+ "insert",
625
+ "update",
626
+ "delete"
627
+ ]
628
+ },
629
+ "default": [
630
+ "insert",
631
+ "update"
632
+ ],
633
+ "description": "Validation contexts"
634
+ },
635
+ "tags": {
636
+ "type": "array",
637
+ "items": {
638
+ "type": "string"
639
+ },
640
+ "description": "Categorization tags (e.g., \"compliance\", \"billing\")"
641
+ },
642
+ "severity": {
643
+ "type": "string",
644
+ "enum": [
645
+ "error",
646
+ "warning",
647
+ "info"
648
+ ],
649
+ "default": "error"
650
+ },
651
+ "message": {
652
+ "type": "string",
653
+ "description": "Error message to display to the user"
654
+ },
655
+ "type": {
656
+ "type": "string",
657
+ "const": "unique"
658
+ },
659
+ "fields": {
660
+ "type": "array",
661
+ "items": {
662
+ "type": "string"
663
+ },
664
+ "description": "Fields that must be combined unique"
665
+ },
666
+ "scope": {
667
+ "type": "string",
668
+ "description": "Formula condition for scope (e.g. active = true)"
669
+ },
670
+ "caseSensitive": {
671
+ "type": "boolean",
672
+ "default": true
673
+ }
674
+ },
675
+ "required": [
676
+ "name",
677
+ "message",
678
+ "type",
679
+ "fields"
680
+ ],
681
+ "additionalProperties": false
682
+ },
683
+ {
684
+ "type": "object",
685
+ "properties": {
686
+ "name": {
687
+ "type": "string",
688
+ "pattern": "^[a-z_][a-z0-9_]*$",
689
+ "description": "Unique rule name (snake_case)"
690
+ },
691
+ "label": {
692
+ "type": "string",
693
+ "description": "Human-readable label for the rule listing"
694
+ },
695
+ "description": {
696
+ "type": "string",
697
+ "description": "Administrative notes explaining the business reason"
698
+ },
699
+ "active": {
700
+ "type": "boolean",
701
+ "default": true
702
+ },
703
+ "events": {
704
+ "type": "array",
705
+ "items": {
706
+ "type": "string",
707
+ "enum": [
708
+ "insert",
709
+ "update",
710
+ "delete"
711
+ ]
712
+ },
713
+ "default": [
714
+ "insert",
715
+ "update"
716
+ ],
717
+ "description": "Validation contexts"
718
+ },
719
+ "tags": {
720
+ "type": "array",
721
+ "items": {
722
+ "type": "string"
723
+ },
724
+ "description": "Categorization tags (e.g., \"compliance\", \"billing\")"
725
+ },
726
+ "severity": {
727
+ "type": "string",
728
+ "enum": [
729
+ "error",
730
+ "warning",
731
+ "info"
732
+ ],
733
+ "default": "error"
734
+ },
735
+ "message": {
736
+ "type": "string",
737
+ "description": "Error message to display to the user"
738
+ },
739
+ "type": {
740
+ "type": "string",
741
+ "const": "state_machine"
742
+ },
743
+ "field": {
744
+ "type": "string",
745
+ "description": "State field (e.g. status)"
746
+ },
747
+ "transitions": {
748
+ "type": "object",
749
+ "additionalProperties": {
750
+ "type": "array",
751
+ "items": {
752
+ "type": "string"
753
+ }
754
+ },
755
+ "description": "Map of { OldState: [AllowedNewStates] }"
756
+ }
757
+ },
758
+ "required": [
759
+ "name",
760
+ "message",
761
+ "type",
762
+ "field",
763
+ "transitions"
764
+ ],
765
+ "additionalProperties": false
766
+ },
767
+ {
768
+ "type": "object",
769
+ "properties": {
770
+ "name": {
771
+ "type": "string",
772
+ "pattern": "^[a-z_][a-z0-9_]*$",
773
+ "description": "Unique rule name (snake_case)"
774
+ },
775
+ "label": {
776
+ "type": "string",
777
+ "description": "Human-readable label for the rule listing"
778
+ },
779
+ "description": {
780
+ "type": "string",
781
+ "description": "Administrative notes explaining the business reason"
782
+ },
783
+ "active": {
784
+ "type": "boolean",
785
+ "default": true
786
+ },
787
+ "events": {
788
+ "type": "array",
789
+ "items": {
790
+ "type": "string",
791
+ "enum": [
792
+ "insert",
793
+ "update",
794
+ "delete"
795
+ ]
796
+ },
797
+ "default": [
798
+ "insert",
799
+ "update"
800
+ ],
801
+ "description": "Validation contexts"
802
+ },
803
+ "tags": {
804
+ "type": "array",
805
+ "items": {
806
+ "type": "string"
807
+ },
808
+ "description": "Categorization tags (e.g., \"compliance\", \"billing\")"
809
+ },
810
+ "severity": {
811
+ "type": "string",
812
+ "enum": [
813
+ "error",
814
+ "warning",
815
+ "info"
816
+ ],
817
+ "default": "error"
818
+ },
819
+ "message": {
820
+ "type": "string",
821
+ "description": "Error message to display to the user"
822
+ },
823
+ "type": {
824
+ "type": "string",
825
+ "const": "format"
826
+ },
827
+ "field": {
828
+ "type": "string"
829
+ },
830
+ "regex": {
831
+ "type": "string"
832
+ },
833
+ "format": {
834
+ "type": "string",
835
+ "enum": [
836
+ "email",
837
+ "url",
838
+ "phone",
839
+ "json"
840
+ ]
841
+ }
842
+ },
843
+ "required": [
844
+ "name",
845
+ "message",
846
+ "type",
847
+ "field"
848
+ ],
849
+ "additionalProperties": false
850
+ },
851
+ {
852
+ "type": "object",
853
+ "properties": {
854
+ "name": {
855
+ "type": "string",
856
+ "pattern": "^[a-z_][a-z0-9_]*$",
857
+ "description": "Unique rule name (snake_case)"
858
+ },
859
+ "label": {
860
+ "type": "string",
861
+ "description": "Human-readable label for the rule listing"
862
+ },
863
+ "description": {
864
+ "type": "string",
865
+ "description": "Administrative notes explaining the business reason"
866
+ },
867
+ "active": {
868
+ "type": "boolean",
869
+ "default": true
870
+ },
871
+ "events": {
872
+ "type": "array",
873
+ "items": {
874
+ "type": "string",
875
+ "enum": [
876
+ "insert",
877
+ "update",
878
+ "delete"
879
+ ]
880
+ },
881
+ "default": [
882
+ "insert",
883
+ "update"
884
+ ],
885
+ "description": "Validation contexts"
886
+ },
887
+ "tags": {
888
+ "type": "array",
889
+ "items": {
890
+ "type": "string"
891
+ },
892
+ "description": "Categorization tags (e.g., \"compliance\", \"billing\")"
893
+ },
894
+ "severity": {
895
+ "type": "string",
896
+ "enum": [
897
+ "error",
898
+ "warning",
899
+ "info"
900
+ ],
901
+ "default": "error"
902
+ },
903
+ "message": {
904
+ "type": "string",
905
+ "description": "Error message to display to the user"
906
+ },
907
+ "type": {
908
+ "type": "string",
909
+ "const": "cross_field"
910
+ },
911
+ "condition": {
912
+ "type": "string",
913
+ "description": "Formula expression comparing fields (e.g. \"end_date > start_date\")"
914
+ },
915
+ "fields": {
916
+ "type": "array",
917
+ "items": {
918
+ "type": "string"
919
+ },
920
+ "description": "Fields involved in the validation"
921
+ }
922
+ },
923
+ "required": [
924
+ "name",
925
+ "message",
926
+ "type",
927
+ "condition",
928
+ "fields"
929
+ ],
930
+ "additionalProperties": false
931
+ },
932
+ {
933
+ "type": "object",
934
+ "properties": {
935
+ "name": {
936
+ "type": "string",
937
+ "pattern": "^[a-z_][a-z0-9_]*$",
938
+ "description": "Unique rule name (snake_case)"
939
+ },
940
+ "label": {
941
+ "type": "string",
942
+ "description": "Human-readable label for the rule listing"
943
+ },
944
+ "description": {
945
+ "type": "string",
946
+ "description": "Administrative notes explaining the business reason"
947
+ },
948
+ "active": {
949
+ "type": "boolean",
950
+ "default": true
951
+ },
952
+ "events": {
953
+ "type": "array",
954
+ "items": {
955
+ "type": "string",
956
+ "enum": [
957
+ "insert",
958
+ "update",
959
+ "delete"
960
+ ]
961
+ },
962
+ "default": [
963
+ "insert",
964
+ "update"
965
+ ],
966
+ "description": "Validation contexts"
967
+ },
968
+ "tags": {
969
+ "type": "array",
970
+ "items": {
971
+ "type": "string"
972
+ },
973
+ "description": "Categorization tags (e.g., \"compliance\", \"billing\")"
974
+ },
975
+ "severity": {
976
+ "type": "string",
977
+ "enum": [
978
+ "error",
979
+ "warning",
980
+ "info"
981
+ ],
982
+ "default": "error"
983
+ },
984
+ "message": {
985
+ "type": "string",
986
+ "description": "Error message to display to the user"
987
+ },
988
+ "type": {
989
+ "type": "string",
990
+ "const": "json_schema"
991
+ },
992
+ "field": {
993
+ "type": "string",
994
+ "description": "JSON field to validate"
995
+ },
996
+ "schema": {
997
+ "type": "object",
998
+ "additionalProperties": {},
999
+ "description": "JSON Schema object definition"
1000
+ }
1001
+ },
1002
+ "required": [
1003
+ "name",
1004
+ "message",
1005
+ "type",
1006
+ "field",
1007
+ "schema"
1008
+ ],
1009
+ "additionalProperties": false
1010
+ },
1011
+ {
1012
+ "type": "object",
1013
+ "properties": {
1014
+ "name": {
1015
+ "type": "string",
1016
+ "pattern": "^[a-z_][a-z0-9_]*$",
1017
+ "description": "Unique rule name (snake_case)"
1018
+ },
1019
+ "label": {
1020
+ "type": "string",
1021
+ "description": "Human-readable label for the rule listing"
1022
+ },
1023
+ "description": {
1024
+ "type": "string",
1025
+ "description": "Administrative notes explaining the business reason"
1026
+ },
1027
+ "active": {
1028
+ "type": "boolean",
1029
+ "default": true
1030
+ },
1031
+ "events": {
1032
+ "type": "array",
1033
+ "items": {
1034
+ "type": "string",
1035
+ "enum": [
1036
+ "insert",
1037
+ "update",
1038
+ "delete"
1039
+ ]
1040
+ },
1041
+ "default": [
1042
+ "insert",
1043
+ "update"
1044
+ ],
1045
+ "description": "Validation contexts"
1046
+ },
1047
+ "tags": {
1048
+ "type": "array",
1049
+ "items": {
1050
+ "type": "string"
1051
+ },
1052
+ "description": "Categorization tags (e.g., \"compliance\", \"billing\")"
1053
+ },
1054
+ "severity": {
1055
+ "type": "string",
1056
+ "enum": [
1057
+ "error",
1058
+ "warning",
1059
+ "info"
1060
+ ],
1061
+ "default": "error"
1062
+ },
1063
+ "message": {
1064
+ "type": "string",
1065
+ "description": "Error message to display to the user"
1066
+ },
1067
+ "type": {
1068
+ "type": "string",
1069
+ "const": "async"
1070
+ },
1071
+ "field": {
1072
+ "type": "string",
1073
+ "description": "Field to validate"
1074
+ },
1075
+ "validatorUrl": {
1076
+ "type": "string",
1077
+ "description": "External API endpoint for validation"
1078
+ },
1079
+ "method": {
1080
+ "type": "string",
1081
+ "enum": [
1082
+ "GET",
1083
+ "POST"
1084
+ ],
1085
+ "default": "GET",
1086
+ "description": "HTTP method for external call"
1087
+ },
1088
+ "headers": {
1089
+ "type": "object",
1090
+ "additionalProperties": {
1091
+ "type": "string"
1092
+ },
1093
+ "description": "Custom headers for the request"
1094
+ },
1095
+ "validatorFunction": {
1096
+ "type": "string",
1097
+ "description": "Reference to custom validator function"
1098
+ },
1099
+ "timeout": {
1100
+ "type": "number",
1101
+ "default": 5000,
1102
+ "description": "Timeout in milliseconds"
1103
+ },
1104
+ "debounce": {
1105
+ "type": "number",
1106
+ "description": "Debounce delay in milliseconds"
1107
+ },
1108
+ "params": {
1109
+ "type": "object",
1110
+ "additionalProperties": {},
1111
+ "description": "Additional parameters to pass to validator"
1112
+ }
1113
+ },
1114
+ "required": [
1115
+ "name",
1116
+ "message",
1117
+ "type",
1118
+ "field"
1119
+ ],
1120
+ "additionalProperties": false
1121
+ },
1122
+ {
1123
+ "type": "object",
1124
+ "properties": {
1125
+ "name": {
1126
+ "type": "string",
1127
+ "pattern": "^[a-z_][a-z0-9_]*$",
1128
+ "description": "Unique rule name (snake_case)"
1129
+ },
1130
+ "label": {
1131
+ "type": "string",
1132
+ "description": "Human-readable label for the rule listing"
1133
+ },
1134
+ "description": {
1135
+ "type": "string",
1136
+ "description": "Administrative notes explaining the business reason"
1137
+ },
1138
+ "active": {
1139
+ "type": "boolean",
1140
+ "default": true
1141
+ },
1142
+ "events": {
1143
+ "type": "array",
1144
+ "items": {
1145
+ "type": "string",
1146
+ "enum": [
1147
+ "insert",
1148
+ "update",
1149
+ "delete"
1150
+ ]
1151
+ },
1152
+ "default": [
1153
+ "insert",
1154
+ "update"
1155
+ ],
1156
+ "description": "Validation contexts"
1157
+ },
1158
+ "tags": {
1159
+ "type": "array",
1160
+ "items": {
1161
+ "type": "string"
1162
+ },
1163
+ "description": "Categorization tags (e.g., \"compliance\", \"billing\")"
1164
+ },
1165
+ "severity": {
1166
+ "type": "string",
1167
+ "enum": [
1168
+ "error",
1169
+ "warning",
1170
+ "info"
1171
+ ],
1172
+ "default": "error"
1173
+ },
1174
+ "message": {
1175
+ "type": "string",
1176
+ "description": "Error message to display to the user"
1177
+ },
1178
+ "type": {
1179
+ "type": "string",
1180
+ "const": "custom"
1181
+ },
1182
+ "handler": {
1183
+ "type": "string",
1184
+ "description": "Name of the custom validation function registered in the system"
1185
+ },
1186
+ "params": {
1187
+ "type": "object",
1188
+ "additionalProperties": {},
1189
+ "description": "Parameters passed to the custom handler"
1190
+ }
1191
+ },
1192
+ "required": [
1193
+ "name",
1194
+ "message",
1195
+ "type",
1196
+ "handler"
1197
+ ],
1198
+ "additionalProperties": false
1199
+ },
1200
+ {
1201
+ "type": "object",
1202
+ "properties": {
1203
+ "name": {
1204
+ "type": "string",
1205
+ "pattern": "^[a-z_][a-z0-9_]*$",
1206
+ "description": "Unique rule name (snake_case)"
1207
+ },
1208
+ "label": {
1209
+ "type": "string",
1210
+ "description": "Human-readable label for the rule listing"
1211
+ },
1212
+ "description": {
1213
+ "type": "string",
1214
+ "description": "Administrative notes explaining the business reason"
1215
+ },
1216
+ "active": {
1217
+ "type": "boolean",
1218
+ "default": true
1219
+ },
1220
+ "events": {
1221
+ "type": "array",
1222
+ "items": {
1223
+ "type": "string",
1224
+ "enum": [
1225
+ "insert",
1226
+ "update",
1227
+ "delete"
1228
+ ]
1229
+ },
1230
+ "default": [
1231
+ "insert",
1232
+ "update"
1233
+ ],
1234
+ "description": "Validation contexts"
1235
+ },
1236
+ "tags": {
1237
+ "type": "array",
1238
+ "items": {
1239
+ "type": "string"
1240
+ },
1241
+ "description": "Categorization tags (e.g., \"compliance\", \"billing\")"
1242
+ },
1243
+ "severity": {
1244
+ "type": "string",
1245
+ "enum": [
1246
+ "error",
1247
+ "warning",
1248
+ "info"
1249
+ ],
1250
+ "default": "error"
1251
+ },
1252
+ "message": {
1253
+ "type": "string",
1254
+ "description": "Error message to display to the user"
1255
+ },
1256
+ "type": {
1257
+ "type": "string",
1258
+ "const": "conditional"
1259
+ },
1260
+ "when": {
1261
+ "type": "string",
1262
+ "description": "Condition formula (e.g. \"type = 'enterprise'\")"
1263
+ },
1264
+ "then": {
1265
+ "anyOf": [
1266
+ {
1267
+ "type": "object",
1268
+ "properties": {
1269
+ "name": {
1270
+ "type": "string",
1271
+ "pattern": "^[a-z_][a-z0-9_]*$",
1272
+ "description": "Unique rule name (snake_case)"
1273
+ },
1274
+ "label": {
1275
+ "type": "string",
1276
+ "description": "Human-readable label for the rule listing"
1277
+ },
1278
+ "description": {
1279
+ "type": "string",
1280
+ "description": "Administrative notes explaining the business reason"
1281
+ },
1282
+ "active": {
1283
+ "type": "boolean",
1284
+ "default": true
1285
+ },
1286
+ "events": {
1287
+ "type": "array",
1288
+ "items": {
1289
+ "type": "string",
1290
+ "enum": [
1291
+ "insert",
1292
+ "update",
1293
+ "delete"
1294
+ ]
1295
+ },
1296
+ "default": [
1297
+ "insert",
1298
+ "update"
1299
+ ],
1300
+ "description": "Validation contexts"
1301
+ },
1302
+ "tags": {
1303
+ "type": "array",
1304
+ "items": {
1305
+ "type": "string"
1306
+ },
1307
+ "description": "Categorization tags (e.g., \"compliance\", \"billing\")"
1308
+ },
1309
+ "severity": {
1310
+ "type": "string",
1311
+ "enum": [
1312
+ "error",
1313
+ "warning",
1314
+ "info"
1315
+ ],
1316
+ "default": "error"
1317
+ },
1318
+ "message": {
1319
+ "type": "string",
1320
+ "description": "Error message to display to the user"
1321
+ },
1322
+ "type": {
1323
+ "type": "string",
1324
+ "const": "script"
1325
+ },
1326
+ "condition": {
1327
+ "type": "string",
1328
+ "description": "Formula expression. If TRUE, validation fails. (e.g. amount < 0)"
1329
+ }
1330
+ },
1331
+ "required": [
1332
+ "name",
1333
+ "message",
1334
+ "type",
1335
+ "condition"
1336
+ ],
1337
+ "additionalProperties": false
1338
+ },
1339
+ {
1340
+ "type": "object",
1341
+ "properties": {
1342
+ "name": {
1343
+ "type": "string",
1344
+ "pattern": "^[a-z_][a-z0-9_]*$",
1345
+ "description": "Unique rule name (snake_case)"
1346
+ },
1347
+ "label": {
1348
+ "type": "string",
1349
+ "description": "Human-readable label for the rule listing"
1350
+ },
1351
+ "description": {
1352
+ "type": "string",
1353
+ "description": "Administrative notes explaining the business reason"
1354
+ },
1355
+ "active": {
1356
+ "type": "boolean",
1357
+ "default": true
1358
+ },
1359
+ "events": {
1360
+ "type": "array",
1361
+ "items": {
1362
+ "type": "string",
1363
+ "enum": [
1364
+ "insert",
1365
+ "update",
1366
+ "delete"
1367
+ ]
1368
+ },
1369
+ "default": [
1370
+ "insert",
1371
+ "update"
1372
+ ],
1373
+ "description": "Validation contexts"
1374
+ },
1375
+ "tags": {
1376
+ "type": "array",
1377
+ "items": {
1378
+ "type": "string"
1379
+ },
1380
+ "description": "Categorization tags (e.g., \"compliance\", \"billing\")"
1381
+ },
1382
+ "severity": {
1383
+ "type": "string",
1384
+ "enum": [
1385
+ "error",
1386
+ "warning",
1387
+ "info"
1388
+ ],
1389
+ "default": "error"
1390
+ },
1391
+ "message": {
1392
+ "type": "string",
1393
+ "description": "Error message to display to the user"
1394
+ },
1395
+ "type": {
1396
+ "type": "string",
1397
+ "const": "unique"
1398
+ },
1399
+ "fields": {
1400
+ "type": "array",
1401
+ "items": {
1402
+ "type": "string"
1403
+ },
1404
+ "description": "Fields that must be combined unique"
1405
+ },
1406
+ "scope": {
1407
+ "type": "string",
1408
+ "description": "Formula condition for scope (e.g. active = true)"
1409
+ },
1410
+ "caseSensitive": {
1411
+ "type": "boolean",
1412
+ "default": true
1413
+ }
1414
+ },
1415
+ "required": [
1416
+ "name",
1417
+ "message",
1418
+ "type",
1419
+ "fields"
1420
+ ],
1421
+ "additionalProperties": false
1422
+ },
1423
+ {
1424
+ "type": "object",
1425
+ "properties": {
1426
+ "name": {
1427
+ "type": "string",
1428
+ "pattern": "^[a-z_][a-z0-9_]*$",
1429
+ "description": "Unique rule name (snake_case)"
1430
+ },
1431
+ "label": {
1432
+ "type": "string",
1433
+ "description": "Human-readable label for the rule listing"
1434
+ },
1435
+ "description": {
1436
+ "type": "string",
1437
+ "description": "Administrative notes explaining the business reason"
1438
+ },
1439
+ "active": {
1440
+ "type": "boolean",
1441
+ "default": true
1442
+ },
1443
+ "events": {
1444
+ "type": "array",
1445
+ "items": {
1446
+ "type": "string",
1447
+ "enum": [
1448
+ "insert",
1449
+ "update",
1450
+ "delete"
1451
+ ]
1452
+ },
1453
+ "default": [
1454
+ "insert",
1455
+ "update"
1456
+ ],
1457
+ "description": "Validation contexts"
1458
+ },
1459
+ "tags": {
1460
+ "type": "array",
1461
+ "items": {
1462
+ "type": "string"
1463
+ },
1464
+ "description": "Categorization tags (e.g., \"compliance\", \"billing\")"
1465
+ },
1466
+ "severity": {
1467
+ "type": "string",
1468
+ "enum": [
1469
+ "error",
1470
+ "warning",
1471
+ "info"
1472
+ ],
1473
+ "default": "error"
1474
+ },
1475
+ "message": {
1476
+ "type": "string",
1477
+ "description": "Error message to display to the user"
1478
+ },
1479
+ "type": {
1480
+ "type": "string",
1481
+ "const": "state_machine"
1482
+ },
1483
+ "field": {
1484
+ "type": "string",
1485
+ "description": "State field (e.g. status)"
1486
+ },
1487
+ "transitions": {
1488
+ "type": "object",
1489
+ "additionalProperties": {
1490
+ "type": "array",
1491
+ "items": {
1492
+ "type": "string"
1493
+ }
1494
+ },
1495
+ "description": "Map of { OldState: [AllowedNewStates] }"
1496
+ }
1497
+ },
1498
+ "required": [
1499
+ "name",
1500
+ "message",
1501
+ "type",
1502
+ "field",
1503
+ "transitions"
1504
+ ],
1505
+ "additionalProperties": false
1506
+ },
1507
+ {
1508
+ "type": "object",
1509
+ "properties": {
1510
+ "name": {
1511
+ "type": "string",
1512
+ "pattern": "^[a-z_][a-z0-9_]*$",
1513
+ "description": "Unique rule name (snake_case)"
1514
+ },
1515
+ "label": {
1516
+ "type": "string",
1517
+ "description": "Human-readable label for the rule listing"
1518
+ },
1519
+ "description": {
1520
+ "type": "string",
1521
+ "description": "Administrative notes explaining the business reason"
1522
+ },
1523
+ "active": {
1524
+ "type": "boolean",
1525
+ "default": true
1526
+ },
1527
+ "events": {
1528
+ "type": "array",
1529
+ "items": {
1530
+ "type": "string",
1531
+ "enum": [
1532
+ "insert",
1533
+ "update",
1534
+ "delete"
1535
+ ]
1536
+ },
1537
+ "default": [
1538
+ "insert",
1539
+ "update"
1540
+ ],
1541
+ "description": "Validation contexts"
1542
+ },
1543
+ "tags": {
1544
+ "type": "array",
1545
+ "items": {
1546
+ "type": "string"
1547
+ },
1548
+ "description": "Categorization tags (e.g., \"compliance\", \"billing\")"
1549
+ },
1550
+ "severity": {
1551
+ "type": "string",
1552
+ "enum": [
1553
+ "error",
1554
+ "warning",
1555
+ "info"
1556
+ ],
1557
+ "default": "error"
1558
+ },
1559
+ "message": {
1560
+ "type": "string",
1561
+ "description": "Error message to display to the user"
1562
+ },
1563
+ "type": {
1564
+ "type": "string",
1565
+ "const": "format"
1566
+ },
1567
+ "field": {
1568
+ "type": "string"
1569
+ },
1570
+ "regex": {
1571
+ "type": "string"
1572
+ },
1573
+ "format": {
1574
+ "type": "string",
1575
+ "enum": [
1576
+ "email",
1577
+ "url",
1578
+ "phone",
1579
+ "json"
1580
+ ]
1581
+ }
1582
+ },
1583
+ "required": [
1584
+ "name",
1585
+ "message",
1586
+ "type",
1587
+ "field"
1588
+ ],
1589
+ "additionalProperties": false
1590
+ },
1591
+ {
1592
+ "type": "object",
1593
+ "properties": {
1594
+ "name": {
1595
+ "type": "string",
1596
+ "pattern": "^[a-z_][a-z0-9_]*$",
1597
+ "description": "Unique rule name (snake_case)"
1598
+ },
1599
+ "label": {
1600
+ "type": "string",
1601
+ "description": "Human-readable label for the rule listing"
1602
+ },
1603
+ "description": {
1604
+ "type": "string",
1605
+ "description": "Administrative notes explaining the business reason"
1606
+ },
1607
+ "active": {
1608
+ "type": "boolean",
1609
+ "default": true
1610
+ },
1611
+ "events": {
1612
+ "type": "array",
1613
+ "items": {
1614
+ "type": "string",
1615
+ "enum": [
1616
+ "insert",
1617
+ "update",
1618
+ "delete"
1619
+ ]
1620
+ },
1621
+ "default": [
1622
+ "insert",
1623
+ "update"
1624
+ ],
1625
+ "description": "Validation contexts"
1626
+ },
1627
+ "tags": {
1628
+ "type": "array",
1629
+ "items": {
1630
+ "type": "string"
1631
+ },
1632
+ "description": "Categorization tags (e.g., \"compliance\", \"billing\")"
1633
+ },
1634
+ "severity": {
1635
+ "type": "string",
1636
+ "enum": [
1637
+ "error",
1638
+ "warning",
1639
+ "info"
1640
+ ],
1641
+ "default": "error"
1642
+ },
1643
+ "message": {
1644
+ "type": "string",
1645
+ "description": "Error message to display to the user"
1646
+ },
1647
+ "type": {
1648
+ "type": "string",
1649
+ "const": "cross_field"
1650
+ },
1651
+ "condition": {
1652
+ "type": "string",
1653
+ "description": "Formula expression comparing fields (e.g. \"end_date > start_date\")"
1654
+ },
1655
+ "fields": {
1656
+ "type": "array",
1657
+ "items": {
1658
+ "type": "string"
1659
+ },
1660
+ "description": "Fields involved in the validation"
1661
+ }
1662
+ },
1663
+ "required": [
1664
+ "name",
1665
+ "message",
1666
+ "type",
1667
+ "condition",
1668
+ "fields"
1669
+ ],
1670
+ "additionalProperties": false
1671
+ },
1672
+ {
1673
+ "type": "object",
1674
+ "properties": {
1675
+ "name": {
1676
+ "type": "string",
1677
+ "pattern": "^[a-z_][a-z0-9_]*$",
1678
+ "description": "Unique rule name (snake_case)"
1679
+ },
1680
+ "label": {
1681
+ "type": "string",
1682
+ "description": "Human-readable label for the rule listing"
1683
+ },
1684
+ "description": {
1685
+ "type": "string",
1686
+ "description": "Administrative notes explaining the business reason"
1687
+ },
1688
+ "active": {
1689
+ "type": "boolean",
1690
+ "default": true
1691
+ },
1692
+ "events": {
1693
+ "type": "array",
1694
+ "items": {
1695
+ "type": "string",
1696
+ "enum": [
1697
+ "insert",
1698
+ "update",
1699
+ "delete"
1700
+ ]
1701
+ },
1702
+ "default": [
1703
+ "insert",
1704
+ "update"
1705
+ ],
1706
+ "description": "Validation contexts"
1707
+ },
1708
+ "tags": {
1709
+ "type": "array",
1710
+ "items": {
1711
+ "type": "string"
1712
+ },
1713
+ "description": "Categorization tags (e.g., \"compliance\", \"billing\")"
1714
+ },
1715
+ "severity": {
1716
+ "type": "string",
1717
+ "enum": [
1718
+ "error",
1719
+ "warning",
1720
+ "info"
1721
+ ],
1722
+ "default": "error"
1723
+ },
1724
+ "message": {
1725
+ "type": "string",
1726
+ "description": "Error message to display to the user"
1727
+ },
1728
+ "type": {
1729
+ "type": "string",
1730
+ "const": "json_schema"
1731
+ },
1732
+ "field": {
1733
+ "type": "string",
1734
+ "description": "JSON field to validate"
1735
+ },
1736
+ "schema": {
1737
+ "type": "object",
1738
+ "additionalProperties": {},
1739
+ "description": "JSON Schema object definition"
1740
+ }
1741
+ },
1742
+ "required": [
1743
+ "name",
1744
+ "message",
1745
+ "type",
1746
+ "field",
1747
+ "schema"
1748
+ ],
1749
+ "additionalProperties": false
1750
+ },
1751
+ {
1752
+ "type": "object",
1753
+ "properties": {
1754
+ "name": {
1755
+ "type": "string",
1756
+ "pattern": "^[a-z_][a-z0-9_]*$",
1757
+ "description": "Unique rule name (snake_case)"
1758
+ },
1759
+ "label": {
1760
+ "type": "string",
1761
+ "description": "Human-readable label for the rule listing"
1762
+ },
1763
+ "description": {
1764
+ "type": "string",
1765
+ "description": "Administrative notes explaining the business reason"
1766
+ },
1767
+ "active": {
1768
+ "type": "boolean",
1769
+ "default": true
1770
+ },
1771
+ "events": {
1772
+ "type": "array",
1773
+ "items": {
1774
+ "type": "string",
1775
+ "enum": [
1776
+ "insert",
1777
+ "update",
1778
+ "delete"
1779
+ ]
1780
+ },
1781
+ "default": [
1782
+ "insert",
1783
+ "update"
1784
+ ],
1785
+ "description": "Validation contexts"
1786
+ },
1787
+ "tags": {
1788
+ "type": "array",
1789
+ "items": {
1790
+ "type": "string"
1791
+ },
1792
+ "description": "Categorization tags (e.g., \"compliance\", \"billing\")"
1793
+ },
1794
+ "severity": {
1795
+ "type": "string",
1796
+ "enum": [
1797
+ "error",
1798
+ "warning",
1799
+ "info"
1800
+ ],
1801
+ "default": "error"
1802
+ },
1803
+ "message": {
1804
+ "type": "string",
1805
+ "description": "Error message to display to the user"
1806
+ },
1807
+ "type": {
1808
+ "type": "string",
1809
+ "const": "async"
1810
+ },
1811
+ "field": {
1812
+ "type": "string",
1813
+ "description": "Field to validate"
1814
+ },
1815
+ "validatorUrl": {
1816
+ "type": "string",
1817
+ "description": "External API endpoint for validation"
1818
+ },
1819
+ "method": {
1820
+ "type": "string",
1821
+ "enum": [
1822
+ "GET",
1823
+ "POST"
1824
+ ],
1825
+ "default": "GET",
1826
+ "description": "HTTP method for external call"
1827
+ },
1828
+ "headers": {
1829
+ "type": "object",
1830
+ "additionalProperties": {
1831
+ "type": "string"
1832
+ },
1833
+ "description": "Custom headers for the request"
1834
+ },
1835
+ "validatorFunction": {
1836
+ "type": "string",
1837
+ "description": "Reference to custom validator function"
1838
+ },
1839
+ "timeout": {
1840
+ "type": "number",
1841
+ "default": 5000,
1842
+ "description": "Timeout in milliseconds"
1843
+ },
1844
+ "debounce": {
1845
+ "type": "number",
1846
+ "description": "Debounce delay in milliseconds"
1847
+ },
1848
+ "params": {
1849
+ "type": "object",
1850
+ "additionalProperties": {},
1851
+ "description": "Additional parameters to pass to validator"
1852
+ }
1853
+ },
1854
+ "required": [
1855
+ "name",
1856
+ "message",
1857
+ "type",
1858
+ "field"
1859
+ ],
1860
+ "additionalProperties": false
1861
+ },
1862
+ {
1863
+ "type": "object",
1864
+ "properties": {
1865
+ "name": {
1866
+ "type": "string",
1867
+ "pattern": "^[a-z_][a-z0-9_]*$",
1868
+ "description": "Unique rule name (snake_case)"
1869
+ },
1870
+ "label": {
1871
+ "type": "string",
1872
+ "description": "Human-readable label for the rule listing"
1873
+ },
1874
+ "description": {
1875
+ "type": "string",
1876
+ "description": "Administrative notes explaining the business reason"
1877
+ },
1878
+ "active": {
1879
+ "type": "boolean",
1880
+ "default": true
1881
+ },
1882
+ "events": {
1883
+ "type": "array",
1884
+ "items": {
1885
+ "type": "string",
1886
+ "enum": [
1887
+ "insert",
1888
+ "update",
1889
+ "delete"
1890
+ ]
1891
+ },
1892
+ "default": [
1893
+ "insert",
1894
+ "update"
1895
+ ],
1896
+ "description": "Validation contexts"
1897
+ },
1898
+ "tags": {
1899
+ "type": "array",
1900
+ "items": {
1901
+ "type": "string"
1902
+ },
1903
+ "description": "Categorization tags (e.g., \"compliance\", \"billing\")"
1904
+ },
1905
+ "severity": {
1906
+ "type": "string",
1907
+ "enum": [
1908
+ "error",
1909
+ "warning",
1910
+ "info"
1911
+ ],
1912
+ "default": "error"
1913
+ },
1914
+ "message": {
1915
+ "type": "string",
1916
+ "description": "Error message to display to the user"
1917
+ },
1918
+ "type": {
1919
+ "type": "string",
1920
+ "const": "custom"
1921
+ },
1922
+ "handler": {
1923
+ "type": "string",
1924
+ "description": "Name of the custom validation function registered in the system"
1925
+ },
1926
+ "params": {
1927
+ "type": "object",
1928
+ "additionalProperties": {},
1929
+ "description": "Parameters passed to the custom handler"
1930
+ }
1931
+ },
1932
+ "required": [
1933
+ "name",
1934
+ "message",
1935
+ "type",
1936
+ "handler"
1937
+ ],
1938
+ "additionalProperties": false
1939
+ },
1940
+ {}
1941
+ ],
1942
+ "description": "Validation rule to apply when condition is true"
1943
+ },
1944
+ "otherwise": {
1945
+ "description": "Validation rule to apply when condition is false"
1946
+ }
1947
+ },
1948
+ "required": [
1949
+ "name",
1950
+ "message",
1951
+ "type",
1952
+ "when",
1953
+ "then"
1954
+ ],
1955
+ "additionalProperties": false
1956
+ }
1957
+ ]
1958
+ },
1959
+ "description": "Object-level validation rules"
406
1960
  },
407
- "nameField": {
1961
+ "titleFormat": {
408
1962
  "type": "string",
409
- "description": "Which field represents the record name/title (usually \"name\")"
1963
+ "description": "Title expression (e.g. \"{name} - {code}\"). Overrides nameField."
1964
+ },
1965
+ "compactLayout": {
1966
+ "type": "array",
1967
+ "items": {
1968
+ "type": "string"
1969
+ },
1970
+ "description": "Primary fields for hover/cards/lookups"
1971
+ },
1972
+ "search": {
1973
+ "type": "object",
1974
+ "properties": {
1975
+ "fields": {
1976
+ "type": "array",
1977
+ "items": {
1978
+ "type": "string"
1979
+ },
1980
+ "description": "Fields to index for full-text search weighting"
1981
+ },
1982
+ "displayFields": {
1983
+ "type": "array",
1984
+ "items": {
1985
+ "type": "string"
1986
+ },
1987
+ "description": "Fields to display in search result cards"
1988
+ },
1989
+ "filters": {
1990
+ "type": "array",
1991
+ "items": {
1992
+ "type": "string"
1993
+ },
1994
+ "description": "Default filters for search results"
1995
+ }
1996
+ },
1997
+ "required": [
1998
+ "fields"
1999
+ ],
2000
+ "additionalProperties": false,
2001
+ "description": "Search engine configuration"
410
2002
  },
411
2003
  "enable": {
412
2004
  "type": "object",
413
2005
  "properties": {
414
2006
  "trackHistory": {
415
2007
  "type": "boolean",
416
- "default": false
2008
+ "default": false,
2009
+ "description": "Enable field history tracking for audit compliance"
417
2010
  },
418
2011
  "searchable": {
419
2012
  "type": "boolean",
420
- "default": true
2013
+ "default": true,
2014
+ "description": "Index records for global search"
421
2015
  },
422
2016
  "apiEnabled": {
423
2017
  "type": "boolean",
424
- "default": true
2018
+ "default": true,
2019
+ "description": "Expose object via automatic APIs"
425
2020
  },
426
2021
  "apiMethods": {
427
2022
  "type": "array",
@@ -434,10 +2029,7 @@
434
2029
  "update",
435
2030
  "delete",
436
2031
  "upsert",
437
- "bulkCreate",
438
- "bulkUpdate",
439
- "bulkDelete",
440
- "bulkUpsert",
2032
+ "bulk",
441
2033
  "aggregate",
442
2034
  "history",
443
2035
  "search",
@@ -447,23 +2039,41 @@
447
2039
  "export"
448
2040
  ]
449
2041
  },
450
- "description": "Allowed API operations"
2042
+ "description": "Whitelist of allowed API operations"
451
2043
  },
452
2044
  "files": {
453
2045
  "type": "boolean",
454
- "default": false
2046
+ "default": false,
2047
+ "description": "Enable file attachments and document management"
455
2048
  },
456
- "feedEnabled": {
2049
+ "feeds": {
457
2050
  "type": "boolean",
458
- "default": false
2051
+ "default": false,
2052
+ "description": "Enable social feed, comments, and mentions (Chatter-like)"
2053
+ },
2054
+ "activities": {
2055
+ "type": "boolean",
2056
+ "default": false,
2057
+ "description": "Enable standard tasks and events tracking"
459
2058
  },
460
2059
  "trash": {
461
2060
  "type": "boolean",
462
- "default": true
2061
+ "default": true,
2062
+ "description": "Enable soft-delete with restore capability"
2063
+ },
2064
+ "mru": {
2065
+ "type": "boolean",
2066
+ "default": true,
2067
+ "description": "Track Most Recently Used (MRU) list for users"
2068
+ },
2069
+ "clone": {
2070
+ "type": "boolean",
2071
+ "default": true,
2072
+ "description": "Allow record deep cloning"
463
2073
  }
464
2074
  },
465
2075
  "additionalProperties": false,
466
- "description": "Enabled system capabilities"
2076
+ "description": "Enabled system features modules"
467
2077
  }
468
2078
  },
469
2079
  "required": [