You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs(references): regenerate from spec (RowCrudActionOverride, ServiceSelfInfo, ADR-0097)
content/docs/references/ is generated from packages/spec by `gen:schema && gen:docs`,
but nothing in CI regenerates and diffs it, so the output has been drifting since
#3014 (2026-07-16). Regenerating dirties 7 files; every change traces to a spec
change that shipped without re-running the generator:
- data/object.mdx RowCrudActionOverride missing entirely (#3076) — the type is
exported from @objectstack/spec/data but undiscoverable in docs
- api/discovery.mdx ServiceSelfInfo missing entirely
- ui/dashboard.mdx ChartWidget.filterBindings, DashboardFilter.name missing
- data/field.mdx readonly: server-enforced on UPDATE (#2948/#3003)
- security/permission allowTransfer: enforced now, was "pending M2" (#3004)
- integration/* connector ADR-0096 → ADR-0097, expanded providerConfig prose
The ADR renumber is a correctness fix, not churn: 0096 is execution-surface identity
admission, 0097 is declarative connector instances (#2977). The published docs have
been pointing readers at the wrong ADR.
Generated output only — no hand edits. Verified deterministic: two consecutive runs
produce byte-identical output, so the drift is real rather than generator noise.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@@ -132,6 +132,19 @@ const result = ApiRoutes.parse(data);
132
132
|**rateLimit**|`Object`| optional | Rate limit and quota info for this service |
133
133
134
134
135
+
---
136
+
137
+
## ServiceSelfInfo
138
+
139
+
### Properties
140
+
141
+
| Property | Type | Required | Description |
142
+
| :--- | :--- | :--- | :--- |
143
+
|**status**|`Enum<'stub' \| 'degraded'>`| ✅ | stub = placeholder or dev fake (do not use for real work); degraded = functional fallback with reduced capability |
144
+
|**handlerReady**|`boolean`| optional | Whether the HTTP handler genuinely serves requests. Defaults: false for stub, true for degraded. |
145
+
|**message**|`string`| optional | Human-readable explanation, e.g. what to install for the full implementation |
Copy file name to clipboardExpand all lines: content/docs/references/data/field.mdx
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -150,7 +150,7 @@ const result = Address.parse(data);
150
150
|**conditionalRequired**|`string \| Object`| optional | Predicate (CEL) — field is required when TRUE. Alias of `requiredWhen`. |
151
151
|**widget**|`string`| optional | Form widget override — names a registered field component (resolved as `field:<widget>`) to render this field instead of the `type` default. Degrades to the `type` renderer when unregistered. e.g. "object-ref", "filter-condition", "recipient-picker". |
152
152
|**hidden**|`boolean`| optional | Hidden from default UI |
153
-
|**readonly**|`boolean`| optional | Read-only in UI|
153
+
|**readonly**|`boolean`| optional | Read-only — never editable in forms, AND server-enforced on UPDATE: a non-system write to this field is silently dropped from the payload (#2948/#3003; symmetric with `readonlyWhen`). INSERT may still seed it (defaultValue, import).|
154
154
|**requiredPermissions**|`string[]`| optional |[ADR-0066 D3] Capabilities required to read/edit this field (mask on read, deny on write; AND-gate). |
155
155
|**system**|`boolean`| optional | Auto-injected system/audit field (e.g. created_at, updated_by, organization_id). Tools that surface system fields separately from author-declared business fields should branch on this flag. |
156
156
|**sortable**|`boolean`| optional | Whether field is sortable in list views |
|**delete**|`string[]`| optional | Capabilities required to delete (delete/purge). |
283
283
284
284
285
+
---
286
+
287
+
## RowCrudActionOverride
288
+
289
+
Boolean-or-predicates override for a built-in row CRUD affordance.
290
+
291
+
### Properties
292
+
293
+
| Property | Type | Required | Description |
294
+
| :--- | :--- | :--- | :--- |
295
+
|**enabled**|`boolean`| optional | Object-level on/off for the generic affordance; same meaning as the bare boolean form. Omitted → managedBy bucket default. |
296
+
|**visibleWhen**|`string \| Object`| optional | Per-record CEL predicate; false → hide the row button for that record. Fail-closed. |
297
+
|**disabledWhen**|`string \| Object`| optional | Per-record CEL predicate; true → render the row button disabled for that record. Fail-soft. |
|**provider**|`string`| optional | Generic-executor key that materializes this declarative entry at boot (e.g. openapi/mcp/rest). Omit for a catalog-only descriptor. Unknown provider ⇒ hard boot error (ADR-0096). |
181
-
|**providerConfig**|`Record<string, any>`| optional | Provider-specific config validated by the provider factory at boot (e.g. `{ spec, baseUrl }` for openapi). Requires `provider`. |
182
-
|**auth**|`Object \| Object \| Object \| Object`| optional | Declarative instance auth — references credentials via `credentialRef` (resolved at boot), never inline secrets. Requires `provider` (ADR-0096). |
180
+
|**provider**|`string`| optional | Generic-executor key that materializes this declarative entry at boot (e.g. openapi/mcp/rest). Omit for a catalog-only descriptor. Unknown provider ⇒ hard boot error (ADR-0097). |
181
+
|**providerConfig**|`Record<string, any>`| optional | Provider-specific config validated by the provider factory at boot (e.g. `{ spec, baseUrl }` for openapi, where spec is an inline document, a package-relative file path like './billing-openapi.json', or an http(s) URL). Requires `provider`. |
182
+
|**auth**|`Object \| Object \| Object \| Object`| optional | Declarative instance auth — references credentials via `credentialRef` (resolved at boot), never inline secrets. Requires `provider` (ADR-0097). |
183
183
|**actions**|`Object[]`| optional ||
184
184
|**triggers**|`Object[]`| optional ||
185
185
|**syncConfig**|`Object`| optional | Data sync configuration |
|**provider**|`string`| optional | Generic-executor key that materializes this declarative entry at boot (e.g. openapi/mcp/rest). Omit for a catalog-only descriptor. Unknown provider ⇒ hard boot error (ADR-0096). |
307
-
|**providerConfig**|`Record<string, any>`| optional | Provider-specific config validated by the provider factory at boot (e.g. `{ spec, baseUrl }` for openapi). Requires `provider`. |
308
-
|**auth**|`Object \| Object \| Object \| Object`| optional | Declarative instance auth — references credentials via `credentialRef` (resolved at boot), never inline secrets. Requires `provider` (ADR-0096). |
306
+
|**provider**|`string`| optional | Generic-executor key that materializes this declarative entry at boot (e.g. openapi/mcp/rest). Omit for a catalog-only descriptor. Unknown provider ⇒ hard boot error (ADR-0097). |
307
+
|**providerConfig**|`Record<string, any>`| optional | Provider-specific config validated by the provider factory at boot (e.g. `{ spec, baseUrl }` for openapi, where spec is an inline document, a package-relative file path like './billing-openapi.json', or an http(s) URL). Requires `provider`. |
308
+
|**auth**|`Object \| Object \| Object \| Object`| optional | Declarative instance auth — references credentials via `credentialRef` (resolved at boot), never inline secrets. Requires `provider` (ADR-0097). |
309
309
|**actions**|`Object[]`| optional ||
310
310
|**triggers**|`Object[]`| optional ||
311
311
|**syncConfig**|`Object`| optional | Data sync configuration |
|**providerConfig**|`Record<string, any>`| optional | Provider-specific config validated by the provider factory at boot (e.g. `{ spec, baseUrl }` for openapi). Requires `provider`. |
98
-
|**auth**|`Object \| Object \| Object \| Object`| optional | Declarative instance auth — references credentials via `credentialRef` (resolved at boot), never inline secrets. Requires `provider` (ADR-0096). |
97
+
|**providerConfig**|`Record<string, any>`| optional | Provider-specific config validated by the provider factory at boot (e.g. `{ spec, baseUrl }` for openapi, where spec is an inline document, a package-relative file path like './billing-openapi.json', or an http(s) URL). Requires `provider`. |
98
+
|**auth**|`Object \| Object \| Object \| Object`| optional | Declarative instance auth — references credentials via `credentialRef` (resolved at boot), never inline secrets. Requires `provider` (ADR-0097). |
99
99
|**actions**|`Object[]`| optional ||
100
100
|**triggers**|`Object[]`| optional ||
101
101
|**syncConfig**|`Object`| optional | Data sync configuration |
|**providerConfig**|`Record<string, any>`| optional | Provider-specific config validated by the provider factory at boot (e.g. `{ spec, baseUrl }` for openapi). Requires `provider`. |
305
-
|**auth**|`Object \| Object \| Object \| Object`| optional | Declarative instance auth — references credentials via `credentialRef` (resolved at boot), never inline secrets. Requires `provider` (ADR-0096). |
304
+
|**providerConfig**|`Record<string, any>`| optional | Provider-specific config validated by the provider factory at boot (e.g. `{ spec, baseUrl }` for openapi, where spec is an inline document, a package-relative file path like './billing-openapi.json', or an http(s) URL). Requires `provider`. |
305
+
|**auth**|`Object \| Object \| Object \| Object`| optional | Declarative instance auth — references credentials via `credentialRef` (resolved at boot), never inline secrets. Requires `provider` (ADR-0097). |
306
306
|**actions**|`Object[]`| optional ||
307
307
|**triggers**|`Object[]`| optional ||
308
308
|**syncConfig**|`Object`| optional | Data sync configuration |
|**providerConfig**|`Record<string, any>`| optional | Provider-specific config validated by the provider factory at boot (e.g. `{ spec, baseUrl }` for openapi). Requires `provider`. |
413
-
|**auth**|`Object \| Object \| Object \| Object`| optional | Declarative instance auth — references credentials via `credentialRef` (resolved at boot), never inline secrets. Requires `provider` (ADR-0096). |
412
+
|**providerConfig**|`Record<string, any>`| optional | Provider-specific config validated by the provider factory at boot (e.g. `{ spec, baseUrl }` for openapi, where spec is an inline document, a package-relative file path like './billing-openapi.json', or an http(s) URL). Requires `provider`. |
413
+
|**auth**|`Object \| Object \| Object \| Object`| optional | Declarative instance auth — references credentials via `credentialRef` (resolved at boot), never inline secrets. Requires `provider` (ADR-0097). |
414
414
|**actions**|`Object[]`| optional ||
415
415
|**triggers**|`Object[]`| optional ||
416
416
|**syncConfig**|`Object`| optional | Data sync configuration |
|**providerConfig**|`Record<string, any>`| optional | Provider-specific config validated by the provider factory at boot (e.g. `{ spec, baseUrl }` for openapi). Requires `provider`. |
546
-
|**auth**|`Object \| Object \| Object \| Object`| optional | Declarative instance auth — references credentials via `credentialRef` (resolved at boot), never inline secrets. Requires `provider` (ADR-0096). |
545
+
|**providerConfig**|`Record<string, any>`| optional | Provider-specific config validated by the provider factory at boot (e.g. `{ spec, baseUrl }` for openapi, where spec is an inline document, a package-relative file path like './billing-openapi.json', or an http(s) URL). Requires `provider`. |
546
+
|**auth**|`Object \| Object \| Object \| Object`| optional | Declarative instance auth — references credentials via `credentialRef` (resolved at boot), never inline secrets. Requires `provider` (ADR-0097). |
547
547
|**actions**|`Object[]`| optional ||
548
548
|**triggers**|`Object[]`| optional ||
549
549
|**syncConfig**|`Object`| optional | Data sync configuration |
|**providerConfig**|`Record<string, any>`| optional | Provider-specific config validated by the provider factory at boot (e.g. `{ spec, baseUrl }` for openapi). Requires `provider`. |
607
-
|**auth**|`Object \| Object \| Object \| Object`| optional | Declarative instance auth — references credentials via `credentialRef` (resolved at boot), never inline secrets. Requires `provider` (ADR-0096). |
606
+
|**providerConfig**|`Record<string, any>`| optional | Provider-specific config validated by the provider factory at boot (e.g. `{ spec, baseUrl }` for openapi, where spec is an inline document, a package-relative file path like './billing-openapi.json', or an http(s) URL). Requires `provider`. |
607
+
|**auth**|`Object \| Object \| Object \| Object`| optional | Declarative instance auth — references credentials via `credentialRef` (resolved at boot), never inline secrets. Requires `provider` (ADR-0097). |
608
608
|**actions**|`Object[]`| optional ||
609
609
|**triggers**|`Object[]`| optional ||
610
610
|**syncConfig**|`Object`| optional | Data sync configuration |
|**providerConfig**|`Record<string, any>`| optional | Provider-specific config validated by the provider factory at boot (e.g. `{ spec, baseUrl }` for openapi). Requires `provider`. |
743
-
|**auth**|`Object \| Object \| Object \| Object`| optional | Declarative instance auth — references credentials via `credentialRef` (resolved at boot), never inline secrets. Requires `provider` (ADR-0096). |
742
+
|**providerConfig**|`Record<string, any>`| optional | Provider-specific config validated by the provider factory at boot (e.g. `{ spec, baseUrl }` for openapi, where spec is an inline document, a package-relative file path like './billing-openapi.json', or an http(s) URL). Requires `provider`. |
743
+
|**auth**|`Object \| Object \| Object \| Object`| optional | Declarative instance auth — references credentials via `credentialRef` (resolved at boot), never inline secrets. Requires `provider` (ADR-0097). |
744
744
|**actions**|`Object[]`| optional ||
745
745
|**triggers**|`Object[]`| optional ||
746
746
|**syncConfig**|`Object`| optional | Data sync configuration |
|**allowTransfer**|`boolean`| ✅ |[RBAC-gated; operation pending M2] Change record ownership |
87
+
|**allowTransfer**|`boolean`| ✅ |[RBAC-gated; ENFORCED now via insert/update owner_id guard, #3004] Change record ownership (assign/reassign/disown owner_id)|
0 commit comments