@alvera-ai/platform-sdk 0.7.1 → 0.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -22,37 +22,29 @@ export type Options<TData extends TDataShape = TDataShape, ThrowOnError extends
22
22
  };
23
23
 
24
24
  /**
25
- * List tools
25
+ * Resolve a short URL token to a page
26
26
  *
27
- * Returns a paginated list of tools for the authenticated tenant.
28
- */
29
- export const platformApiToolControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiToolControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiToolControllerIndexResponses, PlatformApiToolControllerIndexErrors, ThrowOnError>({
30
- querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
31
- requestValidator: async (data: unknown) => await v.parseAsync(v.object({
32
- body: v.optional(v.never()),
33
- path: vPlatformApiToolControllerIndexPath,
34
- query: v.optional(vPlatformApiToolControllerIndexQuery)
35
- }), data),
36
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiToolControllerIndexResponse, data),
37
- security: [{ name: 'X-API-Key', type: 'apiKey' }],
38
- url: '/api/v1/tenants/{tenant_slug}/tools',
39
- ...options
40
- });
41
-
42
- /**
43
- * Create a tool
27
+ * Given a connected app slug and a Puid short URL token, resolves the token to
28
+ * the pre-stored route path and MDM subject ID. The Cloudflare app calls this
29
+ * endpoint when a customer clicks a short URL, forwarding the original client
30
+ * headers (user-agent, IP, country) in the request body.
31
+ *
32
+ * When the page token is linked to a message (via workflow action execution),
33
+ * the regulated message details (raw body, channel, status) are included in
34
+ * the response.
35
+ *
36
+ * **Requires X-API-Key authentication.**
44
37
  *
45
- * Creates a new tool for the authenticated tenant.
46
38
  */
47
- export const platformApiToolControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiToolControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiToolControllerCreateResponses, PlatformApiToolControllerCreateErrors, ThrowOnError>({
39
+ export const platformApiConnectedAppControllerResolvePage = <ThrowOnError extends boolean = false>(options: Options<PlatformApiConnectedAppControllerResolvePageData, ThrowOnError>) => (options.client ?? client).post<PlatformApiConnectedAppControllerResolvePageResponses, PlatformApiConnectedAppControllerResolvePageErrors, ThrowOnError>({
48
40
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
49
- body: v.optional(vPlatformApiToolControllerCreateBody),
50
- path: vPlatformApiToolControllerCreatePath,
41
+ body: vPlatformApiConnectedAppControllerResolvePageBody,
42
+ path: vPlatformApiConnectedAppControllerResolvePagePath,
51
43
  query: v.optional(v.never())
52
44
  }), data),
53
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiToolControllerCreateResponse, data),
45
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiConnectedAppControllerResolvePageResponse, data),
54
46
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
55
- url: '/api/v1/tenants/{tenant_slug}/tools',
47
+ url: '/api/v1/tenants/{tenant_slug}/connected-apps/{slug}/resolve-page',
56
48
  ...options,
57
49
  headers: {
58
50
  'Content-Type': 'application/json',
@@ -61,53 +53,60 @@ export const platformApiToolControllerCreate = <ThrowOnError extends boolean = f
61
53
  });
62
54
 
63
55
  /**
64
- * Delete a data activation client
56
+ * Run a contract against a payload (sandbox)
65
57
  *
66
- * Deletes a DAC. Returns 422 if the DAC is a platform default (is_default=true). Returns 409 if referenced by other resources.
58
+ * Runs the contract's `filter transform mdm_input` pipeline against the supplied JSON row. Stateless no DB writes. Use for template authoring/testing.
67
59
  */
68
- export const platformApiDataActivationClientControllerDelete = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerDeleteData, ThrowOnError>) => (options.client ?? client).delete<PlatformApiDataActivationClientControllerDeleteResponses, PlatformApiDataActivationClientControllerDeleteErrors, ThrowOnError>({
60
+ export const platformApiInteroperabilityContractControllerRun = <ThrowOnError extends boolean = false>(options: Options<PlatformApiInteroperabilityContractControllerRunData, ThrowOnError>) => (options.client ?? client).post<PlatformApiInteroperabilityContractControllerRunResponses, PlatformApiInteroperabilityContractControllerRunErrors, ThrowOnError>({
61
+ querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
69
62
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
70
- body: v.optional(v.never()),
71
- path: vPlatformApiDataActivationClientControllerDeletePath,
72
- query: v.optional(v.never())
63
+ body: vPlatformApiInteroperabilityContractControllerRunBody,
64
+ path: vPlatformApiInteroperabilityContractControllerRunPath,
65
+ query: v.optional(vPlatformApiInteroperabilityContractControllerRunQuery)
73
66
  }), data),
74
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDataActivationClientControllerDeleteResponse, data),
67
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiInteroperabilityContractControllerRunResponse, data),
75
68
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
76
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{slug}',
77
- ...options
69
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts/{slug}/run',
70
+ ...options,
71
+ headers: {
72
+ 'Content-Type': 'application/json',
73
+ ...options.headers
74
+ }
78
75
  });
79
76
 
80
77
  /**
81
- * Get a data activation client
78
+ * List action status updaters
82
79
  *
83
- * Returns a single DAC by datalake-scoped slug.
80
+ * Returns a paginated list of action status updaters for the authenticated tenant.
84
81
  */
85
- export const platformApiDataActivationClientControllerShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDataActivationClientControllerShowResponses, PlatformApiDataActivationClientControllerShowErrors, ThrowOnError>({
82
+ export const platformApiActionStatusUpdaterControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiActionStatusUpdaterControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiActionStatusUpdaterControllerIndexResponses, PlatformApiActionStatusUpdaterControllerIndexErrors, ThrowOnError>({
83
+ querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
86
84
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
87
85
  body: v.optional(v.never()),
88
- path: vPlatformApiDataActivationClientControllerShowPath,
89
- query: v.optional(v.never())
86
+ path: vPlatformApiActionStatusUpdaterControllerIndexPath,
87
+ query: v.optional(vPlatformApiActionStatusUpdaterControllerIndexQuery)
90
88
  }), data),
91
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDataActivationClientControllerShowResponse, data),
89
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiActionStatusUpdaterControllerIndexResponse, data),
92
90
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
93
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{slug}',
91
+ url: '/api/v1/tenants/{tenant_slug}/action-status-updaters',
94
92
  ...options
95
93
  });
96
94
 
97
95
  /**
98
- * Replace a data activation client
96
+ * Create an action status updater
99
97
  *
100
- * Replaces a DAC with the full resource body. PUT semantics — all required fields must be present. `slug` is immutable.
98
+ * Creates a new action status updater for the authenticated tenant.
101
99
  */
102
- export const platformApiDataActivationClientControllerUpdate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerUpdateData, ThrowOnError>) => (options.client ?? client).put<PlatformApiDataActivationClientControllerUpdateResponses, PlatformApiDataActivationClientControllerUpdateErrors, ThrowOnError>({
100
+ export const platformApiActionStatusUpdaterControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiActionStatusUpdaterControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiActionStatusUpdaterControllerCreateResponses, PlatformApiActionStatusUpdaterControllerCreateErrors, ThrowOnError>({
101
+ querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
103
102
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
104
- body: v.optional(vPlatformApiDataActivationClientControllerUpdateBody),
105
- path: vPlatformApiDataActivationClientControllerUpdatePath,
106
- query: v.optional(v.never())
103
+ body: v.optional(vPlatformApiActionStatusUpdaterControllerCreateBody),
104
+ path: vPlatformApiActionStatusUpdaterControllerCreatePath,
105
+ query: v.optional(vPlatformApiActionStatusUpdaterControllerCreateQuery)
107
106
  }), data),
108
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDataActivationClientControllerUpdateResponse, data),
107
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiActionStatusUpdaterControllerCreateResponse, data),
109
108
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
110
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{slug}',
109
+ url: '/api/v1/tenants/{tenant_slug}/action-status-updaters',
111
110
  ...options,
112
111
  headers: {
113
112
  'Content-Type': 'application/json',
@@ -116,97 +115,118 @@ export const platformApiDataActivationClientControllerUpdate = <ThrowOnError ext
116
115
  });
117
116
 
118
117
  /**
119
- * Enqueue datalake migrations
120
- *
121
- * Enqueues a `DatalakeMigrationWorker` Oban job that brings the datalake's
122
- * per-tenant database to the current schema version. Required after
123
- * `POST /datalakes`, which only persists the metadata row — it does NOT
124
- * run migrations against the per-tenant DB. Without this step, every
125
- * downstream resource that touches per-datalake tables
126
- * (`data_activation_logs`, MDM tables, dataset tables) will fail with
127
- * `relation … does not exist`.
128
- *
129
- * Asynchronous: returns 202 Accepted as soon as the job is enqueued.
130
- * Callers poll `GET /datalakes/:id` and watch for `status: :ready`.
131
- * Idempotent at the job level — re-enqueueing on a migrated datalake
132
- * is a no-op once the worker completes.
133
- *
134
- * The LiveView "Migrate Datalake" button calls the same migrator
135
- * synchronously inside the LiveView process.
136
- *
137
- * Requires a tenant-scoped Bearer with membership role `admin`.
118
+ * List batch run logs
138
119
  *
120
+ * Returns a paginated list of batch-level workflow run logs.
139
121
  */
140
- export const platformApiDatalakeControllerMigrate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerMigrateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDatalakeControllerMigrateResponses, PlatformApiDatalakeControllerMigrateErrors, ThrowOnError>({
122
+ export const platformApiAgenticWorkflowOperationsControllerBatchLogsIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexResponses, PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexErrors, ThrowOnError>({
123
+ querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
141
124
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
142
125
  body: v.optional(v.never()),
143
- path: vPlatformApiDatalakeControllerMigratePath,
144
- query: v.optional(v.never())
126
+ path: vPlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexPath,
127
+ query: v.optional(vPlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexQuery)
145
128
  }), data),
146
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDatalakeControllerMigrateResponse, data),
129
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexResponse, data),
147
130
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
148
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/migrate',
131
+ url: '/api/v1/tenants/{tenant_slug}/agentic-workflows/{workflow_slug}/batch-logs',
149
132
  ...options
150
133
  });
151
134
 
152
135
  /**
153
- * Verify current session
136
+ * Create and execute a SQL search for a dataset
154
137
  *
155
- * Returns the current session's tenant, role, and identity information.
138
+ * Creates a `UserSearch` row, runs `INSERT INTO search_results SELECT ... WHERE <search_query>` against the regulated schema, and returns the `UserSearch` resource (including `status`, `results_count`, and `error_message`). The session's `data_access_mode` controls which schema is queried.
139
+ */
140
+ export const platformApiDatasetControllerCreateUserSearch = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatasetControllerCreateUserSearchData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDatasetControllerCreateUserSearchResponses, PlatformApiDatasetControllerCreateUserSearchErrors, ThrowOnError>({
141
+ requestValidator: async (data: unknown) => await v.parseAsync(v.object({
142
+ body: v.optional(vPlatformApiDatasetControllerCreateUserSearchBody),
143
+ path: vPlatformApiDatasetControllerCreateUserSearchPath,
144
+ query: v.optional(vPlatformApiDatasetControllerCreateUserSearchQuery)
145
+ }), data),
146
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDatasetControllerCreateUserSearchResponse, data),
147
+ security: [{ name: 'X-API-Key', type: 'apiKey' }],
148
+ url: '/api/v1/datasets/{dataset}/user-searches',
149
+ ...options,
150
+ headers: {
151
+ 'Content-Type': 'application/json',
152
+ ...options.headers
153
+ }
154
+ });
155
+
156
+ /**
157
+ * Page results from a UserSearch — outer SQL chunk + inner resource Flop
156
158
  *
157
- * Works with both authentication methods:
158
- * - `X-API-Key` header (M2M)
159
- * - `Authorization: Bearer <session_token>` (human sessions)
159
+ * Two-tier pagination at two layers:
160
160
  *
161
- * Use this as a "who am I" endpoint to confirm credentials are valid and
162
- * inspect the resolved tenant, role, and identity.
161
+ * * **Outer** `outer_pagination[page]` / `outer_pagination[page_size]`
162
+ * (defaults `1` / `1000`, max `1000`) pages cached IDs from
163
+ * `search_results`. The cap is dictated by Postgres' `WHERE id IN (^ids)`
164
+ * plan — past ~1k parameters the planner regresses.
165
+ * * **Inner** — `inner_search[page]`, `inner_search[page_size]` (defaults
166
+ * `1` / `20`), `inner_search[order_direction]` (sort on the schema's
167
+ * `:global_search` compound), `inner_search[global_search]` (single
168
+ * ILIKE-OR text-search knob).
163
169
  *
164
- * **Requires authentication** (X-API-Key or Bearer token).
170
+ * Response carries both metas under `meta.sql` and `meta.flop`. A caller
171
+ * that only drives the inner page sees `meta.sql.has_next_page=true` when
172
+ * the SQL search isn't exhausted; advancing `outer_pagination[page]`
173
+ * fetches the next chunk.
165
174
  *
166
175
  */
167
- export const platformApiSessionControllerVerify = <ThrowOnError extends boolean = false>(options?: Options<PlatformApiSessionControllerVerifyData, ThrowOnError>) => (options?.client ?? client).get<PlatformApiSessionControllerVerifyResponses, PlatformApiSessionControllerVerifyErrors, ThrowOnError>({
176
+ export const platformApiDatasetControllerSearch = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatasetControllerSearchData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDatasetControllerSearchResponses, PlatformApiDatasetControllerSearchErrors, ThrowOnError>({
168
177
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
169
178
  body: v.optional(v.never()),
170
- path: v.optional(v.never()),
171
- query: v.optional(v.never())
179
+ path: vPlatformApiDatasetControllerSearchPath,
180
+ query: v.optional(vPlatformApiDatasetControllerSearchQuery)
172
181
  }), data),
173
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiSessionControllerVerifyResponse, data),
174
- security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],
175
- url: '/api/v1/sessions/verify',
182
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDatasetControllerSearchResponse, data),
183
+ security: [{ name: 'X-API-Key', type: 'apiKey' }],
184
+ url: '/api/v1/datasets/{dataset}/search',
176
185
  ...options
177
186
  });
178
187
 
179
188
  /**
180
- * Download execution context
189
+ * List workflow execution logs
181
190
  *
182
- * Returns a presigned URL for downloading the execution context JSON from R2.
191
+ * Returns a paginated list of per-event execution logs for a workflow.
183
192
  */
184
- export const platformApiAgenticWorkflowOperationsControllerWorkflowLogDownload = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadResponses, PlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadErrors, ThrowOnError>({
193
+ export const platformApiAgenticWorkflowOperationsControllerWorkflowLogsIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexResponses, PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexErrors, ThrowOnError>({
194
+ querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
185
195
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
186
196
  body: v.optional(v.never()),
187
- path: vPlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadPath,
188
- query: v.optional(v.never())
197
+ path: vPlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexPath,
198
+ query: v.optional(vPlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexQuery)
189
199
  }), data),
190
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadResponse, data),
200
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexResponse, data),
191
201
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
192
- url: '/api/v1/tenants/{tenant_slug}/agentic-workflows/{workflow_slug}/workflow-logs/{id}/download',
202
+ url: '/api/v1/tenants/{tenant_slug}/agentic-workflows/{workflow_slug}/workflow-logs',
193
203
  ...options
194
204
  });
195
205
 
196
206
  /**
197
- * Create datalake download link
207
+ * Invite a user to the tenant
208
+ *
209
+ * Creates a `tenant_admin`-issued invitation. Mirrors the LiveView flow at
210
+ * `/app/team` → "Invite new member". Wraps `Tenants.send_tenant_invitation/3`
211
+ * verbatim, including the email send.
212
+ *
213
+ * The `role` enum is **membership-level** (`member`, `researcher`, `admin`),
214
+ * NOT the platform-wide `User.role` enum — privilege-escalation safe by
215
+ * construction.
216
+ *
217
+ * Requires a tenant-scoped Bearer with membership role `:admin`
218
+ * (`current_role.name == "tenant_admin"`).
198
219
  *
199
- * Returns a presigned GET URL for an object stored in one of the datalake's cloud storage buckets (regulated or unregulated). Typical use: read a `DACRawLogFile.object_key` (`s3://bucket/key`) off a data-activation log row, split it into `bucket` and `key`, then POST here to obtain a short-lived download URL.
200
220
  */
201
- export const platformApiDatalakeControllerCreateDownloadLink = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerCreateDownloadLinkData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDatalakeControllerCreateDownloadLinkResponses, PlatformApiDatalakeControllerCreateDownloadLinkErrors, ThrowOnError>({
221
+ export const platformApiInvitationControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiInvitationControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiInvitationControllerCreateResponses, PlatformApiInvitationControllerCreateErrors, ThrowOnError>({
202
222
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
203
- body: vPlatformApiDatalakeControllerCreateDownloadLinkBody,
204
- path: vPlatformApiDatalakeControllerCreateDownloadLinkPath,
223
+ body: vPlatformApiInvitationControllerCreateBody,
224
+ path: vPlatformApiInvitationControllerCreatePath,
205
225
  query: v.optional(v.never())
206
226
  }), data),
207
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDatalakeControllerCreateDownloadLinkResponse, data),
208
- security: [{ name: 'X-API-Key', type: 'apiKey' }],
209
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/download-link',
227
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiInvitationControllerCreateResponse, data),
228
+ security: [{ scheme: 'bearer', type: 'http' }],
229
+ url: '/api/v1/tenants/{tenant_slug}/invitations',
210
230
  ...options,
211
231
  headers: {
212
232
  'Content-Type': 'application/json',
@@ -215,37 +235,36 @@ export const platformApiDatalakeControllerCreateDownloadLink = <ThrowOnError ext
215
235
  });
216
236
 
217
237
  /**
218
- * Get a datalake
238
+ * Get a connected app
219
239
  *
220
- * Returns a single datalake by ID (non-sensitive metadata only).
240
+ * Returns a single connected app by ID.
221
241
  */
222
- export const platformApiDatalakeControllerShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDatalakeControllerShowResponses, PlatformApiDatalakeControllerShowErrors, ThrowOnError>({
223
- querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
242
+ export const platformApiConnectedAppMgmtControllerShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiConnectedAppMgmtControllerShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiConnectedAppMgmtControllerShowResponses, PlatformApiConnectedAppMgmtControllerShowErrors, ThrowOnError>({
224
243
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
225
244
  body: v.optional(v.never()),
226
- path: vPlatformApiDatalakeControllerShowPath,
227
- query: v.optional(vPlatformApiDatalakeControllerShowQuery)
245
+ path: vPlatformApiConnectedAppMgmtControllerShowPath,
246
+ query: v.optional(v.never())
228
247
  }), data),
229
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDatalakeControllerShowResponse, data),
248
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiConnectedAppMgmtControllerShowResponse, data),
230
249
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
231
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{id}',
250
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/{id}',
232
251
  ...options
233
252
  });
234
253
 
