@objectstack/spec 0.1.1 → 0.1.2

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 (136) hide show
  1. package/README.md +73 -1
  2. package/dist/api/contract.zod.d.ts +1733 -0
  3. package/dist/api/contract.zod.d.ts.map +1 -0
  4. package/dist/api/contract.zod.js +138 -0
  5. package/dist/data/dataset.zod.d.ts +2 -2
  6. package/dist/data/field.zod.d.ts +1648 -10
  7. package/dist/data/field.zod.d.ts.map +1 -1
  8. package/dist/data/field.zod.js +149 -8
  9. package/dist/data/mapping.zod.d.ts +215 -2
  10. package/dist/data/mapping.zod.d.ts.map +1 -1
  11. package/dist/data/object.zod.d.ts +505 -25
  12. package/dist/data/object.zod.d.ts.map +1 -1
  13. package/dist/data/object.zod.js +32 -5
  14. package/dist/data/query.zod.d.ts +349 -0
  15. package/dist/data/query.zod.d.ts.map +1 -1
  16. package/dist/data/query.zod.js +77 -1
  17. package/dist/data/trigger.zod.d.ts +354 -0
  18. package/dist/data/trigger.zod.d.ts.map +1 -0
  19. package/dist/data/trigger.zod.js +195 -0
  20. package/dist/data/validation.zod.d.ts +83 -43
  21. package/dist/data/validation.zod.d.ts.map +1 -1
  22. package/dist/data/validation.zod.js +51 -5
  23. package/dist/index.d.ts +8 -0
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +9 -0
  26. package/dist/system/api.zod.d.ts +130 -4
  27. package/dist/system/api.zod.d.ts.map +1 -1
  28. package/dist/system/api.zod.js +4 -1
  29. package/dist/system/datasource.zod.d.ts +89 -6
  30. package/dist/system/datasource.zod.d.ts.map +1 -1
  31. package/dist/system/datasource.zod.js +33 -5
  32. package/dist/system/discovery.zod.d.ts +174 -0
  33. package/dist/system/discovery.zod.d.ts.map +1 -0
  34. package/dist/system/discovery.zod.js +53 -0
  35. package/dist/system/driver.zod.d.ts +1525 -0
  36. package/dist/system/driver.zod.d.ts.map +1 -0
  37. package/dist/system/driver.zod.js +290 -0
  38. package/dist/system/license.zod.d.ts +2 -2
  39. package/dist/system/manifest.zod.d.ts +323 -52
  40. package/dist/system/manifest.zod.d.ts.map +1 -1
  41. package/dist/system/manifest.zod.js +91 -17
  42. package/dist/system/plugin.zod.d.ts +3516 -0
  43. package/dist/system/plugin.zod.d.ts.map +1 -0
  44. package/dist/system/plugin.zod.js +226 -0
  45. package/dist/system/territory.zod.d.ts +1 -1
  46. package/dist/system/webhook.zod.d.ts +3 -3
  47. package/dist/ui/action.zod.d.ts +19 -12
  48. package/dist/ui/action.zod.d.ts.map +1 -1
  49. package/dist/ui/action.zod.js +7 -1
  50. package/dist/ui/app.zod.d.ts +109 -3
  51. package/dist/ui/app.zod.d.ts.map +1 -1
  52. package/dist/ui/app.zod.js +13 -2
  53. package/dist/ui/dashboard.zod.d.ts +9 -3
  54. package/dist/ui/dashboard.zod.d.ts.map +1 -1
  55. package/dist/ui/dashboard.zod.js +7 -1
  56. package/dist/ui/page.zod.d.ts +6 -6
  57. package/dist/ui/report.zod.d.ts +9 -0
  58. package/dist/ui/report.zod.d.ts.map +1 -1
  59. package/dist/ui/report.zod.js +7 -1
  60. package/dist/ui/theme.zod.d.ts +1221 -0
  61. package/dist/ui/theme.zod.d.ts.map +1 -0
  62. package/dist/ui/theme.zod.js +202 -0
  63. package/dist/ui/widget.zod.d.ts +350 -0
  64. package/dist/ui/widget.zod.d.ts.map +1 -0
  65. package/dist/ui/widget.zod.js +66 -0
  66. package/json-schema/Action.json +8 -2
  67. package/json-schema/ActionParam.json +8 -2
  68. package/json-schema/Address.json +40 -0
  69. package/json-schema/AggregationFunction.json +19 -0
  70. package/json-schema/AggregationNode.json +42 -0
  71. package/json-schema/Animation.json +56 -0
  72. package/json-schema/ApiCapabilities.json +28 -0
  73. package/json-schema/ApiError.json +27 -0
  74. package/json-schema/ApiRoutes.json +41 -0
  75. package/json-schema/App.json +13 -2
  76. package/json-schema/AsyncValidation.json +70 -0
  77. package/json-schema/BaseResponse.json +63 -0
  78. package/json-schema/BorderRadius.json +44 -0
  79. package/json-schema/Breakpoints.json +36 -0
  80. package/json-schema/BulkRequest.json +29 -0
  81. package/json-schema/BulkResponse.json +108 -0
  82. package/json-schema/ColorPalette.json +83 -0
  83. package/json-schema/ConditionalValidation.json +793 -0
  84. package/json-schema/CreateRequest.json +20 -0
  85. package/json-schema/CrossFieldValidation.json +56 -0
  86. package/json-schema/CustomValidator.json +57 -0
  87. package/json-schema/Datasource.json +0 -18
  88. package/json-schema/DeleteResponse.json +68 -0
  89. package/json-schema/Discovery.json +114 -0
  90. package/json-schema/DriverCapabilities.json +39 -0
  91. package/json-schema/DriverDefinition.json +66 -0
  92. package/json-schema/DriverInterface.json +58 -0
  93. package/json-schema/DriverOptions.json +23 -0
  94. package/json-schema/DriverType.json +1 -18
  95. package/json-schema/ExportRequest.json +786 -0
  96. package/json-schema/Field.json +75 -4
  97. package/json-schema/FieldType.json +8 -2
  98. package/json-schema/FieldWidgetProps.json +327 -0
  99. package/json-schema/I18nContext.json +12 -0
  100. package/json-schema/JoinNode.json +455 -0
  101. package/json-schema/JoinType.json +15 -0
  102. package/json-schema/ListRecordResponse.json +103 -0
  103. package/json-schema/LocationCoordinates.json +36 -0
  104. package/json-schema/Logger.json +25 -0
  105. package/json-schema/Manifest.json +243 -18
  106. package/json-schema/Mapping.json +328 -0
  107. package/json-schema/ModificationResult.json +46 -0
  108. package/json-schema/Object.json +103 -6
  109. package/json-schema/ObjectCapabilities.json +26 -0
  110. package/json-schema/ObjectQLClient.json +12 -0
  111. package/json-schema/Plugin.json +20 -0
  112. package/json-schema/PluginContext.json +91 -0
  113. package/json-schema/PluginLifecycle.json +11 -0
  114. package/json-schema/Query.json +328 -0
  115. package/json-schema/RecordData.json +11 -0
  116. package/json-schema/Router.json +12 -0
  117. package/json-schema/Scheduler.json +12 -0
  118. package/json-schema/ScopedStorage.json +12 -0
  119. package/json-schema/Shadow.json +44 -0
  120. package/json-schema/SingleRecordResponse.json +69 -0
  121. package/json-schema/Spacing.json +64 -0
  122. package/json-schema/SystemAPI.json +12 -0
  123. package/json-schema/Theme.json +543 -0
  124. package/json-schema/ThemeMode.json +14 -0
  125. package/json-schema/Trigger.json +73 -0
  126. package/json-schema/TriggerAction.json +14 -0
  127. package/json-schema/TriggerContext.json +61 -0
  128. package/json-schema/TriggerTiming.json +13 -0
  129. package/json-schema/Typography.json +142 -0
  130. package/json-schema/UpdateRequest.json +20 -0
  131. package/json-schema/ValidationRule.json +583 -0
  132. package/json-schema/WindowFunction.json +24 -0
  133. package/json-schema/WindowFunctionNode.json +104 -0
  134. package/json-schema/WindowSpec.json +65 -0
  135. package/json-schema/ZIndex.json +44 -0
  136. package/package.json +8 -3
