@alvera-ai/platform-sdk 0.5.2 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/README.md +34 -0
  2. package/package.json +10 -11
  3. package/src/cli.ts +1386 -0
  4. package/src/client.ts +930 -0
  5. package/src/config.ts +205 -0
  6. package/src/environments.generated.ts +16 -0
  7. package/src/generated/client/client.gen.ts +298 -0
  8. package/src/generated/client/index.ts +25 -0
  9. package/src/generated/client/types.gen.ts +214 -0
  10. package/src/generated/client/utils.gen.ts +316 -0
  11. package/{dist/generated/client.gen.d.ts → src/generated/client.gen.ts} +6 -3
  12. package/src/generated/core/auth.gen.ts +41 -0
  13. package/src/generated/core/bodySerializer.gen.ts +82 -0
  14. package/src/generated/core/params.gen.ts +169 -0
  15. package/src/generated/core/pathSerializer.gen.ts +171 -0
  16. package/src/generated/core/queryKeySerializer.gen.ts +117 -0
  17. package/src/generated/core/serverSentEvents.gen.ts +242 -0
  18. package/src/generated/core/types.gen.ts +104 -0
  19. package/src/generated/core/utils.gen.ts +140 -0
  20. package/src/generated/index.ts +4 -0
  21. package/src/generated/sdk.gen.ts +1756 -0
  22. package/{dist/generated/types.gen.d.ts → src/generated/types.gen.ts} +2243 -131
  23. package/{dist/generated/valibot.gen.js → src/generated/valibot.gen.ts} +1362 -53
  24. package/src/index.ts +69 -0
  25. package/dist/cli.d.ts +0 -3
  26. package/dist/cli.d.ts.map +0 -1
  27. package/dist/cli.js +0 -1008
  28. package/dist/cli.js.map +0 -1
  29. package/dist/client.d.ts +0 -529
  30. package/dist/client.d.ts.map +0 -1
  31. package/dist/client.js +0 -421
  32. package/dist/client.js.map +0 -1
  33. package/dist/config.d.ts +0 -34
  34. package/dist/config.d.ts.map +0 -1
  35. package/dist/config.js +0 -146
  36. package/dist/config.js.map +0 -1
  37. package/dist/environments.generated.d.ts +0 -21
  38. package/dist/environments.generated.d.ts.map +0 -1
  39. package/dist/environments.generated.js +0 -8
  40. package/dist/environments.generated.js.map +0 -1
  41. package/dist/generated/client/client.gen.d.ts +0 -3
  42. package/dist/generated/client/client.gen.d.ts.map +0 -1
  43. package/dist/generated/client/client.gen.js +0 -236
  44. package/dist/generated/client/client.gen.js.map +0 -1
  45. package/dist/generated/client/index.d.ts +0 -9
  46. package/dist/generated/client/index.d.ts.map +0 -1
  47. package/dist/generated/client/index.js +0 -7
  48. package/dist/generated/client/index.js.map +0 -1
  49. package/dist/generated/client/types.gen.d.ts +0 -118
  50. package/dist/generated/client/types.gen.d.ts.map +0 -1
  51. package/dist/generated/client/types.gen.js +0 -3
  52. package/dist/generated/client/types.gen.js.map +0 -1
  53. package/dist/generated/client/utils.gen.d.ts +0 -34
  54. package/dist/generated/client/utils.gen.d.ts.map +0 -1
  55. package/dist/generated/client/utils.gen.js +0 -229
  56. package/dist/generated/client/utils.gen.js.map +0 -1
  57. package/dist/generated/client.gen.d.ts.map +0 -1
  58. package/dist/generated/client.gen.js +0 -4
  59. package/dist/generated/client.gen.js.map +0 -1
  60. package/dist/generated/core/auth.gen.d.ts +0 -19
  61. package/dist/generated/core/auth.gen.d.ts.map +0 -1
  62. package/dist/generated/core/auth.gen.js +0 -15
  63. package/dist/generated/core/auth.gen.js.map +0 -1
  64. package/dist/generated/core/bodySerializer.gen.d.ts +0 -26
  65. package/dist/generated/core/bodySerializer.gen.d.ts.map +0 -1
  66. package/dist/generated/core/bodySerializer.gen.js +0 -58
  67. package/dist/generated/core/bodySerializer.gen.js.map +0 -1
  68. package/dist/generated/core/params.gen.d.ts +0 -44
  69. package/dist/generated/core/params.gen.d.ts.map +0 -1
  70. package/dist/generated/core/params.gen.js +0 -101
  71. package/dist/generated/core/params.gen.js.map +0 -1
  72. package/dist/generated/core/pathSerializer.gen.d.ts +0 -34
  73. package/dist/generated/core/pathSerializer.gen.d.ts.map +0 -1
  74. package/dist/generated/core/pathSerializer.gen.js +0 -107
  75. package/dist/generated/core/pathSerializer.gen.js.map +0 -1
  76. package/dist/generated/core/queryKeySerializer.gen.d.ts +0 -19
  77. package/dist/generated/core/queryKeySerializer.gen.d.ts.map +0 -1
  78. package/dist/generated/core/queryKeySerializer.gen.js +0 -93
  79. package/dist/generated/core/queryKeySerializer.gen.js.map +0 -1
  80. package/dist/generated/core/serverSentEvents.gen.d.ts +0 -72
  81. package/dist/generated/core/serverSentEvents.gen.d.ts.map +0 -1
  82. package/dist/generated/core/serverSentEvents.gen.js +0 -133
  83. package/dist/generated/core/serverSentEvents.gen.js.map +0 -1
  84. package/dist/generated/core/types.gen.d.ts +0 -79
  85. package/dist/generated/core/types.gen.d.ts.map +0 -1
  86. package/dist/generated/core/types.gen.js +0 -3
  87. package/dist/generated/core/types.gen.js.map +0 -1
  88. package/dist/generated/core/utils.gen.d.ts +0 -20
  89. package/dist/generated/core/utils.gen.d.ts.map +0 -1
  90. package/dist/generated/core/utils.gen.js +0 -88
  91. package/dist/generated/core/utils.gen.js.map +0 -1
  92. package/dist/generated/index.d.ts +0 -3
  93. package/dist/generated/index.d.ts.map +0 -1
  94. package/dist/generated/index.js +0 -3
  95. package/dist/generated/index.js.map +0 -1
  96. package/dist/generated/sdk.gen.d.ts +0 -519
  97. package/dist/generated/sdk.gen.d.ts.map +0 -1
  98. package/dist/generated/sdk.gen.js +0 -1382
  99. package/dist/generated/sdk.gen.js.map +0 -1
  100. package/dist/generated/types.gen.d.ts.map +0 -1
  101. package/dist/generated/types.gen.js +0 -3
  102. package/dist/generated/types.gen.js.map +0 -1
  103. package/dist/generated/valibot.gen.d.ts +0 -35016
  104. package/dist/generated/valibot.gen.d.ts.map +0 -1
  105. package/dist/generated/valibot.gen.js.map +0 -1
  106. package/dist/index.d.ts +0 -2
  107. package/dist/index.d.ts.map +0 -1
  108. package/dist/index.js +0 -2
  109. package/dist/index.js.map +0 -1
@@ -1,11 +1,88 @@
1
1
  // This file is auto-generated by @hey-api/openapi-ts
2
+
2
3
  import * as v from 'valibot';