235
254
  /**
236
- * Test invoke a tool
255
+ * Replace a connected app
237
256
  *
238
- * Manually invokes a tool with caller-supplied parameters — the API equivalent of the 'Try It' panel in the tool form. Records a `ManualToolInvocation` for audit and returns the provider response (or error). Does not access tenant datasets, so no capability ceiling check is applied.
257
+ * Replaces a connected app with the full resource body. PUT semantics all required fields must be present.
239
258
  */
240
- export const platformApiToolControllerTestInvocation = <ThrowOnError extends boolean = false>(options: Options<PlatformApiToolControllerTestInvocationData, ThrowOnError>) => (options.client ?? client).post<PlatformApiToolControllerTestInvocationResponses, PlatformApiToolControllerTestInvocationErrors, ThrowOnError>({
259
+ export const platformApiConnectedAppMgmtControllerUpdate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiConnectedAppMgmtControllerUpdateData, ThrowOnError>) => (options.client ?? client).put<PlatformApiConnectedAppMgmtControllerUpdateResponses, PlatformApiConnectedAppMgmtControllerUpdateErrors, ThrowOnError>({
241
260
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
242
- body: v.optional(vPlatformApiToolControllerTestInvocationBody),
243
- path: vPlatformApiToolControllerTestInvocationPath,
261
+ body: v.optional(vPlatformApiConnectedAppMgmtControllerUpdateBody),
262
+ path: vPlatformApiConnectedAppMgmtControllerUpdatePath,
244
263
  query: v.optional(v.never())
245
264
  }), data),
246
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiToolControllerTestInvocationResponse, data),
265
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiConnectedAppMgmtControllerUpdateResponse, data),
247
266
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
248
- url: '/api/v1/tenants/{tenant_slug}/tools/{id}/test-invocation',
267
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/{id}',
249
268
  ...options,
250
269
  headers: {
251
270
  'Content-Type': 'application/json',
@@ -254,72 +273,60 @@ export const platformApiToolControllerTestInvocation = <ThrowOnError extends boo
254
273
  });
255
274
 
256
275
  /**
257
- * Get schema metadata for a specific dataset type
276
+ * Verify subject identity
258
277
  *
259
- * Returns a markdown document describing the fields available on a dataset type. For standard datasets (patient, appointment, etc.) returns the schema moduledoc. For generic tables, pass the generic_table_id query parameter.
260
- */
261
- export const platformApiDatasetControllerDatasetMetadata = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatasetControllerDatasetMetadataData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDatasetControllerDatasetMetadataResponses, PlatformApiDatasetControllerDatasetMetadataErrors, ThrowOnError>({
262
- requestValidator: async (data: unknown) => await v.parseAsync(v.object({
263
- body: v.optional(v.never()),
264
- path: vPlatformApiDatasetControllerDatasetMetadataPath,
265
- query: v.optional(vPlatformApiDatasetControllerDatasetMetadataQuery)
266
- }), data),
267
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDatasetControllerDatasetMetadataResponse, data),
268
- security: [{ name: 'X-API-Key', type: 'apiKey' }],
269
- url: '/api/v1/datasets/{dataset_type}/metadata',
270
- ...options
271
- });
272
-
273
- /**
274
- * List accessible tenants
278
+ * Verify a subject's identity against their master record using fuzzy matching.
275
279
  *
276
- * Returns a paginated list of tenants accessible to the authenticated identity.
280
+ * Supports verification by:
281
+ * - **family_name** — Jaro distance >= 0.85
282
+ * - **given_name** — Jaro distance >= 0.80
283
+ * - **birth_date** — Fuzzy component matching >= 0.80
284
+ * - **identifiers** — Exact (system, value) match
277
285
  *
278
- * - **Bearer token**: returns all tenants the user has membership in.
279
- * - **X-API-Key**: returns the single tenant the API key is scoped to.
286
+ * At least one verification field is required.
287
+ *
288
+ * **Requires X-API-Key authentication.**
280
289
  *
281
290
  */
282
- export const platformApiTenantControllerIndex = <ThrowOnError extends boolean = false>(options?: Options<PlatformApiTenantControllerIndexData, ThrowOnError>) => (options?.client ?? client).get<PlatformApiTenantControllerIndexResponses, PlatformApiTenantControllerIndexErrors, ThrowOnError>({
283
- querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
291
+ export const platformApiMdmControllerVerify = <ThrowOnError extends boolean = false>(options: Options<PlatformApiMdmControllerVerifyData, ThrowOnError>) => (options.client ?? client).post<PlatformApiMdmControllerVerifyResponses, PlatformApiMdmControllerVerifyErrors, ThrowOnError>({
284
292
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
285
- body: v.optional(v.never()),
286
- path: v.optional(v.never()),
287
- query: v.optional(vPlatformApiTenantControllerIndexQuery)
293
+ body: vPlatformApiMdmControllerVerifyBody,
294
+ path: vPlatformApiMdmControllerVerifyPath,
295
+ query: v.optional(v.never())
288
296
  }), data),
289
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiTenantControllerIndexResponse, data),
290
- security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],
291
- url: '/api/v1/tenants',
292
- ...options
297
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiMdmControllerVerifyResponse, data),
298
+ security: [{ name: 'X-API-Key', type: 'apiKey' }],
299
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/mdm/verify',
300
+ ...options,
301
+ headers: {
302
+ 'Content-Type': 'application/json',
303
+ ...options.headers
304
+ }
293
305
  });
294
306
 
295
307
  /**
296
- * Create a tenant
297
- *
298
- * Creates a new tenant and an `:admin` membership for the authenticated user.
299
- * Wraps `Platform.Tenants.create_tenant/3` verbatim — same primitive that
300
- * backs the `/app/tenants/new` LiveView.
308
+ * Sign up a new user
301
309
  *
302
- * On success returns a regular `SessionResponse` carrying a freshly-minted
303
- * **tenant-scoped Bearer** (`session_token`), the new tenant, and the
304
- * membership role. Callers swap their tenant-less Bearer for this token
305
- * and proceed with tenant-scoped work — no second sign-in round-trip.
310
+ * Register a new user account. Mirrors the `/auth/register` LiveView form
311
+ * submission shape — wraps `Accounts.register_user/2` verbatim with no
312
+ * business-logic divergence.
306
313
  *
307
- * The user must be confirmed (`confirmed_at IS NOT NULL`); unconfirmed
308
- * callers receive 403. Duplicate tenant names (slug collision) return 422.
314
+ * The created user is **unconfirmed** and has **no tenant memberships**. To
315
+ * obtain a Bearer token, the user must first be confirmed (via the email
316
+ * confirmation flow in production, or via `PUT /api/v1/admin/users/:id/confirm`
317
+ * in test bootstrap), then exchange credentials at `POST /api/v1/sessions`.
309
318
  *
310
- * Requires `Authorization: Bearer <token>` (X-API-Key cannot create tenants
311
- * it carries no platform-user identity to bind the membership to).
319
+ * No authentication required this endpoint is the entry point for new users.
312
320
  *
313
321
  */
314
- export const platformApiTenantControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiTenantControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiTenantControllerCreateResponses, PlatformApiTenantControllerCreateErrors, ThrowOnError>({
322
+ export const platformApiAuthControllerSignUp = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAuthControllerSignUpData, ThrowOnError>) => (options.client ?? client).post<PlatformApiAuthControllerSignUpResponses, PlatformApiAuthControllerSignUpErrors, ThrowOnError>({
315
323
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
316
- body: vPlatformApiTenantControllerCreateBody,
324
+ body: vPlatformApiAuthControllerSignUpBody,
317
325
  path: v.optional(v.never()),
318
326
  query: v.optional(v.never())
319
327
  }), data),
320
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiTenantControllerCreateResponse, data),
321
- security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],
322
- url: '/api/v1/tenants',
328
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAuthControllerSignUpResponse, data),
329
+ url: '/api/v1/auth/sign-up',
323
330
  ...options,
324
331
  headers: {
325
332
  'Content-Type': 'application/json',
@@ -328,37 +335,37 @@ export const platformApiTenantControllerCreate = <ThrowOnError extends boolean =
328
335
  });
329
336
 
330
337
  /**
331
- * List generic tables
338
+ * List data activation clients
332
339
  *
333
- * Returns a paginated list of generic tables for the datalake (custom tables + system tables for the data domain).
340
+ * Returns a paginated list of DACs for the datalake in the path.
334
341
  */
335
- export const platformApiGenericTableControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiGenericTableControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiGenericTableControllerIndexResponses, PlatformApiGenericTableControllerIndexErrors, ThrowOnError>({
342
+ export const platformApiDataActivationClientControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDataActivationClientControllerIndexResponses, PlatformApiDataActivationClientControllerIndexErrors, ThrowOnError>({
336
343
  querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
337
344
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
338
345
  body: v.optional(v.never()),
339
- path: vPlatformApiGenericTableControllerIndexPath,
340
- query: v.optional(vPlatformApiGenericTableControllerIndexQuery)
346
+ path: vPlatformApiDataActivationClientControllerIndexPath,
347
+ query: v.optional(vPlatformApiDataActivationClientControllerIndexQuery)
341
348
  }), data),
342
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiGenericTableControllerIndexResponse, data),
349
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDataActivationClientControllerIndexResponse, data),
343
350
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
344
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/generic-tables',
351
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients',
345
352
  ...options
346
353
  });
347
354
 
348
355
  /**
349
- * Create a generic table
356
+ * Create a data activation client
350
357
  *
351
- * Creates a new custom generic table within the datalake.
358
+ * Creates a new DAC. `slug` is auto-generated from `name`. `tool_call` is a polymorphic object whose shape depends on the `tool_call_type` discriminator — see `tool_call_type` enum for valid variants (RESTCall, SQLQueryCall, SFTPCall, SharePointExcelCall, AWSLambdaCall, ManualUploadCall, S3Call).
352
359
  */
353
- export const platformApiGenericTableControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiGenericTableControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiGenericTableControllerCreateResponses, PlatformApiGenericTableControllerCreateErrors, ThrowOnError>({
360
+ export const platformApiDataActivationClientControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDataActivationClientControllerCreateResponses, PlatformApiDataActivationClientControllerCreateErrors, ThrowOnError>({
354
361
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
355
- body: v.optional(vPlatformApiGenericTableControllerCreateBody),
356
- path: vPlatformApiGenericTableControllerCreatePath,
362
+ body: v.optional(vPlatformApiDataActivationClientControllerCreateBody),
363
+ path: vPlatformApiDataActivationClientControllerCreatePath,
357
364
  query: v.optional(v.never())
358
365
  }), data),
359
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiGenericTableControllerCreateResponse, data),
366
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDataActivationClientControllerCreateResponse, data),
360
367
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
361
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/generic-tables',
368
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients',
362
369
  ...options,
363
370
  headers: {
364
371
  'Content-Type': 'application/json',
@@ -367,63 +374,109 @@ export const platformApiGenericTableControllerCreate = <ThrowOnError extends boo
367
374
  });
368
375
 
369
376
  /**
370
- * List the authenticated user's pending invitations
377
+ * Sync routes
371
378
  *
372
- * Returns invitations addressed to the authenticated user that have not
373
- * yet been accepted. Mirrors the LiveView at `/app/users/tenant-invitations`
374
- * that recipients see after sign-in. Wraps `Tenants.list_invitations_by_user/1`
375
- * verbatim always filtered to the current user, never accepts a query
376
- * parameter that could leak another user's invitations.
379
+ * Enqueues a background job to fetch routes from the connected app's `/.well-known/routes.json` endpoint and update the stored routes.
380
+ */
381
+ export const platformApiConnectedAppMgmtControllerSyncRoutes = <ThrowOnError extends boolean = false>(options: Options<PlatformApiConnectedAppMgmtControllerSyncRoutesData, ThrowOnError>) => (options.client ?? client).post<PlatformApiConnectedAppMgmtControllerSyncRoutesResponses, PlatformApiConnectedAppMgmtControllerSyncRoutesErrors, ThrowOnError>({
382
+ requestValidator: async (data: unknown) => await v.parseAsync(v.object({
383
+ body: v.optional(v.never()),
384
+ path: vPlatformApiConnectedAppMgmtControllerSyncRoutesPath,
385
+ query: v.optional(v.never())
386
+ }), data),
387
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiConnectedAppMgmtControllerSyncRoutesResponse, data),
388
+ security: [{ name: 'X-API-Key', type: 'apiKey' }],
389
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/{id}/sync-routes',
390
+ ...options
391
+ });
392
+
393
+ /**
394
+ * Health check
377
395
  *
378
- * Requires any Bearer (tenant-less is fine — recipients typically don't
379
- * have tenant scope yet at this point in the bootstrap flow).
396
+ * Public health check endpoint that returns:
397
+ * - Application version
398
+ * - Database connectivity status (SELECT 1 query)
399
+ * - Current timestamp
400
+ *
401
+ * **No authentication required.**
380
402
  *
381
403
  */
382
- export const platformApiInvitationControllerIndex = <ThrowOnError extends boolean = false>(options?: Options<PlatformApiInvitationControllerIndexData, ThrowOnError>) => (options?.client ?? client).get<PlatformApiInvitationControllerIndexResponses, PlatformApiInvitationControllerIndexErrors, ThrowOnError>({
404
+ export const platformApiPingControllerPing = <ThrowOnError extends boolean = false>(options?: Options<PlatformApiPingControllerPingData, ThrowOnError>) => (options?.client ?? client).get<PlatformApiPingControllerPingResponses, PlatformApiPingControllerPingErrors, ThrowOnError>({
383
405
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
384
406
  body: v.optional(v.never()),
385
407
  path: v.optional(v.never()),
386
408
  query: v.optional(v.never())
387
409
  }), data),
388
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiInvitationControllerIndexResponse, data),
389
- security: [{ scheme: 'bearer', type: 'http' }],
390
- url: '/api/v1/invitations',
410
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiPingControllerPingResponse, data),
411
+ url: '/api/ping',
391
412
  ...options
392
413
  });
393
414
 
394
415
  /**
395
- * List interoperability contracts
416
+ * Get workflow metadata
396
417
  *
397
- * Returns a paginated list of contracts scoped to the datalake.
418
+ * Returns a markdown document describing the workflow's variable pipeline — available variables at each node (event dataset, MDM, context datasets, enrichment, filter, decision, actions).
398
419
  */
399
- export const platformApiInteroperabilityContractControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiInteroperabilityContractControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiInteroperabilityContractControllerIndexResponses, PlatformApiInteroperabilityContractControllerIndexErrors, ThrowOnError>({
400
- querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
420
+ export const platformApiAgenticWorkflowControllerMetadata = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowControllerMetadataData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAgenticWorkflowControllerMetadataResponses, PlatformApiAgenticWorkflowControllerMetadataErrors, ThrowOnError>({
401
421
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
402
422
  body: v.optional(v.never()),
403
- path: vPlatformApiInteroperabilityContractControllerIndexPath,
404
- query: v.optional(vPlatformApiInteroperabilityContractControllerIndexQuery)
423
+ path: vPlatformApiAgenticWorkflowControllerMetadataPath,
424
+ query: v.optional(v.never())
425
+ }), data),
426
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAgenticWorkflowControllerMetadataResponse, data),
427
+ security: [{ name: 'X-API-Key', type: 'apiKey' }],
428
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{id}/metadata',
429
+ ...options
430
+ });
431
+
432
+ /**
433
+ * Delete a tool
434
+ *
435
+ * Deletes a tool. Returns 409 if the tool is referenced by another resource.
436
+ */
437
+ export const platformApiToolControllerDelete = <ThrowOnError extends boolean = false>(options: Options<PlatformApiToolControllerDeleteData, ThrowOnError>) => (options.client ?? client).delete<PlatformApiToolControllerDeleteResponses, PlatformApiToolControllerDeleteErrors, ThrowOnError>({
438
+ requestValidator: async (data: unknown) => await v.parseAsync(v.object({
439
+ body: v.optional(v.never()),
440
+ path: vPlatformApiToolControllerDeletePath,
441
+ query: v.optional(v.never())
442
+ }), data),
443
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiToolControllerDeleteResponse, data),
444
+ security: [{ name: 'X-API-Key', type: 'apiKey' }],
445
+ url: '/api/v1/tenants/{tenant_slug}/tools/{id}',
446
+ ...options
447
+ });
448
+
449
+ /**
450
+ * Get a tool
451
+ *
452
+ * Returns a single tool by ID.
453
+ */
454
+ export const platformApiToolControllerShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiToolControllerShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiToolControllerShowResponses, PlatformApiToolControllerShowErrors, ThrowOnError>({
455
+ requestValidator: async (data: unknown) => await v.parseAsync(v.object({
456
+ body: v.optional(v.never()),
457
+ path: vPlatformApiToolControllerShowPath,
458
+ query: v.optional(v.never())
405
459
  }), data),
406
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiInteroperabilityContractControllerIndexResponse, data),
460
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiToolControllerShowResponse, data),
407
461
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
408
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts',
462
+ url: '/api/v1/tenants/{tenant_slug}/tools/{id}',
409
463
  ...options
410
464
  });
411
465
 
412
466
  /**
413
- * Create an interoperability contract
467
+ * Replace a tool
414
468
  *
415
- * Creates a new contract. `slug` is auto-generated from `name` on insert.
469
+ * Replaces a tool with the full resource body. PUT semantics all required fields must be present.
416
470
  */
417
- export const platformApiInteroperabilityContractControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiInteroperabilityContractControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiInteroperabilityContractControllerCreateResponses, PlatformApiInteroperabilityContractControllerCreateErrors, ThrowOnError>({
418
- querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
471
+ export const platformApiToolControllerUpdate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiToolControllerUpdateData, ThrowOnError>) => (options.client ?? client).put<PlatformApiToolControllerUpdateResponses, PlatformApiToolControllerUpdateErrors, ThrowOnError>({
419
472
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
420
- body: v.optional(vPlatformApiInteroperabilityContractControllerCreateBody),
421
- path: vPlatformApiInteroperabilityContractControllerCreatePath,
422
- query: v.optional(vPlatformApiInteroperabilityContractControllerCreateQuery)
473
+ body: v.optional(vPlatformApiToolControllerUpdateBody),
474
+ path: vPlatformApiToolControllerUpdatePath,
475
+ query: v.optional(v.never())
423
476
  }), data),
424
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiInteroperabilityContractControllerCreateResponse, data),
477
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiToolControllerUpdateResponse, data),
425
478
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
426
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts',
479
+ url: '/api/v1/tenants/{tenant_slug}/tools/{id}',
427
480
  ...options,
428
481
  headers: {
429
482
  'Content-Type': 'application/json',
@@ -432,81 +485,89 @@ export const platformApiInteroperabilityContractControllerCreate = <ThrowOnError
432
485
  });
433
486
 
434
487
  /**
435
- * Get contract field metadata
488
+ * List processing logs for a Data Activation Client
436
489
  *
437
- * Returns a markdown document describing the fields of the contract's target resource type. Combines `@moduledoc` (resource description) and `@typedoc` (field definitions) from the schema.
490
+ * Returns a Flop-paginated list of `DataActivationLog` rows for this DAC. One log per `(batch_id, dataset_table)` a single run produces multiple log rows, one per dataset table the DAC writes into. Filter or group client-side on `batch_id` to reconstruct a batch-level view.
438
491
  */