@@ -0,0 +1,543 @@
1
+ {
2
+ "$ref": "#/definitions/Theme",
3
+ "definitions": {
4
+ "Theme": {
5
+ "type": "object",
6
+ "properties": {
7
+ "name": {
8
+ "type": "string",
9
+ "pattern": "^[a-z_][a-z0-9_]*$",
10
+ "description": "Unique theme identifier (snake_case)"
11
+ },
12
+ "label": {
13
+ "type": "string",
14
+ "description": "Human-readable theme name"
15
+ },
16
+ "description": {
17
+ "type": "string",
18
+ "description": "Theme description"
19
+ },
20
+ "mode": {
21
+ "type": "string",
22
+ "enum": [
23
+ "light",
24
+ "dark",
25
+ "auto"
26
+ ],
27
+ "default": "light",
28
+ "description": "Theme mode (light, dark, or auto)"
29
+ },
30
+ "colors": {
31
+ "type": "object",
32
+ "properties": {
33
+ "primary": {
34
+ "type": "string",
35
+ "description": "Primary brand color (hex, rgb, or hsl)"
36
+ },
37
+ "secondary": {
38
+ "type": "string",
39
+ "description": "Secondary brand color"
40
+ },
41
+ "accent": {
42
+ "type": "string",
43
+ "description": "Accent color for highlights"
44
+ },
45
+ "success": {
46
+ "type": "string",
47
+ "description": "Success state color (default: green)"
48
+ },
49
+ "warning": {
50
+ "type": "string",
51
+ "description": "Warning state color (default: yellow)"
52
+ },
53
+ "error": {
54
+ "type": "string",
55
+ "description": "Error state color (default: red)"
56
+ },
57
+ "info": {
58
+ "type": "string",
59
+ "description": "Info state color (default: blue)"
60
+ },
61
+ "background": {
62
+ "type": "string",
63
+ "description": "Background color"
64
+ },
65
+ "surface": {
66
+ "type": "string",
67
+ "description": "Surface/card background color"
68
+ },
69
+ "text": {
70
+ "type": "string",
71
+ "description": "Primary text color"
72
+ },
73
+ "textSecondary": {
74
+ "type": "string",
75
+ "description": "Secondary text color"
76
+ },
77
+ "border": {
78
+ "type": "string",
79
+ "description": "Border color"
80
+ },
81
+ "disabled": {
82
+ "type": "string",
83
+ "description": "Disabled state color"
84
+ },
85
+ "primaryLight": {
86
+ "type": "string",
87
+ "description": "Lighter shade of primary"
88
+ },
89
+ "primaryDark": {
90
+ "type": "string",
91
+ "description": "Darker shade of primary"
92
+ },
93
+ "secondaryLight": {
94
+ "type": "string",
95
+ "description": "Lighter shade of secondary"
96
+ },
97
+ "secondaryDark": {
98
+ "type": "string",
99
+ "description": "Darker shade of secondary"
100
+ }
101
+ },
102
+ "required": [
103
+ "primary"
104
+ ],
105
+ "additionalProperties": false,
106
+ "description": "Color palette configuration"
107
+ },
108
+ "typography": {
109
+ "type": "object",
110
+ "properties": {
111
+ "fontFamily": {
112
+ "type": "object",
113
+ "properties": {
114
+ "base": {
115
+ "type": "string",
116
+ "description": "Base font family (default: system fonts)"
117
+ },
118
+ "heading": {
119
+ "type": "string",
120
+ "description": "Heading font family"
121
+ },
122
+ "mono": {
123
+ "type": "string",
124
+ "description": "Monospace font family for code"
125
+ }
126
+ },
127
+ "additionalProperties": false
128
+ },
129
+ "fontSize": {
130
+ "type": "object",
131
+ "properties": {
132
+ "xs": {
133
+ "type": "string",
134
+ "description": "Extra small font size (e.g., 0.75rem)"
135
+ },
136
+ "sm": {
137
+ "type": "string",
138
+ "description": "Small font size (e.g., 0.875rem)"
139
+ },
140
+ "base": {
141
+ "type": "string",
142
+ "description": "Base font size (e.g., 1rem)"
143
+ },
144
+ "lg": {
145
+ "type": "string",
146
+ "description": "Large font size (e.g., 1.125rem)"
147
+ },
148
+ "xl": {
149
+ "type": "string",
150
+ "description": "Extra large font size (e.g., 1.25rem)"
151
+ },
152
+ "2xl": {
153
+ "type": "string",
154
+ "description": "2X large font size (e.g., 1.5rem)"
155
+ },
156
+ "3xl": {
157
+ "type": "string",
158
+ "description": "3X large font size (e.g., 1.875rem)"
159
+ },
160
+ "4xl": {
161
+ "type": "string",
162
+ "description": "4X large font size (e.g., 2.25rem)"
163
+ }
164
+ },
165
+ "additionalProperties": false
166
+ },
167
+ "fontWeight": {
168
+ "type": "object",
169
+ "properties": {
170
+ "light": {
171
+ "type": "number",
172
+ "description": "Light weight (default: 300)"
173
+ },
174
+ "normal": {
175
+ "type": "number",
176
+ "description": "Normal weight (default: 400)"
177
+ },
178
+ "medium": {
179
+ "type": "number",
180
+ "description": "Medium weight (default: 500)"
181
+ },
182
+ "semibold": {
183
+ "type": "number",
184
+ "description": "Semibold weight (default: 600)"
185
+ },
186
+ "bold": {
187
+ "type": "number",
188
+ "description": "Bold weight (default: 700)"
189
+ }
190
+ },
191
+ "additionalProperties": false
192
+ },
193
+ "lineHeight": {
194
+ "type": "object",
195
+ "properties": {
196
+ "tight": {
197
+ "type": "string",
198
+ "description": "Tight line height (e.g., 1.25)"
199
+ },
200
+ "normal": {
201
+ "type": "string",
202
+ "description": "Normal line height (e.g., 1.5)"
203
+ },
204
+ "relaxed": {
205
+ "type": "string",
206
+ "description": "Relaxed line height (e.g., 1.75)"
207
+ },
208
+ "loose": {
209
+ "type": "string",
210
+ "description": "Loose line height (e.g., 2)"
211
+ }
212
+ },
213
+ "additionalProperties": false
214
+ },
215
+ "letterSpacing": {
216
+ "type": "object",
217
+ "properties": {
218
+ "tighter": {
219
+ "type": "string",
220
+ "description": "Tighter letter spacing (e.g., -0.05em)"
221
+ },
222
+ "tight": {
223
+ "type": "string",
224
+ "description": "Tight letter spacing (e.g., -0.025em)"
225
+ },
226
+ "normal": {
227
+ "type": "string",
228
+ "description": "Normal letter spacing (e.g., 0)"
229
+ },
230
+ "wide": {
231
+ "type": "string",
232
+ "description": "Wide letter spacing (e.g., 0.025em)"
233
+ },
234
+ "wider": {
235
+ "type": "string",
236
+ "description": "Wider letter spacing (e.g., 0.05em)"
237
+ }
238
+ },
239
+ "additionalProperties": false
240
+ }
241
+ },
242
+ "additionalProperties": false,
243
+ "description": "Typography settings"
244
+ },
245
+ "spacing": {
246
+ "type": "object",
247
+ "properties": {
248
+ "0": {
249
+ "type": "string",
250
+ "description": "0 spacing (0)"
251
+ },
252
+ "1": {
253
+ "type": "string",
254
+ "description": "Spacing unit 1 (e.g., 0.25rem)"
255
+ },
256
+ "2": {
257
+ "type": "string",
258
+ "description": "Spacing unit 2 (e.g., 0.5rem)"
259
+ },
260
+ "3": {
261
+ "type": "string",
262
+ "description": "Spacing unit 3 (e.g., 0.75rem)"
263
+ },
264
+ "4": {
265
+ "type": "string",
266
+ "description": "Spacing unit 4 (e.g., 1rem)"
267
+ },
268
+ "5": {
269
+ "type": "string",
270
+ "description": "Spacing unit 5 (e.g., 1.25rem)"
271
+ },
272
+ "6": {
273
+ "type": "string",
274
+ "description": "Spacing unit 6 (e.g., 1.5rem)"
275
+ },
276
+ "8": {
277
+ "type": "string",
278
+ "description": "Spacing unit 8 (e.g., 2rem)"
279
+ },
280
+ "10": {
281
+ "type": "string",
282
+ "description": "Spacing unit 10 (e.g., 2.5rem)"
283
+ },
284
+ "12": {
285
+ "type": "string",
286
+ "description": "Spacing unit 12 (e.g., 3rem)"
287
+ },
288
+ "16": {
289
+ "type": "string",
290
+ "description": "Spacing unit 16 (e.g., 4rem)"
291
+ },
292
+ "20": {
293
+ "type": "string",
294
+ "description": "Spacing unit 20 (e.g., 5rem)"
295
+ },
296
+ "24": {
297
+ "type": "string",
298
+ "description": "Spacing unit 24 (e.g., 6rem)"
299
+ }
300
+ },
301
+ "additionalProperties": false,
302
+ "description": "Spacing scale"
303
+ },
304
+ "borderRadius": {
305
+ "type": "object",
306
+ "properties": {
307
+ "none": {
308
+ "type": "string",
309
+ "description": "No border radius (0)"
310
+ },
311
+ "sm": {
312
+ "type": "string",
313
+ "description": "Small border radius (e.g., 0.125rem)"
314
+ },
315
+ "base": {
316
+ "type": "string",
317
+ "description": "Base border radius (e.g., 0.25rem)"
318
+ },
319
+ "md": {
320
+ "type": "string",
321
+ "description": "Medium border radius (e.g., 0.375rem)"
322
+ },
323
+ "lg": {
324
+ "type": "string",
325
+ "description": "Large border radius (e.g., 0.5rem)"
326
+ },
327
+ "xl": {
328
+ "type": "string",
329
+ "description": "Extra large border radius (e.g., 0.75rem)"
330
+ },
331
+ "2xl": {
332
+ "type": "string",
333
+ "description": "2X large border radius (e.g., 1rem)"
334
+ },
335
+ "full": {
336
+ "type": "string",
337
+ "description": "Full border radius (50%)"
338
+ }
339
+ },
340
+ "additionalProperties": false,
341
+ "description": "Border radius scale"
342
+ },
343
+ "shadows": {
344
+ "type": "object",
345
+ "properties": {
346
+ "none": {
347
+ "type": "string",
348
+ "description": "No shadow"
349
+ },
350
+ "sm": {
351
+ "type": "string",
352
+ "description": "Small shadow"
353
+ },
354
+ "base": {
355
+ "type": "string",
356
+ "description": "Base shadow"
357
+ },
358
+ "md": {
359
+ "type": "string",
360
+ "description": "Medium shadow"
361
+ },
362
+ "lg": {
363
+ "type": "string",
364
+ "description": "Large shadow"
365
+ },
366
+ "xl": {
367
+ "type": "string",
368
+ "description": "Extra large shadow"
369
+ },
370
+ "2xl": {
371
+ "type": "string",
372
+ "description": "2X large shadow"
373
+ },
374
+ "inner": {
375
+ "type": "string",
376
+ "description": "Inner shadow (inset)"
377
+ }
378
+ },
379
+ "additionalProperties": false,
380
+ "description": "Box shadow effects"
381
+ },
382
+ "breakpoints": {
383
+ "type": "object",
384
+ "properties": {
385
+ "xs": {
386
+ "type": "string",
387
+ "description": "Extra small breakpoint (e.g., 480px)"
388
+ },
389
+ "sm": {
390
+ "type": "string",
391
+ "description": "Small breakpoint (e.g., 640px)"
392
+ },
393
+ "md": {
394
+ "type": "string",
395
+ "description": "Medium breakpoint (e.g., 768px)"
396
+ },
397
+ "lg": {
398
+ "type": "string",
399
+ "description": "Large breakpoint (e.g., 1024px)"
400
+ },
401
+ "xl": {
402
+ "type": "string",
403
+ "description": "Extra large breakpoint (e.g., 1280px)"
404
+ },
405
+ "2xl": {
406
+ "type": "string",
407
+ "description": "2X large breakpoint (e.g., 1536px)"
408
+ }
409
+ },
410
+ "additionalProperties": false,
411
+ "description": "Responsive breakpoints"
412
+ },
413
+ "animation": {
414
+ "type": "object",
415
+ "properties": {
416
+ "duration": {
417
+ "type": "object",
418
+ "properties": {
419
+ "fast": {
420
+ "type": "string",
421
+ "description": "Fast animation (e.g., 150ms)"
422
+ },
423
+ "base": {
424
+ "type": "string",
425
+ "description": "Base animation (e.g., 300ms)"
426
+ },
427
+ "slow": {
428
+ "type": "string",
429
+ "description": "Slow animation (e.g., 500ms)"
430
+ }
431
+ },
432
+ "additionalProperties": false
433
+ },
434
+ "timing": {
435
+ "type": "object",
436
+ "properties": {
437
+ "linear": {
438
+ "type": "string",
439
+ "description": "Linear timing function"
440
+ },
441
+ "ease": {
442
+ "type": "string",
443
+ "description": "Ease timing function"
444
+ },
445
+ "easeIn": {
446
+ "type": "string",
447
+ "description": "Ease-in timing function"
448
+ },
449
+ "easeOut": {
450
+ "type": "string",
451
+ "description": "Ease-out timing function"
452
+ },
453
+ "easeInOut": {
454
+ "type": "string",
455
+ "description": "Ease-in-out timing function"
456
+ }
457
+ },
458
+ "additionalProperties": false
459
+ }
460
+ },
461
+ "additionalProperties": false,
462
+ "description": "Animation settings"
463
+ },
464
+ "zIndex": {
465
+ "type": "object",
466
+ "properties": {
467
+ "base": {
468
+ "type": "number",
469
+ "description": "Base z-index (e.g., 0)"
470
+ },
471
+ "dropdown": {
472
+ "type": "number",
473
+ "description": "Dropdown z-index (e.g., 1000)"
474
+ },
475
+ "sticky": {
476
+ "type": "number",
477
+ "description": "Sticky z-index (e.g., 1020)"
478
+ },
479
+ "fixed": {
480
+ "type": "number",
481
+ "description": "Fixed z-index (e.g., 1030)"
482
+ },
483
+ "modalBackdrop": {
484
+ "type": "number",
485
+ "description": "Modal backdrop z-index (e.g., 1040)"
486
+ },
487
+ "modal": {
488
+ "type": "number",
489
+ "description": "Modal z-index (e.g., 1050)"
490
+ },
491
+ "popover": {
492
+ "type": "number",
493
+ "description": "Popover z-index (e.g., 1060)"
494
+ },
495
+ "tooltip": {
496
+ "type": "number",
497
+ "description": "Tooltip z-index (e.g., 1070)"
498
+ }
499
+ },
500
+ "additionalProperties": false,
501
+ "description": "Z-index scale for layering"
502
+ },
503
+ "customVars": {
504
+ "type": "object",
505
+ "additionalProperties": {
506
+ "type": "string"
507
+ },
508
+ "description": "Custom CSS variables (key-value pairs)"
509
+ },
510
+ "logo": {
511
+ "type": "object",
512
+ "properties": {
513
+ "light": {
514
+ "type": "string",
515
+ "description": "Logo URL for light mode"
516
+ },
517
+ "dark": {
518
+ "type": "string",
519
+ "description": "Logo URL for dark mode"
520
+ },
521
+ "favicon": {
522
+ "type": "string",
523
+ "description": "Favicon URL"
524
+ }
525
+ },
526
+ "additionalProperties": false,
527
+ "description": "Logo assets"
528
+ },
529
+ "extends": {
530
+ "type": "string",
531
+ "description": "Base theme to extend from"
532
+ }
533
+ },
534
+ "required": [
535
+ "name",
536
+ "label",
537
+ "colors"
538
+ ],
539
+ "additionalProperties": false
540
+ }
541
+ },
542
+ "$schema": "http://json-schema.org/draft-07/schema#"
543
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "$ref": "#/definitions/ThemeMode",
3
+ "definitions": {
4
+ "ThemeMode": {
5
+ "type": "string",
6
+ "enum": [
7
+ "light",
8
+ "dark",
9
+ "auto"
10
+ ]
11
+ }
12
+ },
13
+ "$schema": "http://json-schema.org/draft-07/schema#"
14
+ }
@@ -0,0 +1,73 @@
1
+ {
2
+ "$ref": "#/definitions/Trigger",
3
+ "definitions": {
4
+ "Trigger": {
5
+ "type": "object",
6
+ "properties": {
7
+ "name": {
8
+ "type": "string",
9
+ "pattern": "^[a-z_][a-z0-9_]*$",
10
+ "description": "Trigger name (snake_case)"
11
+ },
12
+ "object": {
13
+ "type": "string",
14
+ "description": "Target object name"
15
+ },
16
+ "timing": {
17
+ "type": "string",
18
+ "enum": [
19
+ "before",
20
+ "after"
21
+ ],
22
+ "description": "Execution timing"
23
+ },
24
+ "action": {
25
+ "anyOf": [
26
+ {
27
+ "type": "string",
28
+ "enum": [
29
+ "insert",
30
+ "update",
31
+ "delete"
32
+ ]
33
+ },
34
+ {
35
+ "type": "array",
36
+ "items": {
37
+ "type": "string",
38
+ "enum": [
39
+ "insert",
40
+ "update",
41
+ "delete"
42
+ ]
43
+ }
44
+ }
45
+ ],
46
+ "description": "Database operation(s) to trigger on"
47
+ },
48
+ "description": {
49
+ "type": "string",
50
+ "description": "Trigger description"
51
+ },
52
+ "active": {
53
+ "type": "boolean",
54
+ "default": true,
55
+ "description": "Is trigger active"
56
+ },
57
+ "order": {
58
+ "type": "number",
59
+ "default": 0,
60
+ "description": "Execution order"
61
+ }
62
+ },
63
+ "required": [
64
+ "name",
65
+ "object",
66
+ "timing",
67
+ "action"
68
+ ],
69
+ "additionalProperties": false
70
+ }
71
+ },
72
+ "$schema": "http://json-schema.org/draft-07/schema#"
73
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "$ref": "#/definitions/TriggerAction",
3
+ "definitions": {
4
+ "TriggerAction": {
5
+ "type": "string",
6
+ "enum": [
7
+ "insert",
8
+ "update",
9
+ "delete"
10
+ ]
11
+ }
12
+ },
13
+ "$schema": "http://json-schema.org/draft-07/schema#"
14
+ }