4
+
5
+ /**
6
+ * UserSearchResponse
7
+ *
8
+ * User SQL search resource. Created via `POST /datasets/:dataset/user-searches`
9
+ * with a `WHERE`-clause body in `search_query`; the platform executes
10
+ * `INSERT INTO search_results SELECT … WHERE <body>` to populate
11
+ * `search_results` and reports back `status`, `results_count`, and
12
+ * `error_message`.
13
+ *
14
+ * UserSearch carries no `data_access_mode` of its own — the capability check
15
+ * runs at query time via `Platform.RegulatedDatalakeRepo.prepare_query/3`,
16
+ * which reads the ambient session and raises 403 when the ceiling is
17
+ * insufficient. ExOpenApiUtils derives `UserSearchRequest` (writeable subset)
18
+ * and `UserSearchResponse` (full readable shape) from this declaration via
19
+ * the readOnly/writeOnly markers on each property.
20
+ *
21
+ */
22
+ export const vUserSearchResponse = v.pipe(v.object({
23
+ error_message: v.nullish(v.pipe(v.string(), v.readonly())),
24
+ generic_table_id: v.nullish(v.pipe(v.string(), v.uuid())),
25
+ id: v.optional(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
26
+ resource_type: v.optional(v.pipe(v.string(), v.readonly())),
27
+ results_count: v.nullish(v.pipe(v.pipe(v.number(), v.integer()), v.readonly())),
28
+ search_query: v.pipe(v.string(), v.minLength(1)),
29
+ status: v.optional(v.pipe(v.picklist([
30
+ 'new',
31
+ 'in_progress',
32
+ 'completed',
33
+ 'error'
34
+ ]), v.readonly()))
35
+ }), v.readonly());
36
+
37
+ /**
38
+ * ActionExecutionLogResponse
39
+ *
40
+ * Per-action execution log — child of a WorkflowExecutionLog, one row per scheduled action.
41
+ */
42
+ export const vActionExecutionLogResponse = v.pipe(v.object({
43
+ action_id: v.pipe(v.string(), v.uuid()),
44
+ action_type: v.picklist([
45
+ 'sms',
46
+ 'email',
47
+ 'voice',
48
+ 'data_exchange'
49
+ ]),
50
+ batch_id: v.nullish(v.string()),
51
+ completed_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
52
+ context_key: v.nullish(v.string()),
53
+ decision_key: v.nullish(v.string()),
54
+ error_message: v.nullish(v.string()),
55
+ external_id: v.nullish(v.string()),
56
+ id: v.pipe(v.string(), v.uuid()),
57
+ inserted_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
58
+ message_body: v.nullish(v.pipe(v.string(), v.readonly())),
59
+ message_id: v.nullish(v.pipe(v.string(), v.uuid())),
60
+ mode: v.picklist(['live', 'dry_run']),
61
+ retry_count: v.optional(v.pipe(v.number(), v.integer())),
62
+ runtime_filter_result: v.nullish(v.boolean()),
63
+ scheduled_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
64
+ started_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
65
+ status: v.picklist([
66
+ 'pending',
67
+ 'executing',
68
+ 'completed',
69
+ 'failed',
70
+ 'skipped',
71
+ 'filtered',
72
+ 'cancelled'
73
+ ]),
74
+ updated_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
75
+ workflow_execution_log_id: v.pipe(v.string(), v.uuid()),
76
+ workflow_id: v.pipe(v.string(), v.uuid())
77
+ }), v.readonly());
78
+
3
79
  /**
4
80
  * ManualUploadRequest
5
81
  *
6
82
  * Manual upload marker tool — no configuration fields, just an identity marker for manual ingestion workflows. Request
7
83
  */
8
84
  export const vManualUploadRequest = v.record(v.string(), v.unknown());
85
+
9
86
  /**
10
87
  * ContextDatasetResponse
11
88
  *
@@ -22,6 +99,7 @@ export const vContextDatasetResponse = v.pipe(v.object({
22
99
  where_clause: v.nullish(v.string()),
23
100
  workflow_id: v.optional(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly()))
24
101
  }), v.readonly());
102
+
25
103
  /**
26
104
  * DatalakeRequest
27
105
  *
@@ -68,6 +146,7 @@ export const vDatalakeRequest = v.object({
68
146
  'trading'
69
147
  ])
70
148
  });
149
+
71
150
  /**
72
151
  * CloudWatchLogGroupResponse
73
152
  *
@@ -85,6 +164,7 @@ export const vCloudWatchLogGroupResponse = v.pipe(v.object({
85
164
  endpoint_url: v.nullish(v.string()),
86
165
  region: v.string()
87
166
  }), v.readonly());
167
+
88
168
  /**
89
169
  * S3CallRequest
90
170
  *
@@ -93,6 +173,7 @@ export const vCloudWatchLogGroupResponse = v.pipe(v.object({
93
173
  export const vS3CallRequest = v.object({
94
174
  file_path: v.string()
95
175
  });
176
+
96
177
  /**
97
178
  * CloudflarePagesConfigResponse
98
179
  *
@@ -106,16 +187,37 @@ export const vCloudflarePagesConfigResponse = v.pipe(v.object({
106
187
  production_branch: v.nullish(v.string()),
107
188
  project_name: v.nullish(v.pipe(v.string(), v.readonly()))
108
189
  }), v.readonly());
190
+
109
191
  /**
110
192
  * TenantResponse
111
193
  *
112
- * Lean tenant reference id, slug, and name only
194
+ * Tenant resource. The auto-generated `TenantRequest` shape carries only
195
+ * the writable fields (`name`, `description`); `TenantResponse` returns the
196
+ * full read surface (`id`, `slug`, `name`, `description`).
197
+ *
113
198
  */
114
199
  export const vTenantResponse = v.pipe(v.object({
200
+ description: v.nullish(v.pipe(v.string(), v.maxLength(1000))),
115
201
  id: v.pipe(v.pipe(v.string(), v.uuid()), v.readonly()),
116
- name: v.pipe(v.string(), v.readonly()),
202
+ name: v.pipe(v.string(), v.minLength(1), v.maxLength(160)),
117
203
  slug: v.pipe(v.string(), v.readonly())
118
204
  }), v.readonly());
205
+
206
+ /**
207
+ * MembershipResponse
208
+ *
209
+ * Tenant membership — binds a user to a tenant with a role.
210
+ */
211
+ export const vMembershipResponse = v.pipe(v.object({
212
+ id: v.pipe(v.pipe(v.string(), v.uuid()), v.readonly()),
213
+ role: v.pipe(v.picklist([
214
+ 'member',
215
+ 'researcher',
216
+ 'admin'
217
+ ]), v.readonly()),
218
+ tenant: v.optional(vTenantResponse)
219
+ }), v.readonly());
220
+
119
221
  /**
120
222
  * S3CallResponse
121
223
  *
@@ -124,6 +226,7 @@ export const vTenantResponse = v.pipe(v.object({
124
226
  export const vS3CallResponse = v.pipe(v.object({
125
227
  file_path: v.string()
126
228
  }), v.readonly());
229
+
127
230
  /**
128
231
  * IngestRequest
129
232
  *
@@ -132,6 +235,7 @@ export const vS3CallResponse = v.pipe(v.object({
132
235
  export const vIngestRequest = v.object({
133
236
  data: v.record(v.string(), v.unknown())
134
237
  });
238
+
135
239
  /**
136
240
  * AWSLambdaResponse
137
241
  *
@@ -170,6 +274,19 @@ export const vAwsLambdaResponse = v.pipe(v.object({
170
274
  ]), v.readonly())),
171
275
  type: v.picklist(['managed', 'external'])
172
276
  }), v.readonly());
277
+
278
+ /**
279
+ * UserResponse
280
+ *
281
+ * Lean user reference — id, email, and names
282
+ */
283
+ export const vUserResponse = v.pipe(v.object({
284
+ email: v.pipe(v.string(), v.email()),
285
+ first_name: v.nullish(v.string()),
286
+ id: v.pipe(v.pipe(v.string(), v.uuid()), v.readonly()),
287
+ last_name: v.nullish(v.string())
288
+ }), v.readonly());
289
+
173
290
  /**
174
291
  * ExecuteActionRequest
175
292
  *
@@ -181,6 +298,7 @@ export const vExecuteActionRequest = v.object({
181
298
  manual_override: v.optional(v.boolean(), false),
182
299
  mode: v.optional(v.picklist(['live', 'dry_run']), 'live')
183
300
  });
301
+
184
302
  /**
185
303
  * MDMNotVerified
186
304
  */
@@ -190,6 +308,7 @@ export const vMdmNotVerified = v.object({
190
308
  subject_id: v.pipe(v.string(), v.uuid()),
191
309
  verified_at: v.pipe(v.string(), v.isoTimestamp())
192
310
  });
311
+
193
312
  /**
194
313
  * TemplateConfigResponse
195
314
  *
@@ -205,6 +324,7 @@ export const vTemplateConfigResponse = v.pipe(v.object({
205
324
  'null'
206
325
  ])
207
326
  }), v.readonly());
327
+
208
328
  /**
209
329
  * InteroperabilityRunResponse
210
330
  *
@@ -216,6 +336,7 @@ export const vInteroperabilityRunResponse = v.object({
216
336
  stage: v.picklist(['completed', 'filtered']),
217
337
  transformed: v.nullish(v.record(v.string(), v.unknown()))
218
338
  });
339
+
219
340
  /**
220
341
  * ErrorResponse
221
342
  *
@@ -224,6 +345,7 @@ export const vInteroperabilityRunResponse = v.object({
224
345
  export const vErrorResponse = v.object({
225
346
  errors: v.optional(v.object({}))
226
347
  });
348
+
227
349
  /**
228
350
  * ResolvePageResponse
229
351
  *
@@ -268,6 +390,7 @@ export const vResolvePageResponse = v.object({
268
390
  url_hash: v.string(),
269
391
  user_agent: v.nullish(v.string())
270
392
  });
393
+
271
394
  /**
272
395
  * MDMVerifyRequest
273
396
  *
@@ -283,21 +406,23 @@ export const vMdmVerifyRequest = v.object({
283
406
  }))),
284
407
  subject_id: v.pipe(v.string(), v.uuid())
285
408
  });
409
+
286
410
  /**
287
411
  * ManualUploadCallRequest
288
412
  *
289
413
  * Identity manual-upload marker. No fields — the discriminator alone indicates the tool call is a manual upload. Request
290
414
  */
291
415
  export const vManualUploadCallRequest = v.record(v.string(), v.unknown());
416
+
292
417
  /**
293
418
  * InteroperabilityContractResponse
294
419
  *
295
420
  * Declarative execution spec binding a `(datalake, resource_type)` pair to the ingestion pipeline: filter → transform → mdm_input → resolve → upsert.
296
421
  */
297
422
  export const vInteroperabilityContractResponse = v.pipe(v.object({
298
- data_activation_client_filter: v.nullish(v.string()),
299
423
  datalake_id: v.optional(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
300
424
  description: v.nullish(v.string()),
425
+ filter_template: v.nullish(v.string()),
301
426
  generic_table_id: v.nullish(v.pipe(v.string(), v.uuid())),
302
427
  id: v.optional(v.pipe(v.string(), v.uuid())),
303
428
  inserted_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
@@ -312,6 +437,7 @@ export const vInteroperabilityContractResponse = v.pipe(v.object({
312
437
  ])),
313
438
  updated_at: v.optional(v.pipe(v.string(), v.isoTimestamp()))
314
439
  }), v.readonly());
440
+
315
441
  /**
316
442
  * DownloadLinkRequest
317
443
  *
@@ -321,12 +447,14 @@ export const vDownloadLinkRequest = v.object({
321
447
  bucket: v.pipe(v.string(), v.minLength(1)),
322
448
  key: v.pipe(v.string(), v.minLength(1))
323
449
  });
450
+
324
451
  /**
325
452
  * ToolAWSLambdaResponse
326
453
  */
327
454
  export const vToolAwsLambdaResponse = v.intersect([vAwsLambdaResponse, v.object({
328
455
  tool_body_type: v.picklist(['aws_lambda'])
329
456
  })]);
457
+
330
458
  /**
331
459
  * UpdatePageRequest
332
460
  *
@@ -337,6 +465,23 @@ export const vUpdatePageRequest = v.object({
337
465
  opened_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
338
466
  short_path: v.string()
339
467
  });
468
+
469
+ /**
470
+ * InvitationResponse
471
+ *
472
+ * Pending tenant invitation — resolved into a Membership on accept.
473
+ */
474
+ export const vInvitationResponse = v.pipe(v.object({
475
+ email: v.pipe(v.string(), v.email()),
476
+ id: v.optional(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
477
+ role: v.picklist([
478
+ 'member',
479
+ 'researcher',
480
+ 'admin'
481
+ ]),
482
+ tenant: v.optional(vTenantResponse)
483
+ }), v.readonly());
484
+
340
485
  /**
341
486
  * ToolRequest
342
487
  *
@@ -365,6 +510,7 @@ export const vToolRequest = v.object({
365
510
  'marked_for_deletion'
366
511
  ]))
367
512
  });
513
+
368
514
  /**
369
515
  * AWSLambdaRequest
370
516
  *
@@ -383,6 +529,7 @@ export const vAwsLambdaRequest = v.object({
383
529
  ssm_config_key: v.nullish(v.string()),
384
530
  type: v.picklist(['managed', 'external'])
385
531
  });
532
+
386
533
  /**
387
534
  * DownloadUrlResponse
388
535
  *
@@ -391,6 +538,7 @@ export const vAwsLambdaRequest = v.object({
391
538
  export const vDownloadUrlResponse = v.object({
392
539
  url: v.pipe(v.string(), v.url())
393
540
  });
541
+
394
542
  /**
395
543
  * MDMVerified
396
544
  */
@@ -399,6 +547,7 @@ export const vMdmVerified = v.object({
399
547
  subject_id: v.pipe(v.string(), v.uuid()),
400
548
  verified_at: v.pipe(v.string(), v.isoTimestamp())
401
549
  });
550
+
402
551
  /**
403
552
  * SMSCallResponse
404
553
  *
@@ -409,12 +558,14 @@ export const vSmsCallResponse = v.pipe(v.object({
409
558
  sms_type: v.optional(v.picklist(['transactional', 'promotional']), 'transactional'),
410
559
  to: vTemplateConfigResponse
411
560
  }), v.readonly());
561
+
412
562
  /**
413
563
  * ActionSMSCallResponse
414
564
  */
415
565
  export const vActionSmsCallResponse = v.intersect([vSmsCallResponse, v.object({
416
566
  tool_call_type: v.picklist(['sms_request'])
417
567
  })]);
568
+
418
569
  /**
419
570
  * ResolvePageRequest
420
571
  *
@@ -427,6 +578,7 @@ export const vResolvePageRequest = v.object({
427
578
  short_path: v.string(),
428
579
  user_agent: v.optional(v.string())
429
580
  });
581
+
430
582
  /**
431
583
  * ActionRequest
432
584
  *
@@ -451,6 +603,7 @@ export const vActionRequest = v.object({
451
603
  tool_id: v.pipe(v.string(), v.uuid()),
452
604
  trigger_template: v.string()
453
605
  });
606
+
454
607
  /**
455
608
  * AWSLambdaCallResponse
456
609
  *
@@ -459,6 +612,7 @@ export const vActionRequest = v.object({
459
612
  export const vAwsLambdaCallResponse = v.pipe(v.object({
460
613
  timeout_ms: v.optional(v.pipe(v.number(), v.integer()))
461
614
  }), v.readonly());
615
+
462
616
  /**
463
617
  * RESTCallResponse
464
618
  *
@@ -478,6 +632,7 @@ export const vRestCallResponse = v.pipe(v.object({
478
632
  params: v.optional(vTemplateConfigResponse),
479
633
  path: vTemplateConfigResponse
480
634
  }), v.readonly());
635
+
481
636
  /**
482
637
  * WorkflowAiAgentRequest
483
638
  *
@@ -487,6 +642,7 @@ export const vWorkflowAiAgentRequest = v.object({
487
642
  ai_agent_id: v.pipe(v.string(), v.uuid()),
488
643
  position: v.pipe(v.number(), v.integer())
489
644
  });
645
+
490
646
  /**
491
647
  * AiAgentRequest
492
648
  *
@@ -506,6 +662,7 @@ export const vAiAgentRequest = v.object({
506
662
  tool_id: v.pipe(v.string(), v.uuid()),
507
663
  updated_at: v.optional(v.pipe(v.string(), v.isoTimestamp()))
508
664
  });
665
+
509
666
  /**
510
667
  * UploadLinkRequest
511
668
  *
@@ -515,12 +672,14 @@ export const vUploadLinkRequest = v.object({
515
672
  content_type: v.picklist(['application/x-ndjson', 'text/csv']),
516
673
  filename: v.pipe(v.string(), v.minLength(1), v.maxLength(255))
517
674
  });
675
+
518
676
  /**
519
677
  * DataActivationClientManualUploadCallRequest
520
678
  */
521
679
  export const vDataActivationClientManualUploadCallRequest = v.intersect([vManualUploadCallRequest, v.object({
522
680
  tool_call_type: v.picklist(['manual_upload'])
523
681
  })]);
682
+
524
683
  /**
525
684
  * SharePointResponse
526
685
  *
@@ -539,6 +698,7 @@ export const vSharePointResponse = v.pipe(v.object({
539
698
  ]),
540
699
  site_url: v.nullish(v.string())
541
700
  }), v.readonly());
701
+
542
702
  /**
543
703
  * RESTAPIResponse
544
704
  *
@@ -579,18 +739,21 @@ export const vRestapiResponse = v.pipe(v.object({
579
739
  timeout_ms: v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(300000)),
580
740
  username: v.nullish(v.string())
581
741
  }), v.readonly());
742
+
582
743
  /**
583
744
  * DataActivationClientRESTCallResponse
584
745
  */
585
746
  export const vDataActivationClientRestCallResponse = v.intersect([vRestCallResponse, v.object({
586
747
  tool_call_type: v.picklist(['restapi_request'])
587
748
  })]);
749
+
588
750
  /**
589
751
  * DataActivationClientS3CallResponse
590
752
  */
591
753
  export const vDataActivationClientS3CallResponse = v.intersect([vS3CallResponse, v.object({
592
754
  tool_call_type: v.picklist(['s3_request'])
593
755
  })]);
756
+
594
757
  /**
595
758
  * EmailRequest
596
759
  *
@@ -613,6 +776,7 @@ export const vEmailRequest = v.object({
613
776
  smtp_port: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(65535))),
614
777
  smtp_username: v.optional(v.string())
615
778
  });
779
+
616
780
  /**
617
781
  * EmailCallResponse
618
782
  *
@@ -623,6 +787,7 @@ export const vEmailCallResponse = v.pipe(v.object({
623
787
  subject: vTemplateConfigResponse,
624
788
  to: vTemplateConfigResponse
625
789
  }), v.readonly());
790
+
626
791
  /**
627
792
  * SFTPCallResponse
628
793
  *
@@ -632,19 +797,7 @@ export const vSftpCallResponse = v.pipe(v.object({
632
797
  content_type: v.string(),
633
798
  path: v.string()
634
799
  }), v.readonly());
635
- /**
636
- * SessionRequest
637
- *
638
- * Exchange user credentials for a Bearer session token.
639
- * For M2M authentication, use `X-API-Key` header directly instead.
640
- *
641
- */
642
- export const vSessionRequest = v.object({
643
- email: v.pipe(v.string(), v.email()),
644
- expires_in: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(60), v.maxValue(2592000))),
645
- password: v.pipe(v.string(), v.minLength(1)),
646
- tenant_slug: v.string()
647
- });
800
+
648
801
  /**
649
802
  * GenericTableRequest
650
803
  *
@@ -663,12 +816,21 @@ export const vGenericTableRequest = v.object({
663
816
  description: v.optional(v.string()),
664
817
  title: v.optional(v.string())
665
818
  });
819
+
820
+ /**
821
+ * ManualToolInvocationEmailCallResponse
822
+ */
823
+ export const vManualToolInvocationEmailCallResponse = v.intersect([vEmailCallResponse, v.object({
824
+ tool_call_type: v.picklist(['email_request'])
825
+ })]);
826
+
666
827
  /**
667
828
  * ToolSharePointResponse
668
829
  */
669
830
  export const vToolSharePointResponse = v.intersect([vSharePointResponse, v.object({
670
831
  tool_body_type: v.picklist(['sharepoint'])
671
832
  })]);
833
+
672
834
  /**
673
835
  * UpdatePageResponse
674
836
  *
@@ -681,6 +843,7 @@ export const vUpdatePageResponse = v.object({
681
843
  opened_at: v.nullish(v.pipe(v.string(), v.isoTimestamp()))
682
844
  })
683
845
  });
846
+
684
847
  /**
685
848
  * SharePointExcelCallRequest
686
849
  *
@@ -692,12 +855,14 @@ export const vSharePointExcelCallRequest = v.object({
692
855
  search_params: v.string(),
693
856
  sheet_number: v.pipe(v.number(), v.integer())
694
857
  });
858
+
695
859
  /**
696
860
  * DataActivationClientSharePointExcelCallRequest
697
861
  */
698
862
  export const vDataActivationClientSharePointExcelCallRequest = v.intersect([vSharePointExcelCallRequest, v.object({
699
863
  tool_call_type: v.picklist(['microsoft_share_point_excel_request'])
700
864
  })]);
865
+
701
866
  /**
702
867
  * DACRawLogFileResponse
703
868
  *
@@ -707,6 +872,7 @@ export const vDacRawLogFileResponse = v.pipe(v.object({
707
872
  mode: v.picklist(['regulated', 'unregulated']),
708
873
  object_key: v.string()
709
874
  }), v.readonly());
875
+
710
876
  /**
711
877
  * DataActivationClientLogResponse
712
878
  *
@@ -724,6 +890,14 @@ export const vDataActivationClientLogResponse = v.pipe(v.object({
724
890
  rows_ingested: v.optional(v.pipe(v.number(), v.integer()), 0),
725
891
  updated_at: v.optional(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly()))
726
892
  }), v.readonly());
893
+
894
+ /**
895
+ * ManualToolInvocationSMSCallResponse
896
+ */
897
+ export const vManualToolInvocationSmsCallResponse = v.intersect([vSmsCallResponse, v.object({
898
+ tool_call_type: v.picklist(['sms_request'])
899
+ })]);
900
+
727
901
  /**
728
902
  * BatchLogResponse
729
903
  *
@@ -750,6 +924,7 @@ export const vBatchLogResponse = v.pipe(v.object({
750
924
  total_wels: v.optional(v.pipe(v.number(), v.integer())),
751
925
  workflow_id: v.optional(v.pipe(v.string(), v.uuid()))
752
926
  }), v.readonly());
927
+
753
928
  /**
754
929
  * AWSLambdaCallRequest
755
930
  *
@@ -758,30 +933,35 @@ export const vBatchLogResponse = v.pipe(v.object({
758
933
  export const vAwsLambdaCallRequest = v.object({
759
934
  timeout_ms: v.optional(v.pipe(v.number(), v.integer()))
760
935
  });
936
+
761
937
  /**
762
938
  * ManualUploadCallResponse
763
939
  *
764
940
  * Identity manual-upload marker. No fields — the discriminator alone indicates the tool call is a manual upload.
765
941
  */
766
942
  export const vManualUploadCallResponse = v.pipe(v.record(v.string(), v.unknown()), v.readonly());
943
+
767
944
  /**
768
945
  * DataActivationClientManualUploadCallResponse
769
946
  */
770
947
  export const vDataActivationClientManualUploadCallResponse = v.intersect([vManualUploadCallResponse, v.object({
771
948
  tool_call_type: v.picklist(['manual_upload'])
772
949
  })]);
950
+
773
951
  /**
774
952
  * ActionStatusUpdaterRESTCallResponse
775
953
  */
776
954
  export const vActionStatusUpdaterRestCallResponse = v.intersect([vRestCallResponse, v.object({
777
955
  updater_body_type: v.picklist(['restapi_request'])
778
956
  })]);
957
+
779
958
  /**
780
959
  * DataActivationClientAWSLambdaCallRequest
781
960
  */
782
961
  export const vDataActivationClientAwsLambdaCallRequest = v.intersect([vAwsLambdaCallRequest, v.object({
783
962
  tool_call_type: v.picklist(['aws_lambda_request'])
784
963
  })]);
964
+
785
965
  /**
786
966
  * ConnectedAppUrlResponse
787
967
  *
@@ -792,24 +972,42 @@ export const vConnectedAppUrlResponse = v.pipe(v.object({
792
972
  label: v.nullish(v.string()),
793
973
  url: v.string()
794
974
  }), v.readonly());
975
+
795
976
  /**
796
977
  * DataActivationClientS3CallRequest
797
978
  */
798
979
  export const vDataActivationClientS3CallRequest = v.intersect([vS3CallRequest, v.object({
799
980
  tool_call_type: v.picklist(['s3_request'])
800
981
  })]);
982
+
983
+ /**
984
+ * InvitationRequest
985
+ *
986
+ * Pending tenant invitation — resolved into a Membership on accept. Request
987
+ */
988
+ export const vInvitationRequest = v.object({
989
+ email: v.pipe(v.string(), v.email()),
990
+ role: v.picklist([
991
+ 'member',
992
+ 'researcher',
993
+ 'admin'
994
+ ])
995
+ });
996
+
801
997
  /**
802
998
  * ActionAWSLambdaCallResponse
803
999
  */
804
1000
  export const vActionAwsLambdaCallResponse = v.intersect([vAwsLambdaCallResponse, v.object({
805
1001
  tool_call_type: v.picklist(['aws_lambda_request'])
806
1002
  })]);
1003
+
807
1004
  /**
808
1005
  * DataActivationClientSFTPCallResponse
809
1006
  */
810
1007
  export const vDataActivationClientSftpCallResponse = v.intersect([vSftpCallResponse, v.object({
811
1008
  tool_call_type: v.picklist(['sftp_request'])
812
1009
  })]);
1010
+
813
1011
  /**
814
1012
  * CloudStorageR2Request
815
1013
  *
@@ -822,12 +1020,14 @@ export const vCloudStorageR2Request = v.object({
822
1020
  endpoint: v.nullish(v.string()),
823
1021
  region: v.optional(v.string())
824
1022
  });
1023
+
825
1024
  /**
826
1025
  * S3CloudStorageR2Request
827
1026
  */
828
1027
  export const vS3CloudStorageR2Request = v.intersect([vCloudStorageR2Request, v.object({
829
1028
  storage_config_type: v.picklist(['r2'])
830
1029
  })]);
1030
+
831
1031
  /**
832
1032
  * DataSourceRequest
833
1033
  *
@@ -848,12 +1048,14 @@ export const vDataSourceRequest = v.object({
848
1048
  updated_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
849
1049
  uri: v.string()
850
1050
  });
1051
+
851
1052
  /**
852
1053
  * ToolManualUploadRequest
853
1054
  */
854
1055
  export const vToolManualUploadRequest = v.intersect([vManualUploadRequest, v.object({
855
1056
  tool_body_type: v.picklist(['manual_upload'])
856
1057
  })]);
1058
+
857
1059
  /**
858
1060
  * SharePointRequest
859
1061
  *
@@ -872,30 +1074,42 @@ export const vSharePointRequest = v.object({
872
1074
  ]),
873
1075
  site_url: v.nullish(v.string())
874
1076
  });
1077
+
875
1078
  /**
876
1079
  * ToolSharePointRequest
877
1080
  */
878
1081
  export const vToolSharePointRequest = v.intersect([vSharePointRequest, v.object({
879
1082
  tool_body_type: v.picklist(['sharepoint'])
880
1083
  })]);
1084
+
1085
+ /**
1086
+ * ManualToolInvocationRequest
1087
+ *
1088
+ * A manual test invocation of a tool. The request body carries only `tool_call` (polymorphic on `__type__`); all other fields are server-populated and returned in the response. Request
1089
+ */
1090
+ export const vManualToolInvocationRequest = v.record(v.string(), v.unknown());
1091
+
881
1092
  /**
882
1093
  * ActionManualUploadCallResponse
883
1094
  */
884
1095
  export const vActionManualUploadCallResponse = v.intersect([vManualUploadCallResponse, v.object({
885
1096
  tool_call_type: v.picklist(['manual_upload'])
886
1097
  })]);
1098
+
887
1099
  /**
888
1100
  * SQLQueryCallRequest
889
1101
  *
890
1102
  * SQL query descriptor — Liquid-templated query body. Request
891
1103
  */
892
1104
  export const vSqlQueryCallRequest = v.record(v.string(), v.unknown());
1105
+
893
1106
  /**
894
1107
  * ActionSQLQueryCallRequest
895
1108
  */
896
1109
  export const vActionSqlQueryCallRequest = v.intersect([vSqlQueryCallRequest, v.object({
897
1110
  tool_call_type: v.picklist(['sql_query'])
898
1111
  })]);
1112
+
899
1113
  /**
900
1114
  * DatalakeResponse
901
1115
  *
@@ -951,6 +1165,7 @@ export const vDatalakeResponse = v.pipe(v.object({
951
1165
  'trading'
952
1166
  ])
953
1167
  }), v.readonly());
1168
+
954
1169
  /**
955
1170
  * AlveraAPIError
956
1171
  *
@@ -965,6 +1180,7 @@ export const vAlveraApiError = v.object({
965
1180
  title: v.string()
966
1181
  })), v.minLength(1))
967
1182
  });
1183
+
968
1184
  /**
969
1185
  * CloudStorageAwsResponse
970
1186
  *
@@ -978,6 +1194,7 @@ export const vCloudStorageAwsResponse = v.pipe(v.object({
978
1194
  endpoint: v.nullish(v.string()),
979
1195
  region: v.string()
980
1196
  }), v.readonly());
1197
+
981
1198
  /**
982
1199
  * SFTPResponse
983
1200
  *
@@ -990,42 +1207,71 @@ export const vSftpResponse = v.pipe(v.object({
990
1207
  port: v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(65535)),
991
1208
  user_name: v.string()
992
1209
  }), v.readonly());
1210
+
1211
+ /**
1212
+ * UserSearchRequest
1213
+ *
1214
+ * User SQL search resource. Created via `POST /datasets/:dataset/user-searches`
1215
+ * with a `WHERE`-clause body in `search_query`; the platform executes
1216
+ * `INSERT INTO search_results SELECT … WHERE <body>` to populate
1217
+ * `search_results` and reports back `status`, `results_count`, and
1218
+ * `error_message`.
1219
+ *
1220
+ * UserSearch carries no `data_access_mode` of its own — the capability check
1221
+ * runs at query time via `Platform.RegulatedDatalakeRepo.prepare_query/3`,
1222
+ * which reads the ambient session and raises 403 when the ceiling is
1223
+ * insufficient. ExOpenApiUtils derives `UserSearchRequest` (writeable subset)
1224
+ * and `UserSearchResponse` (full readable shape) from this declaration via
1225
+ * the readOnly/writeOnly markers on each property.
1226
+ * Request
1227
+ */
1228
+ export const vUserSearchRequest = v.object({
1229
+ generic_table_id: v.nullish(v.pipe(v.string(), v.uuid())),
1230
+ search_query: v.pipe(v.string(), v.minLength(1))
1231
+ });
1232
+
993
1233
  /**
994
1234
  * SQLQueryCallResponse
995
1235
  *
996
1236
  * SQL query descriptor — Liquid-templated query body.
997
1237
  */
998
1238
  export const vSqlQueryCallResponse = v.pipe(v.record(v.string(), v.unknown()), v.readonly());
1239
+
999
1240
  /**
1000
1241
  * DataActivationClientSQLQueryCallResponse
1001
1242
  */
1002
1243
  export const vDataActivationClientSqlQueryCallResponse = v.intersect([vSqlQueryCallResponse, v.object({
1003
1244
  tool_call_type: v.picklist(['sql_query'])
1004
1245
  })]);
1246
+
1005
1247
  /**
1006
1248
  * ActionSQLQueryCallResponse
1007
1249
  */
1008
1250
  export const vActionSqlQueryCallResponse = v.intersect([vSqlQueryCallResponse, v.object({
1009
1251
  tool_call_type: v.picklist(['sql_query'])
1010
1252
  })]);
1253
+
1011
1254
  /**
1012
1255
  * ActionSFTPCallResponse
1013
1256
  */
1014
1257
  export const vActionSftpCallResponse = v.intersect([vSftpCallResponse, v.object({
1015
1258
  tool_call_type: v.picklist(['sftp_request'])
1016
1259
  })]);
1260
+
1017
1261
  /**
1018
1262
  * ManualUploadResponse
1019
1263
  *
1020
1264
  * Manual upload marker tool — no configuration fields, just an identity marker for manual ingestion workflows.
1021
1265
  */
1022
1266
  export const vManualUploadResponse = v.pipe(v.record(v.string(), v.unknown()), v.readonly());
1267
+
1023
1268
  /**
1024
1269
  * ToolManualUploadResponse
1025
1270
  */
1026
1271
  export const vToolManualUploadResponse = v.intersect([vManualUploadResponse, v.object({
1027
1272
  tool_body_type: v.picklist(['manual_upload'])
1028
1273
  })]);
1274
+
1029
1275
  /**
1030
1276
  * CloudWatchLogGroupRequest
1031
1277
  *
@@ -1043,12 +1289,14 @@ export const vCloudWatchLogGroupRequest = v.object({
1043
1289
  endpoint_url: v.nullish(v.string()),
1044
1290
  region: v.string()
1045
1291
  });
1292
+
1046
1293
  /**
1047
1294
  * ToolCloudWatchLogGroupRequest
1048
1295
  */
1049
1296
  export const vToolCloudWatchLogGroupRequest = v.intersect([vCloudWatchLogGroupRequest, v.object({
1050
1297
  tool_body_type: v.picklist(['cloud_watch_log_group'])
1051
1298
  })]);
1299
+
1052
1300
  /**
1053
1301
  * SNSRequest
1054
1302
  *
@@ -1067,6 +1315,14 @@ export const vSnsRequest = v.object({
1067
1315
  phone_number: v.string(),
1068
1316
  region: v.string()
1069
1317
  });
1318
+
1319
+ /**
1320
+ * ManualToolInvocationAWSLambdaCallResponse
1321
+ */
1322
+ export const vManualToolInvocationAwsLambdaCallResponse = v.intersect([vAwsLambdaCallResponse, v.object({
1323
+ tool_call_type: v.picklist(['aws_lambda_request'])
1324
+ })]);
1325
+
1070
1326
  /**
1071
1327
  * PingResponse
1072
1328
  *
@@ -1078,6 +1334,7 @@ export const vPingResponse = v.object({
1078
1334
  timestamp: v.pipe(v.string(), v.isoTimestamp()),
1079
1335
  version: v.string()
1080
1336
  });
1337
+
1081
1338
  /**
1082
1339
  * UploadLinkResponse
1083
1340
  *
@@ -1088,12 +1345,14 @@ export const vUploadLinkResponse = v.object({
1088
1345
  key: v.string(),
1089
1346
  url: v.string()
1090
1347
  });
1348
+
1091
1349
  /**
1092
1350
  * ActionEmailCallResponse
1093
1351
  */
1094
1352
  export const vActionEmailCallResponse = v.intersect([vEmailCallResponse, v.object({
1095
1353
  tool_call_type: v.picklist(['email_request'])
1096
1354
  })]);
1355
+
1097
1356
  /**
1098
1357
  * RunWorkflowRequest
1099
1358
  *
@@ -1104,6 +1363,7 @@ export const vRunWorkflowRequest = v.object({
1104
1363
  mode: v.optional(v.picklist(['live', 'dry_run']), 'live'),
1105
1364
  sql_where_clause: v.string()
1106
1365
  });
1366
+
1107
1367
  /**
1108
1368
  * ConnectedAppRouteResponse
1109
1369
  *
@@ -1114,6 +1374,7 @@ export const vConnectedAppRouteResponse = v.pipe(v.object({
1114
1374
  name: v.string(),
1115
1375
  path: v.string()
1116
1376
  }), v.readonly());
1377
+
1117
1378
  /**
1118
1379
  * SFTPCallRequest
1119
1380
  *
@@ -1123,47 +1384,59 @@ export const vSftpCallRequest = v.object({
1123
1384
  content_type: v.string(),
1124
1385
  path: v.string()
1125
1386
  });
1387
+
1126
1388
  /**
1127
1389
  * ActionSFTPCallRequest
1128
1390
  */
1129
1391
  export const vActionSftpCallRequest = v.intersect([vSftpCallRequest, v.object({
1130
1392
  tool_call_type: v.picklist(['sftp_request'])
1131
1393
  })]);
1394
+
1132
1395
  /**
1133
1396
  * ToolEmailRequest
1134
1397
  */
1135
1398
  export const vToolEmailRequest = v.intersect([vEmailRequest, v.object({
1136
1399
  tool_body_type: v.picklist(['email'])
1137
1400
  })]);
1401
+
1138
1402
  /**
1139
- * SessionResponse
1403
+ * ManualToolInvocationRESTCallResponse
1404
+ */
1405
+ export const vManualToolInvocationRestCallResponse = v.intersect([vRestCallResponse, v.object({
1406
+ tool_call_type: v.picklist(['restapi_request'])
1407
+ })]);
1408
+
1409
+ /**
1410
+ * ManualToolInvocationResponse
1140
1411
  *
1141
- * Session token and metadata returned after successful authentication
1412
+ * A manual test invocation of a tool. The request body carries only `tool_call` (polymorphic on `__type__`); all other fields are server-populated and returned in the response.
1142
1413
  */
1143
- export const vSessionResponse = v.object({
1144
- api_key: v.nullish(v.object({
1145
- id: v.pipe(v.string(), v.uuid()),
1146
- last_four: v.string(),
1147
- name: v.string()
1148
- })),
1149
- expires_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
1150
- role: v.object({
1151
- id: v.pipe(v.string(), v.uuid()),
1152
- name: v.string()
1153
- }),
1154
- session_token: v.nullable(v.string()),
1155
- tenant: v.object({
1156
- id: v.pipe(v.string(), v.uuid()),
1157
- name: v.string(),
1158
- slug: v.string()
1159
- }),
1160
- type: v.picklist(['user', 'api']),
1161
- user: v.nullish(v.object({
1162
- first_name: v.nullish(v.string()),
1163
- id: v.pipe(v.string(), v.uuid()),
1164
- last_name: v.nullish(v.string())
1165
- }))
1166
- });
1414
+ export const vManualToolInvocationResponse = v.pipe(v.object({
1415
+ error_message: v.nullish(v.pipe(v.string(), v.readonly())),
1416
+ id: v.optional(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
1417
+ inserted_at: v.optional(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly())),
1418
+ status: v.optional(v.pipe(v.picklist([
1419
+ 'pending',
1420
+ 'success',
1421
+ 'error'
1422
+ ]), v.readonly())),
1423
+ tool_call: v.optional(v.union([
1424
+ v.intersect([v.object({
1425
+ tool_call_type: v.literal('sms_request')
1426
+ }), vManualToolInvocationSmsCallResponse]),
1427
+ v.intersect([v.object({
1428
+ tool_call_type: v.literal('email_request')
1429
+ }), vManualToolInvocationEmailCallResponse]),
1430
+ v.intersect([v.object({
1431
+ tool_call_type: v.literal('restapi_request')
1432
+ }), vManualToolInvocationRestCallResponse]),
1433
+ v.intersect([v.object({
1434
+ tool_call_type: v.literal('aws_lambda_request')
1435
+ }), vManualToolInvocationAwsLambdaCallResponse])
1436
+ ])),
1437
+ updated_at: v.optional(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly()))
1438
+ }), v.readonly());
1439
+
1167
1440
  /**
1168
1441
  * IngestResponse
1169
1442
  *
@@ -1174,6 +1447,7 @@ export const vIngestResponse = v.object({
1174
1447
  jobs_count: v.pipe(v.number(), v.integer()),
1175
1448
  key: v.string()
1176
1449
  });
1450
+
1177
1451
  /**
1178
1452
  * SQSRequest
1179
1453
  *
@@ -1187,18 +1461,21 @@ export const vSqsRequest = v.object({
1187
1461
  queue_url: v.string(),
1188
1462
  region: v.string()
1189
1463
  });
1464
+
1190
1465
  /**
1191
1466
  * ToolSQSRequest
1192
1467
  */
1193
1468
  export const vToolSqsRequest = v.intersect([vSqsRequest, v.object({
1194
1469
  tool_body_type: v.picklist(['sqs'])
1195
1470
  })]);
1471
+
1196
1472
  /**
1197
1473
  * DataActivationClientAWSLambdaCallResponse
1198
1474
  */
1199
1475
  export const vDataActivationClientAwsLambdaCallResponse = v.intersect([vAwsLambdaCallResponse, v.object({
1200
1476
  tool_call_type: v.picklist(['aws_lambda_request'])
1201
1477
  })]);
1478
+
1202
1479
  /**
1203
1480
  * IngestFileResponse
1204
1481
  *
@@ -1209,18 +1486,31 @@ export const vIngestFileResponse = v.object({
1209
1486
  key: v.string(),
1210
1487
  status: v.string()
1211
1488
  });
1489
+
1212
1490
  /**
1213
1491
  * ToolAWSLambdaRequest
1214
1492
  */
1215
1493
  export const vToolAwsLambdaRequest = v.intersect([vAwsLambdaRequest, v.object({
1216
1494
  tool_body_type: v.picklist(['aws_lambda'])
1217
1495
  })]);
1496
+
1497
+ /**
1498
+ * OuterPagination
1499
+ *
1500
+ * Outer page over the cached search_results table — chunks of up to 1 000 dataset IDs.
1501
+ */
1502
+ export const vOuterPagination = v.strictObject({
1503
+ page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1)), 1),
1504
+ page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(1000)), 1000)
1505
+ });
1506
+
1218
1507
  /**
1219
1508
  * ActionManualUploadCallRequest
1220
1509
  */
1221
1510
  export const vActionManualUploadCallRequest = v.intersect([vManualUploadCallRequest, v.object({
1222
1511
  tool_call_type: v.picklist(['manual_upload'])
1223
1512
  })]);
1513
+
1224
1514
  /**
1225
1515
  * SharePointExcelCallResponse
1226
1516
  *
@@ -1232,12 +1522,14 @@ export const vSharePointExcelCallResponse = v.pipe(v.object({
1232
1522
  search_params: v.string(),
1233
1523
  sheet_number: v.pipe(v.number(), v.integer())
1234
1524
  }), v.readonly());
1525
+
1235
1526
  /**
1236
1527
  * ActionSharePointExcelCallResponse
1237
1528
  */
1238
1529
  export const vActionSharePointExcelCallResponse = v.intersect([vSharePointExcelCallResponse, v.object({
1239
1530
  tool_call_type: v.picklist(['microsoft_share_point_excel_request'])
1240
1531
  })]);
1532
+
1241
1533
  /**
1242
1534
  * SNSResponse
1243
1535
  *
@@ -1256,24 +1548,40 @@ export const vSnsResponse = v.pipe(v.object({
1256
1548
  phone_number: v.string(),
1257
1549
  region: v.string()
1258
1550
  }), v.readonly());
1551
+
1259
1552
  /**
1260
1553
  * ToolSNSResponse
1261
1554
  */
1262
1555
  export const vToolSnsResponse = v.intersect([vSnsResponse, v.object({
1263
1556
  tool_body_type: v.picklist(['sns'])
1264
1557
  })]);