439
- export const platformApiInteroperabilityContractControllerMetadata = <ThrowOnError extends boolean = false>(options: Options<PlatformApiInteroperabilityContractControllerMetadataData, ThrowOnError>) => (options.client ?? client).get<PlatformApiInteroperabilityContractControllerMetadataResponses, PlatformApiInteroperabilityContractControllerMetadataErrors, ThrowOnError>({
492
+ export const platformApiDataActivationClientControllerLogsIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerLogsIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDataActivationClientControllerLogsIndexResponses, PlatformApiDataActivationClientControllerLogsIndexErrors, ThrowOnError>({
440
493
  querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
441
494
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
442
495
  body: v.optional(v.never()),
443
- path: vPlatformApiInteroperabilityContractControllerMetadataPath,
444
- query: v.optional(vPlatformApiInteroperabilityContractControllerMetadataQuery)
496
+ path: vPlatformApiDataActivationClientControllerLogsIndexPath,
497
+ query: v.optional(vPlatformApiDataActivationClientControllerLogsIndexQuery)
445
498
  }), data),
446
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiInteroperabilityContractControllerMetadataResponse, data),
499
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDataActivationClientControllerLogsIndexResponse, data),
447
500
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
448
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts/{slug}/metadata',
501
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{slug}/logs',
449
502
  ...options
450
503
  });
451
504
 
452
505
  /**
453
- * Get a batch run log
506
+ * Stop refresh polling for a batch run log
454
507
  *
455
- * Returns a single batch-level workflow run log with merged artifacts.
508
+ * Deletes the DynamicCron job that polls this batch. The batch log is NOT deleted.
456
509
  */
457
- export const platformApiAgenticWorkflowOperationsControllerBatchLogShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerBatchLogShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAgenticWorkflowOperationsControllerBatchLogShowResponses, PlatformApiAgenticWorkflowOperationsControllerBatchLogShowErrors, ThrowOnError>({
510
+ export const platformApiAgenticWorkflowOperationsControllerBatchLogStop = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerBatchLogStopData, ThrowOnError>) => (options.client ?? client).post<PlatformApiAgenticWorkflowOperationsControllerBatchLogStopResponses, PlatformApiAgenticWorkflowOperationsControllerBatchLogStopErrors, ThrowOnError>({
458
511
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
459
512
  body: v.optional(v.never()),
460
- path: vPlatformApiAgenticWorkflowOperationsControllerBatchLogShowPath,
513
+ path: vPlatformApiAgenticWorkflowOperationsControllerBatchLogStopPath,
461
514
  query: v.optional(v.never())
462
515
  }), data),
463
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAgenticWorkflowOperationsControllerBatchLogShowResponse, data),
516
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAgenticWorkflowOperationsControllerBatchLogStopResponse, data),
464
517
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
465
- url: '/api/v1/tenants/{tenant_slug}/agentic-workflows/{workflow_slug}/batch-logs/{id}',
518
+ url: '/api/v1/tenants/{tenant_slug}/agentic-workflows/{workflow_slug}/batch-logs/{id}/stop',
466
519
  ...options
467
520
  });
468
521
 
469
522
  /**
470
- * Accept a tenant invitation
471
- *
472
- * Accepts a pending invitation addressed to the authenticated user, creating
473
- * a `Membership` and deleting the invitation. Mirrors the LiveView flow at
474
- * `/app/users/tenant-invitations` → "Accept" button. Wraps
475
- * `Tenants.accept_invitation!/2` verbatim.
476
- *
477
- * The function-level guard `get_invitation_by_user!/2` ensures the invitation
478
- * is addressed to the caller — cross-user acceptance returns 404.
479
- *
480
- * Requires any Bearer (the recipient often has only a tenant-less Bearer at
481
- * this point — they just signed up and haven't joined a tenant yet).
523
+ * Get DAC dataset metadata
482
524
  *
525
+ * Returns a markdown document describing the fields of each dataset connected to this data activation client via its interoperability contracts.
483
526
  */
484
- export const platformApiInvitationControllerAccept = <ThrowOnError extends boolean = false>(options: Options<PlatformApiInvitationControllerAcceptData, ThrowOnError>) => (options.client ?? client).post<PlatformApiInvitationControllerAcceptResponses, PlatformApiInvitationControllerAcceptErrors, ThrowOnError>({
527
+ export const platformApiDataActivationClientControllerMetadata = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerMetadataData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDataActivationClientControllerMetadataResponses, PlatformApiDataActivationClientControllerMetadataErrors, ThrowOnError>({
485
528
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
486
529
  body: v.optional(v.never()),
487
- path: vPlatformApiInvitationControllerAcceptPath,
530
+ path: vPlatformApiDataActivationClientControllerMetadataPath,
488
531
  query: v.optional(v.never())
489
532
  }), data),
490
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiInvitationControllerAcceptResponse, data),
491
- security: [{ scheme: 'bearer', type: 'http' }],
492
- url: '/api/v1/invitations/{id}/accept',
533
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDataActivationClientControllerMetadataResponse, data),
534
+ security: [{ name: 'X-API-Key', type: 'apiKey' }],
535
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{slug}/metadata',
493
536
  ...options
494
537
  });
495
538
 
496
539
  /**
497
- * Execute an individual action for a dataset record
540
+ * List agentic workflows
498
541
  *
499
- * Executes a single workflow action identified by decision_key for the given dataset record, bypassing filter and decision evaluation
542
+ * Returns a paginated list of workflows for a datalake.
500
543
  */
501
- export const platformApiAgenticWorkflowOperationsControllerExecute = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerExecuteData, ThrowOnError>) => (options.client ?? client).post<PlatformApiAgenticWorkflowOperationsControllerExecuteResponses, PlatformApiAgenticWorkflowOperationsControllerExecuteErrors, ThrowOnError>({
544
+ export const platformApiAgenticWorkflowControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAgenticWorkflowControllerIndexResponses, PlatformApiAgenticWorkflowControllerIndexErrors, ThrowOnError>({
545
+ querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
502
546
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
503
- body: vPlatformApiAgenticWorkflowOperationsControllerExecuteBody,
504
- path: vPlatformApiAgenticWorkflowOperationsControllerExecutePath,
547
+ body: v.optional(v.never()),
548
+ path: vPlatformApiAgenticWorkflowControllerIndexPath,
549
+ query: v.optional(vPlatformApiAgenticWorkflowControllerIndexQuery)
550
+ }), data),
551
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAgenticWorkflowControllerIndexResponse, data),
552
+ security: [{ name: 'X-API-Key', type: 'apiKey' }],
553
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows',
554
+ ...options
555
+ });
556
+
557
+ /**
558
+ * Create an agentic workflow
559
+ *
560
+ * Creates a new workflow. Attach AI agents via the `ai_agents` array.
561
+ */
562
+ export const platformApiAgenticWorkflowControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiAgenticWorkflowControllerCreateResponses, PlatformApiAgenticWorkflowControllerCreateErrors, ThrowOnError>({
563
+ requestValidator: async (data: unknown) => await v.parseAsync(v.object({
564
+ body: v.optional(vPlatformApiAgenticWorkflowControllerCreateBody),
565
+ path: vPlatformApiAgenticWorkflowControllerCreatePath,
505
566
  query: v.optional(v.never())
506
567
  }), data),
507
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAgenticWorkflowOperationsControllerExecuteResponse, data),
568
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAgenticWorkflowControllerCreateResponse, data),
508
569
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
509
- url: '/api/v1/tenants/{tenant_slug}/agentic-workflows/{workflow_slug}/execute',
570
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows',
510
571
  ...options,
511
572
  headers: {
512
573
  'Content-Type': 'application/json',
@@ -515,20 +576,24 @@ export const platformApiAgenticWorkflowOperationsControllerExecute = <ThrowOnErr
515
576
  });
516
577
 
517
578
  /**
518
- * Create datalake upload link
579
+ * Update message tracking fields for a page
580
+ *
581
+ * Updates tracking timestamps (opened_at, form_submitted_at) on the message
582
+ * linked to a page token. Called by the connected app when a user opens a page
583
+ * or submits a form.
584
+ *
585
+ * **Requires X-API-Key authentication.**
519
586
  *
520
- * Returns a presigned PUT URL for uploading a file (NDJSON or CSV) directly to the datalake's regulated cloud storage. The returned key lives under `uploads/<datalake_id>/` and can be passed to downstream endpoints (e.g. data activation client ingest-file) that accept a pre-uploaded storage key.
521
587
  */
522
- export const platformApiDatalakeControllerCreateUploadLink = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerCreateUploadLinkData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDatalakeControllerCreateUploadLinkResponses, PlatformApiDatalakeControllerCreateUploadLinkErrors, ThrowOnError>({
523
- querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
588
+ export const platformApiConnectedAppControllerUpdateMessageTracking = <ThrowOnError extends boolean = false>(options: Options<PlatformApiConnectedAppControllerUpdateMessageTrackingData, ThrowOnError>) => (options.client ?? client).patch<PlatformApiConnectedAppControllerUpdateMessageTrackingResponses, PlatformApiConnectedAppControllerUpdateMessageTrackingErrors, ThrowOnError>({
524
589
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
525
- body: vPlatformApiDatalakeControllerCreateUploadLinkBody,
526
- path: vPlatformApiDatalakeControllerCreateUploadLinkPath,
527
- query: v.optional(vPlatformApiDatalakeControllerCreateUploadLinkQuery)
590
+ body: vPlatformApiConnectedAppControllerUpdateMessageTrackingBody,
591
+ path: vPlatformApiConnectedAppControllerUpdateMessageTrackingPath,
592
+ query: v.optional(v.never())
528
593
  }), data),
529
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDatalakeControllerCreateUploadLinkResponse, data),
594
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiConnectedAppControllerUpdateMessageTrackingResponse, data),
530
595
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
531
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/upload-link',
596
+ url: '/api/v1/tenants/{tenant_slug}/connected-apps/{slug}/update-message-tracking',
532
597
  ...options,
533
598
  headers: {
534
599
  'Content-Type': 'application/json',
@@ -537,38 +602,79 @@ export const platformApiDatalakeControllerCreateUploadLink = <ThrowOnError exten
537
602
  });
538
603
 
539
604
  /**
540
- * List datalakes
605
+ * Start or restart refresh polling for a batch run log
541
606
  *
542
- * Returns a paginated list of datalakes for the authenticated tenant.
607
+ * Creates a DynamicCron job to poll this batch. Idempotent — if cron already exists, it's a no-op.
543
608
  */
544
- export const platformApiDatalakeControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDatalakeControllerIndexResponses, PlatformApiDatalakeControllerIndexErrors, ThrowOnError>({
545
- querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
609
+ export const platformApiAgenticWorkflowOperationsControllerBatchLogStart = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerBatchLogStartData, ThrowOnError>) => (options.client ?? client).post<PlatformApiAgenticWorkflowOperationsControllerBatchLogStartResponses, PlatformApiAgenticWorkflowOperationsControllerBatchLogStartErrors, ThrowOnError>({
546
610
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
547
611
  body: v.optional(v.never()),
548
- path: vPlatformApiDatalakeControllerIndexPath,
549
- query: v.optional(vPlatformApiDatalakeControllerIndexQuery)
612
+ path: vPlatformApiAgenticWorkflowOperationsControllerBatchLogStartPath,
613
+ query: v.optional(v.never())
550
614
  }), data),
551
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDatalakeControllerIndexResponse, data),
615
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAgenticWorkflowOperationsControllerBatchLogStartResponse, data),
552
616
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
553
- url: '/api/v1/tenants/{tenant_slug}/datalakes',
617
+ url: '/api/v1/tenants/{tenant_slug}/agentic-workflows/{workflow_slug}/batch-logs/{id}/start',
554
618
  ...options
555
619
  });
556
620
 
557
621
  /**
558
- * Create a datalake
622
+ * Revoke current session
623
+ *
624
+ * Revokes the current Bearer session — deactivates the session and deletes
625
+ * the linked UserToken. The Bearer token becomes immediately invalid.
626
+ *
627
+ * Only works with `Authorization: Bearer <session_token>` (not X-API-Key).
628
+ *
629
+ * **Requires Bearer authentication.**
559
630
  *
560
- * Creates a new datalake for the authenticated tenant.
561
631
  */
562
- export const platformApiDatalakeControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDatalakeControllerCreateResponses, PlatformApiDatalakeControllerCreateErrors, ThrowOnError>({
563
- querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
632
+ export const platformApiSessionControllerDelete = <ThrowOnError extends boolean = false>(options?: Options<PlatformApiSessionControllerDeleteData, ThrowOnError>) => (options?.client ?? client).delete<PlatformApiSessionControllerDeleteResponses, PlatformApiSessionControllerDeleteErrors, ThrowOnError>({
564
633
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
565
- body: v.optional(vPlatformApiDatalakeControllerCreateBody),
566
- path: vPlatformApiDatalakeControllerCreatePath,
567
- query: v.optional(vPlatformApiDatalakeControllerCreateQuery)
634
+ body: v.optional(v.never()),
635
+ path: v.optional(v.never()),
636
+ query: v.optional(v.never())
568
637
  }), data),
569
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDatalakeControllerCreateResponse, data),
570
- security: [{ name: 'X-API-Key', type: 'apiKey' }],
571
- url: '/api/v1/tenants/{tenant_slug}/datalakes',
638
+ security: [{ scheme: 'bearer', type: 'http' }],
639
+ url: '/api/v1/sessions',
640
+ ...options
641
+ });
642
+
643
+ /**
644
+ * Create a session (human auth)
645
+ *
646
+ * Exchange user credentials for a Bearer session token.
647
+ *
648
+ * Send `{email, password}` (with optional `tenant_slug`) to authenticate a
649
+ * human user and receive a session token. Use the returned `session_token`
650
+ * as `Authorization: Bearer <session_token>` on subsequent API requests.
651
+ *
652
+ * When `tenant_slug` is **omitted**, returns a tenant-less Bearer for
653
+ * pre-tenant flows: admin operations under `/api/v1/admin/...` and creating
654
+ * your first tenant via `POST /api/v1/tenants`. Tenant-scoped routes will
655
+ * reject such tokens with 403.
656
+ *
657
+ * When `tenant_slug` is **provided**, returns a tenant-scoped Bearer with
658
+ * the caller's membership role (or 401 if the user has no membership in
659
+ * that tenant).
660
+ *
661
+ * Optionally specify `expires_in` (seconds) to control session duration.
662
+ * Default: 86400 (24 hours). Maximum: 2592000 (30 days).
663
+ *
664
+ * For M2M (server-to-server) authentication, use `X-API-Key` header directly
665
+ * on each request instead — no session exchange needed.
666
+ *
667
+ * **No authentication required** — this endpoint authenticates the caller.
668
+ *
669
+ */
670
+ export const platformApiSessionControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiSessionControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiSessionControllerCreateResponses, PlatformApiSessionControllerCreateErrors, ThrowOnError>({
671
+ requestValidator: async (data: unknown) => await v.parseAsync(v.object({
672
+ body: vPlatformApiSessionControllerCreateBody,
673
+ path: v.optional(v.never()),
674
+ query: v.optional(v.never())
675
+ }), data),
676
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiSessionControllerCreateResponse, data),
677
+ url: '/api/v1/sessions',
572
678
  ...options,
573
679
  headers: {
574
680
  'Content-Type': 'application/json',
@@ -577,37 +683,37 @@ export const platformApiDatalakeControllerCreate = <ThrowOnError extends boolean
577
683
  });
578
684
 
579
685
  /**
580
- * Show a single DAC processing log
686
+ * List connected apps
581
687
  *
582
- * Returns a single `DataActivationLog` row scoped to this DAC. Returns 404 if the id belongs to a different client.
688
+ * Returns a paginated list of connected apps for the authenticated tenant.
583
689
  */
584
- export const platformApiDataActivationClientControllerLogShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerLogShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDataActivationClientControllerLogShowResponses, PlatformApiDataActivationClientControllerLogShowErrors, ThrowOnError>({
690
+ export const platformApiConnectedAppMgmtControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiConnectedAppMgmtControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiConnectedAppMgmtControllerIndexResponses, PlatformApiConnectedAppMgmtControllerIndexErrors, ThrowOnError>({
691
+ querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
585
692
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
586
693
  body: v.optional(v.never()),
587
- path: vPlatformApiDataActivationClientControllerLogShowPath,
588
- query: v.optional(v.never())
694
+ path: vPlatformApiConnectedAppMgmtControllerIndexPath,
695
+ query: v.optional(vPlatformApiConnectedAppMgmtControllerIndexQuery)
589
696
  }), data),
590
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDataActivationClientControllerLogShowResponse, data),
697
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiConnectedAppMgmtControllerIndexResponse, data),
591
698
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
592
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{slug}/logs/{id}',
699
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps',
593
700
  ...options
594
701
  });
595
702
 
596
703
  /**
597
- * Replace a data source
704
+ * Create a connected app
598
705
  *
599
- * Replaces a data source with the full resource body. PUT semantics — all required fields must be present.
706
+ * Creates a new connected app with automatic API key provisioning.
600
707
  */
601
- export const platformApiDataSourceControllerUpdate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataSourceControllerUpdateData, ThrowOnError>) => (options.client ?? client).put<PlatformApiDataSourceControllerUpdateResponses, PlatformApiDataSourceControllerUpdateErrors, ThrowOnError>({
602
- querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
708
+ export const platformApiConnectedAppMgmtControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiConnectedAppMgmtControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiConnectedAppMgmtControllerCreateResponses, PlatformApiConnectedAppMgmtControllerCreateErrors, ThrowOnError>({
603
709
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
604
- body: v.optional(vPlatformApiDataSourceControllerUpdateBody),
605
- path: vPlatformApiDataSourceControllerUpdatePath,
606
- query: v.optional(vPlatformApiDataSourceControllerUpdateQuery)
710
+ body: v.optional(vPlatformApiConnectedAppMgmtControllerCreateBody),
711
+ path: vPlatformApiConnectedAppMgmtControllerCreatePath,
712
+ query: v.optional(v.never())
607
713
  }), data),
608
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDataSourceControllerUpdateResponse, data),
714
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiConnectedAppMgmtControllerCreateResponse, data),
609
715
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
610
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-sources/{id}',
716
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps',
611
717
  ...options,
612
718
  headers: {
613
719
  'Content-Type': 'application/json',
@@ -616,53 +722,83 @@ export const platformApiDataSourceControllerUpdate = <ThrowOnError extends boole
616
722
  });
617
723
 
