@objectstack/plugin-webhooks 11.9.0 → 12.0.0

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.
@@ -1,5 +1,5 @@
1
1
 
2
- > @objectstack/plugin-webhooks@11.9.0 build /home/runner/work/framework/framework/packages/plugins/plugin-webhooks
2
+ > @objectstack/plugin-webhooks@12.0.0 build /home/runner/work/framework/framework/packages/plugins/plugin-webhooks
3
3
  > tsup
4
4
 
5
5
  CLI Building entry: src/index.ts, src/schema.ts
@@ -12,25 +12,25 @@
12
12
  CJS Build start
13
13
  ESM dist/index.js 12.73 KB
14
14
  ESM dist/schema.js 111.00 B
15
- ESM dist/chunk-2V7E3ABN.js 4.82 KB
15
+ ESM dist/chunk-HSSV22TO.js 4.82 KB
16
16
  ESM dist/translations-AV47AVPV.js 19.41 KB
17
17
  ESM dist/index.js.map 32.44 KB
18
18
  ESM dist/schema.js.map 71.00 B
19
- ESM dist/chunk-2V7E3ABN.js.map 9.27 KB
19
+ ESM dist/chunk-HSSV22TO.js.map 9.27 KB
20
20
  ESM dist/translations-AV47AVPV.js.map 30.54 KB
21
- ESM ⚡️ Build success in 1040ms
21
+ ESM ⚡️ Build success in 878ms
22
22
  CJS dist/index.cjs 16.40 KB
23
23
  CJS dist/schema.cjs 220.00 B
24
- CJS dist/chunk-EHLUIU42.cjs 4.96 KB
24
+ CJS dist/chunk-RA3REIOA.cjs 4.96 KB
25
25
  CJS dist/translations-OAKKANSP.cjs 19.50 KB
26
26
  CJS dist/index.cjs.map 30.14 KB
27
27
  CJS dist/schema.cjs.map 278.00 B
28
- CJS dist/chunk-EHLUIU42.cjs.map 11.10 KB
28
+ CJS dist/chunk-RA3REIOA.cjs.map 11.10 KB
29
29
  CJS dist/translations-OAKKANSP.cjs.map 34.65 KB
30
- CJS ⚡️ Build success in 1056ms
30
+ CJS ⚡️ Build success in 1125ms
31
31
  DTS Build start
32
- DTS ⚡️ Build success in 23166ms
32
+ DTS ⚡️ Build success in 22629ms
33
33
  DTS dist/index.d.ts 6.97 KB
34
- DTS dist/schema.d.ts 128.14 KB
34
+ DTS dist/schema.d.ts 127.06 KB
35
35
  DTS dist/index.d.cts 6.97 KB
36
- DTS dist/schema.d.cts 128.14 KB
36
+ DTS dist/schema.d.cts 127.06 KB
package/CHANGELOG.md CHANGED
@@ -1,5 +1,41 @@
1
1
  # @objectstack/plugin-webhooks
2
2
 