1558
+
1265
1559
  /**
1266
1560
  * InteroperabilityRunRequest
1267
1561
  *
1268
1562
  * Raw source-row payload to run through a contract's filter → transform → mdm_input pipeline. Stateless: no DB writes. Accepts arbitrary keys by design — validation is deferred to the contract.
1269
1563
  */
1270
1564
  export const vInteroperabilityRunRequest = v.record(v.string(), v.unknown());
1565
+
1271
1566
  /**
1272
1567
  * ActionSharePointExcelCallRequest
1273
1568
  */
1274
1569
  export const vActionSharePointExcelCallRequest = v.intersect([vSharePointExcelCallRequest, v.object({
1275
1570
  tool_call_type: v.picklist(['microsoft_share_point_excel_request'])
1276
1571
  })]);
1572
+
1573
+ /**
1574
+ * DatalakeMigrateResponse
1575
+ *
1576
+ * Accepted response for an enqueued datalake migration job
1577
+ */
1578
+ export const vDatalakeMigrateResponse = v.object({
1579
+ datalake_id: v.pipe(v.string(), v.uuid()),
1580
+ enqueued_at: v.pipe(v.string(), v.isoTimestamp()),
1581
+ job_id: v.pipe(v.number(), v.integer()),
1582
+ status: v.picklist(['enqueued'])
1583
+ });
1584
+
1277
1585
  /**
1278
1586
  * SQLDatabaseResponse
1279
1587
  *
@@ -1295,12 +1603,14 @@ export const vSqlDatabaseResponse = v.pipe(v.object({
1295
1603
  ssl_mode: v.nullish(v.string()),
1296
1604
  user_name: v.string()
1297
1605
  }), v.readonly());
1606
+
1298
1607
  /**
1299
1608
  * ToolSQLDatabaseResponse
1300
1609
  */
1301
1610
  export const vToolSqlDatabaseResponse = v.intersect([vSqlDatabaseResponse, v.object({
1302
1611
  tool_body_type: v.picklist(['sql_database'])
1303
1612
  })]);
1613
+
1304
1614
  /**
1305
1615
  * MDMVerifyResponse
1306
1616
  *
@@ -1316,12 +1626,14 @@ export const vMdmVerifyResponse = v.union([v.object({
1316
1626
  subject_id: v.pipe(v.string(), v.uuid()),
1317
1627
  verified_at: v.pipe(v.string(), v.isoTimestamp())
1318
1628
  })]);
1629
+
1319
1630
  /**
1320
1631
  * S3CloudStorageAwsResponse
1321
1632
  */
1322
1633
  export const vS3CloudStorageAwsResponse = v.intersect([vCloudStorageAwsResponse, v.object({
1323
1634
  storage_config_type: v.picklist(['aws'])
1324
1635
  })]);
1636
+
1325
1637
  /**
1326
1638
  * ContextDatasetRequest
1327
1639
  *
@@ -1334,6 +1646,7 @@ export const vContextDatasetRequest = v.object({
1334
1646
  position: v.optional(v.pipe(v.number(), v.integer()), 0),
1335
1647
  where_clause: v.nullish(v.string())
1336
1648
  });
1649
+
1337
1650
  /**
1338
1651
  * SQSResponse
1339
1652
  *
@@ -1347,6 +1660,7 @@ export const vSqsResponse = v.pipe(v.object({
1347
1660
  queue_url: v.string(),
1348
1661
  region: v.string()
1349
1662
  }), v.readonly());
1663
+
1350
1664
  /**
1351
1665
  * TemplateConfigRequest
1352
1666
  *
@@ -1362,6 +1676,7 @@ export const vTemplateConfigRequest = v.object({
1362
1676
  'null'
1363
1677
  ])
1364
1678
  });
1679
+
1365
1680
  /**
1366
1681
  * EmailCallRequest
1367
1682
  *
@@ -1372,20 +1687,22 @@ export const vEmailCallRequest = v.object({
1372
1687
  subject: vTemplateConfigRequest,
1373
1688
  to: vTemplateConfigRequest
1374
1689
  });
1690
+
1375
1691
  /**
1376
1692
  * ActionEmailCallRequest
1377
1693
  */
1378
1694
  export const vActionEmailCallRequest = v.intersect([vEmailCallRequest, v.object({
1379
1695
  tool_call_type: v.picklist(['email_request'])
1380
1696
  })]);
1697
+
1381
1698
  /**
1382
1699
  * InteroperabilityContractRequest
1383
1700
  *
1384
1701
  * Declarative execution spec binding a `(datalake, resource_type)` pair to the ingestion pipeline: filter → transform → mdm_input → resolve → upsert. Request
1385
1702
  */
1386
1703
  export const vInteroperabilityContractRequest = v.object({
1387
- data_activation_client_filter: v.nullish(v.string()),
1388
1704
  description: v.nullish(v.string()),
1705
+ filter_template: v.nullish(v.string()),
1389
1706
  generic_table_id: v.nullish(v.pipe(v.string(), v.uuid())),
1390
1707
  id: v.optional(v.pipe(v.string(), v.uuid())),
1391
1708
  inserted_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
@@ -1402,6 +1719,7 @@ export const vInteroperabilityContractRequest = v.object({
1402
1719
  ])),
1403
1720
  updated_at: v.optional(v.pipe(v.string(), v.isoTimestamp()))
1404
1721
  });
1722
+
1405
1723
  /**
1406
1724
  * RESTCallRequest
1407
1725
  *
@@ -1421,24 +1739,28 @@ export const vRestCallRequest = v.object({
1421
1739
  params: v.optional(vTemplateConfigRequest),
1422
1740
  path: vTemplateConfigRequest
1423
1741
  });
1742
+
1424
1743
  /**
1425
1744
  * DataActivationClientRESTCallRequest
1426
1745
  */
1427
1746
  export const vDataActivationClientRestCallRequest = v.intersect([vRestCallRequest, v.object({
1428
1747
  tool_call_type: v.picklist(['restapi_request'])
1429
1748
  })]);
1749
+
1430
1750
  /**
1431
1751
  * ActionRESTCallRequest
1432
1752
  */
1433
1753
  export const vActionRestCallRequest = v.intersect([vRestCallRequest, v.object({
1434
1754
  tool_call_type: v.picklist(['restapi_request'])
1435
1755
  })]);
1756
+
1436
1757
  /**
1437
1758
  * ActionStatusUpdaterRESTCallRequest
1438
1759
  */
1439
1760
  export const vActionStatusUpdaterRestCallRequest = v.intersect([vRestCallRequest, v.object({
1440
1761
  updater_body_type: v.picklist(['restapi_request'])
1441
1762
  })]);
1763
+
1442
1764
  /**
1443
1765
  * RESTAPIRequest
1444
1766
  *
@@ -1479,12 +1801,14 @@ export const vRestapiRequest = v.object({
1479
1801
  timeout_ms: v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(300000)),
1480
1802
  username: v.nullish(v.string())
1481
1803
  });
1804
+
1482
1805
  /**
1483
1806
  * ToolRESTAPIRequest
1484
1807
  */
1485
1808
  export const vToolRestapiRequest = v.intersect([vRestapiRequest, v.object({
1486
1809
  tool_body_type: v.picklist(['rest_api'])
1487
1810
  })]);
1811
+
1488
1812
  /**
1489
1813
  * PaginationMeta
1490
1814
  *
@@ -1496,15 +1820,28 @@ export const vPaginationMeta = v.object({
1496
1820
  total_count: v.pipe(v.number(), v.integer()),
1497
1821
  total_pages: v.pipe(v.number(), v.integer())
1498
1822
  });
1823
+
1499
1824
  /**
1500
1825
  * DatasetSearchResponse
1501
1826
  *
1502
- * Paginated dataset search results
1827
+ * Double-paginated dataset search results scoped to a `UserSearch`. The
1828
+ * `meta` object carries two `Flop.Meta`-shaped sub-objects:
1829
+ *
1830
+ * - `sql` — outer page over `search_results` (up to 1000 dataset IDs per
1831
+ * chunk; cap dictated by Postgres' `WHERE id IN (^ids)` plan). `null`
1832
+ * when the request was not bound to a `user_search_id`.
1833
+ * - `flop` — inner Flop page over the resource (default 20 rows).
1834
+ *
1503
1835
  */
1504
1836
  export const vDatasetSearchResponse = v.object({
1505
1837
  data: v.array(v.record(v.string(), v.unknown())),
1506
- meta: vPaginationMeta
1838
+ meta: v.object({
1839
+ flop: vPaginationMeta,
1840
+ sql: v.optional(v.union([vPaginationMeta, v.unknown()]))
1841
+ }),
1842
+ user_search: vUserSearchResponse
1507
1843
  });
1844
+
1508
1845
  /**
1509
1846
  * TenantListResponse
1510
1847
  *
@@ -1514,12 +1851,14 @@ export const vTenantListResponse = v.object({
1514
1851
  data: v.array(vTenantResponse),
1515
1852
  meta: vPaginationMeta
1516
1853
  });
1854
+
1517
1855
  /**
1518
1856
  * DataActivationClientSharePointExcelCallResponse
1519
1857
  */
1520
1858
  export const vDataActivationClientSharePointExcelCallResponse = v.intersect([vSharePointExcelCallResponse, v.object({
1521
1859
  tool_call_type: v.picklist(['microsoft_share_point_excel_request'])
1522
1860
  })]);
1861
+
1523
1862
  /**
1524
1863
  * ConnectedAppRouteRequest
1525
1864
  *
@@ -1530,6 +1869,7 @@ export const vConnectedAppRouteRequest = v.object({
1530
1869
  name: v.string(),
1531
1870
  path: v.string()
1532
1871
  });
1872
+
1533
1873
  /**
1534
1874
  * EmailResponse
1535
1875
  *
@@ -1552,18 +1892,21 @@ export const vEmailResponse = v.pipe(v.object({
1552
1892
  smtp_port: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(65535))),
1553
1893
  smtp_username: v.optional(v.string())
1554
1894
  }), v.readonly());
1895
+
1555
1896
  /**
1556
1897
  * ToolEmailResponse
1557
1898
  */
1558
1899
  export const vToolEmailResponse = v.intersect([vEmailResponse, v.object({
1559
1900
  tool_body_type: v.picklist(['email'])
1560
1901
  })]);
1902
+
1561
1903
  /**
1562
1904
  * WorkflowLogResponse
1563
1905
  *
1564
1906
  * Workflow execution log — per-event execution detail
1565
1907
  */
1566
1908
  export const vWorkflowLogResponse = v.pipe(v.object({
1909
+ action_execution_logs: v.optional(v.pipe(v.array(vActionExecutionLogResponse), v.readonly())),
1567
1910
  actions_completed: v.optional(v.pipe(v.number(), v.integer())),
1568
1911
  actions_failed: v.optional(v.pipe(v.number(), v.integer())),
1569
1912
  actions_pending: v.optional(v.pipe(v.number(), v.integer())),
@@ -1592,6 +1935,7 @@ export const vWorkflowLogResponse = v.pipe(v.object({
1592
1935
  tenant_id: v.optional(v.pipe(v.string(), v.uuid())),
1593
1936
  workflow_id: v.optional(v.pipe(v.string(), v.uuid()))
1594
1937
  }), v.readonly());
1938
+
1595
1939
  /**
1596
1940
  * WorkflowLogListResponse
1597
1941
  *
@@ -1601,6 +1945,7 @@ export const vWorkflowLogListResponse = v.object({
1601
1945
  data: v.array(vWorkflowLogResponse),
1602
1946
  meta: vPaginationMeta
1603
1947
  });
1948
+
1604
1949
  /**
1605
1950
  * CloudStorageAwsRequest
1606
1951
  *
@@ -1614,18 +1959,33 @@ export const vCloudStorageAwsRequest = v.object({
1614
1959
  endpoint: v.nullish(v.string()),
1615
1960
  region: v.string()
1616
1961
  });
1962
+
1617
1963
  /**
1618
1964
  * S3CloudStorageAwsRequest
1619
1965
  */
1620
1966
  export const vS3CloudStorageAwsRequest = v.intersect([vCloudStorageAwsRequest, v.object({
1621
1967
  storage_config_type: v.picklist(['aws'])
1622
1968
  })]);
1969
+
1623
1970
  /**
1624
1971
  * ToolSQSResponse
1625
1972
  */
1626
1973
  export const vToolSqsResponse = v.intersect([vSqsResponse, v.object({
1627
1974
  tool_body_type: v.picklist(['sqs'])
1628
1975
  })]);
1976
+
1977
+ /**
1978
+ * ApiKeyResponse
1979
+ *
1980
+ * Lean API key reference — id, name, last_four, and data_access_mode (no plaintext)
1981
+ */
1982
+ export const vApiKeyResponse = v.pipe(v.object({
1983
+ data_access_mode: v.picklist(['regulated', 'unregulated']),
1984
+ id: v.pipe(v.pipe(v.string(), v.uuid()), v.readonly()),
1985
+ last_four: v.pipe(v.string(), v.readonly()),
1986
+ name: v.string()
1987
+ }), v.readonly());
1988
+
1629
1989
  /**
1630
1990
  * SyncRoutesResponse
1631
1991
  *
@@ -1637,6 +1997,7 @@ export const vSyncRoutesResponse = v.object({
1637
1997
  job_id: v.pipe(v.number(), v.integer()),
1638
1998
  status: v.picklist(['enqueued'])
1639
1999
  });
2000
+
1640
2001
  /**
1641
2002
  * DataActivationClientResponse
1642
2003
  *
@@ -1686,6 +2047,7 @@ export const vDataActivationClientResponse = v.pipe(v.object({
1686
2047
  tool_id: v.pipe(v.string(), v.uuid()),
1687
2048
  updated_at: v.optional(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly()))
1688
2049
  }), v.readonly());
2050
+
1689
2051
  /**
1690
2052
  * DataActivationClientListResponse
1691
2053
  *
@@ -1695,6 +2057,7 @@ export const vDataActivationClientListResponse = v.object({
1695
2057
  data: v.array(vDataActivationClientResponse),
1696
2058
  meta: vPaginationMeta
1697
2059
  });
2060
+
1698
2061
  /**
1699
2062
  * SFTPRequest
1700
2063
  *
@@ -1707,12 +2070,26 @@ export const vSftpRequest = v.object({
1707
2070
  port: v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(65535)),
1708
2071
  user_name: v.string()
1709
2072
  });
2073
+
1710
2074
  /**
1711
2075
  * ToolSFTPRequest
1712
2076
  */
1713
2077
  export const vToolSftpRequest = v.intersect([vSftpRequest, v.object({
1714
2078
  tool_body_type: v.picklist(['sftp'])
1715
2079
  })]);
2080
+
2081
+ /**
2082
+ * InnerSearch
2083
+ *
2084
+ * Inner search input over the resource. Defaults: page 1, page_size 20, order_direction asc. All keys optional; absent values fall through to the resource's `Flop.Schema` defaults.
2085
+ */
2086
+ export const vInnerSearch = v.strictObject({
2087
+ global_search: v.optional(v.string()),
2088
+ order_direction: v.optional(v.picklist(['asc', 'desc'])),
2089
+ page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1)), 1),
2090
+ page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100)), 20)
2091
+ });
2092
+
1716
2093
  /**
1717
2094
  * DatalakeListResponse
1718
2095
  *
@@ -1722,6 +2099,7 @@ export const vDatalakeListResponse = v.object({
1722
2099
  data: v.array(vDatalakeResponse),
1723
2100
  meta: vPaginationMeta
1724
2101
  });
2102
+
1725
2103
  /**
1726
2104
  * RunWorkflowResponse
1727
2105
  *
@@ -1732,6 +2110,7 @@ export const vRunWorkflowResponse = v.object({
1732
2110
  enqueued_count: v.pipe(v.number(), v.integer()),
1733
2111
  workflow_run_log_id: v.pipe(v.string(), v.uuid())
1734
2112
  });
2113
+
1735
2114
  /**
1736
2115
  * ExecuteActionResponse
1737
2116
  *
@@ -1747,12 +2126,14 @@ export const vExecuteActionResponse = v.object({
1747
2126
  ])),
1748
2127
  workflow_execution_log_id: v.nullish(v.pipe(v.string(), v.uuid()))
1749
2128
  });
2129
+
1750
2130
  /**
1751
2131
  * ActionRESTCallResponse
1752
2132
  */
1753
2133
  export const vActionRestCallResponse = v.intersect([vRestCallResponse, v.object({
1754
2134
  tool_call_type: v.picklist(['restapi_request'])
1755
2135
  })]);
2136
+
1756
2137
  /**
1757
2138
  * ActionResponse
1758
2139
  *
@@ -1807,6 +2188,7 @@ export const vActionResponse = v.pipe(v.object({
1807
2188
  updated_at: v.optional(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly())),
1808
2189
  workflow_id: v.optional(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly()))
1809
2190
  }), v.readonly());
2191
+
1810
2192
  /**
1811
2193
  * AgenticWorkflowRequest
1812
2194
  *
@@ -1825,6 +2207,7 @@ export const vAgenticWorkflowRequest = v.object({
1825
2207
  status: v.picklist(['live', 'draft']),
1826
2208
  updated_at: v.optional(v.pipe(v.string(), v.isoTimestamp()))
1827
2209
  });
2210
+
1828
2211
  /**
1829
2212
  * DataActivationClientRequest
1830
2213
  *
@@ -1846,6 +2229,7 @@ export const vDataActivationClientRequest = v.object({
1846
2229
  row_filter: v.nullish(v.string()),
1847
2230
  tool_id: v.pipe(v.string(), v.uuid())
1848
2231
  });
2232
+
1849
2233
  /**
1850
2234
  * IngestFileRequest
1851
2235
  *
@@ -1854,18 +2238,21 @@ export const vDataActivationClientRequest = v.object({
1854
2238
  export const vIngestFileRequest = v.object({
1855
2239
  key: v.string()
1856
2240
  });
2241
+
1857
2242
  /**
1858
2243
  * ToolCloudWatchLogGroupResponse
1859
2244
  */
1860
2245
  export const vToolCloudWatchLogGroupResponse = v.intersect([vCloudWatchLogGroupResponse, v.object({
1861
2246
  tool_body_type: v.picklist(['cloud_watch_log_group'])
1862
2247
  })]);
2248
+
1863
2249
  /**
1864
2250
  * ActionAWSLambdaCallRequest
1865
2251
  */
1866
2252
  export const vActionAwsLambdaCallRequest = v.intersect([vAwsLambdaCallRequest, v.object({
1867
2253
  tool_call_type: v.picklist(['aws_lambda_request'])
1868
2254
  })]);
2255
+
1869
2256
  /**
1870
2257
  * CloudWatchQueryRequest
1871
2258
  *
@@ -1876,12 +2263,14 @@ export const vCloudWatchQueryRequest = v.object({
1876
2263
  log_group_name: v.string(),
1877
2264
  start_time: v.string()
1878
2265
  });
2266
+
1879
2267
  /**
1880
2268
  * ActionStatusUpdaterCloudWatchQueryRequest
1881
2269
  */
1882
2270
  export const vActionStatusUpdaterCloudWatchQueryRequest = v.intersect([vCloudWatchQueryRequest, v.object({
1883
2271
  updater_body_type: v.picklist(['cloud_watch_request'])
1884
2272
  })]);
2273
+
1885
2274
  /**
1886
2275
  * GenericTableResponse
1887
2276
  *
@@ -1913,6 +2302,7 @@ export const vGenericTableResponse = v.pipe(v.object({
1913
2302
  type: v.optional(v.pipe(v.picklist(['custom', 'system']), v.readonly())),
1914
2303
  updated_at: v.optional(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly()))
1915
2304
  }), v.readonly());
2305
+
1916
2306
  /**
1917
2307
  * GenericTableListResponse
1918
2308
  *
@@ -1922,6 +2312,7 @@ export const vGenericTableListResponse = v.object({
1922
2312
  data: v.array(vGenericTableResponse),
1923
2313
  meta: vPaginationMeta
1924
2314
  });
2315
+
1925
2316
  /**
1926
2317
  * InteroperabilityContractListResponse
1927
2318
  *
@@ -1931,6 +2322,20 @@ export const vInteroperabilityContractListResponse = v.object({
1931
2322
  data: v.array(vInteroperabilityContractResponse),
1932
2323
  meta: vPaginationMeta
1933
2324
  });
2325
+
2326
+ /**
2327
+ * TenantRequest
2328
+ *
2329
+ * Tenant resource. The auto-generated `TenantRequest` shape carries only
2330
+ * the writable fields (`name`, `description`); `TenantResponse` returns the
2331
+ * full read surface (`id`, `slug`, `name`, `description`).
2332
+ * Request
2333
+ */
2334
+ export const vTenantRequest = v.object({
2335
+ description: v.nullish(v.pipe(v.string(), v.maxLength(1000))),
2336
+ name: v.pipe(v.string(), v.minLength(1), v.maxLength(160))
2337
+ });
2338
+
1934
2339
  /**
1935
2340
  * CloudflarePagesConfigRequest
1936
2341
  *
@@ -1943,12 +2348,21 @@ export const vCloudflarePagesConfigRequest = v.object({
1943
2348
  github_auth_method: v.picklist(['github_app', 'pat']),
1944
2349
  production_branch: v.nullish(v.string())
1945
2350
  });
2351
+
1946
2352
  /**
1947
2353
  * DataActivationClientSFTPCallRequest
1948
2354
  */
1949
2355
  export const vDataActivationClientSftpCallRequest = v.intersect([vSftpCallRequest, v.object({
1950
2356
  tool_call_type: v.picklist(['sftp_request'])
1951
2357
  })]);
2358
+
2359
+ /**
2360
+ * ManualToolInvocationEmailCallRequest
2361
+ */
2362
+ export const vManualToolInvocationEmailCallRequest = v.intersect([vEmailCallRequest, v.object({
2363
+ tool_call_type: v.picklist(['email_request'])
2364
+ })]);
2365
+
1952
2366
  /**
1953
2367
  * ConnectedAppResponse
1954
2368
  *
@@ -1991,6 +2405,7 @@ export const vConnectedAppResponse = v.pipe(v.object({
1991
2405
  url: v.string()
1992
2406
  })))
1993
2407
  }), v.readonly());
2408
+
1994
2409
  /**
1995
2410
  * ConnectedAppListResponse
1996
2411
  *
@@ -2000,6 +2415,40 @@ export const vConnectedAppListResponse = v.object({
2000
2415
  data: v.array(vConnectedAppResponse),
2001
2416
  meta: vPaginationMeta
2002
2417
  });
2418
+
2419
+ /**
2420
+ * RoleResponse
2421
+ *
2422
+ * Lean role reference — id, name, and description
2423
+ */
2424
+ export const vRoleResponse = v.pipe(v.object({
2425
+ description: v.nullish(v.string()),
2426
+ id: v.pipe(v.pipe(v.string(), v.uuid()), v.readonly()),
2427
+ name: v.string()
2428
+ }), v.readonly());
2429
+
2430
+ /**
2431
+ * SessionResponse
2432
+ *
2433
+ * Authenticated session — issued at sign-in (`POST /api/v1/sessions`) or
2434
+ * derived from an `X-API-Key` header. The `session_token` field carries the
2435
+ * plaintext Bearer on creation responses and is null on verify responses.
2436
+ * `tenant`, `role`, and `user` are nullable for tenant-less / pre-tenant
2437
+ * sessions; `api_key` is populated for M2M sessions only.
2438
+ *
2439
+ */
2440
+ export const vSessionResponse = v.pipe(v.object({
2441
+ api_key: v.optional(vApiKeyResponse),
2442
+ data_access_mode: v.picklist(['regulated', 'unregulated']),
2443
+ expires_at: v.nullish(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly())),
2444
+ id: v.optional(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
2445
+ role: v.optional(vRoleResponse),
2446
+ session_token: v.nullish(v.pipe(v.string(), v.readonly())),
2447
+ tenant: v.optional(vTenantResponse),
2448
+ type: v.pipe(v.picklist(['user', 'api']), v.readonly()),
2449
+ user: v.optional(vUserResponse)
2450
+ }), v.readonly());
2451
+
2003
2452
  /**
2004
2453
  * BatchLogListResponse
2005
2454
  *
@@ -2009,6 +2458,7 @@ export const vBatchLogListResponse = v.object({
2009
2458
  data: v.array(vBatchLogResponse),
2010
2459
  meta: vPaginationMeta
2011
2460
  });
2461
+
2012
2462
  /**
2013
2463
  * RunManuallyResponse
2014
2464
  *
@@ -2017,12 +2467,48 @@ export const vBatchLogListResponse = v.object({
2017
2467
  export const vRunManuallyResponse = v.object({
2018
2468
  batch_id: v.pipe(v.string(), v.uuid())
2019
2469
  });
2470
+
2471
+ /**
2472
+ * ManualToolInvocationAWSLambdaCallRequest
2473
+ */
2474
+ export const vManualToolInvocationAwsLambdaCallRequest = v.intersect([vAwsLambdaCallRequest, v.object({
2475
+ tool_call_type: v.picklist(['aws_lambda_request'])
2476
+ })]);
2477
+
2020
2478
  /**
2021
2479
  * ToolSFTPResponse
2022
2480
  */
2023
2481
  export const vToolSftpResponse = v.intersect([vSftpResponse, v.object({
2024
2482
  tool_body_type: v.picklist(['sftp'])
2025
2483
  })]);