618
724
  /**
619
- * Delete an agentic workflow
725
+ * Confirm a user (admin bypass)
726
+ *
727
+ * Marks a user account as confirmed without requiring an email-confirmation
728
+ * token. Idempotent — confirming an already-confirmed user is a 200 no-op
729
+ * that returns the existing `confirmed_at` timestamp.
730
+ *
731
+ * Wraps `Accounts.confirm_user!/1` verbatim — exactly the primitive that
732
+ * backs the dev/admin email-confirm path in the LiveView UI. **Zero new
733
+ * business logic.**
734
+ *
735
+ * Powerful primitive: bypasses the regular email-confirmation flow. Every
736
+ * successful call is structured-logged with `caller_user_id` and
737
+ * `target_user_id` for forensic trail.
738
+ *
739
+ * **Requires platform-admin authentication** (`User.role == :admin`).
740
+ *
741
+ */
742
+ export const platformApiAdminControllerConfirmUser = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAdminControllerConfirmUserData, ThrowOnError>) => (options.client ?? client).put<PlatformApiAdminControllerConfirmUserResponses, PlatformApiAdminControllerConfirmUserErrors, ThrowOnError>({
743
+ requestValidator: async (data: unknown) => await v.parseAsync(v.object({
744
+ body: v.optional(v.never()),
745
+ path: vPlatformApiAdminControllerConfirmUserPath,
746
+ query: v.optional(v.never())
747
+ }), data),
748
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAdminControllerConfirmUserResponse, data),
749
+ security: [{ scheme: 'bearer', type: 'http' }],
750
+ url: '/api/v1/admin/users/{id}/confirm',
751
+ ...options
752
+ });
753
+
754
+ /**
755
+ * Delete an AI agent
620
756
  *
621
- * Deletes a workflow and all associated actions, context datasets, and AI agent attachments.
757
+ * Deletes an AI agent. Returns 409 if the agent is attached to a workflow.
622
758
  */
623
- export const platformApiAgenticWorkflowControllerDelete = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowControllerDeleteData, ThrowOnError>) => (options.client ?? client).delete<PlatformApiAgenticWorkflowControllerDeleteResponses, PlatformApiAgenticWorkflowControllerDeleteErrors, ThrowOnError>({
759
+ export const platformApiAiAgentControllerDelete = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAiAgentControllerDeleteData, ThrowOnError>) => (options.client ?? client).delete<PlatformApiAiAgentControllerDeleteResponses, PlatformApiAiAgentControllerDeleteErrors, ThrowOnError>({
624
760
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
625
761
  body: v.optional(v.never()),
626
- path: vPlatformApiAgenticWorkflowControllerDeletePath,
762
+ path: vPlatformApiAiAgentControllerDeletePath,
627
763
  query: v.optional(v.never())
628
764
  }), data),
629
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAgenticWorkflowControllerDeleteResponse, data),
765
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAiAgentControllerDeleteResponse, data),
630
766
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
631
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{id}',
767
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents/{id}',
632
768
  ...options
633
769
  });
634
770
 
635
771
  /**
636
- * Get an agentic workflow
772
+ * Get an AI agent
637
773
  *
638
- * Returns a single workflow by ID with nested AI agents.
774
+ * Returns a single AI agent by ID.
639
775
  */
640
- export const platformApiAgenticWorkflowControllerShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowControllerShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAgenticWorkflowControllerShowResponses, PlatformApiAgenticWorkflowControllerShowErrors, ThrowOnError>({
776
+ export const platformApiAiAgentControllerShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAiAgentControllerShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAiAgentControllerShowResponses, PlatformApiAiAgentControllerShowErrors, ThrowOnError>({
641
777
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
642
778
  body: v.optional(v.never()),
643
- path: vPlatformApiAgenticWorkflowControllerShowPath,
779
+ path: vPlatformApiAiAgentControllerShowPath,
644
780
  query: v.optional(v.never())
645
781
  }), data),
646
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAgenticWorkflowControllerShowResponse, data),
782
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAiAgentControllerShowResponse, data),
647
783
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
648
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{id}',
784
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents/{id}',
649
785
  ...options
650
786
  });
651
787
 
652
788
  /**
653
- * Replace an agentic workflow
789
+ * Replace an AI agent
654
790
  *
655
- * Replaces a workflow with the full resource body. PUT semantics — all required fields must be present. The `ai_agents` array replaces the current set of attached agents transactionally.
791
+ * Replaces an AI agent with the full resource body. PUT semantics — all required fields must be present.
656
792
  */
657
- export const platformApiAgenticWorkflowControllerUpdate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowControllerUpdateData, ThrowOnError>) => (options.client ?? client).put<PlatformApiAgenticWorkflowControllerUpdateResponses, PlatformApiAgenticWorkflowControllerUpdateErrors, ThrowOnError>({
793
+ export const platformApiAiAgentControllerUpdate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAiAgentControllerUpdateData, ThrowOnError>) => (options.client ?? client).put<PlatformApiAiAgentControllerUpdateResponses, PlatformApiAiAgentControllerUpdateErrors, ThrowOnError>({
658
794
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
659
- body: v.optional(vPlatformApiAgenticWorkflowControllerUpdateBody),
660
- path: vPlatformApiAgenticWorkflowControllerUpdatePath,
795
+ body: v.optional(vPlatformApiAiAgentControllerUpdateBody),
796
+ path: vPlatformApiAiAgentControllerUpdatePath,
661
797
  query: v.optional(v.never())
662
798
  }), data),
663
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAgenticWorkflowControllerUpdateResponse, data),
799
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAiAgentControllerUpdateResponse, data),
664
800
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
665
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{id}',
801
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents/{id}',
666
802
  ...options,
667
803
  headers: {
668
804
  'Content-Type': 'application/json',
@@ -671,19 +807,19 @@ export const platformApiAgenticWorkflowControllerUpdate = <ThrowOnError extends
671
807
  });
672
808
 
673
809
  /**
674
- * Run workflow for matching records
810
+ * Trigger a manual run of a Data Activation Client
675
811
  *
676
- * Executes the workflow for all dataset records matching the SQL WHERE clause. Creates sampled events and enqueues run_workflow jobs. Returns the batch ID and enqueued count. A WorkflowRunLog is created to track batch-level progress, polled by a daily DynamicCron.
812
+ * Enqueues a one-off fetch/ingest pipeline run. Empty body or omitted `tool_call` runs with the DAC's persisted `tool_call`. Supplying a `tool_call` map applies a one-shot polymorphic override for this run only the persisted DAC record is not modified.
677
813
  */
678
- export const platformApiAgenticWorkflowOperationsControllerRunWorkflow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerRunWorkflowData, ThrowOnError>) => (options.client ?? client).post<PlatformApiAgenticWorkflowOperationsControllerRunWorkflowResponses, PlatformApiAgenticWorkflowOperationsControllerRunWorkflowErrors, ThrowOnError>({
814
+ export const platformApiDataActivationClientControllerRunManually = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerRunManuallyData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDataActivationClientControllerRunManuallyResponses, PlatformApiDataActivationClientControllerRunManuallyErrors, ThrowOnError>({
679
815
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
680
- body: vPlatformApiAgenticWorkflowOperationsControllerRunWorkflowBody,
681
- path: vPlatformApiAgenticWorkflowOperationsControllerRunWorkflowPath,
816
+ body: v.optional(vPlatformApiDataActivationClientControllerRunManuallyBody),
817
+ path: vPlatformApiDataActivationClientControllerRunManuallyPath,
682
818
  query: v.optional(v.never())
683
819
  }), data),
684
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAgenticWorkflowOperationsControllerRunWorkflowResponse, data),
820
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDataActivationClientControllerRunManuallyResponse, data),
685
821
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
686
- url: '/api/v1/tenants/{tenant_slug}/agentic-workflows/{workflow_slug}/run-workflow',
822
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{slug}/run-manually',
687
823
  ...options,
688
824
  headers: {
689
825
  'Content-Type': 'application/json',
@@ -692,58 +828,38 @@ export const platformApiAgenticWorkflowOperationsControllerRunWorkflow = <ThrowO
692
828
  });
693
829
 
694
830
  /**
695
- * Force-refresh a batch run log
831
+ * List data sources
696
832
  *
697
- * Triggers an immediate refresh of the batch run log metrics and merged artifacts.
833
+ * Returns a paginated list of data sources for the authenticated tenant.
698
834
  */
699
- export const platformApiAgenticWorkflowOperationsControllerBatchLogRefresh = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshData, ThrowOnError>) => (options.client ?? client).post<PlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshResponses, PlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshErrors, ThrowOnError>({
835
+ export const platformApiDataSourceControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataSourceControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDataSourceControllerIndexResponses, PlatformApiDataSourceControllerIndexErrors, ThrowOnError>({
836
+ querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
700
837
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
701
838
  body: v.optional(v.never()),
702
- path: vPlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshPath,
703
- query: v.optional(v.never())
839
+ path: vPlatformApiDataSourceControllerIndexPath,
840
+ query: v.optional(vPlatformApiDataSourceControllerIndexQuery)
704
841
  }), data),
705
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshResponse, data),
842
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDataSourceControllerIndexResponse, data),
706
843
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
707
- url: '/api/v1/tenants/{tenant_slug}/agentic-workflows/{workflow_slug}/batch-logs/{id}/refresh',
844
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-sources',
708
845
  ...options
709
846
  });
710
847
 
711
848
  /**
712
- * Ingest JSON data
713
- *
714
- * Ingest a single JSON record for processing through the data activation pipeline
715
- */
716
- export const platformApiDataActivationClientControllerIngest = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerIngestData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDataActivationClientControllerIngestResponses, PlatformApiDataActivationClientControllerIngestErrors, ThrowOnError>({
717
- requestValidator: async (data: unknown) => await v.parseAsync(v.object({
718
- body: vPlatformApiDataActivationClientControllerIngestBody,
719
- path: vPlatformApiDataActivationClientControllerIngestPath,
720
- query: v.optional(v.never())
721
- }), data),
722
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDataActivationClientControllerIngestResponse, data),
723
- security: [{ name: 'X-API-Key', type: 'apiKey' }],
724
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{slug}/ingest',
725
- ...options,
726
- headers: {
727
- 'Content-Type': 'application/json',
728
- ...options.headers
729
- }
730
- });
731
-
732
- /**
733
- * Replace an action status updater
849
+ * Create a data source
734
850
  *
735
- * Replaces an action status updater with the full resource body. PUT semantics — all required fields must be present.
851
+ * Creates a new data source for the authenticated tenant.
736
852
  */
737
- export const platformApiActionStatusUpdaterControllerUpdate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiActionStatusUpdaterControllerUpdateData, ThrowOnError>) => (options.client ?? client).put<PlatformApiActionStatusUpdaterControllerUpdateResponses, PlatformApiActionStatusUpdaterControllerUpdateErrors, ThrowOnError>({
853
+ export const platformApiDataSourceControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataSourceControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDataSourceControllerCreateResponses, PlatformApiDataSourceControllerCreateErrors, ThrowOnError>({
738
854
  querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
739
855
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
740
- body: v.optional(vPlatformApiActionStatusUpdaterControllerUpdateBody),
741
- path: vPlatformApiActionStatusUpdaterControllerUpdatePath,
742
- query: v.optional(vPlatformApiActionStatusUpdaterControllerUpdateQuery)
856
+ body: v.optional(vPlatformApiDataSourceControllerCreateBody),
857
+ path: vPlatformApiDataSourceControllerCreatePath,
858
+ query: v.optional(vPlatformApiDataSourceControllerCreateQuery)
743
859
  }), data),
744
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiActionStatusUpdaterControllerUpdateResponse, data),
860
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDataSourceControllerCreateResponse, data),
745
861
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
746
- url: '/api/v1/tenants/{tenant_slug}/action-status-updaters/{id}',
862
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-sources',
747
863
  ...options,
748
864
  headers: {
749
865
  'Content-Type': 'application/json',
@@ -752,37 +868,19 @@ export const platformApiActionStatusUpdaterControllerUpdate = <ThrowOnError exte
752
868
  });
753
869
 
754
870
  /**
755
- * List AI agents
756
- *
757
- * Returns a paginated list of AI agents for the authenticated tenant.
758
- */
759
- export const platformApiAiAgentControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAiAgentControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAiAgentControllerIndexResponses, PlatformApiAiAgentControllerIndexErrors, ThrowOnError>({
760
- querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
761
- requestValidator: async (data: unknown) => await v.parseAsync(v.object({
762
- body: v.optional(v.never()),
763
- path: vPlatformApiAiAgentControllerIndexPath,
764
- query: v.optional(vPlatformApiAiAgentControllerIndexQuery)
765
- }), data),
766
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAiAgentControllerIndexResponse, data),
767
- security: [{ name: 'X-API-Key', type: 'apiKey' }],
768
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents',
769
- ...options
770
- });
771
-
772
- /**
773
- * Create an AI agent
871
+ * Ingest previously uploaded file
774
872
  *
775
- * Creates a new AI agent for the authenticated tenant.
873
+ * Ingests a file that was uploaded via a presigned URL obtained from the datalake upload-link endpoint. The key must belong to this client's datalake prefix (`uploads/<datalake_id>/...`).
776
874
  */
777
- export const platformApiAiAgentControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAiAgentControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiAiAgentControllerCreateResponses, PlatformApiAiAgentControllerCreateErrors, ThrowOnError>({
875
+ export const platformApiDataActivationClientControllerIngestFile = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerIngestFileData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDataActivationClientControllerIngestFileResponses, PlatformApiDataActivationClientControllerIngestFileErrors, ThrowOnError>({
778
876
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
779
- body: v.optional(vPlatformApiAiAgentControllerCreateBody),
780
- path: vPlatformApiAiAgentControllerCreatePath,
877
+ body: vPlatformApiDataActivationClientControllerIngestFileBody,
878
+ path: vPlatformApiDataActivationClientControllerIngestFilePath,
781
879
  query: v.optional(v.never())
782
880
  }), data),
783
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAiAgentControllerCreateResponse, data),
881
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDataActivationClientControllerIngestFileResponse, data),
784
882
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
785
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents',
883
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{slug}/ingest-file',
786
884
  ...options,
787
885
  headers: {
788
886
  'Content-Type': 'application/json',
@@ -791,20 +889,24 @@ export const platformApiAiAgentControllerCreate = <ThrowOnError extends boolean
791
889
  });
792
890
 
793
891
  /**
794
- * Get datalake domain metadata
892
+ * Get a workflow execution log
893
+ *
894
+ * Returns a single execution log with action execution details. Each action
895
+ * execution log carries a `message_body` virtual field populated from the
896
+ * datalake message linked via `message_id`. The `data_access_mode` query
897
+ * parameter selects which datalake schema is read for the body — defaults
898
+ * to the session's `data_access_mode` ceiling.
795
899
  *
796
- * Returns a markdown document describing the datalake's data domain — its available standard resources and capabilities.
797
900
  */
798
- export const platformApiDatalakeControllerMetadata = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerMetadataData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDatalakeControllerMetadataResponses, PlatformApiDatalakeControllerMetadataErrors, ThrowOnError>({
799
- querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
901
+ export const platformApiAgenticWorkflowOperationsControllerWorkflowLogShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowResponses, PlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowErrors, ThrowOnError>({
800
902
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
801
903
  body: v.optional(v.never()),
802
- path: vPlatformApiDatalakeControllerMetadataPath,
803
- query: v.optional(vPlatformApiDatalakeControllerMetadataQuery)
904
+ path: vPlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowPath,
905
+ query: v.optional(vPlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowQuery)
804
906
  }), data),
805
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDatalakeControllerMetadataResponse, data),
907
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowResponse, data),
806
908
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
807
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/metadata',
909
+ url: '/api/v1/tenants/{tenant_slug}/agentic-workflows/{workflow_slug}/workflow-logs/{id}',
808
910
  ...options
809
911
  });
810
912
 
@@ -867,81 +969,77 @@ export const platformApiInteroperabilityContractControllerUpdate = <ThrowOnError
867
969
  });
868
970
 
869
971
  /**
870
- * Get a workflow execution log
871
- *
872
- * Returns a single execution log with action execution details. Each action
873
- * execution log carries a `message_body` virtual field populated from the
874
- * datalake message linked via `message_id`. The `data_access_mode` query
875
- * parameter selects which datalake schema is read for the body — defaults
876
- * to the session's `data_access_mode` ceiling.
972
+ * Get datalake domain metadata
877
973
  *
974
+ * Returns a markdown document describing the datalake's data domain — its available standard resources and capabilities.
878
975
  */
879
- export const platformApiAgenticWorkflowOperationsControllerWorkflowLogShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowResponses, PlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowErrors, ThrowOnError>({
976
+ export const platformApiDatalakeControllerMetadata = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerMetadataData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDatalakeControllerMetadataResponses, PlatformApiDatalakeControllerMetadataErrors, ThrowOnError>({
977
+ querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
880
978
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
881
979
  body: v.optional(v.never()),
882
- path: vPlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowPath,
883
- query: v.optional(vPlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowQuery)
980
+ path: vPlatformApiDatalakeControllerMetadataPath,
981
+ query: v.optional(vPlatformApiDatalakeControllerMetadataQuery)
884
982
  }), data),
885
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowResponse, data),
983
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDatalakeControllerMetadataResponse, data),
886
984
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
887
- url: '/api/v1/tenants/{tenant_slug}/agentic-workflows/{workflow_slug}/workflow-logs/{id}',
985
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/metadata',
888
986
  ...options
889
987
  });
890
988
 
891
989
  /**
892
- * Ingest previously uploaded file
990
+ * List AI agents
893
991
  *
894
- * Ingests a file that was uploaded via a presigned URL obtained from the datalake upload-link endpoint. The key must belong to this client's datalake prefix (`uploads/<datalake_id>/...`).
992
+ * Returns a paginated list of AI agents for the authenticated tenant.
895
993
  */
896
- export const platformApiDataActivationClientControllerIngestFile = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerIngestFileData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDataActivationClientControllerIngestFileResponses, PlatformApiDataActivationClientControllerIngestFileErrors, ThrowOnError>({
994
+ export const platformApiAiAgentControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAiAgentControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAiAgentControllerIndexResponses, PlatformApiAiAgentControllerIndexErrors, ThrowOnError>({
995
+ querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
897
996
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
898
- body: vPlatformApiDataActivationClientControllerIngestFileBody,
899
- path: vPlatformApiDataActivationClientControllerIngestFilePath,
900
- query: v.optional(v.never())
997
+ body: v.optional(v.never()),
998
+ path: vPlatformApiAiAgentControllerIndexPath,
999
+ query: v.optional(vPlatformApiAiAgentControllerIndexQuery)
901
1000
  }), data),
902
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDataActivationClientControllerIngestFileResponse, data),
1001
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAiAgentControllerIndexResponse, data),
903
1002
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
904
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{slug}/ingest-file',
905
- ...options,
906
- headers: {
907
- 'Content-Type': 'application/json',
908
- ...options.headers
909
- }
1003
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents',
1004
+ ...options
910
1005
  });
911
1006
 
912
1007
  /**
913
- * List data sources
1008
+ * Create an AI agent
914
1009
  *
915
- * Returns a paginated list of data sources for the authenticated tenant.
1010
+ * Creates a new AI agent for the authenticated tenant.
916
1011
  */