3
+ ## 12.0.0
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [a8df396]
8
+ - Updated dependencies [e695fe0]
9
+ - Updated dependencies [7c09621]
10
+ - Updated dependencies [7709db4]
11
+ - Updated dependencies [2082109]
12
+ - Updated dependencies [7c09621]
13
+ - Updated dependencies [9860de4]
14
+ - Updated dependencies [069c205]
15
+ - @objectstack/spec@12.0.0
16
+ - @objectstack/core@12.0.0
17
+ - @objectstack/service-messaging@12.0.0
18
+
19
+ ## 11.10.0
20
+
21
+ ### Patch Changes
22
+
23
+ - 6a9397e: Retire the deprecated `compactLayout` alias for `highlightFields` (framework#2536, closes the ADR-0085 deprecation window).
24
+
25
+ - `ObjectSchema` no longer declares `compactLayout`: `create()` rejects it like any unknown key; lenient `parse()` strips it (no silent aliasing).
26
+ - The parse-time alias AND the `highlightFields → compactLayout` back-fill transition mirror are removed from `normalizeSemanticRoleAliases`. Served metadata now carries the canonical key only.
27
+ - All remaining first-party authors (27 system objects across plugin-audit / approvals / security / sharing / webhooks / service-storage / automation / messaging / realtime — missed by the #2521 sweep, caught by the type gate) renamed to `highlightFields`.
28
+ - The downstream smoke pin moves to hotcrm v1.2.2 (hotcrm#424: same rename + deps ^11.7.0).
29
+ - Consumers were switched in objectui#2168 and shipped via the console pin bump (#2526); this closes the window scheduled there. The dogfood mirror assertion (#2528) flips to `compactLayout: undefined` in this same change, per the plan it carried.
30
+
31
+ Version note: minor, not major — the key was deprecated-with-alias for a full release window, all first-party consumers/authors are migrated, and the spec api-surface gate reports no export changes (same documented-exception path as the ADR-0085 removals in 11.7.0). External metadata still authoring `compactLayout` will now fail `create()` loudly with the standard unknown-key error naming the key.
32
+
33
+ - Updated dependencies [6a9397e]
34
+ - Updated dependencies [c0efe5d]
35
+ - @objectstack/spec@11.10.0
36
+ - @objectstack/service-messaging@11.10.0
37
+ - @objectstack/core@11.10.0
38
+
3
39
  ## 11.9.0
4
40
 
5
41
  ### Patch Changes
@@ -18,7 +18,7 @@ var SysWebhook = ObjectSchema.create({
18
18
  nameField: "name",
19
19
  // [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)
20
20
  titleFormat: "{label}",
21
- compactLayout: ["name", "object_name", "url", "active", "updated_at"],
21
+ highlightFields: ["name", "object_name", "url", "active", "updated_at"],
22
22
  listViews: {
23
23
  active: {
24
24
  type: "grid",
@@ -137,4 +137,4 @@ var SysWebhook = ObjectSchema.create({
137
137
  export {
138
138
  SysWebhook
139
139
  };
140
- //# sourceMappingURL=chunk-2V7E3ABN.js.map
140
+ //# sourceMappingURL=chunk-HSSV22TO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/sys-webhook.object.ts"],"sourcesContent":["// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { ObjectSchema, Field } from '@objectstack/spec/data';\n\n/**\n * sys_webhook — Outbound HTTP integration configuration (runtime).\n *\n * Persists a single {@link Webhook} envelope per row so administrators\n * can author, enable/disable, and edit webhook subscriptions from the\n * Studio UI without code changes. The canonical Zod schema for the\n * `definition_json` envelope lives at `@objectstack/spec/automation/webhook`.\n *\n * One row per `name`. The automation runtime\n * (`@objectstack/service-automation`, built-in `http_request` node) loads\n * active rows on boot + on `sys_webhook:changed` events, registers\n * `afterInsert` / `afterUpdate` / `afterDelete` listeners for the\n * targeted object, and dispatches outbound HTTP calls when matching\n * record events fire.\n *\n * Ownership (ADR-0029 K2.a): this object is **owned by\n * `@objectstack/plugin-webhooks`** — the plugin that consumes these rows —\n * alongside its sibling `sys_webhook_delivery`. It used to live in the\n * `@objectstack/platform-objects` monolith and be imported here; the\n * definition now lives with its owner so the plugin ships both data and\n * behavior as one unit.\n *\n * Platform-wide on purpose: every project (standalone, single-tenant,\n * cloud) can integrate with external systems (Slack, Stripe, internal\n * services) the same way.\n *\n * @namespace sys\n */\nexport const SysWebhook = ObjectSchema.create({\n name: 'sys_webhook',\n label: 'Webhook',\n pluralLabel: 'Webhooks',\n icon: 'webhook',\n isSystem: true,\n managedBy: 'config',\n // Authoring a webhook from the UI requires a structured form for the\n // headers / auth / retry / payload blocks — the generic JSON textarea\n // is acceptable as a v1 until a dedicated builder lands. Re-enable\n // create/edit/delete so admins can at least toggle `active` and edit\n // simple URL/method fields without round-tripping through code.\n userActions: { create: true, edit: true, delete: true, import: false },\n description: 'Outbound HTTP webhook subscription. Authored via defineWebhook() in code or the Studio editor; executed by the HTTP connector plugin.',\n displayNameField: 'name',\n nameField: 'name', // [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)\n titleFormat: '{label}',\n highlightFields: ['name', 'object_name', 'url', 'active', 'updated_at'],\n\n listViews: {\n active: {\n type: 'grid',\n name: 'active',\n label: 'Active',\n data: { provider: 'object', object: 'sys_webhook' },\n columns: ['label', 'object_name', 'url', 'method', 'active', 'updated_at'],\n filter: [{ field: 'active', operator: 'equals', value: true }],\n sort: [{ field: 'label', order: 'asc' }],\n pagination: { pageSize: 50 },\n },\n inactive: {\n type: 'grid',\n name: 'inactive',\n label: 'Inactive',\n data: { provider: 'object', object: 'sys_webhook' },\n columns: ['label', 'object_name', 'url', 'method', 'active', 'updated_at'],\n filter: [{ field: 'active', operator: 'equals', value: false }],\n sort: [{ field: 'label', order: 'asc' }],\n pagination: { pageSize: 50 },\n },\n by_object: {\n type: 'grid',\n name: 'by_object',\n label: 'By Object',\n data: { provider: 'object', object: 'sys_webhook' },\n columns: ['object_name', 'label', 'url', 'active', 'updated_at'],\n sort: [{ field: 'object_name', order: 'asc' }, { field: 'label', order: 'asc' }],\n grouping: { fields: [{ field: 'object_name', order: 'asc', collapsed: false }] },\n pagination: { pageSize: 100 },\n },\n all_webhooks: {\n type: 'grid',\n name: 'all_webhooks',\n label: 'All',\n data: { provider: 'object', object: 'sys_webhook' },\n columns: ['label', 'object_name', 'url', 'method', 'active', 'updated_at'],\n sort: [{ field: 'label', order: 'asc' }],\n pagination: { pageSize: 50 },\n },\n },\n\n fields: {\n id: Field.text({ label: 'Webhook ID', required: true, readonly: true, group: 'System' }),\n\n name: Field.text({\n label: 'Name',\n required: true,\n maxLength: 100,\n description: 'Unique snake_case name — referenced in logs and audit',\n group: 'Definition',\n }),\n\n label: Field.text({\n label: 'Display Label',\n required: false,\n maxLength: 200,\n group: 'Definition',\n }),\n\n object_name: Field.text({\n label: 'Object',\n required: false,\n maxLength: 100,\n description: 'Short object name whose events fire this webhook (blank = manual / API-triggered)',\n group: 'Definition',\n }),\n\n triggers: Field.text({\n label: 'Triggers',\n required: false,\n maxLength: 200,\n description: 'Comma-separated event list: create,update,delete,undelete,api',\n group: 'Definition',\n }),\n\n url: Field.text({\n label: 'Target URL',\n required: true,\n maxLength: 2048,\n description: 'External endpoint that receives the POST',\n group: 'Definition',\n }),\n\n method: Field.text({\n label: 'HTTP Method',\n required: true,\n defaultValue: 'POST',\n maxLength: 10,\n description: 'GET / POST / PUT / PATCH / DELETE',\n group: 'Definition',\n }),\n\n description: Field.textarea({ label: 'Description', required: false, group: 'Definition' }),\n\n active: Field.boolean({\n label: 'Active',\n required: true,\n defaultValue: true,\n description: 'Inactive webhooks are skipped by the dispatcher',\n group: 'Definition',\n }),\n\n definition_json: Field.textarea({\n label: 'Definition',\n required: true,\n description: 'Serialised Webhook JSON (see @objectstack/spec/automation/webhook) — full headers/auth/retry/payload config',\n group: 'Definition',\n }),\n\n created_at: Field.datetime({\n label: 'Created At',\n required: true,\n defaultValue: 'NOW()',\n readonly: true,\n group: 'System',\n }),\n\n updated_at: Field.datetime({ label: 'Updated At', required: false, group: 'System' }),\n },\n\n indexes: [\n { fields: ['name'], unique: true },\n { fields: ['object_name'] },\n { fields: ['active', 'object_name'] },\n ],\n});\n"],"mappings":"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","names":[]}
@@ -18,7 +18,7 @@ var SysWebhook = _data.ObjectSchema.create({
18
18
  nameField: "name",
19
19
  // [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)
20
20
  titleFormat: "{label}",
21
- compactLayout: ["name", "object_name", "url", "active", "updated_at"],
21
+ highlightFields: ["name", "object_name", "url", "active", "updated_at"],
22
22
  listViews: {
23
23
  active: {
24
24
  type: "grid",
@@ -137,4 +137,4 @@ var SysWebhook = _data.ObjectSchema.create({
137
137
 
138
138
 
139
139
  exports.SysWebhook = SysWebhook;
140
- //# sourceMappingURL=chunk-EHLUIU42.cjs.map
140
+ //# sourceMappingURL=chunk-RA3REIOA.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/framework/framework/packages/plugins/plugin-webhooks/dist/chunk-RA3REIOA.cjs","../src/sys-webhook.object.ts"],"names":[],"mappings":"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","file":"/home/runner/work/framework/framework/packages/plugins/plugin-webhooks/dist/chunk-RA3REIOA.cjs","sourcesContent":[null,"// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { ObjectSchema, Field } from '@objectstack/spec/data';\n\n/**\n * sys_webhook — Outbound HTTP integration configuration (runtime).\n *\n * Persists a single {@link Webhook} envelope per row so administrators\n * can author, enable/disable, and edit webhook subscriptions from the\n * Studio UI without code changes. The canonical Zod schema for the\n * `definition_json` envelope lives at `@objectstack/spec/automation/webhook`.\n *\n * One row per `name`. The automation runtime\n * (`@objectstack/service-automation`, built-in `http_request` node) loads\n * active rows on boot + on `sys_webhook:changed` events, registers\n * `afterInsert` / `afterUpdate` / `afterDelete` listeners for the\n * targeted object, and dispatches outbound HTTP calls when matching\n * record events fire.\n *\n * Ownership (ADR-0029 K2.a): this object is **owned by\n * `@objectstack/plugin-webhooks`** — the plugin that consumes these rows —\n * alongside its sibling `sys_webhook_delivery`. It used to live in the\n * `@objectstack/platform-objects` monolith and be imported here; the\n * definition now lives with its owner so the plugin ships both data and\n * behavior as one unit.\n *\n * Platform-wide on purpose: every project (standalone, single-tenant,\n * cloud) can integrate with external systems (Slack, Stripe, internal\n * services) the same way.\n *\n * @namespace sys\n */\nexport const SysWebhook = ObjectSchema.create({\n name: 'sys_webhook',\n label: 'Webhook',\n pluralLabel: 'Webhooks',\n icon: 'webhook',\n isSystem: true,\n managedBy: 'config',\n // Authoring a webhook from the UI requires a structured form for the\n // headers / auth / retry / payload blocks — the generic JSON textarea\n // is acceptable as a v1 until a dedicated builder lands. Re-enable\n // create/edit/delete so admins can at least toggle `active` and edit\n // simple URL/method fields without round-tripping through code.\n userActions: { create: true, edit: true, delete: true, import: false },\n description: 'Outbound HTTP webhook subscription. Authored via defineWebhook() in code or the Studio editor; executed by the HTTP connector plugin.',\n displayNameField: 'name',\n nameField: 'name', // [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)\n titleFormat: '{label}',\n highlightFields: ['name', 'object_name', 'url', 'active', 'updated_at'],\n\n listViews: {\n active: {\n type: 'grid',\n name: 'active',\n label: 'Active',\n data: { provider: 'object', object: 'sys_webhook' },\n columns: ['label', 'object_name', 'url', 'method', 'active', 'updated_at'],\n filter: [{ field: 'active', operator: 'equals', value: true }],\n sort: [{ field: 'label', order: 'asc' }],\n pagination: { pageSize: 50 },\n },\n inactive: {\n type: 'grid',\n name: 'inactive',\n label: 'Inactive',\n data: { provider: 'object', object: 'sys_webhook' },\n columns: ['label', 'object_name', 'url', 'method', 'active', 'updated_at'],\n filter: [{ field: 'active', operator: 'equals', value: false }],\n sort: [{ field: 'label', order: 'asc' }],\n pagination: { pageSize: 50 },\n },\n by_object: {\n type: 'grid',\n name: 'by_object',\n label: 'By Object',\n data: { provider: 'object', object: 'sys_webhook' },\n columns: ['object_name', 'label', 'url', 'active', 'updated_at'],\n sort: [{ field: 'object_name', order: 'asc' }, { field: 'label', order: 'asc' }],\n grouping: { fields: [{ field: 'object_name', order: 'asc', collapsed: false }] },\n pagination: { pageSize: 100 },\n },\n all_webhooks: {\n type: 'grid',\n name: 'all_webhooks',\n label: 'All',\n data: { provider: 'object', object: 'sys_webhook' },\n columns: ['label', 'object_name', 'url', 'method', 'active', 'updated_at'],\n sort: [{ field: 'label', order: 'asc' }],\n pagination: { pageSize: 50 },\n },\n },\n\n fields: {\n id: Field.text({ label: 'Webhook ID', required: true, readonly: true, group: 'System' }),\n\n name: Field.text({\n label: 'Name',\n required: true,\n maxLength: 100,\n description: 'Unique snake_case name — referenced in logs and audit',\n group: 'Definition',\n }),\n\n label: Field.text({\n label: 'Display Label',\n required: false,\n maxLength: 200,\n group: 'Definition',\n }),\n\n object_name: Field.text({\n label: 'Object',\n required: false,\n maxLength: 100,\n description: 'Short object name whose events fire this webhook (blank = manual / API-triggered)',\n group: 'Definition',\n }),\n\n triggers: Field.text({\n label: 'Triggers',\n required: false,\n maxLength: 200,\n description: 'Comma-separated event list: create,update,delete,undelete,api',\n group: 'Definition',\n }),\n\n url: Field.text({\n label: 'Target URL',\n required: true,\n maxLength: 2048,\n description: 'External endpoint that receives the POST',\n group: 'Definition',\n }),\n\n method: Field.text({\n label: 'HTTP Method',\n required: true,\n defaultValue: 'POST',\n maxLength: 10,\n description: 'GET / POST / PUT / PATCH / DELETE',\n group: 'Definition',\n }),\n\n description: Field.textarea({ label: 'Description', required: false, group: 'Definition' }),\n\n active: Field.boolean({\n label: 'Active',\n required: true,\n defaultValue: true,\n description: 'Inactive webhooks are skipped by the dispatcher',\n group: 'Definition',\n }),\n\n definition_json: Field.textarea({\n label: 'Definition',\n required: true,\n description: 'Serialised Webhook JSON (see @objectstack/spec/automation/webhook) — full headers/auth/retry/payload config',\n group: 'Definition',\n }),\n\n created_at: Field.datetime({\n label: 'Created At',\n required: true,\n defaultValue: 'NOW()',\n readonly: true,\n group: 'System',\n }),\n\n updated_at: Field.datetime({ label: 'Updated At', required: false, group: 'System' }),\n },\n\n indexes: [\n { fields: ['name'], unique: true },\n { fields: ['object_name'] },\n { fields: ['active', 'object_name'] },\n ],\n});\n"]}
package/dist/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunkEHLUIU42cjs = require('./chunk-EHLUIU42.cjs');
3
+ var _chunkRA3REIOAcjs = require('./chunk-RA3REIOA.cjs');
4
4
 
5
5
  // src/auto-enqueuer.ts
6
6
  var AutoEnqueuer = class {
@@ -215,7 +215,7 @@ var WebhookOutboxPlugin = class {
215
215
  scope: "system",
216
216
  name: "Webhook Schemas",
217
217
  description: "Registers sys_webhook (configuration). Deliveries use messaging's sys_http_delivery outbox.",
218
- objects: [_chunkEHLUIU42cjs.SysWebhook],
218
+ objects: [_chunkRA3REIOAcjs.SysWebhook],
219
219
  navigationContributions: [
220
220
  {
221
221
  app: "setup",
@@ -380,5 +380,5 @@ var WebhookOutboxPlugin = class {
380
380
 
381
381
 
382
382
 
383
- exports.AutoEnqueuer = AutoEnqueuer; exports.SysWebhook = _chunkEHLUIU42cjs.SysWebhook; exports.WebhookOutboxPlugin = WebhookOutboxPlugin;
383
+ exports.AutoEnqueuer = AutoEnqueuer; exports.SysWebhook = _chunkRA3REIOAcjs.SysWebhook; exports.WebhookOutboxPlugin = WebhookOutboxPlugin;
384
384
  //# sourceMappingURL=index.cjs.map
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SysWebhook
3
- } from "./chunk-2V7E3ABN.js";
3
+ } from "./chunk-HSSV22TO.js";
4
4
 
5
5
  // src/auto-enqueuer.ts
6
6
  var AutoEnqueuer = class {
package/dist/schema.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkEHLUIU42cjs = require('./chunk-EHLUIU42.cjs');
3
+ var _chunkRA3REIOAcjs = require('./chunk-RA3REIOA.cjs');
4
4
 
5
5
 
6
- exports.SysWebhook = _chunkEHLUIU42cjs.SysWebhook;
6
+ exports.SysWebhook = _chunkRA3REIOAcjs.SysWebhook;
7
7
  //# sourceMappingURL=schema.cjs.map
package/dist/schema.d.cts CHANGED
@@ -70,7 +70,7 @@ declare const SysWebhook: Omit<{
70
70
  inlineTitle?: string | undefined;
71
71
  inlineColumns?: any[] | undefined;
72
72
  inlineAmountField?: string | undefined;
73
- relatedList?: boolean | undefined;
73
+ relatedList?: boolean | "primary" | undefined;
74
74
  relatedListTitle?: string | undefined;
75
75
  relatedListColumns?: any[] | undefined;
76
76
  displayField?: string | undefined;
@@ -351,10 +351,9 @@ declare const SysWebhook: Omit<{
351
351
  } | undefined;
352
352
  } | undefined;
353
353
  highlightFields?: string[] | undefined;
354
- compactLayout?: string[] | undefined;
355
354
  stageField?: string | false | undefined;
356
355
  listViews?: Record<string, {
357
- type: "map" | "tree" | "grid" | "kanban" | "calendar" | "gantt" | "gallery" | "timeline" | "chart";
356
+ type: "map" | "tree" | "grid" | "kanban" | "gallery" | "calendar" | "timeline" | "gantt" | "chart";
358
357
  columns: string[] | {
359
358
  field: string;
360
359
  label?: string | undefined;
@@ -370,8 +369,55 @@ declare const SysWebhook: Omit<{
370
369
  link?: boolean | undefined;
371
370
  action?: string | undefined;
372
371
  }[];
373
- name?: string | undefined;
372
+ sort?: string | {
373
+ field: string;
374
+ order: "asc" | "desc";
375
+ }[] | undefined;
376
+ filter?: {
377
+ field: string;
378
+ operator: string;
379
+ value?: string | number | boolean | (string | number)[] | null | undefined;
380
+ }[] | undefined;
381
+ description?: string | undefined;
374
382
  label?: string | undefined;
383
+ name?: string | undefined;
384
+ responsive?: {
385
+ breakpoint?: "md" | "xs" | "sm" | "lg" | "xl" | "2xl" | undefined;
386
+ hiddenOn?: ("md" | "xs" | "sm" | "lg" | "xl" | "2xl")[] | undefined;
387
+ columns?: {
388
+ xs?: number | undefined;
389
+ sm?: number | undefined;
390
+ md?: number | undefined;
391
+ lg?: number | undefined;
392
+ xl?: number | undefined;
393
+ '2xl'?: number | undefined;
394
+ } | undefined;
395
+ order?: {
396
+ xs?: number | undefined;
397
+ sm?: number | undefined;
398
+ md?: number | undefined;
399
+ lg?: number | undefined;
400
+ xl?: number | undefined;
401
+ '2xl'?: number | undefined;
402
+ } | undefined;
403
+ } | undefined;
404
+ navigation?: {
405
+ mode: "none" | "split" | "page" | "drawer" | "modal" | "popover" | "new_window";
406
+ preventNavigation: boolean;
407
+ openNewTab: boolean;
408
+ size: "full" | "md" | "sm" | "lg" | "xl" | "auto";
409
+ view?: string | undefined;
410
+ width?: string | number | undefined;
411
+ } | undefined;
412
+ sharing?: {
413
+ type: "personal" | "collaborative";
414
+ lockedBy?: string | undefined;
415
+ } | undefined;
416
+ aria?: {
417
+ ariaLabel?: string | undefined;
418
+ ariaDescribedBy?: string | undefined;
419
+ role?: string | undefined;
420
+ } | undefined;
375
421
  data?: {
376
422
  provider: "object";
377
423
  object: string;
@@ -399,77 +445,42 @@ declare const SysWebhook: Omit<{
399
445
  schemaId: string;
400
446
  schema?: Record<string, unknown> | undefined;
401
447
  } | undefined;
402
- filter?: {
403
- field: string;
404
- operator: string;
405
- value?: string | number | boolean | (string | number)[] | null | undefined;
406
- }[] | undefined;
407
- sort?: string | {
408
- field: string;
409
- order: "asc" | "desc";
410
- }[] | undefined;
411
- searchableFields?: string[] | undefined;
412
- filterableFields?: string[] | undefined;
413
- userFilters?: {
414
- element: "toggle" | "tabs" | "dropdown";
415
- fields?: {
416
- field: string;
417
- label?: string | undefined;
418
- type?: "boolean" | "text" | "select" | "multi-select" | "date-range" | undefined;
419
- options?: {
420
- value: string | number | boolean;
421
- label: string;
422
- color?: string | undefined;
423
- }[] | undefined;
424
- showCount?: boolean | undefined;
425
- defaultValues?: (string | number | boolean)[] | undefined;
426
- }[] | undefined;
427
- tabs?: {
428
- name: string;
429
- pinned: boolean;
430
- isDefault: boolean;
431
- visible: boolean;
432
- label?: string | undefined;
433
- icon?: string | undefined;
434
- view?: string | undefined;
435
- filter?: {
436
- field: string;
437
- operator: string;
438
- value?: string | number | boolean | (string | number)[] | null | undefined;
439
- }[] | undefined;
440
- order?: number | undefined;
441
- }[] | undefined;
442
- showAllRecords?: boolean | undefined;
448
+ tree?: {
449
+ [x: string]: unknown;
450
+ parentField?: string | undefined;
451
+ labelField?: string | undefined;
452
+ fields?: string[] | undefined;
453
+ defaultExpandedDepth?: number | undefined;
443
454
  } | undefined;
455
+ inlineEdit?: boolean | undefined;
456
+ virtualScroll?: boolean | undefined;
444
457
  resizable?: boolean | undefined;
445
- striped?: boolean | undefined;
446
- bordered?: boolean | undefined;
447
- compactToolbar?: boolean | undefined;
448
- selection?: {
449
- type: "none" | "multiple" | "single";
450
- } | undefined;
451
- navigation?: {
452
- mode: "none" | "split" | "page" | "drawer" | "modal" | "popover" | "new_window";
453
- preventNavigation: boolean;
454
- openNewTab: boolean;
455
- view?: string | undefined;
456
- width?: string | number | undefined;
457
- } | undefined;
458
- pagination?: {
459
- pageSize: number;
460
- pageSizeOptions?: number[] | undefined;
461
- } | undefined;
462
458
  kanban?: {
463
459
  groupByField: string;
464
460
  columns: string[];
465
461
  summarizeField?: string | undefined;
466
462
  } | undefined;
463
+ gallery?: {
464
+ coverFit: "cover" | "contain";
465
+ cardSize: "small" | "medium" | "large";
466
+ coverField?: string | undefined;
467
+ titleField?: string | undefined;
468
+ visibleFields?: string[] | undefined;
469
+ } | undefined;
467
470
  calendar?: {
468
471
  startDateField: string;
469
472
  titleField: string;
470
473
  endDateField?: string | undefined;
471
474
  colorField?: string | undefined;
472
475
  } | undefined;
476
+ timeline?: {
477
+ startDateField: string;
478
+ titleField: string;
479
+ scale: "day" | "week" | "month" | "quarter" | "year" | "hour";
480
+ endDateField?: string | undefined;
481
+ groupByField?: string | undefined;
482
+ colorField?: string | undefined;
483
+ } | undefined;
473
484
  gantt?: {
474
485
  [x: string]: unknown;
475
486
  startDateField: string;
@@ -501,40 +512,40 @@ declare const SysWebhook: Omit<{
501
512
  }[] | undefined;
502
513
  autoZoomToFilter?: boolean | undefined;
503
514
  } | undefined;
504
- gallery?: {
505
- coverFit: "cover" | "contain";
506
- cardSize: "small" | "medium" | "large";
507
- coverField?: string | undefined;
508
- titleField?: string | undefined;
509
- visibleFields?: string[] | undefined;
510
- } | undefined;
511
- timeline?: {
512
- startDateField: string;
513
- titleField: string;
514
- scale: "day" | "week" | "month" | "quarter" | "year" | "hour";
515
- endDateField?: string | undefined;
516
- groupByField?: string | undefined;
517
- colorField?: string | undefined;
518
- } | undefined;
519
515
  chart?: {
520
516
  chartType: "bar" | "line" | "pie" | "area" | "scatter";
521
517
  dataset: string;
522
518
  values: string[];
523
519
  dimensions?: string[] | undefined;
524
520
  } | undefined;
525
- tree?: {
526
- [x: string]: unknown;
527
- parentField?: string | undefined;
528
- labelField?: string | undefined;
529
- fields?: string[] | undefined;
530
- defaultExpandedDepth?: number | undefined;
521
+ rowHeight?: "medium" | "short" | "compact" | "tall" | "extra_tall" | undefined;
522
+ tabs?: {
523
+ name: string;
524
+ pinned: boolean;
525
+ isDefault: boolean;
526
+ visible: boolean;
527
+ label?: string | undefined;
528
+ icon?: string | undefined;
529
+ view?: string | undefined;
530
+ filter?: {
531
+ field: string;
532
+ operator: string;
533
+ value?: string | number | boolean | (string | number)[] | null | undefined;
534
+ }[] | undefined;
535
+ order?: number | undefined;
536
+ }[] | undefined;
537
+ searchableFields?: string[] | undefined;
538
+ filterableFields?: string[] | undefined;
539
+ striped?: boolean | undefined;
540
+ bordered?: boolean | undefined;
541
+ compactToolbar?: boolean | undefined;
542
+ selection?: {
543
+ type: "none" | "multiple" | "single";
531
544
  } | undefined;
532
- description?: string | undefined;
533
- sharing?: {
534
- type: "personal" | "collaborative";
535
- lockedBy?: string | undefined;
545
+ pagination?: {
546
+ pageSize: number;
547
+ pageSizeOptions?: number[] | undefined;
536
548
  } | undefined;
537
- rowHeight?: "medium" | "short" | "compact" | "tall" | "extra_tall" | undefined;
538
549
  grouping?: {
539
550
  fields: {
540
551
  field: string;
@@ -551,7 +562,6 @@ declare const SysWebhook: Omit<{
551
562
  rowActions?: string[] | undefined;
552
563
  bulkActions?: string[] | undefined;
553
564
  bulkActionDefs?: Record<string, any>[] | undefined;
554
- virtualScroll?: boolean | undefined;
555
565
  conditionalFormatting?: {
556
566
  condition: {
557
567
  dialect: "cel" | "js" | "cron" | "template";
@@ -572,7 +582,6 @@ declare const SysWebhook: Omit<{
572
582
  };
573
583
  style: Record<string, string>;
574
584
  }[] | undefined;
575
- inlineEdit?: boolean | undefined;
576
585
  exportOptions?: ("json" | "csv" | "xlsx" | "pdf")[] | undefined;
577
586
  userActions?: {
578
587
  sort: boolean;
@@ -585,23 +594,8 @@ declare const SysWebhook: Omit<{
585
594
  } | undefined;
586
595
  appearance?: {
587
596
  showDescription: boolean;
588
- allowedVisualizations?: ("map" | "tree" | "grid" | "kanban" | "calendar" | "gantt" | "gallery" | "timeline" | "chart")[] | undefined;
597
+ allowedVisualizations?: ("map" | "tree" | "grid" | "kanban" | "gallery" | "calendar" | "timeline" | "gantt" | "chart")[] | undefined;
589
598
  } | undefined;
590
- tabs?: {
591
- name: string;
592
- pinned: boolean;
593
- isDefault: boolean;
594
- visible: boolean;
595
- label?: string | undefined;
596
- icon?: string | undefined;
597
- view?: string | undefined;
598
- filter?: {
599
- field: string;
600
- operator: string;
601
- value?: string | number | boolean | (string | number)[] | null | undefined;
602
- }[] | undefined;
603
- order?: number | undefined;
604
- }[] | undefined;
605
599
  addRecord?: {
606
600
  enabled: boolean;
607
601
  position: "top" | "bottom" | "both";
@@ -615,31 +609,6 @@ declare const SysWebhook: Omit<{
615
609
  message?: string | undefined;
616
610
  icon?: string | undefined;
617
611
  } | undefined;
618
- aria?: {
619
- ariaLabel?: string | undefined;
620
- ariaDescribedBy?: string | undefined;
621
- role?: string | undefined;
622
- } | undefined;
623
- responsive?: {
624
- breakpoint?: "md" | "xs" | "sm" | "lg" | "xl" | "2xl" | undefined;
625
- hiddenOn?: ("md" | "xs" | "sm" | "lg" | "xl" | "2xl")[] | undefined;
626
- columns?: {
627
- xs?: number | undefined;
628
- sm?: number | undefined;
629
- md?: number | undefined;
630
- lg?: number | undefined;
631
- xl?: number | undefined;
632
- '2xl'?: number | undefined;
633
- } | undefined;
634
- order?: {
635
- xs?: number | undefined;
636
- sm?: number | undefined;
637
- md?: number | undefined;
638
- lg?: number | undefined;
639
- xl?: number | undefined;
640
- '2xl'?: number | undefined;
641
- } | undefined;
642
- } | undefined;
643
612
  performance?: {
644
613
  lazyLoad?: boolean | undefined;
645
614
  virtualScroll?: {
@@ -807,7 +776,7 @@ declare const SysWebhook: Omit<{
807
776
  readonly displayNameField: "name";
808
777
  readonly nameField: "name";
809
778
  readonly titleFormat: "{label}";
810
- readonly compactLayout: ["name", "object_name", "url", "active", "updated_at"];
779
+ readonly highlightFields: ["name", "object_name", "url", "active", "updated_at"];
811
780
  readonly listViews: {
812
781
  readonly active: {
813
782
  readonly type: "grid";
@@ -938,7 +907,7 @@ declare const SysWebhook: Omit<{
938
907
  readonly inlineTitle?: string | undefined;
939
908
  readonly inlineColumns?: any[] | undefined;
940
909
  readonly inlineAmountField?: string | undefined;
941
- readonly relatedList?: boolean | undefined;
910
+ readonly relatedList?: boolean | "primary" | undefined;
942
911
  readonly relatedListTitle?: string | undefined;
943
912
  readonly relatedListColumns?: any[] | undefined;
944
913
  readonly displayField?: string | undefined;
@@ -1112,7 +1081,7 @@ declare const SysWebhook: Omit<{
1112
1081
  readonly inlineTitle?: string | undefined;
1113
1082
  readonly inlineColumns?: any[] | undefined;
1114
1083
  readonly inlineAmountField?: string | undefined;
1115
- readonly relatedList?: boolean | undefined;
1084
+ readonly relatedList?: boolean | "primary" | undefined;
1116
1085
  readonly relatedListTitle?: string | undefined;
1117
1086
  readonly relatedListColumns?: any[] | undefined;
1118
1087
  readonly displayField?: string | undefined;
@@ -1286,7 +1255,7 @@ declare const SysWebhook: Omit<{
1286
1255
  readonly inlineTitle?: string | undefined;
1287
1256
  readonly inlineColumns?: any[] | undefined;
1288
1257
  readonly inlineAmountField?: string | undefined;
1289
- readonly relatedList?: boolean | undefined;
1258
+ readonly relatedList?: boolean | "primary" | undefined;
1290
1259
  readonly relatedListTitle?: string | undefined;
1291
1260
  readonly relatedListColumns?: any[] | undefined;
1292
1261
  readonly displayField?: string | undefined;
@@ -1460,7 +1429,7 @@ declare const SysWebhook: Omit<{
1460
1429
  readonly inlineTitle?: string | undefined;
1461
1430
  readonly inlineColumns?: any[] | undefined;
1462
1431
  readonly inlineAmountField?: string | undefined;
1463
- readonly relatedList?: boolean | undefined;
1432
+ readonly relatedList?: boolean | "primary" | undefined;
1464
1433
  readonly relatedListTitle?: string | undefined;
1465
1434
  readonly relatedListColumns?: any[] | undefined;
1466
1435
  readonly displayField?: string | undefined;
@@ -1634,7 +1603,7 @@ declare const SysWebhook: Omit<{
1634
1603
  readonly inlineTitle?: string | undefined;
1635
1604
  readonly inlineColumns?: any[] | undefined;
1636
1605
  readonly inlineAmountField?: string | undefined;
1637
- readonly relatedList?: boolean | undefined;
1606
+ readonly relatedList?: boolean | "primary" | undefined;
1638
1607
  readonly relatedListTitle?: string | undefined;
1639
1608
  readonly relatedListColumns?: any[] | undefined;
1640
1609
  readonly displayField?: string | undefined;
@@ -1808,7 +1777,7 @@ declare const SysWebhook: Omit<{
1808
1777
  readonly inlineTitle?: string | undefined;
1809
1778
  readonly inlineColumns?: any[] | undefined;
1810
1779
  readonly inlineAmountField?: string | undefined;
1811
- readonly relatedList?: boolean | undefined;
1780
+ readonly relatedList?: boolean | "primary" | undefined;
1812
1781
  readonly relatedListTitle?: string | undefined;
1813
1782
  readonly relatedListColumns?: any[] | undefined;
1814
1783
  readonly displayField?: string | undefined;
@@ -1982,7 +1951,7 @@ declare const SysWebhook: Omit<{
1982
1951
  readonly inlineTitle?: string | undefined;
1983
1952
  readonly inlineColumns?: any[] | undefined;
1984
1953
  readonly inlineAmountField?: string | undefined;
1985
- readonly relatedList?: boolean | undefined;
1954
+ readonly relatedList?: boolean | "primary" | undefined;
1986
1955
  readonly relatedListTitle?: string | undefined;
1987
1956
  readonly relatedListColumns?: any[] | undefined;
1988
1957
  readonly displayField?: string | undefined;
@@ -2156,7 +2125,7 @@ declare const SysWebhook: Omit<{
2156
2125
  readonly inlineTitle?: string | undefined;
2157
2126
  readonly inlineColumns?: any[] | undefined;
2158
2127
  readonly inlineAmountField?: string | undefined;
2159
- readonly relatedList?: boolean | undefined;
2128
+ readonly relatedList?: boolean | "primary" | undefined;
2160
2129
  readonly relatedListTitle?: string | undefined;
2161
2130
  readonly relatedListColumns?: any[] | undefined;
2162
2131
  readonly displayField?: string | undefined;
@@ -2330,7 +2299,7 @@ declare const SysWebhook: Omit<{
2330
2299
  readonly inlineTitle?: string | undefined;
2331
2300
  readonly inlineColumns?: any[] | undefined;
2332
2301
  readonly inlineAmountField?: string | undefined;
2333
- readonly relatedList?: boolean | undefined;
2302
+ readonly relatedList?: boolean | "primary" | undefined;
2334
2303
  readonly relatedListTitle?: string | undefined;
2335
2304
  readonly relatedListColumns?: any[] | undefined;
2336
2305
  readonly displayField?: string | undefined;
@@ -2504,7 +2473,7 @@ declare const SysWebhook: Omit<{
2504
2473
  readonly inlineTitle?: string | undefined;
2505
2474
  readonly inlineColumns?: any[] | undefined;
2506
2475
  readonly inlineAmountField?: string | undefined;
2507
- readonly relatedList?: boolean | undefined;
2476
+ readonly relatedList?: boolean | "primary" | undefined;
2508
2477
  readonly relatedListTitle?: string | undefined;
2509
2478
  readonly relatedListColumns?: any[] | undefined;
2510
2479
  readonly displayField?: string | undefined;
@@ -2678,7 +2647,7 @@ declare const SysWebhook: Omit<{
2678
2647
  readonly inlineTitle?: string | undefined;
2679
2648
  readonly inlineColumns?: any[] | undefined;
2680
2649
  readonly inlineAmountField?: string | undefined;
2681
- readonly relatedList?: boolean | undefined;
2650
+ readonly relatedList?: boolean | "primary" | undefined;
2682
2651
  readonly relatedListTitle?: string | undefined;
2683
2652
  readonly relatedListColumns?: any[] | undefined;
2684
2653
  readonly displayField?: string | undefined;
@@ -2852,7 +2821,7 @@ declare const SysWebhook: Omit<{
2852
2821
  readonly inlineTitle?: string | undefined;
2853
2822
  readonly inlineColumns?: any[] | undefined;
2854
2823
  readonly inlineAmountField?: string | undefined;
2855
- readonly relatedList?: boolean | undefined;
2824
+ readonly relatedList?: boolean | "primary" | undefined;
2856
2825
  readonly relatedListTitle?: string | undefined;
2857
2826
  readonly relatedListColumns?: any[] | undefined;
2858
2827
  readonly displayField?: string | undefined;
package/dist/schema.d.ts CHANGED
@@ -70,7 +70,7 @@ declare const SysWebhook: Omit<{
70
70
  inlineTitle?: string | undefined;
71
71
  inlineColumns?: any[] | undefined;
72
72
  inlineAmountField?: string | undefined;
73
- relatedList?: boolean | undefined;
73
+ relatedList?: boolean | "primary" | undefined;
74
74
  relatedListTitle?: string | undefined;
75
75
  relatedListColumns?: any[] | undefined;
76
76
  displayField?: string | undefined;
@@ -351,10 +351,9 @@ declare const SysWebhook: Omit<{
351
351
  } | undefined;
352
352
  } | undefined;
353
353
  highlightFields?: string[] | undefined;
354
- compactLayout?: string[] | undefined;
355
354
  stageField?: string | false | undefined;
356
355
  listViews?: Record<string, {
357
- type: "map" | "tree" | "grid" | "kanban" | "calendar" | "gantt" | "gallery" | "timeline" | "chart";
356
+ type: "map" | "tree" | "grid" | "kanban" | "gallery" | "calendar" | "timeline" | "gantt" | "chart";
358
357
  columns: string[] | {
359
358
  field: string;
360
359
  label?: string | undefined;
@@ -370,8 +369,55 @@ declare const SysWebhook: Omit<{
370
369
  link?: boolean | undefined;
371
370
  action?: string | undefined;
372
371
  }[];
373
- name?: string | undefined;
372
+ sort?: string | {
373
+ field: string;
374
+ order: "asc" | "desc";
375
+ }[] | undefined;
376
+ filter?: {
377
+ field: string;
378
+ operator: string;
379
+ value?: string | number | boolean | (string | number)[] | null | undefined;
380
+ }[] | undefined;
381
+ description?: string | undefined;
374
382
  label?: string | undefined;
383
+ name?: string | undefined;
384
+ responsive?: {
385
+ breakpoint?: "md" | "xs" | "sm" | "lg" | "xl" | "2xl" | undefined;
386
+ hiddenOn?: ("md" | "xs" | "sm" | "lg" | "xl" | "2xl")[] | undefined;
387
+ columns?: {
388
+ xs?: number | undefined;
389
+ sm?: number | undefined;
390
+ md?: number | undefined;
391
+ lg?: number | undefined;
392
+ xl?: number | undefined;
393
+ '2xl'?: number | undefined;
394
+ } | undefined;
395
+ order?: {
396
+ xs?: number | undefined;
397
+ sm?: number | undefined;
398
+ md?: number | undefined;
399
+ lg?: number | undefined;
400
+ xl?: number | undefined;
401
+ '2xl'?: number | undefined;
402
+ } | undefined;
403
+ } | undefined;
404
+ navigation?: {
405
+ mode: "none" | "split" | "page" | "drawer" | "modal" | "popover" | "new_window";
406
+ preventNavigation: boolean;
407
+ openNewTab: boolean;
408
+ size: "full" | "md" | "sm" | "lg" | "xl" | "auto";
409
+ view?: string | undefined;
410
+ width?: string | number | undefined;
411
+ } | undefined;
412
+ sharing?: {
413
+ type: "personal" | "collaborative";
414
+ lockedBy?: string | undefined;
415
+ } | undefined;
416
+ aria?: {
417
+ ariaLabel?: string | undefined;
418
+ ariaDescribedBy?: string | undefined;
419
+ role?: string | undefined;
420
+ } | undefined;
375
421
  data?: {
376
422
  provider: "object";
377
423
  object: string;
@@ -399,77 +445,42 @@ declare const SysWebhook: Omit<{
399
445
  schemaId: string;
400
446
  schema?: Record<string, unknown> | undefined;
401
447
  } | undefined;
402
- filter?: {
403
- field: string;
404
- operator: string;
405
- value?: string | number | boolean | (string | number)[] | null | undefined;
406
- }[] | undefined;
407
- sort?: string | {
408
- field: string;
409
- order: "asc" | "desc";
410
- }[] | undefined;
411
- searchableFields?: string[] | undefined;
412
- filterableFields?: string[] | undefined;
413
- userFilters?: {
414
- element: "toggle" | "tabs" | "dropdown";
415
- fields?: {
416
- field: string;
417
- label?: string | undefined;
418
- type?: "boolean" | "text" | "select" | "multi-select" | "date-range" | undefined;
419
- options?: {
420
- value: string | number | boolean;
421
- label: string;
422
- color?: string | undefined;
423
- }[] | undefined;
424
- showCount?: boolean | undefined;
425
- defaultValues?: (string | number | boolean)[] | undefined;
426
- }[] | undefined;
427
- tabs?: {
428
- name: string;
429
- pinned: boolean;
430
- isDefault: boolean;
431
- visible: boolean;
432
- label?: string | undefined;
433
- icon?: string | undefined;
434
- view?: string | undefined;
435
- filter?: {
436
- field: string;
437
- operator: string;
438
- value?: string | number | boolean | (string | number)[] | null | undefined;
439
- }[] | undefined;
440
- order?: number | undefined;
441
- }[] | undefined;
442
- showAllRecords?: boolean | undefined;
448
+ tree?: {
449
+ [x: string]: unknown;
450
+ parentField?: string | undefined;
451
+ labelField?: string | undefined;
452
+ fields?: string[] | undefined;
453
+ defaultExpandedDepth?: number | undefined;
443
454
  } | undefined;
455
+ inlineEdit?: boolean | undefined;
456
+ virtualScroll?: boolean | undefined;
444
457
  resizable?: boolean | undefined;
445
- striped?: boolean | undefined;
446
- bordered?: boolean | undefined;
447
- compactToolbar?: boolean | undefined;
448
- selection?: {
449
- type: "none" | "multiple" | "single";
450
- } | undefined;
451
- navigation?: {
452
- mode: "none" | "split" | "page" | "drawer" | "modal" | "popover" | "new_window";
453
- preventNavigation: boolean;
454
- openNewTab: boolean;
455
- view?: string | undefined;
456
- width?: string | number | undefined;
457
- } | undefined;
458
- pagination?: {
459
- pageSize: number;
460
- pageSizeOptions?: number[] | undefined;
461
- } | undefined;
462
458
  kanban?: {
463
459
  groupByField: string;
464
460
  columns: string[];
465
461
  summarizeField?: string | undefined;
466
462
  } | undefined;
463
+ gallery?: {
464
+ coverFit: "cover" | "contain";
465
+ cardSize: "small" | "medium" | "large";
466
+ coverField?: string | undefined;
467
+ titleField?: string | undefined;
468
+ visibleFields?: string[] | undefined;
469
+ } | undefined;
467
470
  calendar?: {
468
471
  startDateField: string;
469
472
  titleField: string;
470
473
  endDateField?: string | undefined;
471
474
  colorField?: string | undefined;
472
475
  } | undefined;
476
+ timeline?: {
477
+ startDateField: string;
478
+ titleField: string;
479
+ scale: "day" | "week" | "month" | "quarter" | "year" | "hour";
480
+ endDateField?: string | undefined;
481
+ groupByField?: string | undefined;
482
+ colorField?: string | undefined;
483
+ } | undefined;
473
484
  gantt?: {
474
485
  [x: string]: unknown;
475
486
  startDateField: string;
@@ -501,40 +512,40 @@ declare const SysWebhook: Omit<{
501
512
  }[] | undefined;
502
513
  autoZoomToFilter?: boolean | undefined;
503
514
  } | undefined;
504
- gallery?: {
505
- coverFit: "cover" | "contain";
506
- cardSize: "small" | "medium" | "large";
507
- coverField?: string | undefined;
508
- titleField?: string | undefined;
509
- visibleFields?: string[] | undefined;
510
- } | undefined;
511
- timeline?: {
512
- startDateField: string;
513
- titleField: string;
514
- scale: "day" | "week" | "month" | "quarter" | "year" | "hour";
515
- endDateField?: string | undefined;
516
- groupByField?: string | undefined;
517
- colorField?: string | undefined;
518
- } | undefined;
519
515
  chart?: {
520
516
  chartType: "bar" | "line" | "pie" | "area" | "scatter";
521
517
  dataset: string;
522
518
  values: string[];
523
519
  dimensions?: string[] | undefined;
524
520
  } | undefined;
525
- tree?: {
526
- [x: string]: unknown;
527
- parentField?: string | undefined;
528
- labelField?: string | undefined;
529
- fields?: string[] | undefined;
530
- defaultExpandedDepth?: number | undefined;
521
+ rowHeight?: "medium" | "short" | "compact" | "tall" | "extra_tall" | undefined;
522
+ tabs?: {
523
+ name: string;
524
+ pinned: boolean;
525
+ isDefault: boolean;
526
+ visible: boolean;
527
+ label?: string | undefined;
528
+ icon?: string | undefined;
529
+ view?: string | undefined;
530
+ filter?: {
531
+ field: string;
532
+ operator: string;
533
+ value?: string | number | boolean | (string | number)[] | null | undefined;
534
+ }[] | undefined;
535
+ order?: number | undefined;
536
+ }[] | undefined;
537
+ searchableFields?: string[] | undefined;
538
+ filterableFields?: string[] | undefined;
539
+ striped?: boolean | undefined;
540
+ bordered?: boolean | undefined;
541
+ compactToolbar?: boolean | undefined;
542
+ selection?: {
543
+ type: "none" | "multiple" | "single";
531
544
  } | undefined;
532
- description?: string | undefined;
533
- sharing?: {
534
- type: "personal" | "collaborative";
535
- lockedBy?: string | undefined;
545
+ pagination?: {
546
+ pageSize: number;
547
+ pageSizeOptions?: number[] | undefined;
536
548
  } | undefined;
537
- rowHeight?: "medium" | "short" | "compact" | "tall" | "extra_tall" | undefined;
538
549
  grouping?: {
539
550
  fields: {
540
551
  field: string;
@@ -551,7 +562,6 @@ declare const SysWebhook: Omit<{
551
562
  rowActions?: string[] | undefined;
552
563
  bulkActions?: string[] | undefined;
553
564
  bulkActionDefs?: Record<string, any>[] | undefined;
554
- virtualScroll?: boolean | undefined;
555
565
  conditionalFormatting?: {
556
566
  condition: {
557
567
  dialect: "cel" | "js" | "cron" | "template";
@@ -572,7 +582,6 @@ declare const SysWebhook: Omit<{
572
582
  };
573
583
  style: Record<string, string>;
574
584
  }[] | undefined;
575
- inlineEdit?: boolean | undefined;
576
585
  exportOptions?: ("json" | "csv" | "xlsx" | "pdf")[] | undefined;
577
586
  userActions?: {
578
587
  sort: boolean;
@@ -585,23 +594,8 @@ declare const SysWebhook: Omit<{
585
594
  } | undefined;
586
595
  appearance?: {
587
596
  showDescription: boolean;
588
- allowedVisualizations?: ("map" | "tree" | "grid" | "kanban" | "calendar" | "gantt" | "gallery" | "timeline" | "chart")[] | undefined;
597
+ allowedVisualizations?: ("map" | "tree" | "grid" | "kanban" | "gallery" | "calendar" | "timeline" | "gantt" | "chart")[] | undefined;
589
598
  } | undefined;
590
- tabs?: {
591
- name: string;
592
- pinned: boolean;
593
- isDefault: boolean;
594
- visible: boolean;
595
- label?: string | undefined;
596
- icon?: string | undefined;
597
- view?: string | undefined;
598
- filter?: {
599
- field: string;
600
- operator: string;
601
- value?: string | number | boolean | (string | number)[] | null | undefined;
602
- }[] | undefined;
603
- order?: number | undefined;
604
- }[] | undefined;
605
599
  addRecord?: {
606
600
  enabled: boolean;
607
601
  position: "top" | "bottom" | "both";
@@ -615,31 +609,6 @@ declare const SysWebhook: Omit<{
615
609
  message?: string | undefined;
616
610
  icon?: string | undefined;
617
611
  } | undefined;
618
- aria?: {
619
- ariaLabel?: string | undefined;
620
- ariaDescribedBy?: string | undefined;
621
- role?: string | undefined;
622
- } | undefined;
623
- responsive?: {
624
- breakpoint?: "md" | "xs" | "sm" | "lg" | "xl" | "2xl" | undefined;
625
- hiddenOn?: ("md" | "xs" | "sm" | "lg" | "xl" | "2xl")[] | undefined;
626
- columns?: {
627
- xs?: number | undefined;
628
- sm?: number | undefined;
629
- md?: number | undefined;
630
- lg?: number | undefined;
631
- xl?: number | undefined;
632
- '2xl'?: number | undefined;
633
- } | undefined;
634
- order?: {
635
- xs?: number | undefined;
636
- sm?: number | undefined;
637
- md?: number | undefined;
638
- lg?: number | undefined;
639
- xl?: number | undefined;
640
- '2xl'?: number | undefined;
641
- } | undefined;
642
- } | undefined;
643
612
  performance?: {
644
613
  lazyLoad?: boolean | undefined;
645
614
  virtualScroll?: {
@@ -807,7 +776,7 @@ declare const SysWebhook: Omit<{
807
776
  readonly displayNameField: "name";
808
777
  readonly nameField: "name";
809
778
  readonly titleFormat: "{label}";
810
- readonly compactLayout: ["name", "object_name", "url", "active", "updated_at"];
779
+ readonly highlightFields: ["name", "object_name", "url", "active", "updated_at"];
811
780
  readonly listViews: {
812
781
  readonly active: {
813
782
  readonly type: "grid";
@@ -938,7 +907,7 @@ declare const SysWebhook: Omit<{
938
907
  readonly inlineTitle?: string | undefined;
939
908
  readonly inlineColumns?: any[] | undefined;
940
909
  readonly inlineAmountField?: string | undefined;
941
- readonly relatedList?: boolean | undefined;
910
+ readonly relatedList?: boolean | "primary" | undefined;
942
911
  readonly relatedListTitle?: string | undefined;
943
912
  readonly relatedListColumns?: any[] | undefined;
944
913
  readonly displayField?: string | undefined;
@@ -1112,7 +1081,7 @@ declare const SysWebhook: Omit<{
1112
1081
  readonly inlineTitle?: string | undefined;
1113
1082
  readonly inlineColumns?: any[] | undefined;
1114
1083
  readonly inlineAmountField?: string | undefined;
1115
- readonly relatedList?: boolean | undefined;
1084
+ readonly relatedList?: boolean | "primary" | undefined;
1116
1085
  readonly relatedListTitle?: string | undefined;
1117
1086
  readonly relatedListColumns?: any[] | undefined;
1118
1087
  readonly displayField?: string | undefined;
@@ -1286,7 +1255,7 @@ declare const SysWebhook: Omit<{
1286
1255
  readonly inlineTitle?: string | undefined;
1287
1256
  readonly inlineColumns?: any[] | undefined;
1288
1257
  readonly inlineAmountField?: string | undefined;
1289
- readonly relatedList?: boolean | undefined;
1258
+ readonly relatedList?: boolean | "primary" | undefined;
1290
1259
  readonly relatedListTitle?: string | undefined;
1291
1260
  readonly relatedListColumns?: any[] | undefined;
1292
1261
  readonly displayField?: string | undefined;
@@ -1460,7 +1429,7 @@ declare const SysWebhook: Omit<{
1460
1429
  readonly inlineTitle?: string | undefined;
1461
1430
  readonly inlineColumns?: any[] | undefined;
1462
1431
  readonly inlineAmountField?: string | undefined;
1463
- readonly relatedList?: boolean | undefined;
1432
+ readonly relatedList?: boolean | "primary" | undefined;
1464
1433
  readonly relatedListTitle?: string | undefined;
1465
1434
  readonly relatedListColumns?: any[] | undefined;
1466
1435
  readonly displayField?: string | undefined;
@@ -1634,7 +1603,7 @@ declare const SysWebhook: Omit<{
1634
1603
  readonly inlineTitle?: string | undefined;
1635
1604
  readonly inlineColumns?: any[] | undefined;
1636
1605
  readonly inlineAmountField?: string | undefined;
1637
- readonly relatedList?: boolean | undefined;
1606
+ readonly relatedList?: boolean | "primary" | undefined;
1638
1607
  readonly relatedListTitle?: string | undefined;
1639
1608
  readonly relatedListColumns?: any[] | undefined;
1640
1609
  readonly displayField?: string | undefined;
@@ -1808,7 +1777,7 @@ declare const SysWebhook: Omit<{
1808
1777
  readonly inlineTitle?: string | undefined;
1809
1778
  readonly inlineColumns?: any[] | undefined;
1810
1779
  readonly inlineAmountField?: string | undefined;
1811
- readonly relatedList?: boolean | undefined;
1780
+ readonly relatedList?: boolean | "primary" | undefined;
1812
1781
  readonly relatedListTitle?: string | undefined;
1813
1782
  readonly relatedListColumns?: any[] | undefined;
1814
1783
  readonly displayField?: string | undefined;
@@ -1982,7 +1951,7 @@ declare const SysWebhook: Omit<{
1982
1951
  readonly inlineTitle?: string | undefined;
1983
1952
  readonly inlineColumns?: any[] | undefined;
1984
1953
  readonly inlineAmountField?: string | undefined;
1985
- readonly relatedList?: boolean | undefined;
1954
+ readonly relatedList?: boolean | "primary" | undefined;
1986
1955
  readonly relatedListTitle?: string | undefined;
1987
1956
  readonly relatedListColumns?: any[] | undefined;
1988
1957
  readonly displayField?: string | undefined;
@@ -2156,7 +2125,7 @@ declare const SysWebhook: Omit<{
2156
2125
  readonly inlineTitle?: string | undefined;
2157
2126
  readonly inlineColumns?: any[] | undefined;
2158
2127
  readonly inlineAmountField?: string | undefined;
2159
- readonly relatedList?: boolean | undefined;
2128
+ readonly relatedList?: boolean | "primary" | undefined;
2160
2129
  readonly relatedListTitle?: string | undefined;
2161
2130
  readonly relatedListColumns?: any[] | undefined;
2162
2131
  readonly displayField?: string | undefined;
@@ -2330,7 +2299,7 @@ declare const SysWebhook: Omit<{
2330
2299
  readonly inlineTitle?: string | undefined;
2331
2300
  readonly inlineColumns?: any[] | undefined;
2332
2301
  readonly inlineAmountField?: string | undefined;
2333
- readonly relatedList?: boolean | undefined;
2302
+ readonly relatedList?: boolean | "primary" | undefined;
2334
2303
  readonly relatedListTitle?: string | undefined;
2335
2304
  readonly relatedListColumns?: any[] | undefined;
2336
2305
  readonly displayField?: string | undefined;
@@ -2504,7 +2473,7 @@ declare const SysWebhook: Omit<{
2504
2473
  readonly inlineTitle?: string | undefined;
2505
2474
  readonly inlineColumns?: any[] | undefined;
2506
2475
  readonly inlineAmountField?: string | undefined;
2507
- readonly relatedList?: boolean | undefined;
2476
+ readonly relatedList?: boolean | "primary" | undefined;
2508
2477
  readonly relatedListTitle?: string | undefined;
2509
2478
  readonly relatedListColumns?: any[] | undefined;
2510
2479
  readonly displayField?: string | undefined;
@@ -2678,7 +2647,7 @@ declare const SysWebhook: Omit<{
2678
2647
  readonly inlineTitle?: string | undefined;
2679
2648
  readonly inlineColumns?: any[] | undefined;
2680
2649
  readonly inlineAmountField?: string | undefined;
2681
- readonly relatedList?: boolean | undefined;
2650
+ readonly relatedList?: boolean | "primary" | undefined;
2682
2651
  readonly relatedListTitle?: string | undefined;
2683
2652
  readonly relatedListColumns?: any[] | undefined;
2684
2653
  readonly displayField?: string | undefined;
@@ -2852,7 +2821,7 @@ declare const SysWebhook: Omit<{
2852
2821
  readonly inlineTitle?: string | undefined;
2853
2822
  readonly inlineColumns?: any[] | undefined;
2854
2823
  readonly inlineAmountField?: string | undefined;
2855
- readonly relatedList?: boolean | undefined;
2824
+ readonly relatedList?: boolean | "primary" | undefined;
2856
2825
  readonly relatedListTitle?: string | undefined;
2857
2826
  readonly relatedListColumns?: any[] | undefined;
2858
2827
  readonly displayField?: string | undefined;
package/dist/schema.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SysWebhook
3
- } from "./chunk-2V7E3ABN.js";
3
+ } from "./chunk-HSSV22TO.js";
4
4
  export {
5
5
  SysWebhook
6
6
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@objectstack/plugin-webhooks",
3
- "version": "11.9.0",
3
+ "version": "12.0.0",
4
4
  "license": "Apache-2.0",
5
5
  "description": "Persistent, cluster-aware webhook dispatcher. Durable outbox + per-partition cluster.lock for exactly-once-ish delivery across nodes. See content/docs/concepts/webhook-delivery.mdx.",
6
6
  "type": "module",
@@ -19,9 +19,9 @@
19
19
  }
20
20
  },
21
21
  "dependencies": {
22
- "@objectstack/core": "11.9.0",
23
- "@objectstack/service-messaging": "11.9.0",
24
- "@objectstack/spec": "11.9.0"
22
+ "@objectstack/core": "12.0.0",
23
+ "@objectstack/service-messaging": "12.0.0",
24
+ "@objectstack/spec": "12.0.0"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@types/node": "^26.0.1",
@@ -47,7 +47,7 @@ export const SysWebhook = ObjectSchema.create({
47
47
  displayNameField: 'name',
48
48
  nameField: 'name', // [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)
49
49
  titleFormat: '{label}',
50
- compactLayout: ['name', 'object_name', 'url', 'active', 'updated_at'],
50
+ highlightFields: ['name', 'object_name', 'url', 'active', 'updated_at'],
51
51
 
52
52
  listViews: {
53
53
  active: {
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/sys-webhook.object.ts"],"sourcesContent":["// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { ObjectSchema, Field } from '@objectstack/spec/data';\n\n/**\n * sys_webhook — Outbound HTTP integration configuration (runtime).\n *\n * Persists a single {@link Webhook} envelope per row so administrators\n * can author, enable/disable, and edit webhook subscriptions from the\n * Studio UI without code changes. The canonical Zod schema for the\n * `definition_json` envelope lives at `@objectstack/spec/automation/webhook`.\n *\n * One row per `name`. The automation runtime\n * (`@objectstack/service-automation`, built-in `http_request` node) loads\n * active rows on boot + on `sys_webhook:changed` events, registers\n * `afterInsert` / `afterUpdate` / `afterDelete` listeners for the\n * targeted object, and dispatches outbound HTTP calls when matching\n * record events fire.\n *\n * Ownership (ADR-0029 K2.a): this object is **owned by\n * `@objectstack/plugin-webhooks`** — the plugin that consumes these rows —\n * alongside its sibling `sys_webhook_delivery`. It used to live in the\n * `@objectstack/platform-objects` monolith and be imported here; the\n * definition now lives with its owner so the plugin ships both data and\n * behavior as one unit.\n *\n * Platform-wide on purpose: every project (standalone, single-tenant,\n * cloud) can integrate with external systems (Slack, Stripe, internal\n * services) the same way.\n *\n * @namespace sys\n */\nexport const SysWebhook = ObjectSchema.create({\n name: 'sys_webhook',\n label: 'Webhook',\n pluralLabel: 'Webhooks',\n icon: 'webhook',\n isSystem: true,\n managedBy: 'config',\n // Authoring a webhook from the UI requires a structured form for the\n // headers / auth / retry / payload blocks — the generic JSON textarea\n // is acceptable as a v1 until a dedicated builder lands. Re-enable\n // create/edit/delete so admins can at least toggle `active` and edit\n // simple URL/method fields without round-tripping through code.\n userActions: { create: true, edit: true, delete: true, import: false },\n description: 'Outbound HTTP webhook subscription. Authored via defineWebhook() in code or the Studio editor; executed by the HTTP connector plugin.',\n displayNameField: 'name',\n nameField: 'name', // [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)\n titleFormat: '{label}',\n compactLayout: ['name', 'object_name', 'url', 'active', 'updated_at'],\n\n listViews: {\n active: {\n type: 'grid',\n name: 'active',\n label: 'Active',\n data: { provider: 'object', object: 'sys_webhook' },\n columns: ['label', 'object_name', 'url', 'method', 'active', 'updated_at'],\n filter: [{ field: 'active', operator: 'equals', value: true }],\n sort: [{ field: 'label', order: 'asc' }],\n pagination: { pageSize: 50 },\n },\n inactive: {\n type: 'grid',\n name: 'inactive',\n label: 'Inactive',\n data: { provider: 'object', object: 'sys_webhook' },\n columns: ['label', 'object_name', 'url', 'method', 'active', 'updated_at'],\n filter: [{ field: 'active', operator: 'equals', value: false }],\n sort: [{ field: 'label', order: 'asc' }],\n pagination: { pageSize: 50 },\n },\n by_object: {\n type: 'grid',\n name: 'by_object',\n label: 'By Object',\n data: { provider: 'object', object: 'sys_webhook' },\n columns: ['object_name', 'label', 'url', 'active', 'updated_at'],\n sort: [{ field: 'object_name', order: 'asc' }, { field: 'label', order: 'asc' }],\n grouping: { fields: [{ field: 'object_name', order: 'asc', collapsed: false }] },\n pagination: { pageSize: 100 },\n },\n all_webhooks: {\n type: 'grid',\n name: 'all_webhooks',\n label: 'All',\n data: { provider: 'object', object: 'sys_webhook' },\n columns: ['label', 'object_name', 'url', 'method', 'active', 'updated_at'],\n sort: [{ field: 'label', order: 'asc' }],\n pagination: { pageSize: 50 },\n },\n },\n\n fields: {\n id: Field.text({ label: 'Webhook ID', required: true, readonly: true, group: 'System' }),\n\n name: Field.text({\n label: 'Name',\n required: true,\n maxLength: 100,\n description: 'Unique snake_case name — referenced in logs and audit',\n group: 'Definition',\n }),\n\n label: Field.text({\n label: 'Display Label',\n required: false,\n maxLength: 200,\n group: 'Definition',\n }),\n\n object_name: Field.text({\n label: 'Object',\n required: false,\n maxLength: 100,\n description: 'Short object name whose events fire this webhook (blank = manual / API-triggered)',\n group: 'Definition',\n }),\n\n triggers: Field.text({\n label: 'Triggers',\n required: false,\n maxLength: 200,\n description: 'Comma-separated event list: create,update,delete,undelete,api',\n group: 'Definition',\n }),\n\n url: Field.text({\n label: 'Target URL',\n required: true,\n maxLength: 2048,\n description: 'External endpoint that receives the POST',\n group: 'Definition',\n }),\n\n method: Field.text({\n label: 'HTTP Method',\n required: true,\n defaultValue: 'POST',\n maxLength: 10,\n description: 'GET / POST / PUT / PATCH / DELETE',\n group: 'Definition',\n }),\n\n description: Field.textarea({ label: 'Description', required: false, group: 'Definition' }),\n\n active: Field.boolean({\n label: 'Active',\n required: true,\n defaultValue: true,\n description: 'Inactive webhooks are skipped by the dispatcher',\n group: 'Definition',\n }),\n\n definition_json: Field.textarea({\n label: 'Definition',\n required: true,\n description: 'Serialised Webhook JSON (see @objectstack/spec/automation/webhook) — full headers/auth/retry/payload config',\n group: 'Definition',\n }),\n\n created_at: Field.datetime({\n label: 'Created At',\n required: true,\n defaultValue: 'NOW()',\n readonly: true,\n group: 'System',\n }),\n\n updated_at: Field.datetime({ label: 'Updated At', required: false, group: 'System' }),\n },\n\n indexes: [\n { fields: ['name'], unique: true },\n { fields: ['object_name'] },\n { fields: ['active', 'object_name'] },\n ],\n});\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/runner/work/framework/framework/packages/plugins/plugin-webhooks/dist/chunk-EHLUIU42.cjs","../src/sys-webhook.object.ts"],"names":[],"mappings":"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","file":"/home/runner/work/framework/framework/packages/plugins/plugin-webhooks/dist/chunk-EHLUIU42.cjs","sourcesContent":[null,"// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport { ObjectSchema, Field } from '@objectstack/spec/data';\n\n/**\n * sys_webhook — Outbound HTTP integration configuration (runtime).\n *\n * Persists a single {@link Webhook} envelope per row so administrators\n * can author, enable/disable, and edit webhook subscriptions from the\n * Studio UI without code changes. The canonical Zod schema for the\n * `definition_json` envelope lives at `@objectstack/spec/automation/webhook`.\n *\n * One row per `name`. The automation runtime\n * (`@objectstack/service-automation`, built-in `http_request` node) loads\n * active rows on boot + on `sys_webhook:changed` events, registers\n * `afterInsert` / `afterUpdate` / `afterDelete` listeners for the\n * targeted object, and dispatches outbound HTTP calls when matching\n * record events fire.\n *\n * Ownership (ADR-0029 K2.a): this object is **owned by\n * `@objectstack/plugin-webhooks`** — the plugin that consumes these rows —\n * alongside its sibling `sys_webhook_delivery`. It used to live in the\n * `@objectstack/platform-objects` monolith and be imported here; the\n * definition now lives with its owner so the plugin ships both data and\n * behavior as one unit.\n *\n * Platform-wide on purpose: every project (standalone, single-tenant,\n * cloud) can integrate with external systems (Slack, Stripe, internal\n * services) the same way.\n *\n * @namespace sys\n */\nexport const SysWebhook = ObjectSchema.create({\n name: 'sys_webhook',\n label: 'Webhook',\n pluralLabel: 'Webhooks',\n icon: 'webhook',\n isSystem: true,\n managedBy: 'config',\n // Authoring a webhook from the UI requires a structured form for the\n // headers / auth / retry / payload blocks — the generic JSON textarea\n // is acceptable as a v1 until a dedicated builder lands. Re-enable\n // create/edit/delete so admins can at least toggle `active` and edit\n // simple URL/method fields without round-tripping through code.\n userActions: { create: true, edit: true, delete: true, import: false },\n description: 'Outbound HTTP webhook subscription. Authored via defineWebhook() in code or the Studio editor; executed by the HTTP connector plugin.',\n displayNameField: 'name',\n nameField: 'name', // [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField)\n titleFormat: '{label}',\n compactLayout: ['name', 'object_name', 'url', 'active', 'updated_at'],\n\n listViews: {\n active: {\n type: 'grid',\n name: 'active',\n label: 'Active',\n data: { provider: 'object', object: 'sys_webhook' },\n columns: ['label', 'object_name', 'url', 'method', 'active', 'updated_at'],\n filter: [{ field: 'active', operator: 'equals', value: true }],\n sort: [{ field: 'label', order: 'asc' }],\n pagination: { pageSize: 50 },\n },\n inactive: {\n type: 'grid',\n name: 'inactive',\n label: 'Inactive',\n data: { provider: 'object', object: 'sys_webhook' },\n columns: ['label', 'object_name', 'url', 'method', 'active', 'updated_at'],\n filter: [{ field: 'active', operator: 'equals', value: false }],\n sort: [{ field: 'label', order: 'asc' }],\n pagination: { pageSize: 50 },\n },\n by_object: {\n type: 'grid',\n name: 'by_object',\n label: 'By Object',\n data: { provider: 'object', object: 'sys_webhook' },\n columns: ['object_name', 'label', 'url', 'active', 'updated_at'],\n sort: [{ field: 'object_name', order: 'asc' }, { field: 'label', order: 'asc' }],\n grouping: { fields: [{ field: 'object_name', order: 'asc', collapsed: false }] },\n pagination: { pageSize: 100 },\n },\n all_webhooks: {\n type: 'grid',\n name: 'all_webhooks',\n label: 'All',\n data: { provider: 'object', object: 'sys_webhook' },\n columns: ['label', 'object_name', 'url', 'method', 'active', 'updated_at'],\n sort: [{ field: 'label', order: 'asc' }],\n pagination: { pageSize: 50 },\n },\n },\n\n fields: {\n id: Field.text({ label: 'Webhook ID', required: true, readonly: true, group: 'System' }),\n\n name: Field.text({\n label: 'Name',\n required: true,\n maxLength: 100,\n description: 'Unique snake_case name — referenced in logs and audit',\n group: 'Definition',\n }),\n\n label: Field.text({\n label: 'Display Label',\n required: false,\n maxLength: 200,\n group: 'Definition',\n }),\n\n object_name: Field.text({\n label: 'Object',\n required: false,\n maxLength: 100,\n description: 'Short object name whose events fire this webhook (blank = manual / API-triggered)',\n group: 'Definition',\n }),\n\n triggers: Field.text({\n label: 'Triggers',\n required: false,\n maxLength: 200,\n description: 'Comma-separated event list: create,update,delete,undelete,api',\n group: 'Definition',\n }),\n\n url: Field.text({\n label: 'Target URL',\n required: true,\n maxLength: 2048,\n description: 'External endpoint that receives the POST',\n group: 'Definition',\n }),\n\n method: Field.text({\n label: 'HTTP Method',\n required: true,\n defaultValue: 'POST',\n maxLength: 10,\n description: 'GET / POST / PUT / PATCH / DELETE',\n group: 'Definition',\n }),\n\n description: Field.textarea({ label: 'Description', required: false, group: 'Definition' }),\n\n active: Field.boolean({\n label: 'Active',\n required: true,\n defaultValue: true,\n description: 'Inactive webhooks are skipped by the dispatcher',\n group: 'Definition',\n }),\n\n definition_json: Field.textarea({\n label: 'Definition',\n required: true,\n description: 'Serialised Webhook JSON (see @objectstack/spec/automation/webhook) — full headers/auth/retry/payload config',\n group: 'Definition',\n }),\n\n created_at: Field.datetime({\n label: 'Created At',\n required: true,\n defaultValue: 'NOW()',\n readonly: true,\n group: 'System',\n }),\n\n updated_at: Field.datetime({ label: 'Updated At', required: false, group: 'System' }),\n },\n\n indexes: [\n { fields: ['name'], unique: true },\n { fields: ['object_name'] },\n { fields: ['active', 'object_name'] },\n ],\n});\n"]}