2484
+
2485
+ /**
2486
+ * SignInRequest
2487
+ *
2488
+ * Exchange user credentials for a Bearer session token.
2489
+ *
2490
+ * `tenant_slug` is optional — when omitted, returns a tenant-less Bearer for
2491
+ * use on `/api/v1/admin/...` operations and pre-tenant flows like
2492
+ * `POST /api/v1/tenants` (creating your first tenant). When provided,
2493
+ * returns a tenant-scoped Bearer with the caller's membership role.
2494
+ *
2495
+ * For M2M authentication, use the `X-API-Key` header directly instead.
2496
+ * Request
2497
+ */
2498
+ export const vSignInRequest = v.object({
2499
+ email: v.pipe(v.string(), v.email()),
2500
+ expires_in: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(60), v.maxValue(2592000))),
2501
+ password: v.pipe(v.string(), v.minLength(1)),
2502
+ tenant_slug: v.nullish(v.string())
2503
+ });
2504
+
2505
+ /**
2506
+ * ManualToolInvocationRESTCallRequest
2507
+ */
2508
+ export const vManualToolInvocationRestCallRequest = v.intersect([vRestCallRequest, v.object({
2509
+ tool_call_type: v.picklist(['restapi_request'])
2510
+ })]);
2511
+
2026
2512
  /**
2027
2513
  * CloudWatchQueryResponse
2028
2514
  *
@@ -2033,12 +2519,14 @@ export const vCloudWatchQueryResponse = v.pipe(v.object({
2033
2519
  log_group_name: v.string(),
2034
2520
  start_time: v.string()
2035
2521
  }), v.readonly());
2522
+
2036
2523
  /**
2037
2524
  * ActionStatusUpdaterCloudWatchQueryResponse
2038
2525
  */
2039
2526
  export const vActionStatusUpdaterCloudWatchQueryResponse = v.intersect([vCloudWatchQueryResponse, v.object({
2040
2527
  updater_body_type: v.picklist(['cloud_watch_request'])
2041
2528
  })]);
2529
+
2042
2530
  /**
2043
2531
  * ActionStatusUpdaterResponse
2044
2532
  *
@@ -2061,6 +2549,7 @@ export const vActionStatusUpdaterResponse = v.pipe(v.object({
2061
2549
  updater_tool_id: v.optional(v.pipe(v.string(), v.uuid())),
2062
2550
  updater_type: v.optional(v.picklist(['cloud_watch', 'restapi']))
2063
2551
  }), v.readonly());
2552
+
2064
2553
  /**
2065
2554
  * ActionStatusUpdaterListResponse
2066
2555
  *
@@ -2070,12 +2559,31 @@ export const vActionStatusUpdaterListResponse = v.object({
2070
2559
  data: v.array(vActionStatusUpdaterResponse),
2071
2560
  meta: vPaginationMeta
2072
2561
  });
2562
+
2563
+ /**
2564
+ * SignUpRequest
2565
+ *
2566
+ * Register a new user account. Mirrors the `/auth/register` LiveView form
2567
+ * submission shape. The created user is **unconfirmed** — caller must
2568
+ * confirm separately (e.g. via the email confirmation flow, or via
2569
+ * `PUT /api/v1/admin/users/:id/confirm` for tests) before signing in.
2570
+ *
2571
+ * No authentication is required.
2572
+ * Request
2573
+ */
2574
+ export const vSignUpRequest = v.object({
2575
+ email: v.pipe(v.string(), v.email()),
2576
+ first_name: v.nullable(v.string()),
2577
+ last_name: v.nullable(v.string())
2578
+ });
2579
+
2073
2580
  /**
2074
2581
  * DataActivationClientSQLQueryCallRequest
2075
2582
  */
2076
2583
  export const vDataActivationClientSqlQueryCallRequest = v.intersect([vSqlQueryCallRequest, v.object({
2077
2584
  tool_call_type: v.picklist(['sql_query'])
2078
2585
  })]);
2586
+
2079
2587
  /**
2080
2588
  * RunManuallyRequest
2081
2589
  *
@@ -2106,12 +2614,24 @@ export const vRunManuallyRequest = v.object({
2106
2614
  }), vDataActivationClientS3CallRequest])
2107
2615
  ]))
2108
2616
  });
2617
+
2109
2618
  /**
2110
2619
  * ToolSNSRequest
2111
2620
  */
2112
2621
  export const vToolSnsRequest = v.intersect([vSnsRequest, v.object({
2113
2622
  tool_body_type: v.picklist(['sns'])
2114
2623
  })]);
2624
+
2625
+ /**
2626
+ * InvitationListResponse
2627
+ *
2628
+ * Paginated list of invitations
2629
+ */
2630
+ export const vInvitationListResponse = v.object({
2631
+ data: v.array(vInvitationResponse),
2632
+ meta: vPaginationMeta
2633
+ });
2634
+
2115
2635
  /**
2116
2636
  * ActionStatusUpdaterRequest
2117
2637
  *
@@ -2125,6 +2645,7 @@ export const vActionStatusUpdaterRequest = v.object({
2125
2645
  updater_tool_id: v.optional(v.pipe(v.string(), v.uuid())),
2126
2646
  updater_type: v.optional(v.picklist(['cloud_watch', 'restapi']))
2127
2647
  });
2648
+
2128
2649
  /**
2129
2650
  * DataActivationClientLogListResponse
2130
2651
  *
@@ -2134,6 +2655,7 @@ export const vDataActivationClientLogListResponse = v.object({
2134
2655
  data: v.array(vDataActivationClientLogResponse),
2135
2656
  meta: vPaginationMeta
2136
2657
  });
2658
+
2137
2659
  /**
2138
2660
  * ConnectedAppUrlRequest
2139
2661
  *
@@ -2144,6 +2666,7 @@ export const vConnectedAppUrlRequest = v.object({
2144
2666
  label: v.nullish(v.string()),
2145
2667
  url: v.string()
2146
2668
  });
2669
+
2147
2670
  /**
2148
2671
  * ConnectedAppRequest
2149
2672
  *
@@ -2168,6 +2691,7 @@ export const vConnectedAppRequest = v.object({
2168
2691
  url: v.string()
2169
2692
  })))
2170
2693
  });
2694
+
2171
2695
  /**
2172
2696
  * CloudStorageR2Response
2173
2697
  *
@@ -2180,12 +2704,14 @@ export const vCloudStorageR2Response = v.pipe(v.object({
2180
2704
  endpoint: v.nullish(v.string()),
2181
2705
  region: v.optional(v.string())
2182
2706
  }), v.readonly());
2707
+
2183
2708
  /**
2184
2709
  * S3CloudStorageR2Response
2185
2710
  */
2186
2711
  export const vS3CloudStorageR2Response = v.intersect([vCloudStorageR2Response, v.object({
2187
2712
  storage_config_type: v.picklist(['r2'])
2188
2713
  })]);
2714
+
2189
2715
  /**
2190
2716
  * S3Response
2191
2717
  *
@@ -2198,24 +2724,28 @@ export const vS3Response = v.pipe(v.object({
2198
2724
  storage_config_type: v.literal('r2')
2199
2725
  }), vS3CloudStorageR2Response])])
2200
2726
  }), v.readonly());
2727
+
2201
2728
  /**
2202
2729
  * ToolS3Response
2203
2730
  */
2204
2731
  export const vToolS3Response = v.intersect([vS3Response, v.object({
2205
2732
  tool_body_type: v.picklist(['s3'])
2206
2733
  })]);
2734
+
2207
2735
  /**
2208
2736
  * S3Request
2209
2737
  *
2210
2738
  * S3-compatible storage tool configuration with a nested polymorphic provider config (AWS or R2). Request
2211
2739
  */
2212
2740
  export const vS3Request = v.record(v.string(), v.unknown());
2741
+
2213
2742
  /**
2214
2743
  * ToolS3Request
2215
2744
  */
2216
2745
  export const vToolS3Request = v.intersect([vS3Request, v.object({
2217
2746
  tool_body_type: v.picklist(['s3'])
2218
2747
  })]);
2748
+
2219
2749
  /**
2220
2750
  * DataSourceResponse
2221
2751
  *
@@ -2237,6 +2767,7 @@ export const vDataSourceResponse = v.pipe(v.object({
2237
2767
  updated_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
2238
2768
  uri: v.string()
2239
2769
  }), v.readonly());
2770
+
2240
2771
  /**
2241
2772
  * DataSourceListResponse
2242
2773
  *
@@ -2246,6 +2777,7 @@ export const vDataSourceListResponse = v.object({
2246
2777
  data: v.array(vDataSourceResponse),
2247
2778
  meta: vPaginationMeta
2248
2779
  });
2780
+
2249
2781
  /**
2250
2782
  * SQLDatabaseRequest
2251
2783
  *
@@ -2267,12 +2799,14 @@ export const vSqlDatabaseRequest = v.object({
2267
2799
  ssl_mode: v.nullish(v.string()),
2268
2800
  user_name: v.string()
2269
2801
  });
2802
+
2270
2803
  /**
2271
2804
  * ToolSQLDatabaseRequest
2272
2805
  */
2273
2806
  export const vToolSqlDatabaseRequest = v.intersect([vSqlDatabaseRequest, v.object({
2274
2807
  tool_body_type: v.picklist(['sql_database'])
2275
2808
  })]);
2809
+
2276
2810
  /**
2277
2811
  * SMSCallRequest
2278
2812
  *
@@ -2283,18 +2817,28 @@ export const vSmsCallRequest = v.object({
2283
2817
  sms_type: v.optional(v.picklist(['transactional', 'promotional']), 'transactional'),
2284
2818
  to: vTemplateConfigRequest
2285
2819
  });
2820
+
2286
2821
  /**
2287
2822
  * ActionSMSCallRequest
2288
2823
  */
2289
2824
  export const vActionSmsCallRequest = v.intersect([vSmsCallRequest, v.object({
2290
2825
  tool_call_type: v.picklist(['sms_request'])
2291
2826
  })]);
2827
+
2828
+ /**
2829
+ * ManualToolInvocationSMSCallRequest
2830
+ */
2831
+ export const vManualToolInvocationSmsCallRequest = v.intersect([vSmsCallRequest, v.object({
2832
+ tool_call_type: v.picklist(['sms_request'])
2833
+ })]);
2834
+
2292
2835
  /**
2293
2836
  * ToolRESTAPIResponse
2294
2837
  */
2295
2838
  export const vToolRestapiResponse = v.intersect([vRestapiResponse, v.object({
2296
2839
  tool_body_type: v.picklist(['rest_api'])
2297
2840
  })]);
2841
+
2298
2842
  /**
2299
2843
  * ToolResponse
2300
2844
  *
@@ -2361,6 +2905,7 @@ export const vToolResponse = v.pipe(v.object({
2361
2905
  ])),
2362
2906
  updated_at: v.optional(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly()))
2363
2907
  }), v.readonly());
2908
+
2364
2909
  /**
2365
2910
  * MinimalAiAgentResponse
2366
2911
  *
@@ -2381,6 +2926,7 @@ export const vMinimalAiAgentResponse = v.pipe(v.object({
2381
2926
  tool_id: v.pipe(v.string(), v.uuid()),
2382
2927
  updated_at: v.optional(v.pipe(v.string(), v.isoTimestamp()))
2383
2928
  }), v.readonly());
2929
+
2384
2930
  /**
2385
2931
  * WorkflowAiAgentResponse
2386
2932
  *
@@ -2393,6 +2939,7 @@ export const vWorkflowAiAgentResponse = v.pipe(v.object({
2393
2939
  position: v.pipe(v.number(), v.integer()),
2394
2940
  updated_at: v.optional(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly()))
2395
2941
  }), v.readonly());
2942
+
2396
2943
  /**
2397
2944
  * AgenticWorkflowResponse
2398
2945
  *
@@ -2414,6 +2961,7 @@ export const vAgenticWorkflowResponse = v.pipe(v.object({
2414
2961
  updated_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
2415
2962
  workflow_ai_agents: v.optional(v.pipe(v.array(vWorkflowAiAgentResponse), v.readonly()))
2416
2963
  }), v.readonly());
2964
+
2417
2965
  /**
2418
2966
  * ToolListResponse
2419
2967
  *
@@ -2423,6 +2971,7 @@ export const vToolListResponse = v.object({
2423
2971
  data: v.array(vToolResponse),
2424
2972
  meta: vPaginationMeta
2425
2973
  });
2974
+
2426
2975
  /**
2427
2976
  * AgenticWorkflowListResponse
2428
2977
  *
@@ -2432,6 +2981,7 @@ export const vAgenticWorkflowListResponse = v.object({
2432
2981
  data: v.array(vAgenticWorkflowResponse),
2433
2982
  meta: vPaginationMeta
2434
2983
  });
2984
+
2435
2985
  /**
2436
2986
  * AiAgentResponse
2437
2987
  *
@@ -2454,6 +3004,7 @@ export const vAiAgentResponse = v.pipe(v.object({
2454
3004
  tool_id: v.pipe(v.string(), v.uuid()),
2455
3005
  updated_at: v.optional(v.pipe(v.string(), v.isoTimestamp()))
2456
3006
  }), v.readonly());
3007
+
2457
3008
  /**
2458
3009
  * AiAgentListResponse
2459
3010
  *
@@ -2463,6 +3014,70 @@ export const vAiAgentListResponse = v.object({
2463
3014
  data: v.array(vAiAgentResponse),
2464
3015
  meta: vPaginationMeta
2465
3016
  });
3017
+
3018
+ /**
3019
+ * UserSearchResponse
3020
+ *
3021
+ * User SQL search resource. Created via `POST /datasets/:dataset/user-searches`
3022
+ * with a `WHERE`-clause body in `search_query`; the platform executes
3023
+ * `INSERT INTO search_results SELECT … WHERE <body>` to populate
3024
+ * `search_results` and reports back `status`, `results_count`, and
3025
+ * `error_message`.
3026
+ *
3027
+ * UserSearch carries no `data_access_mode` of its own — the capability check
3028
+ * runs at query time via `Platform.RegulatedDatalakeRepo.prepare_query/3`,
3029
+ * which reads the ambient session and raises 403 when the ceiling is
3030
+ * insufficient. ExOpenApiUtils derives `UserSearchRequest` (writeable subset)
3031
+ * and `UserSearchResponse` (full readable shape) from this declaration via
3032
+ * the readOnly/writeOnly markers on each property.
3033
+ *
3034
+ */
3035
+ export const vUserSearchResponseWritable = v.pipe(v.object({
3036
+ generic_table_id: v.nullish(v.pipe(v.string(), v.uuid())),
3037
+ search_query: v.pipe(v.string(), v.minLength(1))
3038
+ }), v.readonly());
3039
+
3040
+ /**
3041
+ * ActionExecutionLogResponse
3042
+ *
3043
+ * Per-action execution log — child of a WorkflowExecutionLog, one row per scheduled action.
3044
+ */
3045
+ export const vActionExecutionLogResponseWritable = v.pipe(v.object({
3046
+ action_id: v.pipe(v.string(), v.uuid()),
3047
+ action_type: v.picklist([
3048
+ 'sms',
3049
+ 'email',
3050
+ 'voice',
3051
+ 'data_exchange'
3052
+ ]),
3053
+ batch_id: v.nullish(v.string()),
3054
+ completed_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
3055
+ context_key: v.nullish(v.string()),
3056
+ decision_key: v.nullish(v.string()),
3057
+ error_message: v.nullish(v.string()),
3058
+ external_id: v.nullish(v.string()),
3059
+ id: v.pipe(v.string(), v.uuid()),
3060
+ inserted_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
3061
+ message_id: v.nullish(v.pipe(v.string(), v.uuid())),
3062
+ mode: v.picklist(['live', 'dry_run']),
3063
+ retry_count: v.optional(v.pipe(v.number(), v.integer())),
3064
+ runtime_filter_result: v.nullish(v.boolean()),
3065
+ scheduled_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
3066
+ started_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
3067
+ status: v.picklist([
3068
+ 'pending',
3069
+ 'executing',
3070
+ 'completed',
3071
+ 'failed',
3072
+ 'skipped',
3073
+ 'filtered',
3074
+ 'cancelled'
3075
+ ]),
3076
+ updated_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
3077
+ workflow_execution_log_id: v.pipe(v.string(), v.uuid()),
3078
+ workflow_id: v.pipe(v.string(), v.uuid())
3079
+ }), v.readonly());
3080
+
2466
3081
  /**
2467
3082
  * ContextDatasetResponse
2468
3083
  *
@@ -2475,6 +3090,7 @@ export const vContextDatasetResponseWritable = v.pipe(v.object({
2475
3090
  position: v.optional(v.pipe(v.number(), v.integer()), 0),
2476
3091
  where_clause: v.nullish(v.string())
2477
3092
  }), v.readonly());
3093
+
2478
3094
  /**
2479
3095
  * DatalakeRequest
2480
3096
  *
@@ -2529,6 +3145,14 @@ export const vDatalakeRequestWritable = v.object({
2529
3145
  'trading'
2530
3146
  ])
2531
3147
  });
3148
+
3149
+ /**
3150
+ * ManualToolInvocationResponse
3151
+ *
3152
+ * A manual test invocation of a tool. The request body carries only `tool_call` (polymorphic on `__type__`); all other fields are server-populated and returned in the response.
3153
+ */
3154
+ export const vManualToolInvocationResponseWritable = v.pipe(v.record(v.string(), v.unknown()), v.readonly());
3155
+
2532
3156
  /**
2533
3157
  * CloudWatchLogGroupResponse
2534
3158
  *
@@ -2546,6 +3170,7 @@ export const vCloudWatchLogGroupResponseWritable = v.pipe(v.object({
2546
3170
  endpoint_url: v.nullish(v.string()),
2547
3171
  region: v.string()
2548
3172
  }), v.readonly());
3173
+
2549
3174
  /**
2550
3175
  * CloudflarePagesConfigResponse
2551
3176
  *
@@ -2558,6 +3183,29 @@ export const vCloudflarePagesConfigResponseWritable = v.pipe(v.object({
2558
3183
  github_auth_method: v.picklist(['github_app', 'pat']),
2559
3184
  production_branch: v.nullish(v.string())
2560
3185
  }), v.readonly());
3186
+
3187
+ /**
3188
+ * TenantResponse
3189
+ *
3190
+ * Tenant resource. The auto-generated `TenantRequest` shape carries only
3191
+ * the writable fields (`name`, `description`); `TenantResponse` returns the
3192
+ * full read surface (`id`, `slug`, `name`, `description`).
3193
+ *
3194
+ */
3195
+ export const vTenantResponseWritable = v.pipe(v.object({
3196
+ description: v.nullish(v.pipe(v.string(), v.maxLength(1000))),
3197
+ name: v.pipe(v.string(), v.minLength(1), v.maxLength(160))
3198
+ }), v.readonly());
3199
+
3200
+ /**
3201
+ * MembershipResponse
3202
+ *
3203
+ * Tenant membership — binds a user to a tenant with a role.
3204
+ */
3205
+ export const vMembershipResponseWritable = v.pipe(v.object({
3206
+ tenant: v.optional(vTenantResponseWritable)
3207
+ }), v.readonly());
3208
+
2561
3209
  /**
2562
3210
  * DataActivationClientLogResponse
2563
3211
  *
@@ -2570,6 +3218,7 @@ export const vDataActivationClientLogResponseWritable = v.pipe(v.object({
2570
3218
  input_files: v.optional(v.array(v.string()), []),
2571
3219
  rows_ingested: v.optional(v.pipe(v.number(), v.integer()), 0)
2572
3220
  }), v.readonly());
3221
+
2573
3222
  /**
2574
3223
  * ActionStatusUpdaterResponse
2575
3224
  *
@@ -2583,12 +3232,14 @@ export const vActionStatusUpdaterResponseWritable = v.pipe(v.object({
2583
3232
  updater_tool_id: v.optional(v.pipe(v.string(), v.uuid())),
2584
3233
  updater_type: v.optional(v.picklist(['cloud_watch', 'restapi']))
2585
3234
  }), v.readonly());
3235
+
2586
3236
  /**
2587
3237
  * DataActivationClientSharePointExcelCallRequest
2588
3238
  */
2589
3239
  export const vDataActivationClientSharePointExcelCallRequestWritable = v.intersect([vSharePointExcelCallRequest, v.object({
2590
3240
  tool_call_type: v.picklist(['microsoft_share_point_excel_request'])
2591
3241
  })]);
3242
+
2592
3243
  /**
2593
3244
  * AWSLambdaResponse
2594
3245
  *
@@ -2607,12 +3258,25 @@ export const vAwsLambdaResponseWritable = v.pipe(v.object({
2607
3258
  ssm_config_key: v.nullish(v.string()),
2608
3259
  type: v.picklist(['managed', 'external'])
2609
3260
  }), v.readonly());
3261
+
2610
3262
  /**
2611
3263
  * ActionSharePointExcelCallResponse
2612
3264
  */
2613
3265
  export const vActionSharePointExcelCallResponseWritable = v.intersect([vSharePointExcelCallResponse, v.object({
2614
3266
  tool_call_type: v.picklist(['microsoft_share_point_excel_request'])
2615
3267
  })]);
3268
+
3269
+ /**
3270
+ * UserResponse
3271
+ *
3272
+ * Lean user reference — id, email, and names
3273
+ */
3274
+ export const vUserResponseWritable = v.pipe(v.object({
3275
+ email: v.pipe(v.string(), v.email()),
3276
+ first_name: v.nullish(v.string()),
3277
+ last_name: v.nullish(v.string())
3278
+ }), v.readonly());
3279
+
2616
3280
  /**
2617
3281
  * TemplateConfigResponse
2618
3282
  *
@@ -2628,6 +3292,7 @@ export const vTemplateConfigResponseWritable = v.pipe(v.object({
2628
3292
  'null'
2629
3293
  ])
2630
3294
  }), v.readonly());
3295
+
2631
3296
  /**
2632
3297
  * ActionResponse
2633
3298
  *
@@ -2652,14 +3317,15 @@ export const vActionResponseWritable = v.pipe(v.object({
2652
3317
  tool_id: v.pipe(v.string(), v.uuid()),
2653
3318
  trigger_template: v.string()
2654
3319
  }), v.readonly());
3320
+
2655
3321
  /**
2656
3322
  * InteroperabilityContractResponse
2657
3323
  *
2658
3324
  * Declarative execution spec binding a `(datalake, resource_type)` pair to the ingestion pipeline: filter → transform → mdm_input → resolve → upsert.
2659
3325
  */
2660
3326
  export const vInteroperabilityContractResponseWritable = v.pipe(v.object({
2661
- data_activation_client_filter: v.nullish(v.string()),
2662
3327
  description: v.nullish(v.string()),
3328
+ filter_template: v.nullish(v.string()),
2663
3329
  generic_table_id: v.nullish(v.pipe(v.string(), v.uuid())),
2664
3330
  id: v.optional(v.pipe(v.string(), v.uuid())),
2665
3331
  inserted_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
@@ -2674,12 +3340,29 @@ export const vInteroperabilityContractResponseWritable = v.pipe(v.object({
2674
3340
  ])),
2675
3341
  updated_at: v.optional(v.pipe(v.string(), v.isoTimestamp()))
2676
3342
  }), v.readonly());
3343
+
2677
3344
  /**
2678
3345
  * ToolAWSLambdaResponse
2679
3346
  */
2680
3347
  export const vToolAwsLambdaResponseWritable = v.intersect([vAwsLambdaResponseWritable, v.object({
2681
3348
  tool_body_type: v.picklist(['aws_lambda'])
2682
3349
  })]);
3350
+
3351
+ /**
3352
+ * InvitationResponse
3353
+ *
3354
+ * Pending tenant invitation — resolved into a Membership on accept.
3355
+ */
3356
+ export const vInvitationResponseWritable = v.pipe(v.object({
3357
+ email: v.pipe(v.string(), v.email()),
3358
+ role: v.picklist([
3359
+ 'member',
3360
+ 'researcher',
3361
+ 'admin'
3362
+ ]),
3363
+ tenant: v.optional(vTenantResponseWritable)
3364
+ }), v.readonly());
3365
+
2683
3366
  /**
2684
3367
  * AWSLambdaRequest
2685
3368
  *
@@ -2699,6 +3382,7 @@ export const vAwsLambdaRequestWritable = v.object({
2699
3382
  ssm_config_key: v.nullish(v.string()),
2700
3383
  type: v.picklist(['managed', 'external'])
2701
3384
  });
3385
+
2702
3386
  /**
2703
3387
  * SMSCallResponse
2704
3388
  *
@@ -2709,12 +3393,14 @@ export const vSmsCallResponseWritable = v.pipe(v.object({
2709
3393
  sms_type: v.optional(v.picklist(['transactional', 'promotional']), 'transactional'),
2710
3394
  to: vTemplateConfigResponseWritable
2711
3395
  }), v.readonly());
3396
+
2712
3397
  /**
2713
3398
  * ActionSMSCallResponse
2714
3399
  */
2715
3400
  export const vActionSmsCallResponseWritable = v.intersect([vSmsCallResponseWritable, v.object({
2716
3401
  tool_call_type: v.picklist(['sms_request'])
2717
3402
  })]);