917
- export const platformApiDataSourceControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataSourceControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDataSourceControllerIndexResponses, PlatformApiDataSourceControllerIndexErrors, ThrowOnError>({
918
- querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
1012
+ export const platformApiAiAgentControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAiAgentControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiAiAgentControllerCreateResponses, PlatformApiAiAgentControllerCreateErrors, ThrowOnError>({
919
1013
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
920
- body: v.optional(v.never()),
921
- path: vPlatformApiDataSourceControllerIndexPath,
922
- query: v.optional(vPlatformApiDataSourceControllerIndexQuery)
1014
+ body: v.optional(vPlatformApiAiAgentControllerCreateBody),
1015
+ path: vPlatformApiAiAgentControllerCreatePath,
1016
+ query: v.optional(v.never())
923
1017
  }), data),
924
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDataSourceControllerIndexResponse, data),
1018
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAiAgentControllerCreateResponse, data),
925
1019
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
926
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-sources',
927
- ...options
1020
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents',
1021
+ ...options,
1022
+ headers: {
1023
+ 'Content-Type': 'application/json',
1024
+ ...options.headers
1025
+ }
928
1026
  });
929
1027
 
930
1028
  /**
931
- * Create a data source
1029
+ * Replace an action status updater
932
1030
  *
933
- * Creates a new data source for the authenticated tenant.
1031
+ * Replaces an action status updater with the full resource body. PUT semantics — all required fields must be present.
934
1032
  */
935
- export const platformApiDataSourceControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataSourceControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDataSourceControllerCreateResponses, PlatformApiDataSourceControllerCreateErrors, ThrowOnError>({
1033
+ export const platformApiActionStatusUpdaterControllerUpdate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiActionStatusUpdaterControllerUpdateData, ThrowOnError>) => (options.client ?? client).put<PlatformApiActionStatusUpdaterControllerUpdateResponses, PlatformApiActionStatusUpdaterControllerUpdateErrors, ThrowOnError>({
936
1034
  querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
937
1035
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
938
- body: v.optional(vPlatformApiDataSourceControllerCreateBody),
939
- path: vPlatformApiDataSourceControllerCreatePath,
940
- query: v.optional(vPlatformApiDataSourceControllerCreateQuery)
1036
+ body: v.optional(vPlatformApiActionStatusUpdaterControllerUpdateBody),
1037
+ path: vPlatformApiActionStatusUpdaterControllerUpdatePath,
1038
+ query: v.optional(vPlatformApiActionStatusUpdaterControllerUpdateQuery)
941
1039
  }), data),
942
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDataSourceControllerCreateResponse, data),
1040
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiActionStatusUpdaterControllerUpdateResponse, data),
943
1041
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
944
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-sources',
1042
+ url: '/api/v1/tenants/{tenant_slug}/action-status-updaters/{id}',
945
1043
  ...options,
946
1044
  headers: {
947
1045
  'Content-Type': 'application/json',
@@ -950,19 +1048,59 @@ export const platformApiDataSourceControllerCreate = <ThrowOnError extends boole
950
1048
  });
951
1049
 
952
1050
  /**
953
- * Trigger a manual run of a Data Activation Client
1051
+ * Ingest JSON data
1052
+ *
1053
+ * Ingest a single JSON record for processing through the data activation
1054
+ * pipeline. Returns immediately with `{batch_id, key, jobs_count}`; per-row
1055
+ * work runs asynchronously on the data-activation Oban queue.
1056
+ *
1057
+ * ## Per-batch artifacts (audit trail)
1058
+ *
1059
+ * The DAC pipeline does NOT use the `<step>.json` convention that workflows
1060
+ * do — its byproducts are NDJSON archives, surfaced on the
1061
+ * `DataActivationLog` row that the batch produces:
1062
+ *
1063
+ * | Field | Bucket | Body |
1064
+ * | --------------- | ------------ | ---------------------------------------------------------------------------------------- |
1065
+ * | `key` (response)| regulated | the raw JSON payload uploaded by THIS request |
1066
+ * | `input_files` | regulated | source artifacts consumed by the batch (one per ingest call merged into the batch) |
1067
+ * | `output_files` | mixed | merged NDJSON archives, one `{object_key, mode}` per bucket (`regulated` + `unregulated`)|
1068
+ *
1069
+ * ### Fetching diagnostic artifacts
1070
+ *
1071
+ * Use the same datalake download-link endpoint as workflow artifacts
1072
+ * (`POST /api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/download-link`):
1073
+ *
1074
+ * # raw payload that this ingest call uploaded
1075
+ * { "bucket": "<regulated>", "key": "<response.key>" }
1076
+ *
1077
+ * # per-bucket merged archive (after batch completes)
1078
+ * { "bucket": "<regulated|unregulated>", "key": "<output_files[i].object_key>" }
1079
+ *
1080
+ * `output_files[i].mode` tells you which bucket each archive lives in
1081
+ * (`regulated` for raw attrs, `unregulated` for tokenized). The regulated /
1082
+ * unregulated bucket names are exposed on the datalake response as
1083
+ * `regulated_cloud_storage.bucket` / `unregulated_cloud_storage.bucket`.
1084
+ *
1085
+ * ### Failure surfacing
1086
+ *
1087
+ * On a `{:error, _}` ingest response the platform returns `422` with an
1088
+ * `error` string. For pipeline failures (per-row Oban job exceptions),
1089
+ * the DataActivationLog row's `rows_ingested` will be lower than the
1090
+ * submitted count; per-row diagnostics live in the Oban job table
1091
+ * (`oban_jobs.errors`) keyed by `batch_id`. There is no `error.json`
1092
+ * artifact on the DAC path — that convention is workflow-only.
954
1093
  *
955
- * Enqueues a one-off fetch/ingest pipeline run. Empty body or omitted `tool_call` runs with the DAC's persisted `tool_call`. Supplying a `tool_call` map applies a one-shot polymorphic override for this run only — the persisted DAC record is not modified.
956
1094
  */
957
- export const platformApiDataActivationClientControllerRunManually = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerRunManuallyData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDataActivationClientControllerRunManuallyResponses, PlatformApiDataActivationClientControllerRunManuallyErrors, ThrowOnError>({
1095
+ export const platformApiDataActivationClientControllerIngest = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerIngestData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDataActivationClientControllerIngestResponses, PlatformApiDataActivationClientControllerIngestErrors, ThrowOnError>({
958
1096
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
959
- body: v.optional(vPlatformApiDataActivationClientControllerRunManuallyBody),
960
- path: vPlatformApiDataActivationClientControllerRunManuallyPath,
1097
+ body: vPlatformApiDataActivationClientControllerIngestBody,
1098
+ path: vPlatformApiDataActivationClientControllerIngestPath,
961
1099
  query: v.optional(v.never())
962
1100
  }), data),
963
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDataActivationClientControllerRunManuallyResponse, data),
1101
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDataActivationClientControllerIngestResponse, data),
964
1102
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
965
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{slug}/run-manually',
1103
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{slug}/ingest',
966
1104
  ...options,
967
1105
  headers: {
968
1106
  'Content-Type': 'application/json',
@@ -971,53 +1109,76 @@ export const platformApiDataActivationClientControllerRunManually = <ThrowOnErro
971
1109
  });
972
1110
 
973
1111
  /**
974
- * Delete an AI agent
1112
+ * Force-refresh a batch run log
975
1113
  *
976
- * Deletes an AI agent. Returns 409 if the agent is attached to a workflow.
1114
+ * Triggers an immediate refresh of the batch run log metrics and merged artifacts.
977
1115
  */
978
- export const platformApiAiAgentControllerDelete = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAiAgentControllerDeleteData, ThrowOnError>) => (options.client ?? client).delete<PlatformApiAiAgentControllerDeleteResponses, PlatformApiAiAgentControllerDeleteErrors, ThrowOnError>({
1116
+ export const platformApiAgenticWorkflowOperationsControllerBatchLogRefresh = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshData, ThrowOnError>) => (options.client ?? client).post<PlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshResponses, PlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshErrors, ThrowOnError>({
979
1117
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
980
1118
  body: v.optional(v.never()),
981
- path: vPlatformApiAiAgentControllerDeletePath,
1119
+ path: vPlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshPath,
982
1120
  query: v.optional(v.never())
983
1121
  }), data),
984
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAiAgentControllerDeleteResponse, data),
1122
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshResponse, data),
985
1123
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
986
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents/{id}',
1124
+ url: '/api/v1/tenants/{tenant_slug}/agentic-workflows/{workflow_slug}/batch-logs/{id}/refresh',
987
1125
  ...options
988
1126
  });
989
1127
 
990
1128
  /**
991
- * Get an AI agent
1129
+ * Run workflow for matching records
992
1130
  *
993
- * Returns a single AI agent by ID.
994
- */
995
- export const platformApiAiAgentControllerShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAiAgentControllerShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAiAgentControllerShowResponses, PlatformApiAiAgentControllerShowErrors, ThrowOnError>({
996
- requestValidator: async (data: unknown) => await v.parseAsync(v.object({
997
- body: v.optional(v.never()),
998
- path: vPlatformApiAiAgentControllerShowPath,
999
- query: v.optional(v.never())
1000
- }), data),
1001
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAiAgentControllerShowResponse, data),
1002
- security: [{ name: 'X-API-Key', type: 'apiKey' }],
1003
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents/{id}',
1004
- ...options
1005
- });
1006
-
1007
- /**
1008
- * Replace an AI agent
1131
+ * Executes the workflow for all dataset records matching the SQL WHERE clause.
1132
+ * Creates sampled events and enqueues run_workflow jobs. Returns the batch ID
1133
+ * and enqueued count. A WorkflowRunLog is created to track batch-level
1134
+ * progress, polled by a daily DynamicCron.
1135
+ *
1136
+ * ## Per-step artifacts (audit trail)
1137
+ *
1138
+ * Each per-row WorkflowExecutionLog (WEL) writes a fixed set of JSON
1139
+ * artifacts to the datalake's regulated cloud-storage bucket. The path is
1140
+ * deterministic and convention-driven there is no separate listing
1141
+ * endpoint:
1142
+ *
1143
+ * workflows/{workflow_id}/executions/{wel_id}/event.json
1144
+ * workflows/{workflow_id}/executions/{wel_id}/filter.json
1145
+ * workflows/{workflow_id}/executions/{wel_id}/enrichment.json
1146
+ * workflows/{workflow_id}/executions/{wel_id}/error.json # only on failure
1147
+ *
1148
+ * | File | Written by stage | Body |
1149
+ * | ----------------- | -------------------------------------- | ------------------------------------------------------------------ |
1150
+ * | `event.json` | context build | full WorkflowContext (event_dataset, mdm_output, additional_context)|
1151
+ * | `filter.json` | filter eval (both pass and reject) | `{filter_expression, filter_result: bool}` |
1152
+ * | `enrichment.json` | enrichment terminal (success / skip / fail) | `{status: "completed" \| "failed" \| "skipped", <agent_slug>: ...}` |
1153
+ * | `error.json` | ANY pipeline failure | `{stage, error_code, ai_agent_slug, error_message, detail}` |
1154
+ *
1155
+ * `error.json`'s presence IS the failure signal — `WEL.error_message`
1156
+ * carries only a code-grade summary; the rich URL/HTTP-status/transport
1157
+ * detail lives ONLY in `error.json["detail"]`. Engineers debugging a
1158
+ * failed run should download `error.json` for full context.
1159
+ *
1160
+ * ### Fetching an artifact
1161
+ *
1162
+ * Use the standard datalake download-link endpoint
1163
+ * (`POST /api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/download-link`)
1164
+ * with `bucket = <regulated bucket>` and the convention key above. Example:
1165
+ *
1166
+ * POST /api/v1/tenants/acme/datalakes/clinical/download-link
1167
+ * { "bucket": "clinical-regulated", "key": "workflows/<wf_id>/executions/<wel_id>/error.json" }
1168
+ *
1169
+ * The response carries a short-lived signed URL. The regulated bucket is
1170
+ * exposed on the datalake response as `regulated_cloud_storage.bucket`.
1009
1171
  *
1010
- * Replaces an AI agent with the full resource body. PUT semantics — all required fields must be present.
1011
1172
  */
1012
- export const platformApiAiAgentControllerUpdate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAiAgentControllerUpdateData, ThrowOnError>) => (options.client ?? client).put<PlatformApiAiAgentControllerUpdateResponses, PlatformApiAiAgentControllerUpdateErrors, ThrowOnError>({
1173
+ export const platformApiAgenticWorkflowOperationsControllerRunWorkflow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerRunWorkflowData, ThrowOnError>) => (options.client ?? client).post<PlatformApiAgenticWorkflowOperationsControllerRunWorkflowResponses, PlatformApiAgenticWorkflowOperationsControllerRunWorkflowErrors, ThrowOnError>({
1013
1174
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
1014
- body: v.optional(vPlatformApiAiAgentControllerUpdateBody),
1015
- path: vPlatformApiAiAgentControllerUpdatePath,
1175
+ body: vPlatformApiAgenticWorkflowOperationsControllerRunWorkflowBody,
1176
+ path: vPlatformApiAgenticWorkflowOperationsControllerRunWorkflowPath,
1016
1177
  query: v.optional(v.never())
1017
1178
  }), data),
1018
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAiAgentControllerUpdateResponse, data),
1179
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAgenticWorkflowOperationsControllerRunWorkflowResponse, data),
1019
1180
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
1020
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents/{id}',
1181
+ url: '/api/v1/tenants/{tenant_slug}/agentic-workflows/{workflow_slug}/run-workflow',
1021
1182
  ...options,
1022
1183
  headers: {
1023
1184
  'Content-Type': 'application/json',
@@ -1026,67 +1187,53 @@ export const platformApiAiAgentControllerUpdate = <ThrowOnError extends boolean
1026
1187
  });
1027
1188
 
1028
1189
  /**
1029
- * Confirm a user (admin bypass)
1030
- *
1031
- * Marks a user account as confirmed without requiring an email-confirmation
1032
- * token. Idempotent — confirming an already-confirmed user is a 200 no-op
1033
- * that returns the existing `confirmed_at` timestamp.
1034
- *
1035
- * Wraps `Accounts.confirm_user!/1` verbatim — exactly the primitive that
1036
- * backs the dev/admin email-confirm path in the LiveView UI. **Zero new
1037
- * business logic.**
1038
- *
1039
- * Powerful primitive: bypasses the regular email-confirmation flow. Every
1040
- * successful call is structured-logged with `caller_user_id` and
1041
- * `target_user_id` for forensic trail.
1042
- *
1043
- * **Requires platform-admin authentication** (`User.role == :admin`).
1190
+ * Delete an agentic workflow
1044
1191
  *
1192
+ * Deletes a workflow and all associated actions, context datasets, and AI agent attachments.
1045
1193
  */
1046
- export const platformApiAdminControllerConfirmUser = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAdminControllerConfirmUserData, ThrowOnError>) => (options.client ?? client).put<PlatformApiAdminControllerConfirmUserResponses, PlatformApiAdminControllerConfirmUserErrors, ThrowOnError>({
1194
+ export const platformApiAgenticWorkflowControllerDelete = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowControllerDeleteData, ThrowOnError>) => (options.client ?? client).delete<PlatformApiAgenticWorkflowControllerDeleteResponses, PlatformApiAgenticWorkflowControllerDeleteErrors, ThrowOnError>({
1047
1195
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
1048
1196
  body: v.optional(v.never()),
1049
- path: vPlatformApiAdminControllerConfirmUserPath,
1197
+ path: vPlatformApiAgenticWorkflowControllerDeletePath,
1050
1198
  query: v.optional(v.never())
1051
1199
  }), data),
1052
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAdminControllerConfirmUserResponse, data),
1053
- security: [{ scheme: 'bearer', type: 'http' }],
1054
- url: '/api/v1/admin/users/{id}/confirm',
1200
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAgenticWorkflowControllerDeleteResponse, data),
1201
+ security: [{ name: 'X-API-Key', type: 'apiKey' }],
1202
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{id}',
1055
1203
  ...options
1056
1204
  });
1057
1205
 
1058
1206
  /**
1059
- * List connected apps
1207
+ * Get an agentic workflow
1060
1208
  *
1061
- * Returns a paginated list of connected apps for the authenticated tenant.
1209
+ * Returns a single workflow by ID with nested AI agents.
1062
1210
  */
1063
- export const platformApiConnectedAppMgmtControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiConnectedAppMgmtControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiConnectedAppMgmtControllerIndexResponses, PlatformApiConnectedAppMgmtControllerIndexErrors, ThrowOnError>({
1064
- querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
1211
+ export const platformApiAgenticWorkflowControllerShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowControllerShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAgenticWorkflowControllerShowResponses, PlatformApiAgenticWorkflowControllerShowErrors, ThrowOnError>({
1065
1212
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
1066
1213
  body: v.optional(v.never()),
1067
- path: vPlatformApiConnectedAppMgmtControllerIndexPath,
1068
- query: v.optional(vPlatformApiConnectedAppMgmtControllerIndexQuery)
1214
+ path: vPlatformApiAgenticWorkflowControllerShowPath,
1215
+ query: v.optional(v.never())
1069
1216
  }), data),
1070
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiConnectedAppMgmtControllerIndexResponse, data),
1217
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAgenticWorkflowControllerShowResponse, data),
1071
1218
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
1072
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps',
1219
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{id}',
1073
1220
  ...options
1074
1221
  });
1075
1222
 
1076
1223
  /**
1077
- * Create a connected app
1224
+ * Replace an agentic workflow
1078
1225
  *
1079
- * Creates a new connected app with automatic API key provisioning.
1226
+ * Replaces a workflow with the full resource body. PUT semantics — all required fields must be present. The `ai_agents` array replaces the current set of attached agents transactionally.
1080
1227
  */
1081
- export const platformApiConnectedAppMgmtControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiConnectedAppMgmtControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiConnectedAppMgmtControllerCreateResponses, PlatformApiConnectedAppMgmtControllerCreateErrors, ThrowOnError>({
1228
+ export const platformApiAgenticWorkflowControllerUpdate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowControllerUpdateData, ThrowOnError>) => (options.client ?? client).put<PlatformApiAgenticWorkflowControllerUpdateResponses, PlatformApiAgenticWorkflowControllerUpdateErrors, ThrowOnError>({
1082
1229
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
1083
- body: v.optional(vPlatformApiConnectedAppMgmtControllerCreateBody),
1084
- path: vPlatformApiConnectedAppMgmtControllerCreatePath,
1230
+ body: v.optional(vPlatformApiAgenticWorkflowControllerUpdateBody),
1231
+ path: vPlatformApiAgenticWorkflowControllerUpdatePath,
1085
1232
  query: v.optional(v.never())
1086
1233
  }), data),
1087
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiConnectedAppMgmtControllerCreateResponse, data),
1234
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAgenticWorkflowControllerUpdateResponse, data),
1088
1235
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
1089
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps',
1236
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{id}',
1090
1237
  ...options,
1091
1238
  headers: {
1092
1239
  'Content-Type': 'application/json',
@@ -1095,62 +1242,20 @@ export const platformApiConnectedAppMgmtControllerCreate = <ThrowOnError extends
1095
1242
  });
1096
1243
 
