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