3403
+
2718
3404
  /**
2719
3405
  * AWSLambdaCallResponse
2720
3406
  *
@@ -2723,6 +3409,7 @@ export const vActionSmsCallResponseWritable = v.intersect([vSmsCallResponseWrita
2723
3409
  export const vAwsLambdaCallResponseWritable = v.pipe(v.object({
2724
3410
  timeout_ms: v.optional(v.pipe(v.number(), v.integer()))
2725
3411
  }), v.readonly());
3412
+
2726
3413
  /**
2727
3414
  * RESTCallResponse
2728
3415
  *
@@ -2742,6 +3429,7 @@ export const vRestCallResponseWritable = v.pipe(v.object({
2742
3429
  params: v.optional(vTemplateConfigResponseWritable),
2743
3430
  path: vTemplateConfigResponseWritable
2744
3431
  }), v.readonly());
3432
+
2745
3433
  /**
2746
3434
  * WorkflowAiAgentRequest
2747
3435
  *
@@ -2751,6 +3439,7 @@ export const vWorkflowAiAgentRequestWritable = v.object({
2751
3439
  ai_agent_id: v.pipe(v.string(), v.uuid()),
2752
3440
  position: v.pipe(v.number(), v.integer())
2753
3441
  });
3442
+
2754
3443
  /**
2755
3444
  * AgenticWorkflowRequest
2756
3445
  *
@@ -2770,6 +3459,7 @@ export const vAgenticWorkflowRequestWritable = v.object({
2770
3459
  status: v.picklist(['live', 'draft']),
2771
3460
  updated_at: v.optional(v.pipe(v.string(), v.isoTimestamp()))
2772
3461
  });
3462
+
2773
3463
  /**
2774
3464
  * AiAgentRequest
2775
3465
  *
@@ -2789,6 +3479,7 @@ export const vAiAgentRequestWritable = v.object({
2789
3479
  tool_id: v.pipe(v.string(), v.uuid()),
2790
3480
  updated_at: v.optional(v.pipe(v.string(), v.isoTimestamp()))
2791
3481
  });
3482
+
2792
3483
  /**
2793
3484
  * SharePointResponse
2794
3485
  *
@@ -2807,6 +3498,7 @@ export const vSharePointResponseWritable = v.pipe(v.object({
2807
3498
  ]),
2808
3499
  site_url: v.nullish(v.string())
2809
3500
  }), v.readonly());
3501
+
2810
3502
  /**
2811
3503
  * RESTAPIResponse
2812
3504
  *
@@ -2847,18 +3539,21 @@ export const vRestapiResponseWritable = v.pipe(v.object({
2847
3539
  timeout_ms: v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(300000)),
2848
3540
  username: v.nullish(v.string())
2849
3541
  }), v.readonly());
3542
+
2850
3543
  /**
2851
3544
  * DataActivationClientRESTCallResponse
2852
3545
  */
2853
3546
  export const vDataActivationClientRestCallResponseWritable = v.intersect([vRestCallResponseWritable, v.object({
2854
3547
  tool_call_type: v.picklist(['restapi_request'])
2855
3548
  })]);
3549
+
2856
3550
  /**
2857
3551
  * DataActivationClientS3CallResponse
2858
3552
  */
2859
3553
  export const vDataActivationClientS3CallResponseWritable = v.intersect([vS3CallResponse, v.object({
2860
3554
  tool_call_type: v.picklist(['s3_request'])
2861
3555
  })]);
3556
+
2862
3557
  /**
2863
3558
  * EmailRequest
2864
3559
  *
@@ -2884,6 +3579,7 @@ export const vEmailRequestWritable = v.object({
2884
3579
  smtp_port: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(65535))),
2885
3580
  smtp_username: v.optional(v.string())
2886
3581
  });
3582
+
2887
3583
  /**
2888
3584
  * EmailCallResponse
2889
3585
  *
@@ -2894,6 +3590,7 @@ export const vEmailCallResponseWritable = v.pipe(v.object({
2894
3590
  subject: vTemplateConfigResponseWritable,
2895
3591
  to: vTemplateConfigResponseWritable
2896
3592
  }), v.readonly());
3593
+
2897
3594
  /**
2898
3595
  * GenericTableRequest
2899
3596
  *
@@ -2912,24 +3609,42 @@ export const vGenericTableRequestWritable = v.object({
2912
3609
  description: v.optional(v.string()),
2913
3610
  title: v.optional(v.string())
2914
3611
  });
3612
+
3613
+ /**
3614
+ * ManualToolInvocationEmailCallResponse
3615
+ */
3616
+ export const vManualToolInvocationEmailCallResponseWritable = v.intersect([vEmailCallResponseWritable, v.object({
3617
+ tool_call_type: v.picklist(['email_request'])
3618
+ })]);
3619
+
2915
3620
  /**
2916
3621
  * ToolSharePointResponse
2917
3622
  */
2918
3623
  export const vToolSharePointResponseWritable = v.intersect([vSharePointResponseWritable, v.object({
2919
3624
  tool_body_type: v.picklist(['sharepoint'])
2920
3625
  })]);
3626
+
3627
+ /**
3628
+ * ManualToolInvocationSMSCallResponse
3629
+ */
3630
+ export const vManualToolInvocationSmsCallResponseWritable = v.intersect([vSmsCallResponseWritable, v.object({
3631
+ tool_call_type: v.picklist(['sms_request'])
3632
+ })]);
3633
+
2921
3634
  /**
2922
3635
  * ActionStatusUpdaterCloudWatchQueryResponse
2923
3636
  */
2924
3637
  export const vActionStatusUpdaterCloudWatchQueryResponseWritable = v.intersect([vCloudWatchQueryResponse, v.object({
2925
3638
  updater_body_type: v.picklist(['cloud_watch_request'])
2926
3639
  })]);
3640
+
2927
3641
  /**
2928
3642
  * ActionSFTPCallRequest
2929
3643
  */
2930
3644
  export const vActionSftpCallRequestWritable = v.intersect([vSftpCallRequest, v.object({
2931
3645
  tool_call_type: v.picklist(['sftp_request'])
2932
3646
  })]);
3647
+
2933
3648
  /**
2934
3649
  * BatchLogResponse
2935
3650
  *
@@ -2956,6 +3671,7 @@ export const vBatchLogResponseWritable = v.pipe(v.object({
2956
3671
  total_wels: v.optional(v.pipe(v.number(), v.integer())),
2957
3672
  workflow_id: v.optional(v.pipe(v.string(), v.uuid()))
2958
3673
  }), v.readonly());
3674
+
2959
3675
  /**
2960
3676
  * AWSLambdaCallRequest
2961
3677
  *
@@ -2964,36 +3680,63 @@ export const vBatchLogResponseWritable = v.pipe(v.object({
2964
3680
  export const vAwsLambdaCallRequestWritable = v.object({
2965
3681
  timeout_ms: v.optional(v.pipe(v.number(), v.integer()))
2966
3682
  });
3683
+
2967
3684
  /**
2968
3685
  * ActionStatusUpdaterRESTCallResponse
2969
3686
  */
2970
3687
  export const vActionStatusUpdaterRestCallResponseWritable = v.intersect([vRestCallResponseWritable, v.object({
2971
3688
  updater_body_type: v.picklist(['restapi_request'])
2972
3689
  })]);
3690
+
2973
3691
  /**
2974
3692
  * DataActivationClientAWSLambdaCallRequest
2975
3693
  */
2976
3694
  export const vDataActivationClientAwsLambdaCallRequestWritable = v.intersect([vAwsLambdaCallRequestWritable, v.object({
2977
3695
  tool_call_type: v.picklist(['aws_lambda_request'])
2978
3696
  })]);
3697
+
2979
3698
  /**
2980
3699
  * DataActivationClientS3CallRequest
2981
3700
  */
2982
3701
  export const vDataActivationClientS3CallRequestWritable = v.intersect([vS3CallRequest, v.object({
2983
3702
  tool_call_type: v.picklist(['s3_request'])
2984
3703
  })]);
3704
+
3705
+ /**
3706
+ * DatasetSearchResponse
3707
+ *
3708
+ * Double-paginated dataset search results scoped to a `UserSearch`. The
3709
+ * `meta` object carries two `Flop.Meta`-shaped sub-objects:
3710
+ *
3711
+ * - `sql` — outer page over `search_results` (up to 1000 dataset IDs per
3712
+ * chunk; cap dictated by Postgres' `WHERE id IN (^ids)` plan). `null`
3713
+ * when the request was not bound to a `user_search_id`.
3714
+ * - `flop` — inner Flop page over the resource (default 20 rows).
3715
+ *
3716
+ */
3717
+ export const vDatasetSearchResponseWritable = v.object({
3718
+ data: v.array(v.record(v.string(), v.unknown())),
3719
+ meta: v.object({
3720
+ flop: vPaginationMeta,
3721
+ sql: v.optional(v.union([vPaginationMeta, v.unknown()]))
3722
+ }),
3723
+ user_search: vUserSearchResponseWritable
3724
+ });
3725
+
2985
3726
  /**
2986
3727
  * ActionAWSLambdaCallResponse
2987
3728
  */
2988
3729
  export const vActionAwsLambdaCallResponseWritable = v.intersect([vAwsLambdaCallResponseWritable, v.object({
2989
3730
  tool_call_type: v.picklist(['aws_lambda_request'])
2990
3731
  })]);
3732
+
2991
3733
  /**
2992
3734
  * DataActivationClientSFTPCallResponse
2993
3735
  */
2994
3736
  export const vDataActivationClientSftpCallResponseWritable = v.intersect([vSftpCallResponse, v.object({
2995
3737
  tool_call_type: v.picklist(['sftp_request'])
2996
3738
  })]);
3739
+
2997
3740
  /**
2998
3741
  * CloudStorageR2Request
2999
3742
  *
@@ -3007,12 +3750,14 @@ export const vCloudStorageR2RequestWritable = v.object({
3007
3750
  region: v.optional(v.string()),
3008
3751
  secret_access_key: v.string()
3009
3752
  });
3753
+
3010
3754
  /**
3011
3755
  * S3CloudStorageR2Request
3012
3756
  */
3013
3757
  export const vS3CloudStorageR2RequestWritable = v.intersect([vCloudStorageR2RequestWritable, v.object({
3014
3758
  storage_config_type: v.picklist(['r2'])
3015
3759
  })]);
3760
+
3016
3761
  /**
3017
3762
  * SharePointRequest
3018
3763
  *
@@ -3032,24 +3777,28 @@ export const vSharePointRequestWritable = v.object({
3032
3777
  ]),
3033
3778
  site_url: v.nullish(v.string())
3034
3779
  });
3780
+
3035
3781
  /**
3036
3782
  * ToolSharePointRequest
3037
3783
  */
3038
3784
  export const vToolSharePointRequestWritable = v.intersect([vSharePointRequestWritable, v.object({
3039
3785
  tool_body_type: v.picklist(['sharepoint'])
3040
3786
  })]);
3787
+
3041
3788
  /**
3042
3789
  * SQLQueryCallRequest
3043
3790
  *
3044
3791
  * SQL query descriptor — Liquid-templated query body. Request
3045
3792
  */
3046
3793
  export const vSqlQueryCallRequestWritable = v.record(v.string(), v.unknown());
3794
+
3047
3795
  /**
3048
3796
  * ActionSQLQueryCallRequest
3049
3797
  */
3050
3798
  export const vActionSqlQueryCallRequestWritable = v.intersect([vSqlQueryCallRequestWritable, v.object({
3051
3799
  tool_call_type: v.picklist(['sql_query'])
3052
3800
  })]);
3801
+
3053
3802
  /**
3054
3803
  * DatalakeResponse
3055
3804
  *
@@ -3070,6 +3819,7 @@ export const vDatalakeResponseWritable = v.pipe(v.object({
3070
3819
  regulated_data_db_writer_name: v.string(),
3071
3820
  unregulated_db_reader_name: v.string(),
3072
3821
  unregulated_db_writer_auth_method: v.picklist(['password', 'iam_role']),
3822
+ tenant: v.optional(vTenantResponseWritable),
3073
3823
  name: v.string(),
3074
3824
  description: v.nullish(v.string()),
3075
3825
  pool_size: v.nullable(v.pipe(v.number(), v.integer())),
@@ -3096,6 +3846,7 @@ export const vDatalakeResponseWritable = v.pipe(v.object({
3096
3846
  'trading'
3097
3847
  ])
3098
3848
  }), v.readonly());
3849
+
3099
3850
  /**
3100
3851
  * AgenticWorkflowResponse
3101
3852
  *
@@ -3115,6 +3866,7 @@ export const vAgenticWorkflowResponseWritable = v.pipe(v.object({
3115
3866
  status: v.picklist(['live', 'draft']),
3116
3867
  updated_at: v.optional(v.pipe(v.string(), v.isoTimestamp()))
3117
3868
  }), v.readonly());
3869
+
3118
3870
  /**
3119
3871
  * SFTPResponse
3120
3872
  *
@@ -3127,30 +3879,35 @@ export const vSftpResponseWritable = v.pipe(v.object({
3127
3879
  port: v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(65535)),
3128
3880
  user_name: v.string()
3129
3881
  }), v.readonly());
3882
+
3130
3883
  /**
3131
3884
  * SQLQueryCallResponse
3132
3885
  *
3133
3886
  * SQL query descriptor — Liquid-templated query body.
3134
3887
  */
3135
3888
  export const vSqlQueryCallResponseWritable = v.pipe(v.record(v.string(), v.unknown()), v.readonly());
3889
+
3136
3890
  /**
3137
3891
  * DataActivationClientSQLQueryCallResponse
3138
3892
  */
3139
3893
  export const vDataActivationClientSqlQueryCallResponseWritable = v.intersect([vSqlQueryCallResponseWritable, v.object({
3140
3894
  tool_call_type: v.picklist(['sql_query'])
3141
3895
  })]);
3896
+
3142
3897
  /**
3143
3898
  * ActionSQLQueryCallResponse
3144
3899
  */
3145
3900
  export const vActionSqlQueryCallResponseWritable = v.intersect([vSqlQueryCallResponseWritable, v.object({
3146
3901
  tool_call_type: v.picklist(['sql_query'])
3147
3902
  })]);
3903
+
3148
3904
  /**
3149
3905
  * ActionSFTPCallResponse
3150
3906
  */
3151
3907
  export const vActionSftpCallResponseWritable = v.intersect([vSftpCallResponse, v.object({
3152
3908
  tool_call_type: v.picklist(['sftp_request'])
3153
3909
  })]);
3910
+
3154
3911
  /**
3155
3912
  * CloudWatchLogGroupRequest
3156
3913
  *
@@ -3169,12 +3926,14 @@ export const vCloudWatchLogGroupRequestWritable = v.object({
3169
3926
  region: v.string(),
3170
3927
  secret_access_key: v.nullish(v.string())
3171
3928
  });
3929
+
3172
3930
  /**
3173
3931
  * ToolCloudWatchLogGroupRequest
3174
3932
  */
3175
3933
  export const vToolCloudWatchLogGroupRequestWritable = v.intersect([vCloudWatchLogGroupRequestWritable, v.object({
3176
3934
  tool_body_type: v.picklist(['cloud_watch_log_group'])
3177
3935
  })]);
3936
+
3178
3937
  /**
3179
3938
  * SNSRequest
3180
3939
  *
@@ -3194,36 +3953,66 @@ export const vSnsRequestWritable = v.object({
3194
3953
  region: v.string(),
3195
3954
  secret_access_key: v.nullish(v.string())
3196
3955
  });
3956
+
3957
+ /**
3958
+ * ManualToolInvocationAWSLambdaCallResponse
3959
+ */
3960
+ export const vManualToolInvocationAwsLambdaCallResponseWritable = v.intersect([vAwsLambdaCallResponseWritable, v.object({
3961
+ tool_call_type: v.picklist(['aws_lambda_request'])
3962
+ })]);
3963
+
3964
+ /**
3965
+ * TenantListResponse
3966
+ *
3967
+ * Paginated list of tenants
3968
+ */
3969
+ export const vTenantListResponseWritable = v.object({
3970
+ data: v.array(vTenantResponseWritable),
3971
+ meta: vPaginationMeta
3972
+ });
3973
+
3197
3974
  /**
3198
3975
  * ActionEmailCallResponse
3199
3976
  */
3200
3977
  export const vActionEmailCallResponseWritable = v.intersect([vEmailCallResponseWritable, v.object({
3201
3978
  tool_call_type: v.picklist(['email_request'])
3202
3979
  })]);
3980
+
3203
3981
  /**
3204
3982
  * S3Response
3205
3983
  *
3206
3984
  * S3-compatible storage tool configuration with a nested polymorphic provider config (AWS or R2).
3207
3985
  */
3208
3986
  export const vS3ResponseWritable = v.pipe(v.record(v.string(), v.unknown()), v.readonly());
3987
+
3209
3988
  /**
3210
3989
  * ToolS3Response
3211
3990
  */
3212
3991
  export const vToolS3ResponseWritable = v.intersect([vS3ResponseWritable, v.object({
3213
3992
  tool_body_type: v.picklist(['s3'])
3214
3993
  })]);
3994
+
3215
3995
  /**
3216
3996
  * ToolEmailRequest
3217
3997
  */
3218
3998
  export const vToolEmailRequestWritable = v.intersect([vEmailRequestWritable, v.object({
3219
3999
  tool_body_type: v.picklist(['email'])
3220
4000
  })]);
4001
+
4002
+ /**
4003
+ * ManualToolInvocationRESTCallResponse
4004
+ */
4005
+ export const vManualToolInvocationRestCallResponseWritable = v.intersect([vRestCallResponseWritable, v.object({
4006
+ tool_call_type: v.picklist(['restapi_request'])
4007
+ })]);
4008
+
3221
4009
  /**
3222
4010
  * ActionStatusUpdaterCloudWatchQueryRequest
3223
4011
  */
3224
4012
  export const vActionStatusUpdaterCloudWatchQueryRequestWritable = v.intersect([vCloudWatchQueryRequest, v.object({
3225
4013
  updater_body_type: v.picklist(['cloud_watch_request'])
3226
4014
  })]);
4015
+
3227
4016
  /**
3228
4017
  * SQSRequest
3229
4018
  *
@@ -3238,18 +4027,21 @@ export const vSqsRequestWritable = v.object({
3238
4027
  region: v.string(),
3239
4028
  secret_access_key: v.nullish(v.string())
3240
4029
  });
4030
+
3241
4031
  /**
3242
4032
  * ToolSQSRequest
3243
4033
  */
3244
4034
  export const vToolSqsRequestWritable = v.intersect([vSqsRequestWritable, v.object({
3245
4035
  tool_body_type: v.picklist(['sqs'])
3246
4036
  })]);
4037
+
3247
4038
  /**
3248
4039
  * DataActivationClientAWSLambdaCallResponse
3249
4040
  */
3250
4041
  export const vDataActivationClientAwsLambdaCallResponseWritable = v.intersect([vAwsLambdaCallResponseWritable, v.object({
3251
4042
  tool_call_type: v.picklist(['aws_lambda_request'])
3252
4043
  })]);
4044
+
3253
4045
  /**
3254
4046
  * ToolResponse
3255
4047
  *
@@ -3278,6 +4070,7 @@ export const vToolResponseWritable = v.pipe(v.object({
3278
4070
  'marked_for_deletion'
3279
4071
  ]))
3280
4072
  }), v.readonly());
4073
+
3281
4074
  /**
3282
4075
  * MinimalAiAgentResponse
3283
4076
  *
@@ -3298,6 +4091,7 @@ export const vMinimalAiAgentResponseWritable = v.pipe(v.object({
3298
4091
  tool_id: v.pipe(v.string(), v.uuid()),
3299
4092
  updated_at: v.optional(v.pipe(v.string(), v.isoTimestamp()))
3300
4093
  }), v.readonly());
4094
+
3301
4095
  /**
3302
4096
  * WorkflowAiAgentResponse
3303
4097
  *
@@ -3308,12 +4102,14 @@ export const vWorkflowAiAgentResponseWritable = v.pipe(v.object({
3308
4102
  ai_agent_id: v.pipe(v.string(), v.uuid()),
3309
4103
  position: v.pipe(v.number(), v.integer())
3310
4104
  }), v.readonly());
4105
+
3311
4106
  /**
3312
4107
  * ToolAWSLambdaRequest
3313
4108
  */
3314
4109
  export const vToolAwsLambdaRequestWritable = v.intersect([vAwsLambdaRequestWritable, v.object({
3315
4110
  tool_body_type: v.picklist(['aws_lambda'])
3316
4111
  })]);
4112
+
3317
4113
  /**
3318
4114
  * SNSResponse
3319
4115
  *
@@ -3332,18 +4128,21 @@ export const vSnsResponseWritable = v.pipe(v.object({
3332
4128
  phone_number: v.string(),
3333
4129
  region: v.string()
3334
4130
  }), v.readonly());
4131
+
3335
4132
  /**
3336
4133
  * ToolSNSResponse
3337
4134
  */
3338
4135
  export const vToolSnsResponseWritable = v.intersect([vSnsResponseWritable, v.object({
3339
4136
  tool_body_type: v.picklist(['sns'])
3340
4137
  })]);
4138
+
3341
4139
  /**
3342
4140
  * ActionSharePointExcelCallRequest
3343
4141
  */
3344
4142
  export const vActionSharePointExcelCallRequestWritable = v.intersect([vSharePointExcelCallRequest, v.object({
3345
4143
  tool_call_type: v.picklist(['microsoft_share_point_excel_request'])
3346
4144
  })]);
4145
+
3347
4146
  /**
3348
4147
  * SQLDatabaseResponse
3349
4148
  *
@@ -3365,24 +4164,28 @@ export const vSqlDatabaseResponseWritable = v.pipe(v.object({
3365
4164
  ssl_mode: v.nullish(v.string()),
3366
4165
  user_name: v.string()
3367
4166
  }), v.readonly());
4167
+
3368
4168
  /**
3369
4169
  * ToolSQLDatabaseResponse
3370
4170
  */
3371
4171
  export const vToolSqlDatabaseResponseWritable = v.intersect([vSqlDatabaseResponseWritable, v.object({
3372
4172
  tool_body_type: v.picklist(['sql_database'])
3373
4173
  })]);
4174
+
3374
4175
  /**
3375
4176
  * S3CloudStorageAwsResponse
3376
4177
  */
3377
4178
  export const vS3CloudStorageAwsResponseWritable = v.intersect([vCloudStorageAwsResponse, v.object({
3378
4179
  storage_config_type: v.picklist(['aws'])
3379
4180
  })]);
4181
+
3380
4182
  /**
3381
4183
  * S3CloudStorageR2Response
3382
4184
  */
3383
4185
  export const vS3CloudStorageR2ResponseWritable = v.intersect([vCloudStorageR2Response, v.object({
3384
4186
  storage_config_type: v.picklist(['r2'])
3385
4187
  })]);
4188
+
3386
4189
  /**
3387
4190
  * ToolListResponse
3388
4191
  *
@@ -3392,6 +4195,7 @@ export const vToolListResponseWritable = v.object({
3392
4195
  data: v.array(vToolResponseWritable),
3393
4196
  meta: vPaginationMeta
3394
4197
  });
4198
+
3395
4199
  /**
3396
4200
  * SQSResponse
3397
4201
  *
@@ -3405,6 +4209,7 @@ export const vSqsResponseWritable = v.pipe(v.object({
3405
4209
  queue_url: v.string(),
3406
4210
  region: v.string()
3407
4211
  }), v.readonly());
4212
+
3408
4213
  /**
3409
4214
  * TemplateConfigRequest
3410
4215
  *
@@ -3420,6 +4225,7 @@ export const vTemplateConfigRequestWritable = v.object({
3420
4225
  'null'
3421
4226
  ])
3422
4227
  });
4228
+
3423
4229
  /**
3424
4230
  * EmailCallRequest
3425
4231
  *
@@ -3430,20 +4236,22 @@ export const vEmailCallRequestWritable = v.object({
3430
4236
  subject: vTemplateConfigRequestWritable,
3431
4237
  to: vTemplateConfigRequestWritable
3432
4238
  });
4239
+
3433
4240
  /**
3434
4241
  * ActionEmailCallRequest
3435
4242
  */
3436
4243
  export const vActionEmailCallRequestWritable = v.intersect([vEmailCallRequestWritable, v.object({
3437
4244
  tool_call_type: v.picklist(['email_request'])
3438
4245
  })]);
4246
+
3439
4247
  /**
3440
4248
  * InteroperabilityContractRequest
3441
4249
  *
3442
4250
  * Declarative execution spec binding a `(datalake, resource_type)` pair to the ingestion pipeline: filter → transform → mdm_input → resolve → upsert. Request
3443
4251
  */
3444
4252
  export const vInteroperabilityContractRequestWritable = v.object({
3445
- data_activation_client_filter: v.nullish(v.string()),
3446
4253
  description: v.nullish(v.string()),
4254
+ filter_template: v.nullish(v.string()),
3447
4255
  generic_table_id: v.nullish(v.pipe(v.string(), v.uuid())),
3448
4256
  id: v.optional(v.pipe(v.string(), v.uuid())),
3449
4257
  inserted_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
@@ -3460,6 +4268,7 @@ export const vInteroperabilityContractRequestWritable = v.object({
3460
4268
  ])),
3461
4269
  updated_at: v.optional(v.pipe(v.string(), v.isoTimestamp()))
3462
4270
  });
4271
+
3463
4272
  /**
3464
4273
  * RESTCallRequest
3465
4274
  *
@@ -3479,24 +4288,28 @@ export const vRestCallRequestWritable = v.object({
3479
4288
  params: v.optional(vTemplateConfigRequestWritable),
3480
4289
  path: vTemplateConfigRequestWritable
3481
4290
  });
4291
+
3482
4292
  /**
3483
4293
  * DataActivationClientRESTCallRequest
3484
4294
  */
3485
4295
  export const vDataActivationClientRestCallRequestWritable = v.intersect([vRestCallRequestWritable, v.object({
3486
4296
  tool_call_type: v.picklist(['restapi_request'])
3487
4297
  })]);