1097
1244
  /**
1098
- * Revoke current session
1099
- *
1100
- * Revokes the current Bearer session — deactivates the session and deletes
1101
- * the linked UserToken. The Bearer token becomes immediately invalid.
1102
- *
1103
- * Only works with `Authorization: Bearer <session_token>` (not X-API-Key).
1104
- *
1105
- * **Requires Bearer authentication.**
1106
- *
1107
- */
1108
- export const platformApiSessionControllerDelete = <ThrowOnError extends boolean = false>(options?: Options<PlatformApiSessionControllerDeleteData, ThrowOnError>) => (options?.client ?? client).delete<PlatformApiSessionControllerDeleteResponses, PlatformApiSessionControllerDeleteErrors, ThrowOnError>({
1109
- requestValidator: async (data: unknown) => await v.parseAsync(v.object({
1110
- body: v.optional(v.never()),
1111
- path: v.optional(v.never()),
1112
- query: v.optional(v.never())
1113
- }), data),
1114
- security: [{ scheme: 'bearer', type: 'http' }],
1115
- url: '/api/v1/sessions',
1116
- ...options
1117
- });
1118
-
1119
- /**
1120
- * Create a session (human auth)
1121
- *
1122
- * Exchange user credentials for a Bearer session token.
1123
- *
1124
- * Send `{email, password}` (with optional `tenant_slug`) to authenticate a
1125
- * human user and receive a session token. Use the returned `session_token`
1126
- * as `Authorization: Bearer <session_token>` on subsequent API requests.
1127
- *
1128
- * When `tenant_slug` is **omitted**, returns a tenant-less Bearer for
1129
- * pre-tenant flows: admin operations under `/api/v1/admin/...` and creating
1130
- * your first tenant via `POST /api/v1/tenants`. Tenant-scoped routes will
1131
- * reject such tokens with 403.
1132
- *
1133
- * When `tenant_slug` is **provided**, returns a tenant-scoped Bearer with
1134
- * the caller's membership role (or 401 if the user has no membership in
1135
- * that tenant).
1136
- *
1137
- * Optionally specify `expires_in` (seconds) to control session duration.
1138
- * Default: 86400 (24 hours). Maximum: 2592000 (30 days).
1139
- *
1140
- * For M2M (server-to-server) authentication, use `X-API-Key` header directly
1141
- * on each request instead — no session exchange needed.
1142
- *
1143
- * **No authentication required** — this endpoint authenticates the caller.
1245
+ * Replace a data source
1144
1246
  *
1247
+ * Replaces a data source with the full resource body. PUT semantics — all required fields must be present.
1145
1248
  */
1146
- export const platformApiSessionControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiSessionControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiSessionControllerCreateResponses, PlatformApiSessionControllerCreateErrors, ThrowOnError>({
1249
+ export const platformApiDataSourceControllerUpdate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataSourceControllerUpdateData, ThrowOnError>) => (options.client ?? client).put<PlatformApiDataSourceControllerUpdateResponses, PlatformApiDataSourceControllerUpdateErrors, ThrowOnError>({
1250
+ querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
1147
1251
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
1148
- body: vPlatformApiSessionControllerCreateBody,
1149
- path: v.optional(v.never()),
1150
- query: v.optional(v.never())
1252
+ body: v.optional(vPlatformApiDataSourceControllerUpdateBody),
1253
+ path: vPlatformApiDataSourceControllerUpdatePath,
1254
+ query: v.optional(vPlatformApiDataSourceControllerUpdateQuery)
1151
1255
  }), data),
1152
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiSessionControllerCreateResponse, data),
1153
- url: '/api/v1/sessions',
1256
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDataSourceControllerUpdateResponse, data),
1257
+ security: [{ name: 'X-API-Key', type: 'apiKey' }],
1258
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-sources/{id}',
1154
1259
  ...options,
1155
1260
  headers: {
1156
1261
  'Content-Type': 'application/json',
@@ -1159,80 +1264,77 @@ export const platformApiSessionControllerCreate = <ThrowOnError extends boolean
1159
1264
  });
1160
1265
 
1161
1266
  /**
1162
- * Start or restart refresh polling for a batch run log
1267
+ * Show a single DAC processing log
1163
1268
  *
1164
- * Creates a DynamicCron job to poll this batch. Idempotent if cron already exists, it's a no-op.
1269
+ * Returns a single `DataActivationLog` row scoped to this DAC. Returns 404 if the id belongs to a different client.
1165
1270
  */
1166
- export const platformApiAgenticWorkflowOperationsControllerBatchLogStart = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerBatchLogStartData, ThrowOnError>) => (options.client ?? client).post<PlatformApiAgenticWorkflowOperationsControllerBatchLogStartResponses, PlatformApiAgenticWorkflowOperationsControllerBatchLogStartErrors, ThrowOnError>({
1271
+ export const platformApiDataActivationClientControllerLogShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerLogShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDataActivationClientControllerLogShowResponses, PlatformApiDataActivationClientControllerLogShowErrors, ThrowOnError>({
1167
1272
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
1168
1273
  body: v.optional(v.never()),
1169
- path: vPlatformApiAgenticWorkflowOperationsControllerBatchLogStartPath,
1274
+ path: vPlatformApiDataActivationClientControllerLogShowPath,
1170
1275
  query: v.optional(v.never())
1171
1276
  }), data),
1172
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAgenticWorkflowOperationsControllerBatchLogStartResponse, data),
1277
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDataActivationClientControllerLogShowResponse, data),
1173
1278
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
1174
- url: '/api/v1/tenants/{tenant_slug}/agentic-workflows/{workflow_slug}/batch-logs/{id}/start',
1279
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{slug}/logs/{id}',
1175
1280
  ...options
1176
1281
  });
1177
1282
 
1178
1283
  /**
1179
- * Update message tracking fields for a page
1180
- *
1181
- * Updates tracking timestamps (opened_at, form_submitted_at) on the message
1182
- * linked to a page token. Called by the connected app when a user opens a page
1183
- * or submits a form.
1184
- *
1185
- * **Requires X-API-Key authentication.**
1284
+ * List datalakes
1186
1285
  *
1286
+ * Returns a paginated list of datalakes for the authenticated tenant.
1187
1287
  */
1188
- export const platformApiConnectedAppControllerUpdateMessageTracking = <ThrowOnError extends boolean = false>(options: Options<PlatformApiConnectedAppControllerUpdateMessageTrackingData, ThrowOnError>) => (options.client ?? client).patch<PlatformApiConnectedAppControllerUpdateMessageTrackingResponses, PlatformApiConnectedAppControllerUpdateMessageTrackingErrors, ThrowOnError>({
1288
+ export const platformApiDatalakeControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDatalakeControllerIndexResponses, PlatformApiDatalakeControllerIndexErrors, ThrowOnError>({
1289
+ querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
1189
1290
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
1190
- body: vPlatformApiConnectedAppControllerUpdateMessageTrackingBody,
1191
- path: vPlatformApiConnectedAppControllerUpdateMessageTrackingPath,
1192
- query: v.optional(v.never())
1291
+ body: v.optional(v.never()),
1292
+ path: vPlatformApiDatalakeControllerIndexPath,
1293
+ query: v.optional(vPlatformApiDatalakeControllerIndexQuery)
1193
1294
  }), data),
1194
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiConnectedAppControllerUpdateMessageTrackingResponse, data),
1295
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDatalakeControllerIndexResponse, data),
1195
1296
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
1196
- url: '/api/v1/tenants/{tenant_slug}/connected-apps/{slug}/update-message-tracking',
1197
- ...options,
1198
- headers: {
1199
- 'Content-Type': 'application/json',
1200
- ...options.headers
1201
- }
1297
+ url: '/api/v1/tenants/{tenant_slug}/datalakes',
1298
+ ...options
1202
1299
  });
1203
1300
 
1204
1301
  /**
1205
- * List agentic workflows
1302
+ * Create a datalake
1206
1303
  *
1207
- * Returns a paginated list of workflows for a datalake.
1304
+ * Creates a new datalake for the authenticated tenant.
1208
1305
  */
1209
- export const platformApiAgenticWorkflowControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAgenticWorkflowControllerIndexResponses, PlatformApiAgenticWorkflowControllerIndexErrors, ThrowOnError>({
1306
+ export const platformApiDatalakeControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDatalakeControllerCreateResponses, PlatformApiDatalakeControllerCreateErrors, ThrowOnError>({
1210
1307
  querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
1211
1308
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
1212
- body: v.optional(v.never()),
1213
- path: vPlatformApiAgenticWorkflowControllerIndexPath,
1214
- query: v.optional(vPlatformApiAgenticWorkflowControllerIndexQuery)
1309
+ body: v.optional(vPlatformApiDatalakeControllerCreateBody),
1310
+ path: vPlatformApiDatalakeControllerCreatePath,
1311
+ query: v.optional(vPlatformApiDatalakeControllerCreateQuery)
1215
1312
  }), data),
1216
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAgenticWorkflowControllerIndexResponse, data),
1313
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDatalakeControllerCreateResponse, data),
1217
1314
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
1218
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows',
1219
- ...options
1315
+ url: '/api/v1/tenants/{tenant_slug}/datalakes',
1316
+ ...options,
1317
+ headers: {
1318
+ 'Content-Type': 'application/json',
1319
+ ...options.headers
1320
+ }
1220
1321
  });
1221
1322
 
1222
1323
  /**
1223
- * Create an agentic workflow
1324
+ * Create datalake upload link
1224
1325
  *
1225
- * Creates a new workflow. Attach AI agents via the `ai_agents` array.
1326
+ * Returns a presigned PUT URL for uploading a file (NDJSON or CSV) directly to the datalake's regulated cloud storage. The returned key lives under `uploads/<datalake_id>/` and can be passed to downstream endpoints (e.g. data activation client ingest-file) that accept a pre-uploaded storage key.
1226
1327
  */
1227
- export const platformApiAgenticWorkflowControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiAgenticWorkflowControllerCreateResponses, PlatformApiAgenticWorkflowControllerCreateErrors, ThrowOnError>({
1328
+ export const platformApiDatalakeControllerCreateUploadLink = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerCreateUploadLinkData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDatalakeControllerCreateUploadLinkResponses, PlatformApiDatalakeControllerCreateUploadLinkErrors, ThrowOnError>({
1329
+ querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
1228
1330
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
1229
- body: v.optional(vPlatformApiAgenticWorkflowControllerCreateBody),
1230
- path: vPlatformApiAgenticWorkflowControllerCreatePath,
1231
- query: v.optional(v.never())
1331
+ body: vPlatformApiDatalakeControllerCreateUploadLinkBody,
1332
+ path: vPlatformApiDatalakeControllerCreateUploadLinkPath,
1333
+ query: v.optional(vPlatformApiDatalakeControllerCreateUploadLinkQuery)
1232
1334
  }), data),
1233
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAgenticWorkflowControllerCreateResponse, data),
1335
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDatalakeControllerCreateUploadLinkResponse, data),
1234
1336
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
1235
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows',
1337
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/upload-link',
1236
1338
  ...options,
1237
1339
  headers: {
1238
1340
  'Content-Type': 'application/json',
@@ -1241,105 +1343,121 @@ export const platformApiAgenticWorkflowControllerCreate = <ThrowOnError extends
1241
1343
  });
1242
1344
 
1243
1345
  /**
1244
- * Get DAC dataset metadata
1346
+ * Execute an individual action for a dataset record
1245
1347
  *
1246
- * Returns a markdown document describing the fields of each dataset connected to this data activation client via its interoperability contracts.
1348
+ * Executes a single workflow action identified by decision_key for the given dataset record, bypassing filter and decision evaluation
1247
1349
  */
1248
- export const platformApiDataActivationClientControllerMetadata = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerMetadataData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDataActivationClientControllerMetadataResponses, PlatformApiDataActivationClientControllerMetadataErrors, ThrowOnError>({
1350
+ export const platformApiAgenticWorkflowOperationsControllerExecute = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerExecuteData, ThrowOnError>) => (options.client ?? client).post<PlatformApiAgenticWorkflowOperationsControllerExecuteResponses, PlatformApiAgenticWorkflowOperationsControllerExecuteErrors, ThrowOnError>({
1249
1351
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
1250
- body: v.optional(v.never()),
1251
- path: vPlatformApiDataActivationClientControllerMetadataPath,
1352
+ body: vPlatformApiAgenticWorkflowOperationsControllerExecuteBody,
1353
+ path: vPlatformApiAgenticWorkflowOperationsControllerExecutePath,
1252
1354
  query: v.optional(v.never())
1253
1355
  }), data),
1254
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDataActivationClientControllerMetadataResponse, data),
1356
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAgenticWorkflowOperationsControllerExecuteResponse, data),
1255
1357
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
1256
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{slug}/metadata',
1257
- ...options
1358
+ url: '/api/v1/tenants/{tenant_slug}/agentic-workflows/{workflow_slug}/execute',
1359
+ ...options,
1360
+ headers: {
1361
+ 'Content-Type': 'application/json',
1362
+ ...options.headers
1363
+ }
1258
1364
  });
1259
1365
 
1260
1366
  /**
1261
- * Stop refresh polling for a batch run log
1367
+ * Accept a tenant invitation
1368
+ *
1369
+ * Accepts a pending invitation addressed to the authenticated user, creating
1370
+ * a `Membership` and deleting the invitation. Mirrors the LiveView flow at
1371
+ * `/app/users/tenant-invitations` → "Accept" button. Wraps
1372
+ * `Tenants.accept_invitation!/2` verbatim.
1373
+ *
1374
+ * The function-level guard `get_invitation_by_user!/2` ensures the invitation
1375
+ * is addressed to the caller — cross-user acceptance returns 404.
1376
+ *
1377
+ * Requires any Bearer (the recipient often has only a tenant-less Bearer at
1378
+ * this point — they just signed up and haven't joined a tenant yet).
1262
1379
  *
1263
- * Deletes the DynamicCron job that polls this batch. The batch log is NOT deleted.
1264
1380
  */
1265
- export const platformApiAgenticWorkflowOperationsControllerBatchLogStop = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerBatchLogStopData, ThrowOnError>) => (options.client ?? client).post<PlatformApiAgenticWorkflowOperationsControllerBatchLogStopResponses, PlatformApiAgenticWorkflowOperationsControllerBatchLogStopErrors, ThrowOnError>({
1381
+ export const platformApiInvitationControllerAccept = <ThrowOnError extends boolean = false>(options: Options<PlatformApiInvitationControllerAcceptData, ThrowOnError>) => (options.client ?? client).post<PlatformApiInvitationControllerAcceptResponses, PlatformApiInvitationControllerAcceptErrors, ThrowOnError>({
1266
1382
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
1267
1383
  body: v.optional(v.never()),
1268
- path: vPlatformApiAgenticWorkflowOperationsControllerBatchLogStopPath,
1384
+ path: vPlatformApiInvitationControllerAcceptPath,
1269
1385
  query: v.optional(v.never())
1270
1386
  }), data),
1271
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAgenticWorkflowOperationsControllerBatchLogStopResponse, data),
1272
- security: [{ name: 'X-API-Key', type: 'apiKey' }],
1273
- url: '/api/v1/tenants/{tenant_slug}/agentic-workflows/{workflow_slug}/batch-logs/{id}/stop',
1387
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiInvitationControllerAcceptResponse, data),
1388
+ security: [{ scheme: 'bearer', type: 'http' }],
1389
+ url: '/api/v1/invitations/{id}/accept',
1274
1390
  ...options
1275
1391
  });
1276
1392
 
1277
1393
  /**
1278
- * List processing logs for a Data Activation Client
1394
+ * Get a batch run log
1279
1395
  *
1280
- * Returns a Flop-paginated list of `DataActivationLog` rows for this DAC. One log per `(batch_id, dataset_table)` — a single run produces multiple log rows, one per dataset table the DAC writes into. Filter or group client-side on `batch_id` to reconstruct a batch-level view.
1396
+ * Returns a single batch-level workflow run log with merged artifacts.
1281
1397
  */
1282
- export const platformApiDataActivationClientControllerLogsIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerLogsIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDataActivationClientControllerLogsIndexResponses, PlatformApiDataActivationClientControllerLogsIndexErrors, ThrowOnError>({
1283
- querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
1398
+ export const platformApiAgenticWorkflowOperationsControllerBatchLogShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerBatchLogShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAgenticWorkflowOperationsControllerBatchLogShowResponses, PlatformApiAgenticWorkflowOperationsControllerBatchLogShowErrors, ThrowOnError>({
1284
1399
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
1285
1400
  body: v.optional(v.never()),
1286
- path: vPlatformApiDataActivationClientControllerLogsIndexPath,
1287
- query: v.optional(vPlatformApiDataActivationClientControllerLogsIndexQuery)
1401
+ path: vPlatformApiAgenticWorkflowOperationsControllerBatchLogShowPath,
1402
+ query: v.optional(v.never())
1288
1403
  }), data),
1289
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDataActivationClientControllerLogsIndexResponse, data),
1404
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAgenticWorkflowOperationsControllerBatchLogShowResponse, data),
1290
1405
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
1291
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{slug}/logs',
1406
+ url: '/api/v1/tenants/{tenant_slug}/agentic-workflows/{workflow_slug}/batch-logs/{id}',
1292
1407
  ...options
1293
1408
  });
1294
1409
 
1295
1410
  /**
1296
- * Delete a tool
1411
+ * Get contract field metadata
1297
1412
  *
1298
- * Deletes a tool. Returns 409 if the tool is referenced by another resource.
1413
+ * Returns a markdown document describing the fields of the contract's target resource type. Combines `@moduledoc` (resource description) and `@typedoc` (field definitions) from the schema.
1299
1414
  */
1300
- export const platformApiToolControllerDelete = <ThrowOnError extends boolean = false>(options: Options<PlatformApiToolControllerDeleteData, ThrowOnError>) => (options.client ?? client).delete<PlatformApiToolControllerDeleteResponses, PlatformApiToolControllerDeleteErrors, ThrowOnError>({
1415
+ export const platformApiInteroperabilityContractControllerMetadata = <ThrowOnError extends boolean = false>(options: Options<PlatformApiInteroperabilityContractControllerMetadataData, ThrowOnError>) => (options.client ?? client).get<PlatformApiInteroperabilityContractControllerMetadataResponses, PlatformApiInteroperabilityContractControllerMetadataErrors, ThrowOnError>({
1416
+ querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
1301
1417
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
1302
1418
  body: v.optional(v.never()),
1303
- path: vPlatformApiToolControllerDeletePath,
1304
- query: v.optional(v.never())
1419
+ path: vPlatformApiInteroperabilityContractControllerMetadataPath,
1420
+ query: v.optional(vPlatformApiInteroperabilityContractControllerMetadataQuery)
1305
1421
  }), data),
1306
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiToolControllerDeleteResponse, data),
1422
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiInteroperabilityContractControllerMetadataResponse, data),
1307
1423
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
1308
- url: '/api/v1/tenants/{tenant_slug}/tools/{id}',
1424
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts/{slug}/metadata',
1309
1425
  ...options
1310
1426
  });
1311
1427
 
