Skip to content

Commit c435e29

Browse files
os-zhuangclaude
andauthored
fix(spec): gen:schema io:'input' fallback + disappearance ratchet — restore PageTabsProps (#2978) (#3012)
* fix(spec): stop gen:schema silently unpublishing transform-bearing schemas (#2978) PageTabsProps vanished from json-schema/ when #2967 added an ExpressionInputSchema (.transform) field — zod's toJSONSchema cannot represent transforms in the default output mode, and build-schemas.ts silently skipped it, so the next gen:docs run would have deleted the published PageTabsProps reference section. Two-part fix: 1. io:'input' fallback — when output-mode conversion fails on a transform, retry with io:'input'. These JSON Schemas describe what authors WRITE, and the input side of a transform pipe is plain data, so it is representable (for PageTabsProps.visibleWhen it emits the correct `anyOf: [string, expression envelope]` authoring shape). Rescued schemas are marked `x-io: "input"`. This restores PageTabsProps and 149 other transform-blocked public contracts (ObjectSchema, FieldSchema, FlowSchema, PageSchema, ActionSchema, …); only 18 truly unrepresentable schemas (function/Date/BigInt/custom) remain skipped. 2. Disappearance ratchet — json-schema/ is gitignored, so the committed json-schema.manifest.json records every schema key ever emitted. A key present in the manifest but absent from a build now fails gen:schema loudly with remediation steps; deliberate retirements must remove the key in the same PR. Silent skip remains only for types that have never been representable. Also escape literal `|` in the description cell of generated property tables (build-docs.ts) — rescued schemas surfaced descriptions with pipes that split GFM table rows. Closes #2978 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Fn6qMKtJeVbs2KzouWDHhB * docs(references): regen from restored JSON Schemas (#2978) gen:docs over the post-fix json-schema/ output. PageTabsProps keeps its section (now including the visibleWhen items shape from #2967), and the 149 schemas rescued by the io:'input' fallback gain reference sections — previously delivered-but-undeclared contracts (Prime Directive #10). Existing table rows with literal pipes in descriptions are re-emitted with GFM escaping. Verified: `pnpm docs:build` compiles all regenerated MDX. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Fn6qMKtJeVbs2KzouWDHhB * fix(spec): address CodeQL alerts in gen:schema/gen:docs scripts (#3012) - build-schemas.ts: read the ratchet manifest directly and treat ENOENT as first-run bootstrap instead of existsSync-then-read (TOCTOU). - build-docs.ts: escape backslashes before pipes in table-cell descriptions — an existing `\|` would otherwise decay into an escaped backslash followed by a live pipe, splitting the GFM cell. No output changes: regenerated json-schema/ and references/ are byte-identical. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Fn6qMKtJeVbs2KzouWDHhB --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent dd19298 commit c435e29

66 files changed

Lines changed: 6169 additions & 143 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

content/docs/references/ai/agent.mdx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ const result = AIKnowledge.parse(data);
7676
| **instructions** | `string` || System Prompt / Prime Directives |
7777
| **model** | `Object` | optional | |
7878
| **lifecycle** | `Object` | optional | State machine defining the agent conversation follow and constraints |
79-
| **surface** | `Enum<'ask' \| 'build'>` || Product surface this agent binds ('ask' | 'build') — ADR-0063 §1 |
79+
| **surface** | `Enum<'ask' \| 'build'>` || Product surface this agent binds ('ask' \| 'build') — ADR-0063 §1 |
8080
| **skills** | `string[]` | optional | Skill names to attach (Agent→Skill→Tool architecture) |
8181
| **tools** | `Object[]` | optional | Direct tool references (legacy fallback) |
8282
| **knowledge** | `Object` | optional | RAG access |
@@ -92,8 +92,8 @@ const result = AIKnowledge.parse(data);
9292
| **protection** | `Object` | optional | Package author protection block — lock policy for this agent. |
9393
| **_lock** | `Enum<'none' \| 'no-overlay' \| 'no-delete' \| 'full'>` | optional | Item-level lock — controls overlay & delete (ADR-0010). |
9494
| **_lockReason** | `string` | optional | Human-readable reason shown when a write is refused by _lock. |
95-
| **_lockSource** | `Enum<'artifact' \| 'package' \| 'env-forced'>` | optional | Layer that set _lock (artifact | package | env-forced). |
96-
| **_provenance** | `Enum<'package' \| 'org' \| 'env-forced'>` | optional | Origin of the item (package | org | env-forced). |
95+
| **_lockSource** | `Enum<'artifact' \| 'package' \| 'env-forced'>` | optional | Layer that set _lock (artifact \| package \| env-forced). |
96+
| **_provenance** | `Enum<'package' \| 'org' \| 'env-forced'>` | optional | Origin of the item (package \| org \| env-forced). |
9797
| **_packageId** | `string` | optional | Owning package machine id. |
9898
| **_packageVersion** | `string` | optional | Owning package version. |
9999
| **_lockDocsUrl** | `string` | optional | Optional documentation link surfaced next to _lockReason. |

content/docs/references/ai/model-registry.mdx

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ Enables AI-powered ObjectStack applications to discover and use LLMs consistentl
1818
## TypeScript Usage
1919

2020
```typescript
21-
import { ModelCapability, ModelConfig, ModelLimits, ModelPricing, ModelProvider, ModelRegistryEntry, ModelSelectionCriteria, PromptVariable } from '@objectstack/spec/ai';
22-
import type { ModelCapability, ModelConfig, ModelLimits, ModelPricing, ModelProvider, ModelRegistryEntry, ModelSelectionCriteria, PromptVariable } from '@objectstack/spec/ai';
21+
import { ModelCapability, ModelConfig, ModelLimits, ModelPricing, ModelProvider, ModelRegistry, ModelRegistryEntry, ModelSelectionCriteria, PromptTemplate, PromptVariable } from '@objectstack/spec/ai';
22+
import type { ModelCapability, ModelConfig, ModelLimits, ModelPricing, ModelProvider, ModelRegistry, ModelRegistryEntry, ModelSelectionCriteria, PromptTemplate, PromptVariable } from '@objectstack/spec/ai';
2323

2424
// Validate data
2525
const result = ModelCapability.parse(data);
@@ -111,6 +111,21 @@ const result = ModelCapability.parse(data);
111111
* `custom`
112112

113113

114+
---
115+
116+
## ModelRegistry
117+
118+
### Properties
119+
120+
| Property | Type | Required | Description |
121+
| :--- | :--- | :--- | :--- |
122+
| **name** | `string` || Registry name |
123+
| **models** | `Record<string, Object>` || Model entries by ID |
124+
| **promptTemplates** | `Record<string, Object>` | optional | Prompt templates by name |
125+
| **defaultModel** | `string` | optional | Default model ID |
126+
| **enableAutoFallback** | `boolean` | optional | Auto-fallback on errors |
127+
128+
114129
---
115130

116131
## ModelRegistryEntry
@@ -142,6 +157,35 @@ const result = ModelCapability.parse(data);
142157
| **excludeDeprecated** | `boolean` || |
143158

144159

160+
---
161+
162+
## PromptTemplate
163+
164+
### Properties
165+
166+
| Property | Type | Required | Description |
167+
| :--- | :--- | :--- | :--- |
168+
| **id** | `string` || Unique template identifier |
169+
| **name** | `string` || Template name (snake_case) |
170+
| **label** | `string` || Display name |
171+
| **system** | `string \| Object` | optional | System prompt — supports `{{var}`} interpolation |
172+
| **user** | `string \| Object` || User prompt template — supports `{{var}`} interpolation |
173+
| **assistant** | `string` | optional | Assistant message prefix |
174+
| **variables** | `Object[]` | optional | Template variables |
175+
| **modelId** | `string` | optional | Recommended model ID |
176+
| **temperature** | `number` | optional | |
177+
| **maxTokens** | `number` | optional | |
178+
| **topP** | `number` | optional | |
179+
| **frequencyPenalty** | `number` | optional | |
180+
| **presencePenalty** | `number` | optional | |
181+
| **stopSequences** | `string[]` | optional | |
182+
| **version** | `string` | optional | |
183+
| **description** | `string` | optional | |
184+
| **category** | `string` | optional | Template category (e.g., "code_generation", "support") |
185+
| **tags** | `string[]` | optional | |
186+
| **examples** | `Object[]` | optional | |
187+
188+
145189
---
146190

147191
## PromptVariable

content/docs/references/ai/skill.mdx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ const result = Skill.parse(data);
3636
| **name** | `string` || Skill unique identifier (snake_case) |
3737
| **label** | `string` || Skill display name |
3838
| **description** | `string` | optional | Skill description |
39-
| **surface** | `Enum<'ask' \| 'build' \| 'both'>` || Agent surface this skill binds to ('ask' | 'build' | 'both') — ADR-0063 §3 |
39+
| **surface** | `Enum<'ask' \| 'build' \| 'both'>` || Agent surface this skill binds to ('ask' \| 'build' \| 'both') — ADR-0063 §3 |
4040
| **instructions** | `string` | optional | LLM instructions when skill is active |
4141
| **tools** | `string[]` || Tool names belonging to this skill (supports trailing wildcard, e.g. `action_*`) |
4242
| **triggerPhrases** | `string[]` | optional | Phrases that activate this skill |
@@ -46,8 +46,8 @@ const result = Skill.parse(data);
4646
| **protection** | `Object` | optional | Package author protection block — lock policy for this skill. |
4747
| **_lock** | `Enum<'none' \| 'no-overlay' \| 'no-delete' \| 'full'>` | optional | Item-level lock — controls overlay & delete (ADR-0010). |
4848
| **_lockReason** | `string` | optional | Human-readable reason shown when a write is refused by _lock. |
49-
| **_lockSource** | `Enum<'artifact' \| 'package' \| 'env-forced'>` | optional | Layer that set _lock (artifact | package | env-forced). |
50-
| **_provenance** | `Enum<'package' \| 'org' \| 'env-forced'>` | optional | Origin of the item (package | org | env-forced). |
49+
| **_lockSource** | `Enum<'artifact' \| 'package' \| 'env-forced'>` | optional | Layer that set _lock (artifact \| package \| env-forced). |
50+
| **_provenance** | `Enum<'package' \| 'org' \| 'env-forced'>` | optional | Origin of the item (package \| org \| env-forced). |
5151
| **_packageId** | `string` | optional | Owning package machine id. |
5252
| **_packageVersion** | `string` | optional | Owning package version. |
5353
| **_lockDocsUrl** | `string` | optional | Optional documentation link surfaced next to _lockReason. |

content/docs/references/ai/tool.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ const result = Tool.parse(data);
4545
| **protection** | `Object` | optional | Package author protection block — lock policy for this tool. |
4646
| **_lock** | `Enum<'none' \| 'no-overlay' \| 'no-delete' \| 'full'>` | optional | Item-level lock — controls overlay & delete (ADR-0010). |
4747
| **_lockReason** | `string` | optional | Human-readable reason shown when a write is refused by _lock. |
48-
| **_lockSource** | `Enum<'artifact' \| 'package' \| 'env-forced'>` | optional | Layer that set _lock (artifact | package | env-forced). |
49-
| **_provenance** | `Enum<'package' \| 'org' \| 'env-forced'>` | optional | Origin of the item (package | org | env-forced). |
48+
| **_lockSource** | `Enum<'artifact' \| 'package' \| 'env-forced'>` | optional | Layer that set _lock (artifact \| package \| env-forced). |
49+
| **_provenance** | `Enum<'package' \| 'org' \| 'env-forced'>` | optional | Origin of the item (package \| org \| env-forced). |
5050
| **_packageId** | `string` | optional | Owning package machine id. |
5151
| **_packageVersion** | `string` | optional | Owning package version. |
5252
| **_lockDocsUrl** | `string` | optional | Optional documentation link surfaced next to _lockReason. |

content/docs/references/api/automation-api.mdx

Lines changed: 89 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ GET /api/automation/:name/runs/:runId — Get single execution run
4040
## TypeScript Usage
4141

4242
```typescript
43-
import { AutomationApiErrorCode, AutomationFlowPathParams, AutomationRunPathParams, DeleteFlowRequest, DeleteFlowResponse, FlowSummary, GetFlowRequest, GetRunRequest, GetRunResponse, ListFlowsRequest, ListFlowsResponse, ListRunsRequest, ListRunsResponse, ToggleFlowRequest, ToggleFlowResponse, TriggerFlowRequest, TriggerFlowResponse } from '@objectstack/spec/api';
44-
import type { AutomationApiErrorCode, AutomationFlowPathParams, AutomationRunPathParams, DeleteFlowRequest, DeleteFlowResponse, FlowSummary, GetFlowRequest, GetRunRequest, GetRunResponse, ListFlowsRequest, ListFlowsResponse, ListRunsRequest, ListRunsResponse, ToggleFlowRequest, ToggleFlowResponse, TriggerFlowRequest, TriggerFlowResponse } from '@objectstack/spec/api';
43+
import { AutomationApiErrorCode, AutomationFlowPathParams, AutomationRunPathParams, CreateFlowRequest, CreateFlowResponse, DeleteFlowRequest, DeleteFlowResponse, FlowSummary, GetFlowRequest, GetFlowResponse, GetRunRequest, GetRunResponse, ListFlowsRequest, ListFlowsResponse, ListRunsRequest, ListRunsResponse, ToggleFlowRequest, ToggleFlowResponse, TriggerFlowRequest, TriggerFlowResponse, UpdateFlowRequest, UpdateFlowResponse } from '@objectstack/spec/api';
44+
import type { AutomationApiErrorCode, AutomationFlowPathParams, AutomationRunPathParams, CreateFlowRequest, CreateFlowResponse, DeleteFlowRequest, DeleteFlowResponse, FlowSummary, GetFlowRequest, GetFlowResponse, GetRunRequest, GetRunResponse, ListFlowsRequest, ListFlowsResponse, ListRunsRequest, ListRunsResponse, ToggleFlowRequest, ToggleFlowResponse, TriggerFlowRequest, TriggerFlowResponse, UpdateFlowRequest, UpdateFlowResponse } from '@objectstack/spec/api';
4545

4646
// Validate data
4747
const result = AutomationApiErrorCode.parse(data);
@@ -87,6 +87,53 @@ const result = AutomationApiErrorCode.parse(data);
8787
| **runId** | `string` || Execution run ID |
8888

8989

90+
---
91+
92+
## CreateFlowRequest
93+
94+
### Properties
95+
96+
| Property | Type | Required | Description |
97+
| :--- | :--- | :--- | :--- |
98+
| **name** | `string` || Machine name |
99+
| **label** | `string` || Flow label |
100+
| **description** | `string` | optional | |
101+
| **successMessage** | `string` | optional | Toast shown when a screen flow completes (defaults to a generic "Done"). |
102+
| **errorMessage** | `string` | optional | Toast shown when a screen flow fails (defaults to the raw error). |
103+
| **version** | `integer` | optional | Version number |
104+
| **status** | `Enum<'draft' \| 'active' \| 'obsolete' \| 'invalid'>` | optional | Deployment status |
105+
| **template** | `boolean` | optional | Is logic template (Subflow) |
106+
| **type** | `Enum<'autolaunched' \| 'record_change' \| 'schedule' \| 'screen' \| 'api'>` || Flow type |
107+
| **variables** | `Object[]` | optional | Flow variables |
108+
| **nodes** | `Object[]` || Flow nodes |
109+
| **edges** | `Object[]` || Flow connections |
110+
| **active** | `boolean` | optional | Is active (Deprecated: use status) |
111+
| **runAs** | `Enum<'system' \| 'user'>` | optional | Execution identity for the run: system = elevated (bypasses RLS), user = the triggering user (RLS-respecting). A schedule-triggered run has no trigger user, so under user it runs UNSCOPED (elevated) — declare system to make that explicit. |
112+
| **errorHandling** | `Object` | optional | Flow-level error handling configuration |
113+
| **protection** | `Object` | optional | Package author protection block — lock policy for this flow. |
114+
| **_lock** | `Enum<'none' \| 'no-overlay' \| 'no-delete' \| 'full'>` | optional | Item-level lock — controls overlay & delete (ADR-0010). |
115+
| **_lockReason** | `string` | optional | Human-readable reason shown when a write is refused by _lock. |
116+
| **_lockSource** | `Enum<'artifact' \| 'package' \| 'env-forced'>` | optional | Layer that set _lock (artifact \| package \| env-forced). |
117+
| **_provenance** | `Enum<'package' \| 'org' \| 'env-forced'>` | optional | Origin of the item (package \| org \| env-forced). |
118+
| **_packageId** | `string` | optional | Owning package machine id. |
119+
| **_packageVersion** | `string` | optional | Owning package version. |
120+
| **_lockDocsUrl** | `string` | optional | Optional documentation link surfaced next to _lockReason. |
121+
122+
123+
---
124+
125+
## CreateFlowResponse
126+
127+
### Properties
128+
129+
| Property | Type | Required | Description |
130+
| :--- | :--- | :--- | :--- |
131+
| **success** | `boolean` || Operation success status |
132+
| **error** | `Object` | optional | Error details if success is false |
133+
| **meta** | `Object` | optional | Response metadata |
134+
| **data** | `Object` || The created flow definition |
135+
136+
90137
---
91138

92139
## DeleteFlowRequest
@@ -141,6 +188,20 @@ const result = AutomationApiErrorCode.parse(data);
141188
| **name** | `string` || Flow machine name (snake_case) |
142189

143190

191+
---
192+
193+
## GetFlowResponse
194+
195+
### Properties
196+
197+
| Property | Type | Required | Description |
198+
| :--- | :--- | :--- | :--- |
199+
| **success** | `boolean` || Operation success status |
200+
| **error** | `Object` | optional | Error details if success is false |
201+
| **meta** | `Object` | optional | Response metadata |
202+
| **data** | `Object` || Full flow definition |
203+
204+
144205
---
145206

146207
## GetRunRequest
@@ -281,3 +342,29 @@ const result = AutomationApiErrorCode.parse(data);
281342

282343
---
283344

345+
## UpdateFlowRequest
346+
347+
### Properties
348+
349+
| Property | Type | Required | Description |
350+
| :--- | :--- | :--- | :--- |
351+
| **name** | `string` || Flow machine name (snake_case) |
352+
| **definition** | `Object` || Partial flow definition to update |
353+
354+
355+
---
356+
357+
## UpdateFlowResponse
358+
359+
### Properties
360+
361+
| Property | Type | Required | Description |
362+
| :--- | :--- | :--- | :--- |
363+
| **success** | `boolean` || Operation success status |
364+
| **error** | `Object` | optional | Error details if success is false |
365+
| **meta** | `Object` | optional | Response metadata |
366+
| **data** | `Object` || The updated flow definition |
367+
368+
369+
---
370+

content/docs/references/api/export.mdx

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ Base path: /api/v1/data/\{object\}/export
2424
## TypeScript Usage
2525

2626
```typescript
27-
import { CreateExportJobRequest, CreateExportJobResponse, CreateImportJobRequest, CreateImportJobResponse, DeduplicationStrategy, ExportFormat, ExportImportTemplate, ExportJobProgress, ExportJobStatus, ExportJobSummary, FieldMappingEntry, GetExportJobDownloadRequest, GetExportJobDownloadResponse, ImportJobProgress, ImportJobResults, ImportJobStatus, ImportJobSummary, ImportMapping, ImportRequest, ImportResponse, ImportRowResult, ImportValidationConfig, ImportValidationMode, ImportValidationResult, ImportWriteMode, ListExportJobsRequest, ListExportJobsResponse, ListImportJobsRequest, ListImportJobsResponse, ScheduleExportResponse, UndoImportJobResponse } from '@objectstack/spec/api';
28-
import type { CreateExportJobRequest, CreateExportJobResponse, CreateImportJobRequest, CreateImportJobResponse, DeduplicationStrategy, ExportFormat, ExportImportTemplate, ExportJobProgress, ExportJobStatus, ExportJobSummary, FieldMappingEntry, GetExportJobDownloadRequest, GetExportJobDownloadResponse, ImportJobProgress, ImportJobResults, ImportJobStatus, ImportJobSummary, ImportMapping, ImportRequest, ImportResponse, ImportRowResult, ImportValidationConfig, ImportValidationMode, ImportValidationResult, ImportWriteMode, ListExportJobsRequest, ListExportJobsResponse, ListImportJobsRequest, ListImportJobsResponse, ScheduleExportResponse, UndoImportJobResponse } from '@objectstack/spec/api';
27+
import { CreateExportJobRequest, CreateExportJobResponse, CreateImportJobRequest, CreateImportJobResponse, DeduplicationStrategy, ExportFormat, ExportImportTemplate, ExportJobProgress, ExportJobStatus, ExportJobSummary, FieldMappingEntry, GetExportJobDownloadRequest, GetExportJobDownloadResponse, ImportJobProgress, ImportJobResults, ImportJobStatus, ImportJobSummary, ImportMapping, ImportRequest, ImportResponse, ImportRowResult, ImportValidationConfig, ImportValidationMode, ImportValidationResult, ImportWriteMode, ListExportJobsRequest, ListExportJobsResponse, ListImportJobsRequest, ListImportJobsResponse, ScheduleExportRequest, ScheduleExportResponse, ScheduledExport, UndoImportJobResponse } from '@objectstack/spec/api';
28+
import type { CreateExportJobRequest, CreateExportJobResponse, CreateImportJobRequest, CreateImportJobResponse, DeduplicationStrategy, ExportFormat, ExportImportTemplate, ExportJobProgress, ExportJobStatus, ExportJobSummary, FieldMappingEntry, GetExportJobDownloadRequest, GetExportJobDownloadResponse, ImportJobProgress, ImportJobResults, ImportJobStatus, ImportJobSummary, ImportMapping, ImportRequest, ImportResponse, ImportRowResult, ImportValidationConfig, ImportValidationMode, ImportValidationResult, ImportWriteMode, ListExportJobsRequest, ListExportJobsResponse, ListImportJobsRequest, ListImportJobsResponse, ScheduleExportRequest, ScheduleExportResponse, ScheduledExport, UndoImportJobResponse } from '@objectstack/spec/api';
2929

3030
// Validate data
3131
const result = CreateExportJobRequest.parse(data);
@@ -518,6 +518,25 @@ Type: `Object[]`
518518
| **jobs** | `Object[]` || Import jobs, newest first |
519519

520520

521+
---
522+
523+
## ScheduleExportRequest
524+
525+
### Properties
526+
527+
| Property | Type | Required | Description |
528+
| :--- | :--- | :--- | :--- |
529+
| **name** | `string` || Schedule name (snake_case) |
530+
| **label** | `string` | optional | Human-readable label |
531+
| **object** | `string` || Object name to export |
532+
| **format** | `Enum<'csv' \| 'json' \| 'jsonl' \| 'xlsx' \| 'parquet'>` | optional | Export file format |
533+
| **fields** | `string[]` | optional | Fields to include |
534+
| **filter** | `Record<string, any>` | optional | Record filter criteria |
535+
| **templateId** | `string` | optional | Export template ID for field mappings |
536+
| **schedule** | `Object` || Schedule timing configuration |
537+
| **delivery** | `Object` || Export delivery configuration |
538+
539+
521540
---
522541

523542
## ScheduleExportResponse
@@ -532,6 +551,31 @@ Type: `Object[]`
532551
| **data** | `Object` || |
533552

534553

554+
---
555+
556+
## ScheduledExport
557+
558+
### Properties
559+
560+
| Property | Type | Required | Description |
561+
| :--- | :--- | :--- | :--- |
562+
| **id** | `string` | optional | Scheduled export ID |
563+
| **name** | `string` || Schedule name (snake_case) |
564+
| **label** | `string` | optional | Human-readable label |
565+
| **object** | `string` || Object name to export |
566+
| **format** | `Enum<'csv' \| 'json' \| 'jsonl' \| 'xlsx' \| 'parquet'>` | optional | Export file format |
567+
| **fields** | `string[]` | optional | Fields to include |
568+
| **filter** | `Record<string, any>` | optional | Record filter criteria |
569+
| **templateId** | `string` | optional | Export template ID for field mappings |
570+
| **schedule** | `Object` || Schedule timing configuration |
571+
| **delivery** | `Object` || Export delivery configuration |
572+
| **enabled** | `boolean` | optional | Whether the scheduled export is active |
573+
| **lastRunAt** | `string` | optional | Last execution timestamp |
574+
| **nextRunAt** | `string` | optional | Next scheduled execution |
575+
| **createdAt** | `string` | optional | Creation timestamp |
576+
| **createdBy** | `string` | optional | User who created the schedule |
577+
578+
535579
---
536580

537581
## UndoImportJobResponse

0 commit comments

Comments
 (0)