4298
+
3488
4299
  /**
3489
4300
  * ActionRESTCallRequest
3490
4301
  */
3491
4302
  export const vActionRestCallRequestWritable = v.intersect([vRestCallRequestWritable, v.object({
3492
4303
  tool_call_type: v.picklist(['restapi_request'])
3493
4304
  })]);
4305
+
3494
4306
  /**
3495
4307
  * ActionStatusUpdaterRESTCallRequest
3496
4308
  */
3497
4309
  export const vActionStatusUpdaterRestCallRequestWritable = v.intersect([vRestCallRequestWritable, v.object({
3498
4310
  updater_body_type: v.picklist(['restapi_request'])
3499
4311
  })]);
4312
+
3500
4313
  /**
3501
4314
  * RESTAPIRequest
3502
4315
  *
@@ -3542,18 +4355,21 @@ export const vRestapiRequestWritable = v.object({
3542
4355
  timeout_ms: v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(300000)),
3543
4356
  username: v.nullish(v.string())
3544
4357
  });
4358
+
3545
4359
  /**
3546
4360
  * ToolRESTAPIRequest
3547
4361
  */
3548
4362
  export const vToolRestapiRequestWritable = v.intersect([vRestapiRequestWritable, v.object({
3549
4363
  tool_body_type: v.picklist(['rest_api'])
3550
4364
  })]);
4365
+
3551
4366
  /**
3552
4367
  * DataActivationClientSharePointExcelCallResponse
3553
4368
  */
3554
4369
  export const vDataActivationClientSharePointExcelCallResponseWritable = v.intersect([vSharePointExcelCallResponse, v.object({
3555
4370
  tool_call_type: v.picklist(['microsoft_share_point_excel_request'])
3556
4371
  })]);
4372
+
3557
4373
  /**
3558
4374
  * EmailResponse
3559
4375
  *
@@ -3576,12 +4392,14 @@ export const vEmailResponseWritable = v.pipe(v.object({
3576
4392
  smtp_port: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(65535))),
3577
4393
  smtp_username: v.optional(v.string())
3578
4394
  }), v.readonly());
4395
+
3579
4396
  /**
3580
4397
  * ToolEmailResponse
3581
4398
  */
3582
4399
  export const vToolEmailResponseWritable = v.intersect([vEmailResponseWritable, v.object({
3583
4400
  tool_body_type: v.picklist(['email'])
3584
4401
  })]);
4402
+
3585
4403
  /**
3586
4404
  * WorkflowLogResponse
3587
4405
  *
@@ -3616,6 +4434,7 @@ export const vWorkflowLogResponseWritable = v.pipe(v.object({
3616
4434
  tenant_id: v.optional(v.pipe(v.string(), v.uuid())),
3617
4435
  workflow_id: v.optional(v.pipe(v.string(), v.uuid()))
3618
4436
  }), v.readonly());
4437
+
3619
4438
  /**
3620
4439
  * WorkflowLogListResponse
3621
4440
  *
@@ -3625,6 +4444,7 @@ export const vWorkflowLogListResponseWritable = v.object({
3625
4444
  data: v.array(vWorkflowLogResponseWritable),
3626
4445
  meta: vPaginationMeta
3627
4446
  });
4447
+
3628
4448
  /**
3629
4449
  * CloudStorageAwsRequest
3630
4450
  *
@@ -3639,18 +4459,31 @@ export const vCloudStorageAwsRequestWritable = v.object({
3639
4459
  region: v.string(),
3640
4460
  secret_access_key: v.nullish(v.string())
3641
4461
  });
4462
+
3642
4463
  /**
3643
4464
  * S3CloudStorageAwsRequest
3644
4465
  */
3645
4466
  export const vS3CloudStorageAwsRequestWritable = v.intersect([vCloudStorageAwsRequestWritable, v.object({
3646
4467
  storage_config_type: v.picklist(['aws'])
3647
4468
  })]);
4469
+
3648
4470
  /**
3649
4471
  * ToolSQSResponse
3650
4472
  */
3651
4473
  export const vToolSqsResponseWritable = v.intersect([vSqsResponseWritable, v.object({
3652
4474
  tool_body_type: v.picklist(['sqs'])
3653
4475
  })]);
4476
+
4477
+ /**
4478
+ * ApiKeyResponse
4479
+ *
4480
+ * Lean API key reference — id, name, last_four, and data_access_mode (no plaintext)
4481
+ */
4482
+ export const vApiKeyResponseWritable = v.pipe(v.object({
4483
+ data_access_mode: v.picklist(['regulated', 'unregulated']),
4484
+ name: v.string()
4485
+ }), v.readonly());
4486
+
3654
4487
  /**
3655
4488
  * DataActivationClientResponse
3656
4489
  *
@@ -3671,6 +4504,7 @@ export const vDataActivationClientResponseWritable = v.pipe(v.object({
3671
4504
  row_filter: v.nullish(v.string()),
3672
4505
  tool_id: v.pipe(v.string(), v.uuid())
3673
4506
  }), v.readonly());
4507
+
3674
4508
  /**
3675
4509
  * DataActivationClientListResponse
3676
4510
  *
@@ -3680,6 +4514,7 @@ export const vDataActivationClientListResponseWritable = v.object({
3680
4514
  data: v.array(vDataActivationClientResponseWritable),
3681
4515
  meta: vPaginationMeta
3682
4516
  });
4517
+
3683
4518
  /**
3684
4519
  * SFTPRequest
3685
4520
  *
@@ -3695,12 +4530,14 @@ export const vSftpRequestWritable = v.object({
3695
4530
  private_key_passphrase: v.nullish(v.string()),
3696
4531
  user_name: v.string()
3697
4532
  });
4533
+
3698
4534
  /**
3699
4535
  * ToolSFTPRequest
3700
4536
  */
3701
4537
  export const vToolSftpRequestWritable = v.intersect([vSftpRequestWritable, v.object({
3702
4538
  tool_body_type: v.picklist(['sftp'])
3703
4539
  })]);
4540
+
3704
4541
  /**
3705
4542
  * DatalakeListResponse
3706
4543
  *
@@ -3710,24 +4547,28 @@ export const vDatalakeListResponseWritable = v.object({
3710
4547
  data: v.array(vDatalakeResponseWritable),
3711
4548
  meta: vPaginationMeta
3712
4549
  });
4550
+
3713
4551
  /**
3714
4552
  * ActionRESTCallResponse
3715
4553
  */
3716
4554
  export const vActionRestCallResponseWritable = v.intersect([vRestCallResponseWritable, v.object({
3717
4555
  tool_call_type: v.picklist(['restapi_request'])
3718
4556
  })]);
4557
+
3719
4558
  /**
3720
4559
  * ToolCloudWatchLogGroupResponse
3721
4560
  */
3722
4561
  export const vToolCloudWatchLogGroupResponseWritable = v.intersect([vCloudWatchLogGroupResponseWritable, v.object({
3723
4562
  tool_body_type: v.picklist(['cloud_watch_log_group'])
3724
4563
  })]);
4564
+
3725
4565
  /**
3726
4566
  * ActionAWSLambdaCallRequest
3727
4567
  */
3728
4568
  export const vActionAwsLambdaCallRequestWritable = v.intersect([vAwsLambdaCallRequestWritable, v.object({
3729
4569
  tool_call_type: v.picklist(['aws_lambda_request'])
3730
4570
  })]);
4571
+
3731
4572
  /**
3732
4573
  * GenericTableResponse
3733
4574
  *
@@ -3746,6 +4587,7 @@ export const vGenericTableResponseWritable = v.pipe(v.object({
3746
4587
  description: v.optional(v.string()),
3747
4588
  title: v.optional(v.string())
3748
4589
  }), v.readonly());
4590
+
3749
4591
  /**
3750
4592
  * GenericTableListResponse
3751
4593
  *
@@ -3755,6 +4597,7 @@ export const vGenericTableListResponseWritable = v.object({
3755
4597
  data: v.array(vGenericTableResponseWritable),
3756
4598
  meta: vPaginationMeta
3757
4599
  });
4600
+
3758
4601
  /**
3759
4602
  * InteroperabilityContractListResponse
3760
4603
  *
@@ -3764,6 +4607,7 @@ export const vInteroperabilityContractListResponseWritable = v.object({
3764
4607
  data: v.array(vInteroperabilityContractResponseWritable),
3765
4608
  meta: vPaginationMeta
3766
4609
  });
4610
+
3767
4611
  /**
3768
4612
  * CloudflarePagesConfigRequest
3769
4613
  *
@@ -3778,12 +4622,14 @@ export const vCloudflarePagesConfigRequestWritable = v.object({
3778
4622
  github_pat: v.nullish(v.string()),
3779
4623
  production_branch: v.nullish(v.string())
3780
4624
  });
4625
+
3781
4626
  /**
3782
4627
  * DataActivationClientSFTPCallRequest
3783
4628
  */
3784
4629
  export const vDataActivationClientSftpCallRequestWritable = v.intersect([vSftpCallRequest, v.object({
3785
4630
  tool_call_type: v.picklist(['sftp_request'])
3786
4631
  })]);
4632
+
3787
4633
  /**
3788
4634
  * ActionStatusUpdaterListResponse
3789
4635
  *
@@ -3793,6 +4639,14 @@ export const vActionStatusUpdaterListResponseWritable = v.object({
3793
4639
  data: v.array(vActionStatusUpdaterResponseWritable),
3794
4640
  meta: vPaginationMeta
3795
4641
  });
4642
+
4643
+ /**
4644
+ * ManualToolInvocationEmailCallRequest
4645
+ */
4646
+ export const vManualToolInvocationEmailCallRequestWritable = v.intersect([vEmailCallRequestWritable, v.object({
4647
+ tool_call_type: v.picklist(['email_request'])
4648
+ })]);
4649
+
3796
4650
  /**
3797
4651
  * ConnectedAppResponse
3798
4652
  *
@@ -3818,6 +4672,7 @@ export const vConnectedAppResponseWritable = v.pipe(v.object({
3818
4672
  url: v.string()
3819
4673
  })))
3820
4674
  }), v.readonly());
4675
+
3821
4676
  /**
3822
4677
  * ConnectedAppListResponse
3823
4678
  *
@@ -3827,6 +4682,7 @@ export const vConnectedAppListResponseWritable = v.object({
3827
4682
  data: v.array(vConnectedAppResponseWritable),
3828
4683
  meta: vPaginationMeta
3829
4684
  });
4685
+
3830
4686
  /**
3831
4687
  * AgenticWorkflowListResponse
3832
4688
  *
@@ -3836,6 +4692,35 @@ export const vAgenticWorkflowListResponseWritable = v.object({
3836
4692
  data: v.array(vAgenticWorkflowResponseWritable),
3837
4693
  meta: vPaginationMeta
3838
4694
  });
4695
+
4696
+ /**
4697
+ * RoleResponse
4698
+ *
4699
+ * Lean role reference — id, name, and description
4700
+ */
4701
+ export const vRoleResponseWritable = v.pipe(v.object({
4702
+ description: v.nullish(v.string()),
4703
+ name: v.string()
4704
+ }), v.readonly());
4705
+
4706
+ /**
4707
+ * SessionResponse
4708
+ *
4709
+ * Authenticated session — issued at sign-in (`POST /api/v1/sessions`) or
4710
+ * derived from an `X-API-Key` header. The `session_token` field carries the
4711
+ * plaintext Bearer on creation responses and is null on verify responses.
4712
+ * `tenant`, `role`, and `user` are nullable for tenant-less / pre-tenant
4713
+ * sessions; `api_key` is populated for M2M sessions only.
4714
+ *
4715
+ */
4716
+ export const vSessionResponseWritable = v.pipe(v.object({
4717
+ api_key: v.optional(vApiKeyResponseWritable),
4718
+ data_access_mode: v.picklist(['regulated', 'unregulated']),
4719
+ role: v.optional(vRoleResponseWritable),
4720
+ tenant: v.optional(vTenantResponseWritable),
4721
+ user: v.optional(vUserResponseWritable)
4722
+ }), v.readonly());
4723
+
3839
4724
  /**
3840
4725
  * BatchLogListResponse
3841
4726
  *
@@ -3845,12 +4730,46 @@ export const vBatchLogListResponseWritable = v.object({
3845
4730
  data: v.array(vBatchLogResponseWritable),
3846
4731
  meta: vPaginationMeta
3847
4732
  });
4733
+
4734
+ /**
4735
+ * ManualToolInvocationAWSLambdaCallRequest
4736
+ */
4737
+ export const vManualToolInvocationAwsLambdaCallRequestWritable = v.intersect([vAwsLambdaCallRequestWritable, v.object({
4738
+ tool_call_type: v.picklist(['aws_lambda_request'])
4739
+ })]);
4740
+
3848
4741
  /**
3849
4742
  * ToolSFTPResponse
3850
4743
  */
3851
4744
  export const vToolSftpResponseWritable = v.intersect([vSftpResponseWritable, v.object({
3852
4745
  tool_body_type: v.picklist(['sftp'])
3853
4746
  })]);
4747
+
4748
+ /**
4749
+ * ManualToolInvocationRESTCallRequest
4750
+ */
4751
+ export const vManualToolInvocationRestCallRequestWritable = v.intersect([vRestCallRequestWritable, v.object({
4752
+ tool_call_type: v.picklist(['restapi_request'])
4753
+ })]);
4754
+
4755
+ /**
4756
+ * SignUpRequest
4757
+ *
4758
+ * Register a new user account. Mirrors the `/auth/register` LiveView form
4759
+ * submission shape. The created user is **unconfirmed** — caller must
4760
+ * confirm separately (e.g. via the email confirmation flow, or via
4761
+ * `PUT /api/v1/admin/users/:id/confirm` for tests) before signing in.
4762
+ *
4763
+ * No authentication is required.
4764
+ * Request
4765
+ */
4766
+ export const vSignUpRequestWritable = v.object({
4767
+ email: v.pipe(v.string(), v.email()),
4768
+ first_name: v.nullable(v.string()),
4769
+ last_name: v.nullable(v.string()),
4770
+ password: v.pipe(v.string(), v.minLength(8), v.maxLength(72))
4771
+ });
4772
+
3854
4773
  /**
3855
4774
  * AiAgentResponse
3856
4775
  *
@@ -3868,16 +4787,19 @@ export const vAiAgentResponseWritable = v.pipe(v.object({
3868
4787
  name: v.string(),
3869
4788
  slug: v.optional(v.string()),
3870
4789
  temperature: v.number(),
4790
+ tenant: v.optional(vTenantResponseWritable),
3871
4791
  tool: v.optional(vToolResponseWritable),
3872
4792
  tool_id: v.pipe(v.string(), v.uuid()),
3873
4793
  updated_at: v.optional(v.pipe(v.string(), v.isoTimestamp()))
3874
4794
  }), v.readonly());
4795
+
3875
4796
  /**
3876
4797
  * DataActivationClientSQLQueryCallRequest
3877
4798
  */
3878
4799
  export const vDataActivationClientSqlQueryCallRequestWritable = v.intersect([vSqlQueryCallRequestWritable, v.object({
3879
4800
  tool_call_type: v.picklist(['sql_query'])
3880
4801
  })]);
4802
+
3881
4803
  /**
3882
4804
  * DataActivationClientRequest
3883
4805
  *
@@ -3922,6 +4844,7 @@ export const vDataActivationClientRequestWritable = v.object({
3922
4844
  ]),
3923
4845
  tool_id: v.pipe(v.string(), v.uuid())
3924
4846
  });
4847
+
3925
4848
  /**
3926
4849
  * RunManuallyRequest
3927
4850
  *
@@ -3952,12 +4875,24 @@ export const vRunManuallyRequestWritable = v.object({
3952
4875
  }), vDataActivationClientS3CallRequestWritable])
3953
4876
  ]))
3954
4877
  });
4878
+
3955
4879
  /**
3956
4880
  * ToolSNSRequest
3957
4881
  */
3958
4882
  export const vToolSnsRequestWritable = v.intersect([vSnsRequestWritable, v.object({
3959
4883
  tool_body_type: v.picklist(['sns'])
3960
4884
  })]);
4885
+
4886
+ /**
4887
+ * InvitationListResponse
4888
+ *
4889
+ * Paginated list of invitations
4890
+ */
4891
+ export const vInvitationListResponseWritable = v.object({
4892
+ data: v.array(vInvitationResponseWritable),
4893
+ meta: vPaginationMeta
4894
+ });
4895
+
3961
4896
  /**
3962
4897
  * ActionStatusUpdaterRequest
3963
4898
  *
@@ -3976,6 +4911,7 @@ export const vActionStatusUpdaterRequestWritable = v.object({
3976
4911
  updater_tool_id: v.optional(v.pipe(v.string(), v.uuid())),
3977
4912
  updater_type: v.optional(v.picklist(['cloud_watch', 'restapi']))
3978
4913
  });
4914
+
3979
4915
  /**
3980
4916
  * DataActivationClientLogListResponse
3981
4917
  *
@@ -3985,6 +4921,7 @@ export const vDataActivationClientLogListResponseWritable = v.object({
3985
4921
  data: v.array(vDataActivationClientLogResponseWritable),
3986
4922
  meta: vPaginationMeta
3987
4923
  });
4924
+
3988
4925
  /**
3989
4926
  * AiAgentListResponse
3990
4927
  *
@@ -3994,6 +4931,7 @@ export const vAiAgentListResponseWritable = v.object({
3994
4931
  data: v.array(vAiAgentResponseWritable),
3995
4932
  meta: vPaginationMeta
3996
4933
  });
4934
+
3997
4935
  /**
3998
4936
  * ConnectedAppRequest
3999
4937
  *
@@ -4019,6 +4957,7 @@ export const vConnectedAppRequestWritable = v.object({
4019
4957
  url: v.string()
4020
4958
  })))
4021
4959
  });
4960
+
4022
4961
  /**
4023
4962
  * S3Request
4024
4963
  *
@@ -4031,12 +4970,14 @@ export const vS3RequestWritable = v.object({
4031
4970
  storage_config_type: v.literal('r2')
4032
4971
  }), vS3CloudStorageR2RequestWritable])])
4033
4972
  });
4973
+
4034
4974
  /**
4035
4975
  * ToolS3Request
4036
4976
  */
4037
4977
  export const vToolS3RequestWritable = v.intersect([vS3RequestWritable, v.object({
4038
4978
  tool_body_type: v.picklist(['s3'])
4039
4979
  })]);
4980
+
4040
4981
  /**
4041
4982
  * DataSourceResponse
4042
4983
  *
@@ -4058,6 +4999,7 @@ export const vDataSourceResponseWritable = v.pipe(v.object({
4058
4999
  updated_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
4059
5000
  uri: v.string()
4060
5001
  }), v.readonly());
5002
+
4061
5003
  /**
4062
5004
  * DataSourceListResponse
4063
5005
  *
@@ -4067,6 +5009,7 @@ export const vDataSourceListResponseWritable = v.object({
4067
5009
  data: v.array(vDataSourceResponseWritable),
4068
5010
  meta: vPaginationMeta
4069
5011
  });
5012
+
4070
5013
  /**
4071
5014
  * SQLDatabaseRequest
4072
5015
  *
@@ -4089,12 +5032,14 @@ export const vSqlDatabaseRequestWritable = v.object({
4089
5032
  ssl_mode: v.nullish(v.string()),
4090
5033
  user_name: v.string()
4091
5034
  });
5035
+
4092
5036
  /**
4093
5037
  * ToolSQLDatabaseRequest
4094
5038
  */
4095
5039
  export const vToolSqlDatabaseRequestWritable = v.intersect([vSqlDatabaseRequestWritable, v.object({
4096
5040
  tool_body_type: v.picklist(['sql_database'])
4097
5041
  })]);
5042
+
4098
5043
  /**
4099
5044
  * ToolRequest
4100
5045
  *
@@ -4158,6 +5103,7 @@ export const vToolRequestWritable = v.object({
4158
5103
  'marked_for_deletion'
4159
5104
  ]))
4160
5105
  });
5106
+
4161
5107
  /**
4162
5108
  * SMSCallRequest
4163
5109
  *
@@ -4168,12 +5114,14 @@ export const vSmsCallRequestWritable = v.object({
4168
5114
  sms_type: v.optional(v.picklist(['transactional', 'promotional']), 'transactional'),
4169
5115
  to: vTemplateConfigRequestWritable
4170
5116
  });
5117
+
4171
5118
  /**
4172
5119
  * ActionSMSCallRequest
4173
5120
  */
4174
5121
  export const vActionSmsCallRequestWritable = v.intersect([vSmsCallRequestWritable, v.object({
4175
5122
  tool_call_type: v.picklist(['sms_request'])
4176
5123
  })]);
5124
+
4177
5125
  /**
4178
5126
  * ActionRequest
4179
5127
  *
@@ -4224,15 +5172,47 @@ export const vActionRequestWritable = v.object({
4224
5172
  tool_id: v.pipe(v.string(), v.uuid()),
4225
5173
  trigger_template: v.string()
4226
5174
  });
5175
+
5176
+ /**
5177
+ * ManualToolInvocationSMSCallRequest
5178
+ */
5179
+ export const vManualToolInvocationSmsCallRequestWritable = v.intersect([vSmsCallRequestWritable, v.object({
5180
+ tool_call_type: v.picklist(['sms_request'])
5181
+ })]);
5182
+
5183
+ /**
5184
+ * ManualToolInvocationRequest
5185
+ *
5186
+ * A manual test invocation of a tool. The request body carries only `tool_call` (polymorphic on `__type__`); all other fields are server-populated and returned in the response. Request
5187
+ */
5188
+ export const vManualToolInvocationRequestWritable = v.object({
5189
+ tool_call: v.optional(v.union([
5190
+ v.intersect([v.object({
5191
+ tool_call_type: v.literal('sms_request')
5192
+ }), vManualToolInvocationSmsCallRequestWritable]),
5193
+ v.intersect([v.object({
5194
+ tool_call_type: v.literal('email_request')
5195
+ }), vManualToolInvocationEmailCallRequestWritable]),
5196
+ v.intersect([v.object({
5197
+ tool_call_type: v.literal('restapi_request')
5198
+ }), vManualToolInvocationRestCallRequestWritable]),
5199
+ v.intersect([v.object({
5200
+ tool_call_type: v.literal('aws_lambda_request')
5201
+ }), vManualToolInvocationAwsLambdaCallRequestWritable])
5202
+ ]))
5203
+ });
5204
+
4227
5205
  /**
4228
5206
  * ToolRESTAPIResponse
4229
5207
  */
4230
5208
  export const vToolRestapiResponseWritable = v.intersect([vRestapiResponseWritable, v.object({
4231
5209
  tool_body_type: v.picklist(['rest_api'])
4232
5210
  })]);
5211
+
4233
5212
  export const vPlatformApiToolControllerIndexPath = v.object({
4234
5213
  tenant_slug: v.string()
4235
5214
  });
5215
+
4236
5216
  export const vPlatformApiToolControllerIndexQuery = v.object({
4237
5217
  page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
4238
5218
  page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
@@ -4263,83 +5243,112 @@ export const vPlatformApiToolControllerIndexQuery = v.object({
4263
5243
  value: v.unknown()
4264
5244
  })))
4265
5245
  });
5246
+
4266
5247
  /**
4267
5248
  * Tool list
4268
5249
  */
4269
5250
  export const vPlatformApiToolControllerIndexResponse = vToolListResponse;
5251
+
4270
5252
  /**
4271
5253
  * Full Tool resource (PUT semantics — all fields required)
4272
5254
  */
4273
5255
  export const vPlatformApiToolControllerCreateBody = vToolRequestWritable;
5256
+
4274
5257
  export const vPlatformApiToolControllerCreatePath = v.object({
4275
5258
  tenant_slug: v.string()
4276
5259
  });
5260
+
4277
5261
  /**
4278
5262
  * Tool created
4279
5263
  */
4280
5264
  export const vPlatformApiToolControllerCreateResponse = vToolResponse;
5265
+
4281
5266
  export const vPlatformApiDataActivationClientControllerDeletePath = v.object({
4282
5267
  tenant_slug: v.string(),
4283
5268
  datalake_slug: v.string(),
4284
5269
  slug: v.string()
4285
5270
  });
5271
+
4286
5272
  /**
4287
5273
  * No Content
4288
5274
  */
4289
5275
  export const vPlatformApiDataActivationClientControllerDeleteResponse = v.void();
5276
+
4290
5277
  export const vPlatformApiDataActivationClientControllerShowPath = v.object({
4291
5278
  tenant_slug: v.string(),
4292
5279
  datalake_slug: v.string(),
4293
5280
  slug: v.string()
4294
5281
  });
5282
+
4295
5283
  /**
4296
5284
  * DAC
4297
5285
  */
4298
5286
  export const vPlatformApiDataActivationClientControllerShowResponse = vDataActivationClientResponse;
5287
+
4299
5288
  /**
4300
5289
  * Full DAC resource (all required fields must be present)
4301
5290
  */
4302
5291
  export const vPlatformApiDataActivationClientControllerUpdateBody = vDataActivationClientRequestWritable;
5292
+
4303
5293
  export const vPlatformApiDataActivationClientControllerUpdatePath = v.object({
4304
5294
  tenant_slug: v.string(),
4305
5295
  datalake_slug: v.string(),
4306
5296
  slug: v.string()
4307
5297
  });
5298
+
4308
5299
  /**
4309
5300
  * DAC updated
4310
5301
  */