1312
1428
  /**
1313
- * Get a tool
1429
+ * List interoperability contracts
1314
1430
  *
1315
- * Returns a single tool by ID.
1431
+ * Returns a paginated list of contracts scoped to the datalake.
1316
1432
  */
1317
- export const platformApiToolControllerShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiToolControllerShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiToolControllerShowResponses, PlatformApiToolControllerShowErrors, ThrowOnError>({
1433
+ export const platformApiInteroperabilityContractControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiInteroperabilityContractControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiInteroperabilityContractControllerIndexResponses, PlatformApiInteroperabilityContractControllerIndexErrors, ThrowOnError>({
1434
+ querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
1318
1435
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
1319
1436
  body: v.optional(v.never()),
1320
- path: vPlatformApiToolControllerShowPath,
1321
- query: v.optional(v.never())
1437
+ path: vPlatformApiInteroperabilityContractControllerIndexPath,
1438
+ query: v.optional(vPlatformApiInteroperabilityContractControllerIndexQuery)
1322
1439
  }), data),
1323
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiToolControllerShowResponse, data),
1440
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiInteroperabilityContractControllerIndexResponse, data),
1324
1441
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
1325
- url: '/api/v1/tenants/{tenant_slug}/tools/{id}',
1442
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts',
1326
1443
  ...options
1327
1444
  });
1328
1445
 
1329
1446
  /**
1330
- * Replace a tool
1447
+ * Create an interoperability contract
1331
1448
  *
1332
- * Replaces a tool with the full resource body. PUT semantics all required fields must be present.
1449
+ * Creates a new contract. `slug` is auto-generated from `name` on insert.
1333
1450
  */
1334
- export const platformApiToolControllerUpdate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiToolControllerUpdateData, ThrowOnError>) => (options.client ?? client).put<PlatformApiToolControllerUpdateResponses, PlatformApiToolControllerUpdateErrors, ThrowOnError>({
1451
+ export const platformApiInteroperabilityContractControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiInteroperabilityContractControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiInteroperabilityContractControllerCreateResponses, PlatformApiInteroperabilityContractControllerCreateErrors, ThrowOnError>({
1452
+ querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
1335
1453
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
1336
- body: v.optional(vPlatformApiToolControllerUpdateBody),
1337
- path: vPlatformApiToolControllerUpdatePath,
1338
- query: v.optional(v.never())
1454
+ body: v.optional(vPlatformApiInteroperabilityContractControllerCreateBody),
1455
+ path: vPlatformApiInteroperabilityContractControllerCreatePath,
1456
+ query: v.optional(vPlatformApiInteroperabilityContractControllerCreateQuery)
1339
1457
  }), data),
1340
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiToolControllerUpdateResponse, data),
1458
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiInteroperabilityContractControllerCreateResponse, data),
1341
1459
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
1342
- url: '/api/v1/tenants/{tenant_slug}/tools/{id}',
1460
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts',
1343
1461
  ...options,
1344
1462
  headers: {
1345
1463
  'Content-Type': 'application/json',
@@ -1348,93 +1466,62 @@ export const platformApiToolControllerUpdate = <ThrowOnError extends boolean = f
1348
1466
  });
1349
1467
 
1350
1468
  /**
1351
- * Get workflow metadata
1352
- *
1353
- * Returns a markdown document describing the workflow's variable pipeline — available variables at each node (event dataset, MDM, context datasets, enrichment, filter, decision, actions).
1354
- */
1355
- export const platformApiAgenticWorkflowControllerMetadata = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowControllerMetadataData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAgenticWorkflowControllerMetadataResponses, PlatformApiAgenticWorkflowControllerMetadataErrors, ThrowOnError>({
1356
- requestValidator: async (data: unknown) => await v.parseAsync(v.object({
1357
- body: v.optional(v.never()),
1358
- path: vPlatformApiAgenticWorkflowControllerMetadataPath,
1359
- query: v.optional(v.never())
1360
- }), data),
1361
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAgenticWorkflowControllerMetadataResponse, data),
1362
- security: [{ name: 'X-API-Key', type: 'apiKey' }],
1363
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{id}/metadata',
1364
- ...options
1365
- });
1366
-
1367
- /**
1368
- * Health check
1469
+ * List the authenticated user's pending invitations
1369
1470
  *
1370
- * Public health check endpoint that returns:
1371
- * - Application version
1372
- * - Database connectivity status (SELECT 1 query)
1373
- * - Current timestamp
1471
+ * Returns invitations addressed to the authenticated user that have not
1472
+ * yet been accepted. Mirrors the LiveView at `/app/users/tenant-invitations`
1473
+ * that recipients see after sign-in. Wraps `Tenants.list_invitations_by_user/1`
1474
+ * verbatim always filtered to the current user, never accepts a query
1475
+ * parameter that could leak another user's invitations.
1374
1476
  *
1375
- * **No authentication required.**
1477
+ * Requires any Bearer (tenant-less is fine — recipients typically don't
1478
+ * have tenant scope yet at this point in the bootstrap flow).
1376
1479
  *
1377
1480
  */
1378
- export const platformApiPingControllerPing = <ThrowOnError extends boolean = false>(options?: Options<PlatformApiPingControllerPingData, ThrowOnError>) => (options?.client ?? client).get<PlatformApiPingControllerPingResponses, PlatformApiPingControllerPingErrors, ThrowOnError>({
1481
+ export const platformApiInvitationControllerIndex = <ThrowOnError extends boolean = false>(options?: Options<PlatformApiInvitationControllerIndexData, ThrowOnError>) => (options?.client ?? client).get<PlatformApiInvitationControllerIndexResponses, PlatformApiInvitationControllerIndexErrors, ThrowOnError>({
1379
1482
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
1380
1483
  body: v.optional(v.never()),
1381
1484
  path: v.optional(v.never()),
1382
1485
  query: v.optional(v.never())
1383
1486
  }), data),
1384
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiPingControllerPingResponse, data),
1385
- url: '/api/ping',
1386
- ...options
1387
- });
1388
-
1389
- /**
1390
- * Sync routes
1391
- *
1392
- * Enqueues a background job to fetch routes from the connected app's `/.well-known/routes.json` endpoint and update the stored routes.
1393
- */
1394
- export const platformApiConnectedAppMgmtControllerSyncRoutes = <ThrowOnError extends boolean = false>(options: Options<PlatformApiConnectedAppMgmtControllerSyncRoutesData, ThrowOnError>) => (options.client ?? client).post<PlatformApiConnectedAppMgmtControllerSyncRoutesResponses, PlatformApiConnectedAppMgmtControllerSyncRoutesErrors, ThrowOnError>({
1395
- requestValidator: async (data: unknown) => await v.parseAsync(v.object({
1396
- body: v.optional(v.never()),
1397
- path: vPlatformApiConnectedAppMgmtControllerSyncRoutesPath,
1398
- query: v.optional(v.never())
1399
- }), data),
1400
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiConnectedAppMgmtControllerSyncRoutesResponse, data),
1401
- security: [{ name: 'X-API-Key', type: 'apiKey' }],
1402
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/{id}/sync-routes',
1487
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiInvitationControllerIndexResponse, data),
1488
+ security: [{ scheme: 'bearer', type: 'http' }],
1489
+ url: '/api/v1/invitations',
1403
1490
  ...options
1404
1491
  });
1405
1492
 
1406
1493
  /**
1407
- * List data activation clients
1494
+ * List generic tables
1408
1495
  *
1409
- * Returns a paginated list of DACs for the datalake in the path.
1496
+ * Returns a paginated list of generic tables for the datalake (custom tables + system tables for the data domain).
1410
1497
  */
1411
- export const platformApiDataActivationClientControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDataActivationClientControllerIndexResponses, PlatformApiDataActivationClientControllerIndexErrors, ThrowOnError>({
1498
+ export const platformApiGenericTableControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiGenericTableControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiGenericTableControllerIndexResponses, PlatformApiGenericTableControllerIndexErrors, ThrowOnError>({
1412
1499
  querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
1413
1500
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
1414
1501
  body: v.optional(v.never()),
1415
- path: vPlatformApiDataActivationClientControllerIndexPath,
1416
- query: v.optional(vPlatformApiDataActivationClientControllerIndexQuery)
1502
+ path: vPlatformApiGenericTableControllerIndexPath,
1503
+ query: v.optional(vPlatformApiGenericTableControllerIndexQuery)
1417
1504
  }), data),
1418
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDataActivationClientControllerIndexResponse, data),
1505
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiGenericTableControllerIndexResponse, data),
1419
1506
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
1420
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients',
1507
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/generic-tables',
1421
1508
  ...options
1422
1509
  });
1423
1510
 
1424
1511
  /**
1425
- * Create a data activation client
1512
+ * Create a generic table
1426
1513
  *
1427
- * Creates a new DAC. `slug` is auto-generated from `name`. `tool_call` is a polymorphic object whose shape depends on the `tool_call_type` discriminator — see `tool_call_type` enum for valid variants (RESTCall, SQLQueryCall, SFTPCall, SharePointExcelCall, AWSLambdaCall, ManualUploadCall, S3Call).
1514
+ * Creates a new custom generic table within the datalake.
1428
1515
  */
1429
- export const platformApiDataActivationClientControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDataActivationClientControllerCreateResponses, PlatformApiDataActivationClientControllerCreateErrors, ThrowOnError>({
1516
+ export const platformApiGenericTableControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiGenericTableControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiGenericTableControllerCreateResponses, PlatformApiGenericTableControllerCreateErrors, ThrowOnError>({
1430
1517
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
1431
- body: v.optional(vPlatformApiDataActivationClientControllerCreateBody),
1432
- path: vPlatformApiDataActivationClientControllerCreatePath,
1518
+ body: v.optional(vPlatformApiGenericTableControllerCreateBody),
1519
+ path: vPlatformApiGenericTableControllerCreatePath,
1433
1520
  query: v.optional(v.never())
1434
1521
  }), data),
1435
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDataActivationClientControllerCreateResponse, data),
1522
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiGenericTableControllerCreateResponse, data),
1436
1523
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
1437
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients',
1524
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/generic-tables',
1438
1525
  ...options,
1439
1526
  headers: {
1440
1527
  'Content-Type': 'application/json',
@@ -1443,60 +1530,55 @@ export const platformApiDataActivationClientControllerCreate = <ThrowOnError ext
1443
1530
  });
1444
1531
 
1445
1532
  /**
1446
- * Sign up a new user
1447
- *
1448
- * Register a new user account. Mirrors the `/auth/register` LiveView form
1449
- * submission shape — wraps `Accounts.register_user/2` verbatim with no
1450
- * business-logic divergence.
1533
+ * List accessible tenants
1451
1534
  *
1452
- * The created user is **unconfirmed** and has **no tenant memberships**. To
1453
- * obtain a Bearer token, the user must first be confirmed (via the email
1454
- * confirmation flow in production, or via `PUT /api/v1/admin/users/:id/confirm`
1455
- * in test bootstrap), then exchange credentials at `POST /api/v1/sessions`.
1535
+ * Returns a paginated list of tenants accessible to the authenticated identity.
1456
1536
  *
1457
- * No authentication required this endpoint is the entry point for new users.
1537
+ * - **Bearer token**: returns all tenants the user has membership in.
1538
+ * - **X-API-Key**: returns the single tenant the API key is scoped to.
1458
1539
  *
1459
1540
  */
1460
- export const platformApiAuthControllerSignUp = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAuthControllerSignUpData, ThrowOnError>) => (options.client ?? client).post<PlatformApiAuthControllerSignUpResponses, PlatformApiAuthControllerSignUpErrors, ThrowOnError>({
1541
+ export const platformApiTenantControllerIndex = <ThrowOnError extends boolean = false>(options?: Options<PlatformApiTenantControllerIndexData, ThrowOnError>) => (options?.client ?? client).get<PlatformApiTenantControllerIndexResponses, PlatformApiTenantControllerIndexErrors, ThrowOnError>({
1542
+ querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
1461
1543
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
1462
- body: vPlatformApiAuthControllerSignUpBody,
1544
+ body: v.optional(v.never()),
1463
1545
  path: v.optional(v.never()),
1464
- query: v.optional(v.never())
1546
+ query: v.optional(vPlatformApiTenantControllerIndexQuery)
1465
1547
  }), data),
1466
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAuthControllerSignUpResponse, data),
1467
- url: '/api/v1/auth/sign-up',
1468
- ...options,
1469
- headers: {
1470
- 'Content-Type': 'application/json',
1471
- ...options.headers
1472
- }
1548
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiTenantControllerIndexResponse, data),
1549
+ security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],
1550
+ url: '/api/v1/tenants',
1551
+ ...options
1473
1552
  });
1474
1553
 
1475
1554
  /**
1476
- * Verify subject identity
1555
+ * Create a tenant
1477
1556
  *
1478
- * Verify a subject's identity against their master record using fuzzy matching.
1557
+ * Creates a new tenant and an `:admin` membership for the authenticated user.
1558
+ * Wraps `Platform.Tenants.create_tenant/3` verbatim — same primitive that
1559
+ * backs the `/app/tenants/new` LiveView.
1479
1560
  *
1480
- * Supports verification by:
1481
- * - **family_name** Jaro distance >= 0.85
1482
- * - **given_name** Jaro distance >= 0.80
1483
- * - **birth_date**Fuzzy component matching >= 0.80
1484
- * - **identifiers** — Exact (system, value) match
1561
+ * On success returns a regular `SessionResponse` carrying a freshly-minted
1562
+ * **tenant-scoped Bearer** (`session_token`), the new tenant, and the
1563
+ * membership role. Callers swap their tenant-less Bearer for this token
1564
+ * and proceed with tenant-scoped workno second sign-in round-trip.
1485
1565
  *
1486
- * At least one verification field is required.
1566
+ * The user must be confirmed (`confirmed_at IS NOT NULL`); unconfirmed
1567
+ * callers receive 403. Duplicate tenant names (slug collision) return 422.
1487
1568
  *
1488
- * **Requires X-API-Key authentication.**
1569
+ * Requires `Authorization: Bearer <token>` (X-API-Key cannot create tenants —
1570
+ * it carries no platform-user identity to bind the membership to).
1489
1571
  *
1490
1572
  */
1491
- export const platformApiMdmControllerVerify = <ThrowOnError extends boolean = false>(options: Options<PlatformApiMdmControllerVerifyData, ThrowOnError>) => (options.client ?? client).post<PlatformApiMdmControllerVerifyResponses, PlatformApiMdmControllerVerifyErrors, ThrowOnError>({
1573
+ export const platformApiTenantControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiTenantControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiTenantControllerCreateResponses, PlatformApiTenantControllerCreateErrors, ThrowOnError>({
1492
1574
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
1493
- body: vPlatformApiMdmControllerVerifyBody,
1494
- path: vPlatformApiMdmControllerVerifyPath,
1575
+ body: vPlatformApiTenantControllerCreateBody,
1576
+ path: v.optional(v.never()),
1495
1577
  query: v.optional(v.never())
1496
- }), data),
1497
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiMdmControllerVerifyResponse, data),
1498
- security: [{ name: 'X-API-Key', type: 'apiKey' }],
1499
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/mdm/verify',
1578
+ }), data),
1579
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiTenantControllerCreateResponse, data),
1580
+ security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],
1581
+ url: '/api/v1/tenants',
1500
1582
  ...options,
1501
1583
  headers: {
1502
1584
  'Content-Type': 'application/json',
@@ -1505,36 +1587,36 @@ export const platformApiMdmControllerVerify = <ThrowOnError extends boolean = fa
1505
1587
  });
1506
1588
 
1507
1589
  /**
1508
- * Get a connected app
1590
+ * Get schema metadata for a specific dataset type
1509
1591
  *
1510
- * Returns a single connected app by ID.
1592
+ * Returns a markdown document describing the fields available on a dataset type. For standard datasets (patient, appointment, etc.) returns the schema moduledoc. For generic tables, pass the generic_table_id query parameter.
1511
1593
  */
1512
- export const platformApiConnectedAppMgmtControllerShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiConnectedAppMgmtControllerShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiConnectedAppMgmtControllerShowResponses, PlatformApiConnectedAppMgmtControllerShowErrors, ThrowOnError>({
1594
+ export const platformApiDatasetControllerDatasetMetadata = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatasetControllerDatasetMetadataData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDatasetControllerDatasetMetadataResponses, PlatformApiDatasetControllerDatasetMetadataErrors, ThrowOnError>({
1513
1595
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
1514
1596
  body: v.optional(v.never()),
1515
- path: vPlatformApiConnectedAppMgmtControllerShowPath,
1516
- query: v.optional(v.never())
1597
+ path: vPlatformApiDatasetControllerDatasetMetadataPath,
1598
+ query: v.optional(vPlatformApiDatasetControllerDatasetMetadataQuery)
1517
1599
  }), data),
1518
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiConnectedAppMgmtControllerShowResponse, data),
1600
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDatasetControllerDatasetMetadataResponse, data),
1519
1601
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
1520
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/{id}',
1602
+ url: '/api/v1/datasets/{dataset_type}/metadata',
1521
1603
  ...options
1522
1604
  });
1523
1605
 
1524
1606
  /**
1525
- * Replace a connected app
1607
+ * Test invoke a tool
1526
1608
  *
1527
- * Replaces a connected app with the full resource body. PUT semantics all required fields must be present.
1609
+ * Manually invokes a tool with caller-supplied parameters — the API equivalent of the 'Try It' panel in the tool form. Records a `ManualToolInvocation` for audit and returns the provider response (or error). Does not access tenant datasets, so no capability ceiling check is applied.
1528
1610
  */
1529
- export const platformApiConnectedAppMgmtControllerUpdate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiConnectedAppMgmtControllerUpdateData, ThrowOnError>) => (options.client ?? client).put<PlatformApiConnectedAppMgmtControllerUpdateResponses, PlatformApiConnectedAppMgmtControllerUpdateErrors, ThrowOnError>({
1611
+ export const platformApiToolControllerTestInvocation = <ThrowOnError extends boolean = false>(options: Options<PlatformApiToolControllerTestInvocationData, ThrowOnError>) => (options.client ?? client).post<PlatformApiToolControllerTestInvocationResponses, PlatformApiToolControllerTestInvocationErrors, ThrowOnError>({
1530
1612
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
1531
- body: v.optional(vPlatformApiConnectedAppMgmtControllerUpdateBody),
1532
- path: vPlatformApiConnectedAppMgmtControllerUpdatePath,
1613
+ body: v.optional(vPlatformApiToolControllerTestInvocationBody),
1614
+ path: vPlatformApiToolControllerTestInvocationPath,
1533
1615
  query: v.optional(v.never())
1534
1616
  }), data),
1535
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiConnectedAppMgmtControllerUpdateResponse, data),
1617
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiToolControllerTestInvocationResponse, data),
1536
1618
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
1537
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/{id}',
1619
+ url: '/api/v1/tenants/{tenant_slug}/tools/{id}/test-invocation',
1538
1620
  ...options,
1539
1621
  headers: {
1540
1622
  'Content-Type': 'application/json',
@@ -1543,29 +1625,37 @@ export const platformApiConnectedAppMgmtControllerUpdate = <ThrowOnError extends
1543
1625
  });