4311
5302
  export const vPlatformApiDataActivationClientControllerUpdateResponse = vDataActivationClientResponse;
5303
+
5304
+ export const vPlatformApiDatalakeControllerMigratePath = v.object({
5305
+ tenant_slug: v.string(),
5306
+ datalake_slug: v.string()
5307
+ });
5308
+
5309
+ /**
5310
+ * Migration job enqueued
5311
+ */
5312
+ export const vPlatformApiDatalakeControllerMigrateResponse = vDatalakeMigrateResponse;
5313
+
4312
5314
  /**
4313
5315
  * Session details
4314
5316
  */
4315
5317
  export const vPlatformApiSessionControllerVerifyResponse = vSessionResponse;
5318
+
4316
5319
  export const vPlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadPath = v.object({
4317
5320
  tenant_slug: v.string(),
4318
5321
  workflow_slug: v.string(),
4319
5322
  id: v.pipe(v.string(), v.uuid())
4320
5323
  });
5324
+
4321
5325
  /**
4322
5326
  * Presigned download URL
4323
5327
  */
4324
5328
  export const vPlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadResponse = v.object({
4325
5329
  url: v.optional(v.pipe(v.string(), v.url()))
4326
5330
  });
5331
+
4327
5332
  /**
4328
5333
  * Download link request
4329
5334
  */
4330
5335
  export const vPlatformApiDatalakeControllerCreateDownloadLinkBody = vDownloadLinkRequest;
5336
+
4331
5337
  export const vPlatformApiDatalakeControllerCreateDownloadLinkPath = v.object({
4332
5338
  tenant_slug: v.string(),
4333
5339
  datalake_slug: v.string()
4334
5340
  });
5341
+
4335
5342
  /**
4336
5343
  * Presigned download URL
4337
5344
  */
4338
5345
  export const vPlatformApiDatalakeControllerCreateDownloadLinkResponse = vDownloadUrlResponse;
5346
+
4339
5347
  export const vPlatformApiDatalakeControllerShowPath = v.object({
4340
5348
  tenant_slug: v.string(),
4341
5349
  id: v.pipe(v.string(), v.uuid())
4342
5350
  });
5351
+
4343
5352
  export const vPlatformApiDatalakeControllerShowQuery = v.object({
4344
5353
  page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
4345
5354
  page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
@@ -4370,33 +5379,92 @@ export const vPlatformApiDatalakeControllerShowQuery = v.object({
4370
5379
  value: v.unknown()
4371
5380
  })))
4372
5381
  });
5382
+
4373
5383
  /**
4374
5384
  * Datalake
4375
5385
  */
4376
5386
  export const vPlatformApiDatalakeControllerShowResponse = vDatalakeResponse;
5387
+
5388
+ /**
5389
+ * Test invocation payload — `tool_call` polymorphic on `__type__`.
5390
+ */
5391
+ export const vPlatformApiToolControllerTestInvocationBody = vManualToolInvocationRequestWritable;
5392
+
5393
+ export const vPlatformApiToolControllerTestInvocationPath = v.object({
5394
+ tenant_slug: v.string(),
5395
+ id: v.pipe(v.string(), v.uuid())
5396
+ });
5397
+
5398
+ /**
5399
+ * Invocation recorded — inspect `status` for outcome
5400
+ */
5401
+ export const vPlatformApiToolControllerTestInvocationResponse = vManualToolInvocationResponse;
5402
+
4377
5403
  export const vPlatformApiDatasetControllerDatasetMetadataPath = v.object({
4378
5404
  dataset_type: v.string()
4379
5405
  });
5406
+
4380
5407
  export const vPlatformApiDatasetControllerDatasetMetadataQuery = v.object({
4381
5408
  datalake_id: v.optional(v.pipe(v.string(), v.uuid())),
4382
5409
  generic_table_id: v.optional(v.pipe(v.string(), v.uuid()))
4383
5410
  });
5411
+
4384
5412
  /**
4385
5413
  * Markdown document with field definitions
4386
5414
  */
4387
5415
  export const vPlatformApiDatasetControllerDatasetMetadataResponse = v.string();
5416
+
4388
5417
  export const vPlatformApiTenantControllerIndexQuery = v.object({
4389
- page: v.optional(v.pipe(v.number(), v.integer())),
4390
- page_size: v.optional(v.pipe(v.number(), v.integer()))
5418
+ page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
5419
+ page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
5420
+ order_by: v.optional(v.array(v.string())),
5421
+ order_directions: v.optional(v.array(v.picklist(['asc', 'desc']))),
5422
+ filters: v.optional(v.array(v.object({
5423
+ field: v.string(),
5424
+ op: v.optional(v.picklist([
5425
+ '==',
5426
+ '!=',
5427
+ '<',
5428
+ '<=',
5429
+ '>',
5430
+ '>=',
5431
+ 'empty',
5432
+ 'not_empty',
5433
+ 'like',
5434
+ 'ilike',
5435
+ 'like_and',
5436
+ 'like_or',
5437
+ 'ilike_and',
5438
+ 'ilike_or',
5439
+ 'in',
5440
+ 'not_in',
5441
+ 'contains',
5442
+ 'not_contains'
5443
+ ])),
5444
+ value: v.unknown()
5445
+ })))
4391
5446
  });
5447
+
4392
5448
  /**
4393
5449
  * Tenant list
4394
5450
  */
4395
5451
  export const vPlatformApiTenantControllerIndexResponse = vTenantListResponse;
5452
+
5453
+ /**
5454
+ * Tenant attributes
5455
+ */
5456
+ export const vPlatformApiTenantControllerCreateBody = vTenantRequest;
5457
+
5458
+ /**
5459
+ * Tenant created with tenant-scoped session token
5460
+ */
5461
+ export const vPlatformApiTenantControllerCreateResponse = vSessionResponse;
5462
+
4396
5463
  export const vPlatformApiGenericTableControllerIndexPath = v.object({
4397
5464
  tenant_slug: v.string(),
4398
5465
  datalake_slug: v.string()
4399
5466
  });
5467
+
4400
5468
  export const vPlatformApiGenericTableControllerIndexQuery = v.object({
4401
5469
  page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
4402
5470
  page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
@@ -4427,26 +5495,37 @@ export const vPlatformApiGenericTableControllerIndexQuery = v.object({
4427
5495
  value: v.unknown()
4428
5496
  })))
4429
5497
  });
5498
+
4430
5499
  /**
4431
5500
  * Generic table list
4432
5501
  */
4433
5502
  export const vPlatformApiGenericTableControllerIndexResponse = vGenericTableListResponse;
5503
+
4434
5504
  /**
4435
5505
  * Full Generic Table resource (PUT semantics — all fields required)
4436
5506
  */
4437
5507
  export const vPlatformApiGenericTableControllerCreateBody = vGenericTableRequestWritable;
5508
+
4438
5509
  export const vPlatformApiGenericTableControllerCreatePath = v.object({
4439
5510
  tenant_slug: v.string(),
4440
5511
  datalake_slug: v.string()
4441
5512
  });
5513
+
4442
5514
  /**
4443
5515
  * Generic table created
4444
5516
  */
4445
5517
  export const vPlatformApiGenericTableControllerCreateResponse = vGenericTableResponse;
5518
+
5519
+ /**
5520
+ * Pending invitations
5521
+ */
5522
+ export const vPlatformApiInvitationControllerIndexResponse = vInvitationListResponse;
5523
+
4446
5524
  export const vPlatformApiInteroperabilityContractControllerIndexPath = v.object({
4447
5525
  tenant_slug: v.string(),
4448
5526
  datalake_slug: v.string()
4449
5527
  });
5528
+
4450
5529
  export const vPlatformApiInteroperabilityContractControllerIndexQuery = v.object({
4451
5530
  page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
4452
5531
  page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
@@ -4477,18 +5556,22 @@ export const vPlatformApiInteroperabilityContractControllerIndexQuery = v.object
4477
5556
  value: v.unknown()
4478
5557
  })))
4479
5558
  });
5559
+
4480
5560
  /**
4481
5561
  * Contract list
4482
5562
  */
4483
5563
  export const vPlatformApiInteroperabilityContractControllerIndexResponse = vInteroperabilityContractListResponse;
5564
+
4484
5565
  /**
4485
5566
  * Full contract resource (PUT semantics on update — all required fields must be present)
4486
5567
  */
4487
5568
  export const vPlatformApiInteroperabilityContractControllerCreateBody = vInteroperabilityContractRequestWritable;
5569
+
4488
5570
  export const vPlatformApiInteroperabilityContractControllerCreatePath = v.object({
4489
5571
  tenant_slug: v.string(),
4490
5572
  datalake_slug: v.string()
4491
5573
  });
5574
+
4492
5575
  export const vPlatformApiInteroperabilityContractControllerCreateQuery = v.object({
4493
5576
  page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
4494
5577
  page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
@@ -4519,15 +5602,18 @@ export const vPlatformApiInteroperabilityContractControllerCreateQuery = v.objec
4519
5602
  value: v.unknown()
4520
5603
  })))
4521
5604
  });
5605
+
4522
5606
  /**
4523
5607
  * Contract created
4524
5608
  */
4525
5609
  export const vPlatformApiInteroperabilityContractControllerCreateResponse = vInteroperabilityContractResponse;
5610
+
4526
5611
  export const vPlatformApiInteroperabilityContractControllerMetadataPath = v.object({
4527
5612
  tenant_slug: v.string(),
4528
5613
  datalake_slug: v.string(),
4529
5614
  slug: v.string()
4530
5615
  });
5616
+
4531
5617
  export const vPlatformApiInteroperabilityContractControllerMetadataQuery = v.object({
4532
5618
  page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
4533
5619
  page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
@@ -4558,39 +5644,57 @@ export const vPlatformApiInteroperabilityContractControllerMetadataQuery = v.obj
4558
5644
  value: v.unknown()
4559
5645
  })))
4560
5646
  });
5647
+
4561
5648
  /**
4562
5649
  * Markdown with resource field documentation
4563
5650
  */
4564
5651
  export const vPlatformApiInteroperabilityContractControllerMetadataResponse = v.string();
5652
+
4565
5653
  export const vPlatformApiAgenticWorkflowOperationsControllerBatchLogShowPath = v.object({
4566
5654
  tenant_slug: v.string(),
4567
5655
  workflow_slug: v.string(),
4568
5656
  id: v.pipe(v.string(), v.uuid())
4569
5657
  });
5658
+
4570
5659
  /**
4571
5660
  * Batch log
4572
5661
  */
4573
5662
  export const vPlatformApiAgenticWorkflowOperationsControllerBatchLogShowResponse = vBatchLogResponse;
5663
+
5664
+ export const vPlatformApiInvitationControllerAcceptPath = v.object({
5665
+ id: v.pipe(v.string(), v.uuid())
5666
+ });
5667
+
5668
+ /**
5669
+ * Membership created
5670
+ */
5671
+ export const vPlatformApiInvitationControllerAcceptResponse = vMembershipResponse;
5672
+
4574
5673
  /**
4575
5674
  * Execute payload
4576
5675
  */
4577
5676
  export const vPlatformApiAgenticWorkflowOperationsControllerExecuteBody = vExecuteActionRequest;
5677
+
4578
5678
  export const vPlatformApiAgenticWorkflowOperationsControllerExecutePath = v.object({
4579
5679
  tenant_slug: v.string(),
4580
5680
  workflow_slug: v.string()
4581
5681
  });
5682
+
4582
5683
  /**
4583
5684
  * Execution result
4584
5685
  */
4585
5686
  export const vPlatformApiAgenticWorkflowOperationsControllerExecuteResponse = vExecuteActionResponse;
5687
+
4586
5688
  /**
4587
5689
  * Upload link request
4588
5690
  */
4589
5691
  export const vPlatformApiDatalakeControllerCreateUploadLinkBody = vUploadLinkRequest;
5692
+
4590
5693
  export const vPlatformApiDatalakeControllerCreateUploadLinkPath = v.object({
4591
5694
  tenant_slug: v.string(),
4592
5695
  datalake_slug: v.string()
4593
5696
  });
5697
+
4594
5698
  export const vPlatformApiDatalakeControllerCreateUploadLinkQuery = v.object({
4595
5699
  page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
4596
5700
  page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
@@ -4621,13 +5725,16 @@ export const vPlatformApiDatalakeControllerCreateUploadLinkQuery = v.object({
4621
5725
  value: v.unknown()
4622
5726
  })))
4623
5727
  });
5728
+
4624
5729
  /**
4625
5730
  * Presigned upload link
4626
5731
  */
4627
5732
  export const vPlatformApiDatalakeControllerCreateUploadLinkResponse = vUploadLinkResponse;
5733
+
4628
5734
  export const vPlatformApiDatalakeControllerIndexPath = v.object({
4629
5735
  tenant_slug: v.string()
4630
5736
  });
5737
+
4631
5738
  export const vPlatformApiDatalakeControllerIndexQuery = v.object({
4632
5739
  page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
4633
5740
  page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
@@ -4658,17 +5765,21 @@ export const vPlatformApiDatalakeControllerIndexQuery = v.object({
4658
5765
  value: v.unknown()
4659
5766
  })))
4660
5767
  });
5768
+
4661
5769
  /**
4662
5770
  * Datalake list
4663
5771
  */
4664
5772
  export const vPlatformApiDatalakeControllerIndexResponse = vDatalakeListResponse;
5773
+
4665
5774
  /**
4666
5775
  * Full Datalake resource (POST semantics — all fields required)
4667
5776
  */
4668
5777
  export const vPlatformApiDatalakeControllerCreateBody = vDatalakeRequestWritable;
5778
+
4669
5779
  export const vPlatformApiDatalakeControllerCreatePath = v.object({
4670
5780
  tenant_slug: v.string()
4671
5781
  });
5782
+
4672
5783
  export const vPlatformApiDatalakeControllerCreateQuery = v.object({
4673
5784
  page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
4674
5785
  page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
@@ -4699,29 +5810,35 @@ export const vPlatformApiDatalakeControllerCreateQuery = v.object({
4699
5810
  value: v.unknown()
4700
5811
  })))
4701
5812
  });
5813
+
4702
5814
  /**
4703
5815
  * Datalake created
4704
5816
  */
4705
5817
  export const vPlatformApiDatalakeControllerCreateResponse = vDatalakeResponse;
5818
+
4706
5819
  export const vPlatformApiDataActivationClientControllerLogShowPath = v.object({
4707
5820
  tenant_slug: v.string(),
4708
5821
  datalake_slug: v.string(),
4709
5822
  slug: v.string(),
4710
5823
  id: v.pipe(v.string(), v.uuid())
4711
5824
  });
5825
+
4712
5826
  /**
4713
5827
  * DAC log
4714
5828
  */
4715
5829
  export const vPlatformApiDataActivationClientControllerLogShowResponse = vDataActivationClientLogResponse;
5830
+
4716
5831
  /**
4717
5832
  * Full Data Source resource (PUT semantics — all fields required)
4718
5833
  */
4719
5834
  export const vPlatformApiDataSourceControllerUpdateBody = vDataSourceRequest;
5835
+
4720
5836
  export const vPlatformApiDataSourceControllerUpdatePath = v.object({
4721
5837
  tenant_slug: v.string(),
4722
5838
  datalake_slug: v.string(),
4723
5839
  id: v.pipe(v.string(), v.uuid())
4724
5840
  });
5841
+
4725
5842
  export const vPlatformApiDataSourceControllerUpdateQuery = v.object({
4726
5843
  page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
4727
5844
  page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
@@ -4752,83 +5869,102 @@ export const vPlatformApiDataSourceControllerUpdateQuery = v.object({
4752
5869
  value: v.unknown()
4753
5870
  })))
4754
5871
  });
5872
+
4755
5873
  /**
4756
5874
  * Data source updated
4757
5875
  */
4758
5876
  export const vPlatformApiDataSourceControllerUpdateResponse = vDataSourceResponse;
5877
+
4759
5878
  export const vPlatformApiAgenticWorkflowControllerDeletePath = v.object({
4760
5879
  tenant_slug: v.string(),
4761
5880
  datalake_slug: v.string(),
4762
5881
  id: v.pipe(v.string(), v.uuid())
4763
5882
  });
5883
+
4764
5884
  /**
4765
5885
  * No Content
4766
5886
  */
4767
5887
  export const vPlatformApiAgenticWorkflowControllerDeleteResponse = v.void();
5888
+
4768
5889
  export const vPlatformApiAgenticWorkflowControllerShowPath = v.object({
4769
5890
  tenant_slug: v.string(),
4770
5891
  datalake_slug: v.string(),
4771
5892
  id: v.pipe(v.string(), v.uuid())
4772
5893
  });
5894
+
4773
5895
  /**
4774
5896
  * Workflow
4775
5897
  */
4776
5898
  export const vPlatformApiAgenticWorkflowControllerShowResponse = vAgenticWorkflowResponse;
5899
+
4777
5900
  /**
4778
5901
  * Full workflow resource (PUT semantics — all required fields must be present)
4779
5902
  */
4780
5903
  export const vPlatformApiAgenticWorkflowControllerUpdateBody = vAgenticWorkflowRequestWritable;
5904
+
4781
5905
  export const vPlatformApiAgenticWorkflowControllerUpdatePath = v.object({
4782
5906
  tenant_slug: v.string(),
4783
5907
  datalake_slug: v.string(),
4784
5908
  id: v.pipe(v.string(), v.uuid())
4785
5909
  });
5910
+
4786
5911
  /**
4787
5912
  * Workflow updated
4788
5913
  */
4789
5914
  export const vPlatformApiAgenticWorkflowControllerUpdateResponse = vAgenticWorkflowResponse;
5915
+
4790
5916
  /**
4791
5917
  * Run workflow payload
4792
5918
  */
4793
5919
  export const vPlatformApiAgenticWorkflowOperationsControllerRunWorkflowBody = vRunWorkflowRequest;
5920
+
4794
5921
  export const vPlatformApiAgenticWorkflowOperationsControllerRunWorkflowPath = v.object({
4795
5922
  tenant_slug: v.string(),
4796
5923
  workflow_slug: v.string()
4797
5924
  });
5925
+
4798
5926
  /**
4799
5927
  * Run workflow result
4800
5928
  */
4801
5929
  export const vPlatformApiAgenticWorkflowOperationsControllerRunWorkflowResponse = vRunWorkflowResponse;
5930
+
4802
5931
  export const vPlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshPath = v.object({
4803
5932
  tenant_slug: v.string(),
4804
5933
  workflow_slug: v.string(),
4805
5934
  id: v.pipe(v.string(), v.uuid())
4806
5935
  });
5936
+
4807
5937
  /**
4808
5938
  * Refreshed batch log
4809
5939
  */
4810
5940
  export const vPlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshResponse = vBatchLogResponse;
5941
+
4811
5942
  /**
4812
5943
  * JSON payload
4813
5944
  */
4814
5945
  export const vPlatformApiDataActivationClientControllerIngestBody = vIngestRequest;
5946
+
4815
5947
  export const vPlatformApiDataActivationClientControllerIngestPath = v.object({
4816
5948
  tenant_slug: v.string(),
4817
5949
  datalake_slug: v.string(),
4818
5950
  slug: v.string()
4819
5951
  });
5952
+
4820
5953
  /**
4821
5954
  * Ingest response
4822
5955
  */
4823
5956
  export const vPlatformApiDataActivationClientControllerIngestResponse = vIngestResponse;
5957
+
4824
5958
  /**
4825
5959
  * Full Action Status Updater resource (PUT semantics — all fields required)
4826
5960
  */
4827
5961
  export const vPlatformApiActionStatusUpdaterControllerUpdateBody = vActionStatusUpdaterRequestWritable;
5962
+
4828
5963
  export const vPlatformApiActionStatusUpdaterControllerUpdatePath = v.object({
4829
5964
  tenant_slug: v.string(),
4830
5965
  id: v.pipe(v.string(), v.uuid())
4831
5966
  });
5967
+
4832
5968
  export const vPlatformApiActionStatusUpdaterControllerUpdateQuery = v.object({
4833
5969
  page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
4834
5970
  page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
@@ -4859,14 +5995,17 @@ export const vPlatformApiActionStatusUpdaterControllerUpdateQuery = v.object({
4859
5995
  value: v.unknown()
4860
5996
  })))
4861
5997
  });
5998
+
4862
5999
  /**
4863
6000
  * Action status updater updated
4864
6001
  */
4865
6002
  export const vPlatformApiActionStatusUpdaterControllerUpdateResponse = vActionStatusUpdaterResponse;
6003
+
4866
6004
  export const vPlatformApiAiAgentControllerIndexPath = v.object({
4867
6005
  tenant_slug: v.string(),
4868
6006
  datalake_slug: v.string()
4869
6007
  });
6008
+
4870
6009
  export const vPlatformApiAiAgentControllerIndexQuery = v.object({
4871
6010
  page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
4872
6011
  page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
@@ -4897,26 +6036,32 @@ export const vPlatformApiAiAgentControllerIndexQuery = v.object({
4897
6036
  value: v.unknown()
4898
6037
  })))
4899
6038
  });
6039
+
4900
6040
  /**
4901
6041
  * AI agent list
4902
6042
  */
4903
6043
  export const vPlatformApiAiAgentControllerIndexResponse = vAiAgentListResponse;
6044
+
4904
6045
  /**
4905
6046
  * Full AI Agent resource (PUT semantics — all fields required)
4906
6047
  */
4907
6048
  export const vPlatformApiAiAgentControllerCreateBody = vAiAgentRequestWritable;
6049
+
4908
6050
  export const vPlatformApiAiAgentControllerCreatePath = v.object({
4909
6051
  tenant_slug: v.string(),
4910
6052
  datalake_slug: v.string()
4911
6053
  });
6054
+
4912
6055
  /**
4913
6056
  * AI agent created
4914
6057
  */
4915
6058
  export const vPlatformApiAiAgentControllerCreateResponse = vAiAgentResponse;
6059
+
4916
6060
  export const vPlatformApiDatalakeControllerMetadataPath = v.object({
4917
6061
  tenant_slug: v.string(),
4918
6062
  datalake_slug: v.string()
4919
6063
  });
6064
+
4920
6065
  export const vPlatformApiDatalakeControllerMetadataQuery = v.object({
4921
6066
  page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
4922
6067
  page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
@@ -4947,15 +6092,18 @@ export const vPlatformApiDatalakeControllerMetadataQuery = v.object({
4947
6092
  value: v.unknown()
4948
6093
  })))
4949
6094
  });
6095
+
4950
6096
  /**
4951
6097
  * Markdown document with domain metadata
4952
6098
  */
4953
6099
  export const vPlatformApiDatalakeControllerMetadataResponse = v.string();
6100
+
4954
6101
  export const vPlatformApiInteroperabilityContractControllerDeletePath = v.object({
4955
6102
  tenant_slug: v.string(),
4956
6103
  datalake_slug: v.string(),
4957
6104
  slug: v.string()
4958
6105
  });
6106
+
4959
6107
  export const vPlatformApiInteroperabilityContractControllerDeleteQuery = v.object({
4960
6108
  page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
4961
6109
  page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
@@ -4986,15 +6134,18 @@ export const vPlatformApiInteroperabilityContractControllerDeleteQuery = v.objec
4986
6134
  value: v.unknown()
4987
6135
  })))
4988
6136
  });
6137
+
4989
6138
  /**
4990
6139
  * No Content
4991
6140
  */
4992
6141
  export const vPlatformApiInteroperabilityContractControllerDeleteResponse = v.void();
6142
+
4993
6143
  export const vPlatformApiInteroperabilityContractControllerShowPath = v.object({
4994
6144
  tenant_slug: v.string(),
4995
6145
  datalake_slug: v.string(),
4996
6146
  slug: v.string()
4997
6147
  });
6148
+
4998
6149
  export const vPlatformApiInteroperabilityContractControllerShowQuery = v.object({
4999
6150
  page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
5000
6151
  page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
@@ -5025,19 +6176,23 @@ export const vPlatformApiInteroperabilityContractControllerShowQuery = v.object(
5025
6176
  value: v.unknown()
5026
6177
  })))
5027
6178
  });
6179
+
5028
6180
  /**
5029
6181
  * Contract
5030
6182
  */
5031
6183
  export const vPlatformApiInteroperabilityContractControllerShowResponse = vInteroperabilityContractResponse;
6184
+
5032
6185
  /**
5033
6186
  * Full contract resource (all required fields must be present)
5034
6187
  */
5035
6188
  export const vPlatformApiInteroperabilityContractControllerUpdateBody = vInteroperabilityContractRequestWritable;
6189
+
5036
6190
  export const vPlatformApiInteroperabilityContractControllerUpdatePath = v.object({
5037
6191
  tenant_slug: v.string(),
5038
6192
  datalake_slug: v.string(),
5039
6193
  slug: v.string()
5040
6194
  });
6195
+
5041
6196
  export const vPlatformApiInteroperabilityContractControllerUpdateQuery = v.object({
5042
6197
  page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
5043
6198
  page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
@@ -5068,36 +6223,48 @@ export const vPlatformApiInteroperabilityContractControllerUpdateQuery = v.objec
5068
6223
  value: v.unknown()
5069
6224
  })))
5070
6225
  });
6226
+
5071
6227
  /**
5072
6228
  * Contract updated
5073
6229
  */
5074
6230
  export const vPlatformApiInteroperabilityContractControllerUpdateResponse = vInteroperabilityContractResponse;
6231
+
5075
6232
  export const vPlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowPath = v.object({
5076
6233
  tenant_slug: v.string(),
5077
6234
  workflow_slug: v.string(),
5078
6235
  id: v.pipe(v.string(), v.uuid())
5079
6236
  });
6237
+
6238
+ export const vPlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowQuery = v.object({
6239
+ data_access_mode: v.optional(v.picklist(['regulated', 'unregulated']))
6240
+ });
6241
+
5080
6242
  /**
5081
6243
  * Execution log
5082
6244
  */
5083
6245
  export const vPlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowResponse = vWorkflowLogResponse;
6246
+
5084
6247
  /**
5085
6248
  * Ingest file request
5086
6249
  */
5087
6250
  export const vPlatformApiDataActivationClientControllerIngestFileBody = vIngestFileRequest;
6251
+
5088
6252
  export const vPlatformApiDataActivationClientControllerIngestFilePath = v.object({
5089
6253
  tenant_slug: v.string(),
5090
6254
  datalake_slug: v.string(),
5091
6255
  slug: v.string()
5092
6256
  });
6257
+
5093
6258
  /**
5094
6259
  * Ingest file response
5095
6260
  */
5096
6261
  export const vPlatformApiDataActivationClientControllerIngestFileResponse = vIngestFileResponse;
6262
+
5097
6263
  export const vPlatformApiDataSourceControllerIndexPath = v.object({
5098
6264
  tenant_slug: v.string(),
5099
6265
  datalake_slug: v.string()
5100
6266
  });
6267
+
5101
6268
  export const vPlatformApiDataSourceControllerIndexQuery = v.object({
5102
6269
  page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
5103
6270
  page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
@@ -5128,18 +6295,22 @@ export const vPlatformApiDataSourceControllerIndexQuery = v.object({
5128
6295
  value: v.unknown()
5129
6296
  })))
5130
6297
  });
6298
+
5131
6299
  /**
5132
6300
  * Data source list
5133
6301
  */
5134
6302
  export const vPlatformApiDataSourceControllerIndexResponse = vDataSourceListResponse;
6303
+
5135
6304
  /**
5136
6305
  * Full Data Source resource (PUT semantics — all fields required)
5137
6306
  */
5138
6307
  export const vPlatformApiDataSourceControllerCreateBody = vDataSourceRequest;
6308
+
5139
6309
  export const vPlatformApiDataSourceControllerCreatePath = v.object({
5140
6310
  tenant_slug: v.string(),
5141
6311
  datalake_slug: v.string()
5142
6312
  });
6313
+
5143
6314
  export const vPlatformApiDataSourceControllerCreateQuery = v.object({
5144
6315
  page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
5145
6316
  page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
@@ -5170,58 +6341,80 @@ export const vPlatformApiDataSourceControllerCreateQuery = v.object({
5170
6341
  value: v.unknown()
5171
6342
  })))
5172
6343
  });
6344
+
5173
6345
  /**
5174
6346
  * Data source created
5175
6347
  */
5176
6348
  export const vPlatformApiDataSourceControllerCreateResponse = vDataSourceResponse;
6349
+
5177
6350
  /**
5178
6351
  * Optional tool_call override
5179
6352
  */
5180
6353
  export const vPlatformApiDataActivationClientControllerRunManuallyBody = vRunManuallyRequestWritable;
6354
+
5181
6355
  export const vPlatformApiDataActivationClientControllerRunManuallyPath = v.object({
5182
6356
  tenant_slug: v.string(),
5183
6357
  datalake_slug: v.string(),
5184
6358
  slug: v.string()
5185
6359
  });
6360
+
5186
6361
  /**
5187
6362
  * Run enqueued
5188
6363
  */
5189
6364
  export const vPlatformApiDataActivationClientControllerRunManuallyResponse = vRunManuallyResponse;
6365
+
5190
6366
  export const vPlatformApiAiAgentControllerDeletePath = v.object({
5191
6367
  tenant_slug: v.string(),
5192
6368
  datalake_slug: v.string(),
5193
6369
  id: v.pipe(v.string(), v.uuid())
5194
6370
  });
6371
+
5195
6372
  /**
5196
6373
  * No Content
5197
6374
  */
5198
6375
  export const vPlatformApiAiAgentControllerDeleteResponse = v.void();
6376
+
5199
6377
  export const vPlatformApiAiAgentControllerShowPath = v.object({
5200
6378
  tenant_slug: v.string(),
5201
6379
  datalake_slug: v.string(),
5202
6380
  id: v.pipe(v.string(), v.uuid())
5203
6381
  });
6382
+
5204
6383
  /**
5205
6384
  * AI agent
5206
6385
  */
5207
6386
  export const vPlatformApiAiAgentControllerShowResponse = vAiAgentResponse;
6387
+
5208
6388
  /**
5209
6389
  * Full AI Agent resource (PUT semantics — all fields required)
5210
6390
  */
5211
6391
  export const vPlatformApiAiAgentControllerUpdateBody = vAiAgentRequestWritable;
6392
+
5212
6393
  export const vPlatformApiAiAgentControllerUpdatePath = v.object({
5213
6394
  tenant_slug: v.string(),
5214
6395
  datalake_slug: v.string(),
5215
6396
  id: v.pipe(v.string(), v.uuid())
5216
6397
  });
6398
+
5217
6399
  /**
5218
6400
  * AI agent updated
5219
6401
  */
5220
6402
  export const vPlatformApiAiAgentControllerUpdateResponse = vAiAgentResponse;
6403
+
6404
+ export const vPlatformApiAdminControllerConfirmUserPath = v.object({
6405
+ id: v.pipe(v.string(), v.uuid())
6406
+ });
6407
+
6408
+ /**
6409
+ * User confirmed (or already confirmed)
6410
+ */
6411
+ export const vPlatformApiAdminControllerConfirmUserResponse = vUserResponse;
6412
+
5221
6413
  export const vPlatformApiConnectedAppMgmtControllerIndexPath = v.object({
5222
6414
  tenant_slug: v.string(),
5223
6415
  datalake_slug: v.string()
5224
6416
  });
6417
+
5225
6418
  export const vPlatformApiConnectedAppMgmtControllerIndexQuery = v.object({
5226
6419
  page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
5227
6420
  page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
@@ -5252,55 +6445,68 @@ export const vPlatformApiConnectedAppMgmtControllerIndexQuery = v.object({
5252
6445
  value: v.unknown()
5253
6446
  })))
5254
6447
  });
6448
+
5255
6449
  /**
5256
6450
  * Connected app list
5257
6451
  */
5258
6452
  export const vPlatformApiConnectedAppMgmtControllerIndexResponse = vConnectedAppListResponse;
6453
+
5259
6454
  /**
5260
6455
  * Full Connected App resource (PUT semantics — all fields required)
5261
6456
  */
5262
6457
  export const vPlatformApiConnectedAppMgmtControllerCreateBody = vConnectedAppRequestWritable;
6458
+
5263
6459
  export const vPlatformApiConnectedAppMgmtControllerCreatePath = v.object({
5264
6460
  tenant_slug: v.string(),
5265
6461
  datalake_slug: v.string()
5266
6462
  });
6463
+
5267
6464
  /**
5268
6465
  * Connected app created
5269
6466
  */
5270
6467
  export const vPlatformApiConnectedAppMgmtControllerCreateResponse = vConnectedAppResponse;
6468
+
5271
6469
  /**
5272
6470
  * User credentials
5273
6471
  */
5274
- export const vPlatformApiSessionControllerCreateBody = vSessionRequest;
6472
+ export const vPlatformApiSessionControllerCreateBody = vSignInRequest;
6473
+
5275
6474
  /**
5276
6475
  * Session created
5277
6476
  */
5278
6477
  export const vPlatformApiSessionControllerCreateResponse = vSessionResponse;
6478
+
5279
6479
  export const vPlatformApiAgenticWorkflowOperationsControllerBatchLogStartPath = v.object({
5280
6480
  tenant_slug: v.string(),
5281
6481
  workflow_slug: v.string(),
5282
6482
  id: v.pipe(v.string(), v.uuid())
5283
6483
  });
6484
+
5284
6485
  /**
5285
6486
  * Batch log with polling started
5286
6487
  */
5287
6488
  export const vPlatformApiAgenticWorkflowOperationsControllerBatchLogStartResponse = vBatchLogResponse;
6489
+
5288
6490
  /**
5289
6491
  * Page update request
5290
6492
  */
5291
6493
  export const vPlatformApiConnectedAppControllerUpdateMessageTrackingBody = vUpdatePageRequest;
6494
+
5292
6495
  export const vPlatformApiConnectedAppControllerUpdateMessageTrackingPath = v.object({
5293
6496
  tenant_slug: v.string(),
5294
6497
  slug: v.string()
5295
6498
  });
6499
+
5296
6500
  /**
5297
6501
  * Updated message details
5298
6502
  */
5299
6503
  export const vPlatformApiConnectedAppControllerUpdateMessageTrackingResponse = vUpdatePageResponse;
6504
+
5300
6505
  export const vPlatformApiAgenticWorkflowControllerIndexPath = v.object({
5301
6506
  tenant_slug: v.string(),
5302
6507
  datalake_slug: v.string()
5303
6508
  });
6509
+
5304
6510
  export const vPlatformApiAgenticWorkflowControllerIndexQuery = v.object({
5305
6511
  page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
5306
6512
  page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
@@ -5331,45 +6537,55 @@ export const vPlatformApiAgenticWorkflowControllerIndexQuery = v.object({
5331
6537
  value: v.unknown()
5332
6538
  })))
5333
6539
  });
6540
+
5334
6541
  /**
5335
6542
  * Workflow list
5336
6543
  */
5337
6544
  export const vPlatformApiAgenticWorkflowControllerIndexResponse = vAgenticWorkflowListResponse;
6545
+
5338
6546
  /**
5339
6547
  * Full workflow resource (PUT semantics — all required fields must be present)
5340
6548
  */
5341
6549
  export const vPlatformApiAgenticWorkflowControllerCreateBody = vAgenticWorkflowRequestWritable;
6550
+
5342
6551
  export const vPlatformApiAgenticWorkflowControllerCreatePath = v.object({
5343
6552
  tenant_slug: v.string(),
5344
6553
  datalake_slug: v.string()
5345
6554
  });
6555
+
5346
6556
  /**
5347
6557
  * Workflow created
5348
6558
  */
5349
6559
  export const vPlatformApiAgenticWorkflowControllerCreateResponse = vAgenticWorkflowResponse;
6560
+
5350
6561
  export const vPlatformApiDataActivationClientControllerMetadataPath = v.object({
5351
6562
  tenant_slug: v.string(),
5352
6563
  datalake_slug: v.string(),
5353
6564
  slug: v.string()
5354
6565
  });
6566
+
5355
6567
  /**
5356
6568
  * Markdown with connected dataset field documentation
5357
6569
  */
5358
6570
  export const vPlatformApiDataActivationClientControllerMetadataResponse = v.string();
6571
+
5359
6572
  export const vPlatformApiAgenticWorkflowOperationsControllerBatchLogStopPath = v.object({
5360
6573
  tenant_slug: v.string(),
5361
6574
  workflow_slug: v.string(),
5362
6575
  id: v.pipe(v.string(), v.uuid())
5363
6576
  });
6577
+
5364
6578
  /**
5365
6579
  * Batch log with polling stopped
5366
6580
  */
5367
6581
  export const vPlatformApiAgenticWorkflowOperationsControllerBatchLogStopResponse = vBatchLogResponse;
6582
+
5368
6583
  export const vPlatformApiDataActivationClientControllerLogsIndexPath = v.object({
5369
6584
  tenant_slug: v.string(),
5370
6585
  datalake_slug: v.string(),
5371
6586
  slug: v.string()
5372
6587
  });
6588
+
5373
6589
  export const vPlatformApiDataActivationClientControllerLogsIndexQuery = v.object({
5374
6590
  page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
5375
6591
  page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
@@ -5400,64 +6616,79 @@ export const vPlatformApiDataActivationClientControllerLogsIndexQuery = v.object
5400
6616
  value: v.unknown()
5401
6617
  })))
5402
6618
  });
6619
+
5403
6620
  /**
5404
6621
  * DAC log list
5405
6622
  */
5406
6623
  export const vPlatformApiDataActivationClientControllerLogsIndexResponse = vDataActivationClientLogListResponse;
6624
+
5407
6625
  export const vPlatformApiToolControllerDeletePath = v.object({
5408
6626
  tenant_slug: v.string(),
5409
6627
  id: v.pipe(v.string(), v.uuid())
5410
6628
  });
6629
+
5411
6630
  /**
5412
6631
  * No Content
5413
6632
  */
5414
6633
  export const vPlatformApiToolControllerDeleteResponse = v.void();
6634
+
5415
6635
  export const vPlatformApiToolControllerShowPath = v.object({
5416
6636
  tenant_slug: v.string(),
5417
6637
  id: v.pipe(v.string(), v.uuid())
5418
6638
  });
6639
+
5419
6640
  /**
5420
6641
  * Tool
5421
6642
  */
5422
6643
  export const vPlatformApiToolControllerShowResponse = vToolResponse;
6644
+
5423
6645
  /**
5424
6646
  * Full Tool resource (PUT semantics — all fields required)
5425
6647
  */
5426
6648
  export const vPlatformApiToolControllerUpdateBody = vToolRequestWritable;
6649
+
5427
6650
  export const vPlatformApiToolControllerUpdatePath = v.object({
5428
6651
  tenant_slug: v.string(),
5429
6652
  id: v.pipe(v.string(), v.uuid())
5430
6653
  });
6654
+
5431
6655
  /**
5432
6656
  * Tool updated
5433
6657
  */
5434
6658
  export const vPlatformApiToolControllerUpdateResponse = vToolResponse;
6659
+
5435
6660
  export const vPlatformApiAgenticWorkflowControllerMetadataPath = v.object({
5436
6661
  tenant_slug: v.string(),
5437
6662
  datalake_slug: v.string(),
5438
6663
  id: v.pipe(v.string(), v.uuid())
5439
6664
  });
6665
+
5440
6666
  /**
5441
6667
  * Markdown document with variable pipeline
5442
6668
  */
5443
6669
  export const vPlatformApiAgenticWorkflowControllerMetadataResponse = v.string();
6670
+
5444
6671
  /**
5445
6672
  * API is healthy
5446
6673
  */
5447
6674
  export const vPlatformApiPingControllerPingResponse = vPingResponse;
6675
+
5448
6676
  export const vPlatformApiConnectedAppMgmtControllerSyncRoutesPath = v.object({
5449
6677
  tenant_slug: v.string(),
5450
6678
  datalake_slug: v.string(),
5451
6679
  id: v.pipe(v.string(), v.uuid())
5452
6680
  });
6681
+
5453
6682
  /**
5454
6683
  * Route sync enqueued
5455
6684
  */
5456
6685
  export const vPlatformApiConnectedAppMgmtControllerSyncRoutesResponse = vSyncRoutesResponse;
6686
+
5457
6687
  export const vPlatformApiDataActivationClientControllerIndexPath = v.object({
5458
6688
  tenant_slug: v.string(),
5459
6689
  datalake_slug: v.string()
5460
6690
  });
6691
+
5461
6692
  export const vPlatformApiDataActivationClientControllerIndexQuery = v.object({
5462
6693
  page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
5463
6694
  page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
@@ -5488,60 +6719,98 @@ export const vPlatformApiDataActivationClientControllerIndexQuery = v.object({
5488
6719
  value: v.unknown()
5489
6720
  })))
5490
6721
  });
6722
+
5491
6723
  /**
5492
6724
  * DAC list
5493
6725
  */
5494
6726
  export const vPlatformApiDataActivationClientControllerIndexResponse = vDataActivationClientListResponse;
6727
+
5495
6728
  /**
5496
6729
  * Full DAC resource (all required fields must be present)
5497
6730
  */
5498
6731
  export const vPlatformApiDataActivationClientControllerCreateBody = vDataActivationClientRequestWritable;
6732
+
5499
6733
  export const vPlatformApiDataActivationClientControllerCreatePath = v.object({
5500
6734
  tenant_slug: v.string(),
5501
6735
  datalake_slug: v.string()
5502
6736
  });
6737
+
5503
6738
  /**
5504
6739
  * DAC created
5505
6740
  */
5506
6741
  export const vPlatformApiDataActivationClientControllerCreateResponse = vDataActivationClientResponse;
6742
+
6743
+ /**
6744
+ * User registration
6745
+ */
6746
+ export const vPlatformApiAuthControllerSignUpBody = vSignUpRequestWritable;
6747
+
6748
+ /**
6749
+ * User registered (unconfirmed)
6750
+ */
6751
+ export const vPlatformApiAuthControllerSignUpResponse = vUserResponse;
6752
+
5507
6753
  /**
5508
6754
  * Verification attributes
5509
6755
  */
5510
6756
  export const vPlatformApiMdmControllerVerifyBody = vMdmVerifyRequest;
6757
+
5511
6758
  export const vPlatformApiMdmControllerVerifyPath = v.object({
5512
6759
  tenant_slug: v.string(),
5513
6760
  datalake_slug: v.string()
5514
6761
  });
6762
+
5515
6763
  /**
5516
6764
  * Verification result
5517
6765
  */
5518
6766
  export const vPlatformApiMdmControllerVerifyResponse = vMdmVerifyResponse;
6767
+
5519
6768
  export const vPlatformApiConnectedAppMgmtControllerShowPath = v.object({
5520
6769
  tenant_slug: v.string(),
5521
6770
  datalake_slug: v.string(),
5522
6771
  id: v.pipe(v.string(), v.uuid())
5523
6772
  });
6773
+
5524
6774
  /**
5525
6775
  * Connected app
5526
6776
  */
5527
6777
  export const vPlatformApiConnectedAppMgmtControllerShowResponse = vConnectedAppResponse;
6778
+
5528
6779
  /**
5529
6780
  * Full Connected App resource (PUT semantics — all fields required)
5530
6781
  */
5531
6782
  export const vPlatformApiConnectedAppMgmtControllerUpdateBody = vConnectedAppRequestWritable;
6783
+
5532
6784
  export const vPlatformApiConnectedAppMgmtControllerUpdatePath = v.object({
5533
6785
  tenant_slug: v.string(),
5534
6786
  datalake_slug: v.string(),
5535
6787
  id: v.pipe(v.string(), v.uuid())
5536
6788
  });
6789
+
5537
6790
  /**
5538
6791
  * Connected app updated
5539
6792
  */
5540
6793
  export const vPlatformApiConnectedAppMgmtControllerUpdateResponse = vConnectedAppResponse;
6794
+
6795
+ /**
6796
+ * Invitation attributes
6797
+ */
6798
+ export const vPlatformApiInvitationControllerCreateBody = vInvitationRequest;
6799
+
6800
+ export const vPlatformApiInvitationControllerCreatePath = v.object({
6801
+ tenant_slug: v.string()
6802
+ });
6803
+
6804
+ /**
6805
+ * Invitation created
6806
+ */
6807
+ export const vPlatformApiInvitationControllerCreateResponse = vInvitationResponse;
6808
+
5541
6809
  export const vPlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexPath = v.object({
5542
6810
  tenant_slug: v.string(),
5543
6811
  workflow_slug: v.string()
5544
6812
  });
6813
+
5545
6814
  export const vPlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexQuery = v.object({
5546
6815
  page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
5547
6816
  page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
@@ -5572,26 +6841,52 @@ export const vPlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexQue
5572
6841
  value: v.unknown()
5573
6842
  })))
5574
6843
  });
6844
+
5575
6845
  /**
5576
6846
  * Execution log list
5577
6847
  */
5578
6848
  export const vPlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexResponse = vWorkflowLogListResponse;
6849
+
5579
6850
  export const vPlatformApiDatasetControllerSearchPath = v.object({
5580
6851
  dataset: v.string()
5581
6852
  });
6853
+
5582
6854
  export const vPlatformApiDatasetControllerSearchQuery = v.object({
6855
+ user_search_id: v.optional(v.pipe(v.string(), v.uuid())),
5583
6856
  datalake_id: v.optional(v.pipe(v.string(), v.uuid())),
5584
- page: v.optional(v.pipe(v.number(), v.integer())),
5585
- page_size: v.optional(v.pipe(v.number(), v.integer()))
6857
+ data_access_mode: v.optional(v.picklist(['regulated', 'unregulated'])),
6858
+ outer_pagination: v.optional(vOuterPagination),
6859
+ inner_search: v.optional(vInnerSearch)
5586
6860
  });
6861
+
5587
6862
  /**
5588
6863
  * Dataset search results
5589
6864
  */
5590
6865
  export const vPlatformApiDatasetControllerSearchResponse = vDatasetSearchResponse;
6866
+
6867
+ /**
6868
+ * UserSearch request body
6869
+ */
6870
+ export const vPlatformApiDatasetControllerCreateUserSearchBody = vUserSearchRequest;
6871
+
6872
+ export const vPlatformApiDatasetControllerCreateUserSearchPath = v.object({
6873
+ dataset: v.string()
6874
+ });
6875
+
6876
+ export const vPlatformApiDatasetControllerCreateUserSearchQuery = v.object({
6877
+ datalake_id: v.optional(v.pipe(v.string(), v.uuid()))
6878
+ });
6879
+
6880
+ /**
6881
+ * UserSearch created
6882
+ */
6883
+ export const vPlatformApiDatasetControllerCreateUserSearchResponse = vUserSearchResponse;
6884
+
5591
6885
  export const vPlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexPath = v.object({
5592
6886
  tenant_slug: v.string(),
5593
6887
  workflow_slug: v.string()
5594
6888
  });
6889
+
5595
6890
  export const vPlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexQuery = v.object({
5596
6891
  page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
5597
6892
  page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
@@ -5622,13 +6917,16 @@ export const vPlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexQuery
5622
6917
  value: v.unknown()
5623
6918
  })))
5624
6919
  });
6920
+
5625
6921
  /**
5626
6922
  * Batch log list
5627
6923
  */
5628
6924
  export const vPlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexResponse = vBatchLogListResponse;
6925
+
5629
6926
  export const vPlatformApiActionStatusUpdaterControllerIndexPath = v.object({
5630
6927
  tenant_slug: v.string()
5631
6928
  });
6929
+
5632
6930
  export const vPlatformApiActionStatusUpdaterControllerIndexQuery = v.object({
5633
6931
  page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
5634
6932
  page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
@@ -5659,17 +6957,21 @@ export const vPlatformApiActionStatusUpdaterControllerIndexQuery = v.object({
5659
6957
  value: v.unknown()
5660
6958
  })))
5661
6959
  });
6960
+
5662
6961
  /**
5663
6962
  * Action status updater list
5664
6963
  */
5665
6964
  export const vPlatformApiActionStatusUpdaterControllerIndexResponse = vActionStatusUpdaterListResponse;
6965
+
5666
6966
  /**
5667
6967
  * Full Action Status Updater resource (PUT semantics — all fields required)
5668
6968
  */
5669
6969
  export const vPlatformApiActionStatusUpdaterControllerCreateBody = vActionStatusUpdaterRequestWritable;
6970
+
5670
6971
  export const vPlatformApiActionStatusUpdaterControllerCreatePath = v.object({
5671
6972
  tenant_slug: v.string()
5672
6973
  });
6974
+
5673
6975
  export const vPlatformApiActionStatusUpdaterControllerCreateQuery = v.object({
5674
6976
  page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
5675
6977
  page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
@@ -5700,19 +7002,23 @@ export const vPlatformApiActionStatusUpdaterControllerCreateQuery = v.object({
5700
7002
  value: v.unknown()
5701
7003
  })))
5702
7004
  });
7005
+
5703
7006
  /**
5704
7007
  * Action status updater created
5705
7008
  */
5706
7009
  export const vPlatformApiActionStatusUpdaterControllerCreateResponse = vActionStatusUpdaterResponse;
7010
+
5707
7011
  /**
5708
7012
  * Raw source row
5709
7013
  */
5710
7014
  export const vPlatformApiInteroperabilityContractControllerRunBody = vInteroperabilityRunRequest;
7015
+
5711
7016
  export const vPlatformApiInteroperabilityContractControllerRunPath = v.object({
5712
7017
  tenant_slug: v.string(),
5713
7018
  datalake_slug: v.string(),
5714
7019
  slug: v.string()
5715
7020
  });
7021
+
5716
7022
  export const vPlatformApiInteroperabilityContractControllerRunQuery = v.object({
5717
7023
  page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
5718
7024
  page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
@@ -5743,20 +7049,23 @@ export const vPlatformApiInteroperabilityContractControllerRunQuery = v.object({
5743
7049
  value: v.unknown()
5744
7050
  })))
5745
7051
  });
7052
+
5746
7053
  /**
5747
7054
  * Pipeline output
5748
7055
  */
5749
7056
  export const vPlatformApiInteroperabilityContractControllerRunResponse = vInteroperabilityRunResponse;
7057
+
5750
7058
  /**
5751
7059
  * Page resolution request
5752
7060
  */
5753
7061
  export const vPlatformApiConnectedAppControllerResolvePageBody = vResolvePageRequest;
7062
+
5754
7063
  export const vPlatformApiConnectedAppControllerResolvePagePath = v.object({
5755
7064
  tenant_slug: v.string(),
5756
7065
  slug: v.string()
5757
7066
  });
7067
+
5758
7068
  /**
5759
7069
  * Resolved page details
5760
7070
  */
5761
7071
  export const vPlatformApiConnectedAppControllerResolvePageResponse = vResolvePageResponse;
5762
- //# sourceMappingURL=valibot.gen.js.map