1544
1626
 
1545
1627
  /**
1546
- * Invite a user to the tenant
1547
- *
1548
- * Creates a `tenant_admin`-issued invitation. Mirrors the LiveView flow at
1549
- * `/app/team` → "Invite new member". Wraps `Tenants.send_tenant_invitation/3`
1550
- * verbatim, including the email send.
1551
- *
1552
- * The `role` enum is **membership-level** (`member`, `researcher`, `admin`),
1553
- * NOT the platform-wide `User.role` enum — privilege-escalation safe by
1554
- * construction.
1628
+ * Get a datalake
1555
1629
  *
1556
- * Requires a tenant-scoped Bearer with membership role `:admin`
1557
- * (`current_role.name == "tenant_admin"`).
1630
+ * Returns a single datalake by ID (non-sensitive metadata only).
1631
+ */
1632
+ export const platformApiDatalakeControllerShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDatalakeControllerShowResponses, PlatformApiDatalakeControllerShowErrors, ThrowOnError>({
1633
+ querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
1634
+ requestValidator: async (data: unknown) => await v.parseAsync(v.object({
1635
+ body: v.optional(v.never()),
1636
+ path: vPlatformApiDatalakeControllerShowPath,
1637
+ query: v.optional(vPlatformApiDatalakeControllerShowQuery)
1638
+ }), data),
1639
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDatalakeControllerShowResponse, data),
1640
+ security: [{ name: 'X-API-Key', type: 'apiKey' }],
1641
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{id}',
1642
+ ...options
1643
+ });
1644
+
1645
+ /**
1646
+ * Create datalake download link
1558
1647
  *
1648
+ * Returns a presigned GET URL for an object stored in one of the datalake's cloud storage buckets (regulated or unregulated). Typical use: read a `DACRawLogFile.object_key` (`s3://bucket/key`) off a data-activation log row, split it into `bucket` and `key`, then POST here to obtain a short-lived download URL.
1559
1649
  */
1560
- export const platformApiInvitationControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiInvitationControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiInvitationControllerCreateResponses, PlatformApiInvitationControllerCreateErrors, ThrowOnError>({
1650
+ export const platformApiDatalakeControllerCreateDownloadLink = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerCreateDownloadLinkData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDatalakeControllerCreateDownloadLinkResponses, PlatformApiDatalakeControllerCreateDownloadLinkErrors, ThrowOnError>({
1561
1651
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
1562
- body: vPlatformApiInvitationControllerCreateBody,
1563
- path: vPlatformApiInvitationControllerCreatePath,
1652
+ body: vPlatformApiDatalakeControllerCreateDownloadLinkBody,
1653
+ path: vPlatformApiDatalakeControllerCreateDownloadLinkPath,
1564
1654
  query: v.optional(v.never())
1565
1655
  }), data),
1566
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiInvitationControllerCreateResponse, data),
1567
- security: [{ scheme: 'bearer', type: 'http' }],
1568
- url: '/api/v1/tenants/{tenant_slug}/invitations',
1656
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDatalakeControllerCreateDownloadLinkResponse, data),
1657
+ security: [{ name: 'X-API-Key', type: 'apiKey' }],
1658
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/download-link',
1569
1659
  ...options,
1570
1660
  headers: {
1571
1661
  'Content-Type': 'application/json',
@@ -1574,127 +1664,131 @@ export const platformApiInvitationControllerCreate = <ThrowOnError extends boole
1574
1664
  });
1575
1665
 
1576
1666
  /**
1577
- * List workflow execution logs
1667
+ * Download execution context
1578
1668
  *
1579
- * Returns a paginated list of per-event execution logs for a workflow.
1669
+ * Returns a presigned URL for downloading the execution context JSON from R2.
1580
1670
  */
1581
- export const platformApiAgenticWorkflowOperationsControllerWorkflowLogsIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexResponses, PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexErrors, ThrowOnError>({
1582
- querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
1671
+ export const platformApiAgenticWorkflowOperationsControllerWorkflowLogDownload = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadResponses, PlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadErrors, ThrowOnError>({
1583
1672
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
1584
1673
  body: v.optional(v.never()),
1585
- path: vPlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexPath,
1586
- query: v.optional(vPlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexQuery)
1674
+ path: vPlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadPath,
1675
+ query: v.optional(v.never())
1587
1676
  }), data),
1588
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexResponse, data),
1677
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadResponse, data),
1589
1678
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
1590
- url: '/api/v1/tenants/{tenant_slug}/agentic-workflows/{workflow_slug}/workflow-logs',
1679
+ url: '/api/v1/tenants/{tenant_slug}/agentic-workflows/{workflow_slug}/workflow-logs/{id}/download',
1591
1680
  ...options
1592
1681
  });
1593
1682
 
1594
1683
  /**
1595
- * Page results from a UserSearch — outer SQL chunk + inner resource Flop
1684
+ * Verify current session
1596
1685
  *
1597
- * Two-tier pagination at two layers:
1686
+ * Returns the current session's tenant, role, and identity information.
1598
1687
  *
1599
- * * **Outer** `outer_pagination[page]` / `outer_pagination[page_size]`
1600
- * (defaults `1` / `1000`, max `1000`) pages cached IDs from
1601
- * `search_results`. The cap is dictated by Postgres' `WHERE id IN (^ids)`
1602
- * plan — past ~1k parameters the planner regresses.
1603
- * * **Inner** — `inner_search[page]`, `inner_search[page_size]` (defaults
1604
- * `1` / `20`), `inner_search[order_direction]` (sort on the schema's
1605
- * `:global_search` compound), `inner_search[global_search]` (single
1606
- * ILIKE-OR text-search knob).
1688
+ * Works with both authentication methods:
1689
+ * - `X-API-Key` header (M2M)
1690
+ * - `Authorization: Bearer <session_token>` (human sessions)
1607
1691
  *
1608
- * Response carries both metas under `meta.sql` and `meta.flop`. A caller
1609
- * that only drives the inner page sees `meta.sql.has_next_page=true` when
1610
- * the SQL search isn't exhausted; advancing `outer_pagination[page]`
1611
- * fetches the next chunk.
1692
+ * Use this as a "who am I" endpoint to confirm credentials are valid and
1693
+ * inspect the resolved tenant, role, and identity.
1694
+ *
1695
+ * **Requires authentication** (X-API-Key or Bearer token).
1612
1696
  *
1613
1697
  */
1614
- export const platformApiDatasetControllerSearch = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatasetControllerSearchData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDatasetControllerSearchResponses, PlatformApiDatasetControllerSearchErrors, ThrowOnError>({
1698
+ export const platformApiSessionControllerVerify = <ThrowOnError extends boolean = false>(options?: Options<PlatformApiSessionControllerVerifyData, ThrowOnError>) => (options?.client ?? client).get<PlatformApiSessionControllerVerifyResponses, PlatformApiSessionControllerVerifyErrors, ThrowOnError>({
1615
1699
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
1616
1700
  body: v.optional(v.never()),
1617
- path: vPlatformApiDatasetControllerSearchPath,
1618
- query: v.optional(vPlatformApiDatasetControllerSearchQuery)
1701
+ path: v.optional(v.never()),
1702
+ query: v.optional(v.never())
1619
1703
  }), data),
1620
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDatasetControllerSearchResponse, data),
1621
- security: [{ name: 'X-API-Key', type: 'apiKey' }],
1622
- url: '/api/v1/datasets/{dataset}/search',
1704
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiSessionControllerVerifyResponse, data),
1705
+ security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],
1706
+ url: '/api/v1/sessions/verify',
1623
1707
  ...options
1624
1708
  });
1625
1709
 
1626
1710
  /**
1627
- * Create and execute a SQL search for a dataset
1711
+ * Enqueue datalake migrations
1712
+ *
1713
+ * Enqueues a `DatalakeMigrationWorker` Oban job that brings the datalake's
1714
+ * per-tenant database to the current schema version. Required after
1715
+ * `POST /datalakes`, which only persists the metadata row — it does NOT
1716
+ * run migrations against the per-tenant DB. Without this step, every
1717
+ * downstream resource that touches per-datalake tables
1718
+ * (`data_activation_logs`, MDM tables, dataset tables) will fail with
1719
+ * `relation … does not exist`.
1720
+ *
1721
+ * Asynchronous: returns 202 Accepted as soon as the job is enqueued.
1722
+ * Callers poll `GET /datalakes/:id` and watch for `status: :ready`.
1723
+ * Idempotent at the job level — re-enqueueing on a migrated datalake
1724
+ * is a no-op once the worker completes.
1725
+ *
1726
+ * The LiveView "Migrate Datalake" button calls the same migrator
1727
+ * synchronously inside the LiveView process.
1728
+ *
1729
+ * Requires a tenant-scoped Bearer with membership role `admin`.
1628
1730
  *
1629
- * Creates a `UserSearch` row, runs `INSERT INTO search_results SELECT ... WHERE <search_query>` against the regulated schema, and returns the `UserSearch` resource (including `status`, `results_count`, and `error_message`). The session's `data_access_mode` controls which schema is queried.
1630
1731
  */
1631
- export const platformApiDatasetControllerCreateUserSearch = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatasetControllerCreateUserSearchData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDatasetControllerCreateUserSearchResponses, PlatformApiDatasetControllerCreateUserSearchErrors, ThrowOnError>({
1732
+ export const platformApiDatalakeControllerMigrate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerMigrateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDatalakeControllerMigrateResponses, PlatformApiDatalakeControllerMigrateErrors, ThrowOnError>({
1632
1733
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
1633
- body: v.optional(vPlatformApiDatasetControllerCreateUserSearchBody),
1634
- path: vPlatformApiDatasetControllerCreateUserSearchPath,
1635
- query: v.optional(vPlatformApiDatasetControllerCreateUserSearchQuery)
1734
+ body: v.optional(v.never()),
1735
+ path: vPlatformApiDatalakeControllerMigratePath,
1736
+ query: v.optional(v.never())
1636
1737
  }), data),
1637
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDatasetControllerCreateUserSearchResponse, data),
1738
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDatalakeControllerMigrateResponse, data),
1638
1739
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
1639
- url: '/api/v1/datasets/{dataset}/user-searches',
1640
- ...options,
1641
- headers: {
1642
- 'Content-Type': 'application/json',
1643
- ...options.headers
1644
- }
1740
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/migrate',
1741
+ ...options
1645
1742
  });
1646
1743
 
1647
1744
  /**
1648
- * List batch run logs
1745
+ * Delete a data activation client
1649
1746
  *
1650
- * Returns a paginated list of batch-level workflow run logs.
1747
+ * Deletes a DAC. Returns 422 if the DAC is a platform default (is_default=true). Returns 409 if referenced by other resources.
1651
1748
  */
1652
- export const platformApiAgenticWorkflowOperationsControllerBatchLogsIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexResponses, PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexErrors, ThrowOnError>({
1653
- querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
1749
+ export const platformApiDataActivationClientControllerDelete = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerDeleteData, ThrowOnError>) => (options.client ?? client).delete<PlatformApiDataActivationClientControllerDeleteResponses, PlatformApiDataActivationClientControllerDeleteErrors, ThrowOnError>({
1654
1750
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
1655
1751
  body: v.optional(v.never()),
1656
- path: vPlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexPath,
1657
- query: v.optional(vPlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexQuery)
1752
+ path: vPlatformApiDataActivationClientControllerDeletePath,
1753
+ query: v.optional(v.never())
1658
1754
  }), data),
1659
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexResponse, data),
1755
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDataActivationClientControllerDeleteResponse, data),
1660
1756
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
1661
- url: '/api/v1/tenants/{tenant_slug}/agentic-workflows/{workflow_slug}/batch-logs',
1757
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{slug}',
1662
1758
  ...options
1663
1759
  });
1664
1760
 
1665
1761
  /**
1666
- * List action status updaters
1762
+ * Get a data activation client
1667
1763
  *
1668
- * Returns a paginated list of action status updaters for the authenticated tenant.
1764
+ * Returns a single DAC by datalake-scoped slug.
1669
1765
  */
1670
- export const platformApiActionStatusUpdaterControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiActionStatusUpdaterControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiActionStatusUpdaterControllerIndexResponses, PlatformApiActionStatusUpdaterControllerIndexErrors, ThrowOnError>({
1671
- querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
1766
+ export const platformApiDataActivationClientControllerShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDataActivationClientControllerShowResponses, PlatformApiDataActivationClientControllerShowErrors, ThrowOnError>({
1672
1767
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
1673
1768
  body: v.optional(v.never()),
1674
- path: vPlatformApiActionStatusUpdaterControllerIndexPath,
1675
- query: v.optional(vPlatformApiActionStatusUpdaterControllerIndexQuery)
1769
+ path: vPlatformApiDataActivationClientControllerShowPath,
1770
+ query: v.optional(v.never())
1676
1771
  }), data),
1677
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiActionStatusUpdaterControllerIndexResponse, data),
1772
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDataActivationClientControllerShowResponse, data),
1678
1773
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
1679
- url: '/api/v1/tenants/{tenant_slug}/action-status-updaters',
1774
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{slug}',
1680
1775
  ...options
1681
1776
  });
1682
1777
 
1683
1778
  /**
1684
- * Create an action status updater
1779
+ * Replace a data activation client
1685
1780
  *
1686
- * Creates a new action status updater for the authenticated tenant.
1781
+ * Replaces a DAC with the full resource body. PUT semantics — all required fields must be present. `slug` is immutable.
1687
1782
  */
1688
- export const platformApiActionStatusUpdaterControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiActionStatusUpdaterControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiActionStatusUpdaterControllerCreateResponses, PlatformApiActionStatusUpdaterControllerCreateErrors, ThrowOnError>({
1689
- querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
1783
+ export const platformApiDataActivationClientControllerUpdate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerUpdateData, ThrowOnError>) => (options.client ?? client).put<PlatformApiDataActivationClientControllerUpdateResponses, PlatformApiDataActivationClientControllerUpdateErrors, ThrowOnError>({
1690
1784
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
1691
- body: v.optional(vPlatformApiActionStatusUpdaterControllerCreateBody),
1692
- path: vPlatformApiActionStatusUpdaterControllerCreatePath,
1693
- query: v.optional(vPlatformApiActionStatusUpdaterControllerCreateQuery)
1785
+ body: v.optional(vPlatformApiDataActivationClientControllerUpdateBody),
1786
+ path: vPlatformApiDataActivationClientControllerUpdatePath,
1787
+ query: v.optional(v.never())
1694
1788
  }), data),
1695
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiActionStatusUpdaterControllerCreateResponse, data),
1789
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiDataActivationClientControllerUpdateResponse, data),
1696
1790
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
1697
- url: '/api/v1/tenants/{tenant_slug}/action-status-updaters',
1791
+ url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{slug}',
1698
1792
  ...options,
1699
1793
  headers: {
1700
1794
  'Content-Type': 'application/json',
@@ -1703,51 +1797,37 @@ export const platformApiActionStatusUpdaterControllerCreate = <ThrowOnError exte
1703
1797
  });
1704
1798
 
1705
1799
  /**
1706
- * Run a contract against a payload (sandbox)
1800
+ * List tools
1707
1801
  *
1708
- * Runs the contract's `filter transform mdm_input` pipeline against the supplied JSON row. Stateless — no DB writes. Use for template authoring/testing.
1802
+ * Returns a paginated list of tools for the authenticated tenant.
1709
1803
  */
1710
- export const platformApiInteroperabilityContractControllerRun = <ThrowOnError extends boolean = false>(options: Options<PlatformApiInteroperabilityContractControllerRunData, ThrowOnError>) => (options.client ?? client).post<PlatformApiInteroperabilityContractControllerRunResponses, PlatformApiInteroperabilityContractControllerRunErrors, ThrowOnError>({
1804
+ export const platformApiToolControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiToolControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiToolControllerIndexResponses, PlatformApiToolControllerIndexErrors, ThrowOnError>({
1711
1805
  querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },
1712
1806
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
1713
- body: vPlatformApiInteroperabilityContractControllerRunBody,
1714
- path: vPlatformApiInteroperabilityContractControllerRunPath,
1715
- query: v.optional(vPlatformApiInteroperabilityContractControllerRunQuery)
1807
+ body: v.optional(v.never()),
1808
+ path: vPlatformApiToolControllerIndexPath,
1809
+ query: v.optional(vPlatformApiToolControllerIndexQuery)
1716
1810
  }), data),
1717
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiInteroperabilityContractControllerRunResponse, data),
1811
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiToolControllerIndexResponse, data),
1718
1812
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
1719
- url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts/{slug}/run',
1720
- ...options,
1721
- headers: {
1722
- 'Content-Type': 'application/json',
1723
- ...options.headers
1724
- }
1813
+ url: '/api/v1/tenants/{tenant_slug}/tools',
1814
+ ...options
1725
1815
  });
1726
1816
 
1727
1817
  /**
1728
- * Resolve a short URL token to a page
1729
- *
1730
- * Given a connected app slug and a Puid short URL token, resolves the token to
1731
- * the pre-stored route path and MDM subject ID. The Cloudflare app calls this
1732
- * endpoint when a customer clicks a short URL, forwarding the original client
1733
- * headers (user-agent, IP, country) in the request body.
1734
- *
1735
- * When the page token is linked to a message (via workflow action execution),
1736
- * the regulated message details (raw body, channel, status) are included in
1737
- * the response.
1738
- *
1739
- * **Requires X-API-Key authentication.**
1818
+ * Create a tool
1740
1819
  *
1820
+ * Creates a new tool for the authenticated tenant.
1741
1821
  */
1742
- export const platformApiConnectedAppControllerResolvePage = <ThrowOnError extends boolean = false>(options: Options<PlatformApiConnectedAppControllerResolvePageData, ThrowOnError>) => (options.client ?? client).post<PlatformApiConnectedAppControllerResolvePageResponses, PlatformApiConnectedAppControllerResolvePageErrors, ThrowOnError>({
1822
+ export const platformApiToolControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiToolControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiToolControllerCreateResponses, PlatformApiToolControllerCreateErrors, ThrowOnError>({
1743
1823
  requestValidator: async (data: unknown) => await v.parseAsync(v.object({
1744
- body: vPlatformApiConnectedAppControllerResolvePageBody,
1745
- path: vPlatformApiConnectedAppControllerResolvePagePath,
1824
+ body: v.optional(vPlatformApiToolControllerCreateBody),
1825
+ path: vPlatformApiToolControllerCreatePath,
1746
1826
  query: v.optional(v.never())
1747
1827
  }), data),
1748
- responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiConnectedAppControllerResolvePageResponse, data),
1828
+ responseValidator: async (data: unknown) => await v.parseAsync(vPlatformApiToolControllerCreateResponse, data),
1749
1829
  security: [{ name: 'X-API-Key', type: 'apiKey' }],
1750
- url: '/api/v1/tenants/{tenant_slug}/connected-apps/{slug}/resolve-page',
1830
+ url: '/api/v1/tenants/{tenant_slug}/tools',
1751
1831
  ...options,
1752
1832
  headers: {
1753
1833
  'Content-Type': 'application/json',