@alvera-ai/platform-sdk 0.7.3 → 0.8.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.
@@ -38,10 +38,10 @@ export const vS3Request = v.record(v.string(), v.unknown());
38
38
  */
39
39
  export const vCloudStorageR2Response = v.pipe(v.object({
40
40
  access_key_id: v.string(),
41
- base_path: v.optional(v.string()),
41
+ base_path: v.nullish(v.string()),
42
42
  bucket: v.string(),
43
43
  endpoint: v.nullish(v.string()),
44
- region: v.optional(v.string())
44
+ region: v.nullish(v.string())
45
45
  }), v.readonly());
46
46
 
47
47
  /**
@@ -54,7 +54,7 @@ export const vConnectedAppRequest = v.object({
54
54
  account_id: v.string(),
55
55
  build_command: v.nullish(v.string()),
56
56
  destination_dir: v.nullish(v.string()),
57
- github_auth_method: v.optional(v.picklist(['github_app', 'pat'])),
57
+ github_auth_method: v.nullish(v.picklist(['github_app', 'pat'])),
58
58
  production_branch: v.nullish(v.string()),
59
59
  project_name: v.nullish(v.pipe(v.string(), v.readonly()))
60
60
  })),
@@ -62,8 +62,8 @@ export const vConnectedAppRequest = v.object({
62
62
  mode: v.picklist(['managed', 'self_hosted']),
63
63
  name: v.string(),
64
64
  repo_url: v.nullish(v.string()),
65
- urls: v.optional(v.array(v.object({
66
- is_primary: v.optional(v.boolean()),
65
+ urls: v.nullish(v.array(v.object({
66
+ is_primary: v.nullish(v.boolean()),
67
67
  label: v.nullish(v.string()),
68
68
  url: v.string()
69
69
  })))
@@ -75,7 +75,7 @@ export const vConnectedAppRequest = v.object({
75
75
  * URL entry for a Connected App Request
76
76
  */
77
77
  export const vConnectedAppUrlRequest = v.object({
78
- is_primary: v.optional(v.boolean()),
78
+ is_primary: v.nullish(v.boolean()),
79
79
  label: v.nullish(v.string()),
80
80
  url: v.string()
81
81
  });
@@ -86,12 +86,12 @@ export const vConnectedAppUrlRequest = v.object({
86
86
  * Action Status Updater — automated polling for delivery status updates. Request
87
87
  */
88
88
  export const vActionStatusUpdaterRequest = v.object({
89
- cron_expression: v.optional(v.string()),
90
- datalake_id: v.optional(v.pipe(v.string(), v.uuid())),
91
- name: v.optional(v.string()),
89
+ cron_expression: v.nullish(v.string()),
90
+ datalake_id: v.nullish(v.pipe(v.string(), v.uuid())),
91
+ name: v.nullish(v.string()),
92
92
  sender_tool_ids: v.nullish(v.array(v.pipe(v.string(), v.uuid()))),
93
- updater_tool_id: v.optional(v.pipe(v.string(), v.uuid())),
94
- updater_type: v.optional(v.picklist(['cloud_watch', 'restapi']))
93
+ updater_tool_id: v.nullish(v.pipe(v.string(), v.uuid())),
94
+ updater_type: v.nullish(v.picklist(['cloud_watch', 'restapi']))
95
95
  });
96
96
 
97
97
  /**
@@ -179,34 +179,34 @@ export const vConnectedAppResponse = v.pipe(v.object({
179
179
  account_id: v.string(),
180
180
  build_command: v.nullish(v.string()),
181
181
  destination_dir: v.nullish(v.string()),
182
- github_auth_method: v.optional(v.picklist(['github_app', 'pat'])),
182
+ github_auth_method: v.nullish(v.picklist(['github_app', 'pat'])),
183
183
  production_branch: v.nullish(v.string()),
184
184
  project_name: v.nullish(v.pipe(v.string(), v.readonly()))
185
185
  })),
186
186
  description: v.nullish(v.string()),
187
187
  error: v.nullish(v.pipe(v.string(), v.readonly())),
188
- id: v.optional(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
189
- inserted_at: v.optional(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly())),
188
+ id: v.nullish(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
189
+ inserted_at: v.nullish(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly())),
190
190
  last_synced_at: v.nullish(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly())),
191
191
  mode: v.picklist(['managed', 'self_hosted']),
192
192
  name: v.string(),
193
193
  repo_url: v.nullish(v.string()),
194
- routes: v.optional(v.pipe(v.array(v.object({
194
+ routes: v.nullish(v.pipe(v.array(v.object({
195
195
  description: v.nullish(v.string()),
196
196
  name: v.string(),
197
197
  path: v.string()
198
198
  })), v.readonly())),
199
- slug: v.optional(v.pipe(v.string(), v.readonly())),
200
- status: v.optional(v.pipe(v.picklist([
199
+ slug: v.nullish(v.pipe(v.string(), v.readonly())),
200
+ status: v.nullish(v.pipe(v.picklist([
201
201
  'pending',
202
202
  'deploying',
203
203
  'deployed',
204
204
  'synced',
205
205
  'error'
206
206
  ]), v.readonly())),
207
- updated_at: v.optional(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly())),
208
- urls: v.optional(v.array(v.object({
209
- is_primary: v.optional(v.boolean()),
207
+ updated_at: v.nullish(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly())),
208
+ urls: v.nullish(v.array(v.object({
209
+ is_primary: v.nullish(v.boolean()),
210
210
  label: v.nullish(v.string()),
211
211
  url: v.string()
212
212
  })))
@@ -244,8 +244,8 @@ export const vTenantRequest = v.object({
244
244
  * Generic Table — custom or system dataset table with column definitions.
245
245
  */
246
246
  export const vGenericTableResponse = v.pipe(v.object({
247
- columns: v.optional(v.array(v.unknown())),
248
- data_domain: v.optional(v.picklist([
247
+ columns: v.nullish(v.array(v.unknown())),
248
+ data_domain: v.nullish(v.picklist([
249
249
  'healthcare',
250
250
  'core_banking',
251
251
  'payment_risk',
@@ -253,21 +253,21 @@ export const vGenericTableResponse = v.pipe(v.object({
253
253
  'service_commerce',
254
254
  'trading'
255
255
  ])),
256
- datalake_id: v.optional(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
257
- description: v.optional(v.string()),
258
- id: v.optional(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
259
- inserted_at: v.optional(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly())),
260
- name: v.optional(v.pipe(v.string(), v.readonly())),
261
- status: v.optional(v.pipe(v.picklist([
256
+ datalake_id: v.nullish(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
257
+ description: v.nullish(v.string()),
258
+ id: v.nullish(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
259
+ inserted_at: v.nullish(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly())),
260
+ name: v.nullish(v.pipe(v.string(), v.readonly())),
261
+ status: v.nullish(v.pipe(v.picklist([
262
262
  'new',
263
263
  'stale',
264
264
  'processing',
265
265
  'deployed'
266
266
  ]), v.readonly())),
267
- tenant_id: v.optional(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
268
- title: v.optional(v.string()),
269
- type: v.optional(v.pipe(v.picklist(['custom', 'system']), v.readonly())),
270
- updated_at: v.optional(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly()))
267
+ tenant_id: v.nullish(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
268
+ title: v.nullish(v.string()),
269
+ type: v.nullish(v.pipe(v.picklist(['custom', 'system']), v.readonly())),
270
+ updated_at: v.nullish(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly()))
271
271
  }), v.readonly());
272
272
 
273
273
  /**
@@ -296,8 +296,8 @@ export const vIngestFileRequest = v.object({
296
296
  * Response from executing a workflow action
297
297
  */
298
298
  export const vExecuteActionResponse = v.object({
299
- scheduled_count: v.optional(v.pipe(v.number(), v.integer())),
300
- status: v.optional(v.picklist([
299
+ scheduled_count: v.nullish(v.pipe(v.number(), v.integer())),
300
+ status: v.nullish(v.picklist([
301
301
  'pending',
302
302
  'completed',
303
303
  'filtered',
@@ -323,10 +323,10 @@ export const vRunWorkflowResponse = v.object({
323
323
  * 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.
324
324
  */
325
325
  export const vInnerSearch = v.strictObject({
326
- global_search: v.optional(v.string()),
327
- order_direction: v.optional(v.picklist(['asc', 'desc'])),
328
- page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1)), 1),
329
- page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100)), 20)
326
+ global_search: v.nullish(v.string()),
327
+ order_direction: v.nullish(v.picklist(['asc', 'desc'])),
328
+ page: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1)), 1),
329
+ page_size: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100)), 20)
330
330
  });
331
331
 
332
332
  /**
@@ -373,8 +373,8 @@ export const vApiKeyResponse = v.pipe(v.object({
373
373
  */
374
374
  export const vCloudStorageAwsRequest = v.object({
375
375
  access_key_id: v.nullish(v.string()),
376
- auth_method: v.optional(v.picklist(['access_key', 'iam_role'])),
377
- base_path: v.optional(v.string()),
376
+ auth_method: v.nullish(v.picklist(['access_key', 'iam_role'])),
377
+ base_path: v.nullish(v.string()),
378
378
  bucket: v.string(),
379
379
  endpoint: v.nullish(v.string()),
380
380
  region: v.string()
@@ -386,8 +386,8 @@ export const vCloudStorageAwsRequest = v.object({
386
386
  * Email tool configuration — SES, Mailgun, SendGrid, or SMTP provider plus base Liquid templates.
387
387
  */
388
388
  export const vEmailResponse = v.pipe(v.object({
389
- access_key_id: v.optional(v.string()),
390
- domain: v.optional(v.string()),
389
+ access_key_id: v.nullish(v.string()),
390
+ domain: v.nullish(v.string()),
391
391
  from_email: v.pipe(v.string(), v.email()),
392
392
  from_name: v.nullish(v.string()),
393
393
  provider: v.picklist([
@@ -396,11 +396,11 @@ export const vEmailResponse = v.pipe(v.object({
396
396
  'sendgrid',
397
397
  'smtp'
398
398
  ]),
399
- region: v.optional(v.string()),
399
+ region: v.nullish(v.string()),
400
400
  reply_to: v.nullish(v.string()),
401
- smtp_host: v.optional(v.string()),
402
- smtp_port: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(65535))),
403
- smtp_username: v.optional(v.string())
401
+ smtp_host: v.nullish(v.string()),
402
+ smtp_port: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(65535))),
403
+ smtp_username: v.nullish(v.string())
404
404
  }), v.readonly());
405
405
 
406
406
  /**
@@ -432,7 +432,7 @@ export const vPaginationMeta = v.object({
432
432
  * REST API tool configuration with OpenAPI-compliant authentication (API key, basic, bearer, OAuth2, OIDC) plus base Liquid templates. Request
433
433
  */
434
434
  export const vRestapiRequest = v.object({
435
- api_key_location: v.optional(v.picklist(['header', 'query'])),
435
+ api_key_location: v.nullish(v.picklist(['header', 'query'])),
436
436
  api_key_name: v.nullish(v.string()),
437
437
  auth_method: v.picklist([
438
438
  'none',
@@ -444,7 +444,7 @@ export const vRestapiRequest = v.object({
444
444
  ]),
445
445
  base_url: v.string(),
446
446
  oauth2_client_id: v.nullish(v.string()),
447
- oauth2_grant_type: v.optional(v.picklist(['client_credentials', 'authorization_code'])),
447
+ oauth2_grant_type: v.nullish(v.picklist(['client_credentials', 'authorization_code'])),
448
448
  oauth2_scope: v.nullish(v.string()),
449
449
  oauth2_token_ttl: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1))),
450
450
  oauth2_token_url: v.nullish(v.string()),
@@ -490,7 +490,7 @@ export const vTemplateConfigRequest = v.object({
490
490
  */
491
491
  export const vSmsCallRequest = v.object({
492
492
  body: vTemplateConfigRequest,
493
- sms_type: v.optional(v.picklist(['transactional', 'promotional']), 'transactional'),
493
+ sms_type: v.nullish(v.picklist(['transactional', 'promotional']), 'transactional'),
494
494
  to: vTemplateConfigRequest
495
495
  });
496
496
 
@@ -500,13 +500,13 @@ export const vSmsCallRequest = v.object({
500
500
  * Data Activation Client — binds a (datalake, data_source, tool) triple with a polymorphic `tool_call` config describing how to fetch data from the external system, plus optional cron schedule, row-level filter, downstream triggers, and interop contracts for row-level transformation. Request
501
501
  */
502
502
  export const vDataActivationClientRequest = v.object({
503
- cron_expressions: v.optional(v.array(v.string()), []),
503
+ cron_expressions: v.nullish(v.array(v.string()), []),
504
504
  data_source_id: v.pipe(v.string(), v.uuid()),
505
505
  description: v.nullish(v.string()),
506
- downstream_connection_ids: v.optional(v.array(v.pipe(v.string(), v.uuid())), []),
507
- filter_config: v.optional(vTemplateConfigRequest),
508
- interoperability_contract_ids: v.optional(v.array(v.pipe(v.string(), v.uuid())), []),
509
- loop_over: v.optional(v.array(v.picklist([
506
+ downstream_connection_ids: v.nullish(v.array(v.pipe(v.string(), v.uuid())), []),
507
+ filter_config: v.nullish(vTemplateConfigRequest),
508
+ interoperability_contract_ids: v.nullish(v.array(v.pipe(v.string(), v.uuid())), []),
509
+ loop_over: v.nullish(v.array(v.picklist([
510
510
  'services',
511
511
  'locations',
512
512
  'providers'
@@ -524,7 +524,7 @@ export const vDataActivationClientRequest = v.object({
524
524
  export const vSqsResponse = v.pipe(v.object({
525
525
  access_key_id: v.nullish(v.string()),
526
526
  auth_method: v.picklist(['access_key', 'iam_role']),
527
- fifo: v.optional(v.boolean()),
527
+ fifo: v.nullish(v.boolean()),
528
528
  queue_name: v.nullish(v.string()),
529
529
  queue_url: v.string(),
530
530
  region: v.string()
@@ -553,7 +553,7 @@ export const vContextDatasetRequest = v.object({
553
553
  dataset_type: v.string(),
554
554
  generic_table_id: v.nullish(v.pipe(v.string(), v.uuid())),
555
555
  limit: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1))),
556
- position: v.optional(v.pipe(v.number(), v.integer()), 0),
556
+ position: v.nullish(v.pipe(v.number(), v.integer()), 0),
557
557
  where_clause: v.nullish(v.string())
558
558
  });
559
559
 
@@ -608,7 +608,7 @@ export const vSqlDatabaseResponse = v.pipe(v.object({
608
608
  * REST API call descriptor — HTTP method, path, body, params, and pagination context template. Reused across ActionStatusUpdater polling, data activation clients, tool protocols, OAuth token fetching, and chat completion. Request
609
609
  */
610
610
  export const vRestCallRequest = v.object({
611
- body: v.optional(vTemplateConfigRequest),
611
+ body: v.nullish(vTemplateConfigRequest),
612
612
  method: v.picklist([
613
613
  'head',
614
614
  'get',
@@ -618,7 +618,7 @@ export const vRestCallRequest = v.object({
618
618
  'patch'
619
619
  ]),
620
620
  pagination_context_template: vTemplateConfigRequest,
621
- params: v.optional(vTemplateConfigRequest),
621
+ params: v.nullish(vTemplateConfigRequest),
622
622
  path: vTemplateConfigRequest
623
623
  });
624
624
 
@@ -650,20 +650,20 @@ export const vInteroperabilityContractRequest = v.object({
650
650
  description: v.nullish(v.string()),
651
651
  filter_template: v.nullish(v.string()),
652
652
  generic_table_id: v.nullish(v.pipe(v.string(), v.uuid())),
653
- id: v.optional(v.pipe(v.string(), v.uuid())),
654
- inserted_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
655
- mdm_input_config: v.optional(vTemplateConfigRequest),
653
+ id: v.nullish(v.pipe(v.string(), v.uuid())),
654
+ inserted_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
655
+ mdm_input_config: v.nullish(vTemplateConfigRequest),
656
656
  name: v.string(),
657
657
  resource_type: v.string(),
658
- slug: v.optional(v.string()),
658
+ slug: v.nullish(v.string()),
659
659
  template_config: vTemplateConfigRequest,
660
- type: v.optional(v.picklist([
660
+ type: v.nullish(v.picklist([
661
661
  'system',
662
662
  'custom',
663
663
  'identity',
664
664
  'null'
665
665
  ])),
666
- updated_at: v.optional(v.pipe(v.string(), v.isoTimestamp()))
666
+ updated_at: v.nullish(v.pipe(v.string(), v.isoTimestamp()))
667
667
  });
668
668
 
669
669
  /**
@@ -717,8 +717,8 @@ export const vDataActivationClientSharePointExcelCallResponse = v.intersect([vSh
717
717
  * Outer page over the cached search_results table — chunks of up to 1 000 dataset IDs.
718
718
  */
719
719
  export const vOuterPagination = v.strictObject({
720
- page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1)), 1),
721
- page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(1000)), 1000)
720
+ page: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1)), 1),
721
+ page_size: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(1000)), 1000)
722
722
  });
723
723
 
724
724
  /**
@@ -740,7 +740,7 @@ export const vIngestFileResponse = v.object({
740
740
  export const vSqsRequest = v.object({
741
741
  access_key_id: v.nullish(v.string()),
742
742
  auth_method: v.picklist(['access_key', 'iam_role']),
743
- fifo: v.optional(v.boolean()),
743
+ fifo: v.nullish(v.boolean()),
744
744
  queue_name: v.nullish(v.string()),
745
745
  queue_url: v.string(),
746
746
  region: v.string()
@@ -805,8 +805,8 @@ export const vConnectedAppRouteResponse = v.pipe(v.object({
805
805
  * Request body for bulk workflow execution via SQL WHERE clause
806
806
  */
807
807
  export const vRunWorkflowRequest = v.object({
808
- manual_override: v.optional(v.boolean(), false),
809
- mode: v.optional(v.picklist(['live', 'dry_run']), 'live'),
808
+ manual_override: v.nullish(v.boolean(), false),
809
+ mode: v.nullish(v.picklist(['live', 'dry_run']), 'live'),
810
810
  sql_where_clause: v.string()
811
811
  });
812
812
 
@@ -947,8 +947,8 @@ export const vToolSftpResponse = v.intersect([vSftpResponse, v.object({
947
947
  */
948
948
  export const vCloudStorageAwsResponse = v.pipe(v.object({
949
949
  access_key_id: v.nullish(v.string()),
950
- auth_method: v.optional(v.picklist(['access_key', 'iam_role'])),
951
- base_path: v.optional(v.string()),
950
+ auth_method: v.nullish(v.picklist(['access_key', 'iam_role'])),
951
+ base_path: v.nullish(v.string()),
952
952
  bucket: v.string(),
953
953
  endpoint: v.nullish(v.string()),
954
954
  region: v.string()
@@ -1043,9 +1043,9 @@ export const vSharePointRequest = v.object({
1043
1043
  */
1044
1044
  export const vDataSourceRequest = v.object({
1045
1045
  description: v.nullish(v.string()),
1046
- id: v.optional(v.pipe(v.string(), v.uuid())),
1046
+ id: v.nullish(v.pipe(v.string(), v.uuid())),
1047
1047
  image_url: v.nullish(v.string()),
1048
- inserted_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
1048
+ inserted_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
1049
1049
  is_default: v.boolean(),
1050
1050
  name: v.string(),
1051
1051
  status: v.picklist([
@@ -1053,7 +1053,7 @@ export const vDataSourceRequest = v.object({
1053
1053
  'active',
1054
1054
  'inactive'
1055
1055
  ]),
1056
- updated_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
1056
+ updated_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
1057
1057
  uri: v.string()
1058
1058
  });
1059
1059
 
@@ -1064,10 +1064,10 @@ export const vDataSourceRequest = v.object({
1064
1064
  */
1065
1065
  export const vCloudStorageR2Request = v.object({
1066
1066
  access_key_id: v.string(),
1067
- base_path: v.optional(v.string()),
1067
+ base_path: v.nullish(v.string()),
1068
1068
  bucket: v.string(),
1069
1069
  endpoint: v.nullish(v.string()),
1070
- region: v.optional(v.string())
1070
+ region: v.nullish(v.string())
1071
1071
  });
1072
1072
 
1073
1073
  /**
@@ -1104,7 +1104,7 @@ export const vInvitationRequest = v.object({
1104
1104
  * URL entry for a Connected App
1105
1105
  */
1106
1106
  export const vConnectedAppUrlResponse = v.pipe(v.object({
1107
- is_primary: v.optional(v.boolean()),
1107
+ is_primary: v.nullish(v.boolean()),
1108
1108
  label: v.nullish(v.string()),
1109
1109
  url: v.string()
1110
1110
  }), v.readonly());
@@ -1136,7 +1136,7 @@ export const vToolCloudWatchLogGroupRequest = v.intersect([vCloudWatchLogGroupRe
1136
1136
  * AWS Lambda invocation descriptor — Liquid-templated payload + timeout. Request
1137
1137
  */
1138
1138
  export const vAwsLambdaCallRequest = v.object({
1139
- timeout_ms: v.optional(v.pipe(v.number(), v.integer()))
1139
+ timeout_ms: v.nullish(v.pipe(v.number(), v.integer()))
1140
1140
  });
1141
1141
 
1142
1142
  /**
@@ -1168,12 +1168,12 @@ export const vDataActivationClientAwsLambdaCallRequest = v.intersect([vAwsLambda
1168
1168
  export const vBatchLogResponse = v.pipe(v.object({
1169
1169
  batch_id: v.string(),
1170
1170
  completed_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
1171
- completed_wels: v.optional(v.pipe(v.number(), v.integer())),
1172
- datalake_id: v.optional(v.pipe(v.string(), v.uuid())),
1173
- expected_events: v.optional(v.pipe(v.number(), v.integer())),
1174
- failed_wels: v.optional(v.pipe(v.number(), v.integer())),
1175
- id: v.optional(v.pipe(v.string(), v.uuid())),
1176
- inserted_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
1171
+ completed_wels: v.nullish(v.pipe(v.number(), v.integer())),
1172
+ datalake_id: v.nullish(v.pipe(v.string(), v.uuid())),
1173
+ expected_events: v.nullish(v.pipe(v.number(), v.integer())),
1174
+ failed_wels: v.nullish(v.pipe(v.number(), v.integer())),
1175
+ id: v.nullish(v.pipe(v.string(), v.uuid())),
1176
+ inserted_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
1177
1177
  last_refreshed_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
1178
1178
  started_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
1179
1179
  status: v.picklist([
@@ -1182,9 +1182,9 @@ export const vBatchLogResponse = v.pipe(v.object({
1182
1182
  'partial',
1183
1183
  'failed'
1184
1184
  ]),
1185
- tenant_id: v.optional(v.pipe(v.string(), v.uuid())),
1186
- total_wels: v.optional(v.pipe(v.number(), v.integer())),
1187
- workflow_id: v.optional(v.pipe(v.string(), v.uuid()))
1185
+ tenant_id: v.nullish(v.pipe(v.string(), v.uuid())),
1186
+ total_wels: v.nullish(v.pipe(v.number(), v.integer())),
1187
+ workflow_id: v.nullish(v.pipe(v.string(), v.uuid()))
1188
1188
  }), v.readonly());
1189
1189
 
1190
1190
  /**
@@ -1287,8 +1287,8 @@ export const vUpdatePageResponse = v.object({
1287
1287
  * Generic Table — custom or system dataset table with column definitions. Request
1288
1288
  */
1289
1289
  export const vGenericTableRequest = v.object({
1290
- columns: v.optional(v.array(v.unknown())),
1291
- data_domain: v.optional(v.picklist([
1290
+ columns: v.nullish(v.array(v.unknown())),
1291
+ data_domain: v.nullish(v.picklist([
1292
1292
  'healthcare',
1293
1293
  'core_banking',
1294
1294
  'payment_risk',
@@ -1296,8 +1296,8 @@ export const vGenericTableRequest = v.object({
1296
1296
  'service_commerce',
1297
1297
  'trading'
1298
1298
  ])),
1299
- description: v.optional(v.string()),
1300
- title: v.optional(v.string())
1299
+ description: v.nullish(v.string()),
1300
+ title: v.nullish(v.string())
1301
1301
  });
1302
1302
 
1303
1303
  /**
@@ -1378,8 +1378,8 @@ export const vConnectedAppListResponse = v.object({
1378
1378
  * Email tool configuration — SES, Mailgun, SendGrid, or SMTP provider plus base Liquid templates. Request
1379
1379
  */
1380
1380
  export const vEmailRequest = v.object({
1381
- access_key_id: v.optional(v.string()),
1382
- domain: v.optional(v.string()),
1381
+ access_key_id: v.nullish(v.string()),
1382
+ domain: v.nullish(v.string()),
1383
1383
  from_email: v.pipe(v.string(), v.email()),
1384
1384
  from_name: v.nullish(v.string()),
1385
1385
  provider: v.picklist([
@@ -1388,11 +1388,11 @@ export const vEmailRequest = v.object({
1388
1388
  'sendgrid',
1389
1389
  'smtp'
1390
1390
  ]),
1391
- region: v.optional(v.string()),
1391
+ region: v.nullish(v.string()),
1392
1392
  reply_to: v.nullish(v.string()),
1393
- smtp_host: v.optional(v.string()),
1394
- smtp_port: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(65535))),
1395
- smtp_username: v.optional(v.string())
1393
+ smtp_host: v.nullish(v.string()),
1394
+ smtp_port: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(65535))),
1395
+ smtp_username: v.nullish(v.string())
1396
1396
  });
1397
1397
 
1398
1398
  /**
@@ -1408,7 +1408,7 @@ export const vToolEmailRequest = v.intersect([vEmailRequest, v.object({
1408
1408
  * REST API tool configuration with OpenAPI-compliant authentication (API key, basic, bearer, OAuth2, OIDC) plus base Liquid templates.
1409
1409
  */
1410
1410
  export const vRestapiResponse = v.pipe(v.object({
1411
- api_key_location: v.optional(v.picklist(['header', 'query'])),
1411
+ api_key_location: v.nullish(v.picklist(['header', 'query'])),
1412
1412
  api_key_name: v.nullish(v.string()),
1413
1413
  auth_method: v.picklist([
1414
1414
  'none',
@@ -1420,7 +1420,7 @@ export const vRestapiResponse = v.pipe(v.object({
1420
1420
  ]),
1421
1421
  base_url: v.string(),
1422
1422
  oauth2_client_id: v.nullish(v.string()),
1423
- oauth2_grant_type: v.optional(v.picklist(['client_credentials', 'authorization_code'])),
1423
+ oauth2_grant_type: v.nullish(v.picklist(['client_credentials', 'authorization_code'])),
1424
1424
  oauth2_scope: v.nullish(v.string()),
1425
1425
  oauth2_token_ttl: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1))),
1426
1426
  oauth2_token_url: v.nullish(v.string()),
@@ -1495,15 +1495,15 @@ export const vAiAgentRequest = v.object({
1495
1495
  data_access: v.picklist(['regulated', 'unregulated']),
1496
1496
  description: v.nullish(v.string()),
1497
1497
  enabled: v.boolean(),
1498
- id: v.optional(v.pipe(v.string(), v.uuid())),
1499
- inserted_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
1498
+ id: v.nullish(v.pipe(v.string(), v.uuid())),
1499
+ inserted_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
1500
1500
  max_tokens: v.pipe(v.number(), v.integer()),
1501
1501
  model: v.string(),
1502
1502
  name: v.string(),
1503
- slug: v.optional(v.string()),
1503
+ slug: v.nullish(v.string()),
1504
1504
  temperature: v.number(),
1505
1505
  tool_id: v.pipe(v.string(), v.uuid()),
1506
- updated_at: v.optional(v.pipe(v.string(), v.isoTimestamp()))
1506
+ updated_at: v.nullish(v.pipe(v.string(), v.isoTimestamp()))
1507
1507
  });
1508
1508
 
1509
1509
  /**
@@ -1529,7 +1529,7 @@ export const vDataActivationClientRestCallRequest = v.intersect([vRestCallReques
1529
1529
  * AWS Lambda invocation descriptor — Liquid-templated payload + timeout.
1530
1530
  */
1531
1531
  export const vAwsLambdaCallResponse = v.pipe(v.object({
1532
- timeout_ms: v.optional(v.pipe(v.number(), v.integer()))
1532
+ timeout_ms: v.nullish(v.pipe(v.number(), v.integer()))
1533
1533
  }), v.readonly());
1534
1534
 
1535
1535
  /**
@@ -1572,7 +1572,7 @@ export const vActionRequest = v.object({
1572
1572
  connected_app_route: v.nullish(v.string()),
1573
1573
  decision_key: v.string(),
1574
1574
  idempotency_template: v.string(),
1575
- position: v.optional(v.pipe(v.number(), v.integer()), 0),
1575
+ position: v.nullish(v.pipe(v.number(), v.integer()), 0),
1576
1576
  runtime_filter: v.nullish(v.string()),
1577
1577
  tool_id: v.pipe(v.string(), v.uuid()),
1578
1578
  trigger_template: v.string()
@@ -1584,11 +1584,11 @@ export const vActionRequest = v.object({
1584
1584
  * Request body for resolving a connected app page from a short URL token
1585
1585
  */
1586
1586
  export const vResolvePageRequest = v.object({
1587
- country: v.optional(v.string()),
1588
- ip: v.optional(v.string()),
1589
- metadata: v.optional(v.record(v.string(), v.unknown())),
1587
+ country: v.nullish(v.string()),
1588
+ ip: v.nullish(v.string()),
1589
+ metadata: v.nullish(v.record(v.string(), v.unknown())),
1590
1590
  short_path: v.string(),
1591
- user_agent: v.optional(v.string())
1591
+ user_agent: v.nullish(v.string())
1592
1592
  });
1593
1593
 
1594
1594
  /**
@@ -1623,14 +1623,14 @@ export const vToolSqsRequest = v.intersect([vSqsRequest, v.object({
1623
1623
  */
1624
1624
  export const vAwsLambdaRequest = v.object({
1625
1625
  access_key_id: v.nullish(v.string()),
1626
- auth_method: v.optional(v.picklist([
1626
+ auth_method: v.nullish(v.picklist([
1627
1627
  'access_key',
1628
1628
  'iam_role',
1629
1629
  'cloudformation'
1630
1630
  ])),
1631
- env_vars: v.optional(v.array(v.unknown())),
1631
+ env_vars: v.nullish(v.array(v.unknown())),
1632
1632
  function_arn: v.nullish(v.string()),
1633
- secrets: v.optional(v.array(v.unknown())),
1633
+ secrets: v.nullish(v.array(v.unknown())),
1634
1634
  ssm_config_key: v.nullish(v.string()),
1635
1635
  type: v.picklist(['managed', 'external'])
1636
1636
  });
@@ -1649,9 +1649,9 @@ export const vToolAwsLambdaRequest = v.intersect([vAwsLambdaRequest, v.object({
1649
1649
  */
1650
1650
  export const vToolRequest = v.object({
1651
1651
  data_source_id: v.nullish(v.pipe(v.string(), v.uuid())),
1652
- datalake_id: v.optional(v.pipe(v.string(), v.uuid())),
1652
+ datalake_id: v.nullish(v.pipe(v.string(), v.uuid())),
1653
1653
  description: v.nullish(v.string()),
1654
- intent: v.optional(v.picklist([
1654
+ intent: v.nullish(v.picklist([
1655
1655
  'sms',
1656
1656
  'email',
1657
1657
  'export',
@@ -1661,8 +1661,8 @@ export const vToolRequest = v.object({
1661
1661
  'chat_completion',
1662
1662
  'context_extraction'
1663
1663
  ])),
1664
- name: v.optional(v.string()),
1665
- status: v.optional(v.picklist([
1664
+ name: v.nullish(v.string()),
1665
+ status: v.nullish(v.picklist([
1666
1666
  'draft',
1667
1667
  'active',
1668
1668
  'inactive',
@@ -1712,22 +1712,22 @@ export const vDownloadLinkRequest = v.object({
1712
1712
  * Declarative execution spec binding a `(datalake, resource_type)` pair to the ingestion pipeline: filter → transform → mdm_input → resolve → upsert.
1713
1713
  */
1714
1714
  export const vInteroperabilityContractResponse = v.pipe(v.object({
1715
- datalake_id: v.optional(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
1715
+ datalake_id: v.nullish(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
1716
1716
  description: v.nullish(v.string()),
1717
1717
  filter_template: v.nullish(v.string()),
1718
1718
  generic_table_id: v.nullish(v.pipe(v.string(), v.uuid())),
1719
- id: v.optional(v.pipe(v.string(), v.uuid())),
1720
- inserted_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
1719
+ id: v.nullish(v.pipe(v.string(), v.uuid())),
1720
+ inserted_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
1721
1721
  name: v.string(),
1722
1722
  resource_type: v.string(),
1723
- slug: v.optional(v.string()),
1724
- type: v.optional(v.picklist([
1723
+ slug: v.nullish(v.string()),
1724
+ type: v.nullish(v.picklist([
1725
1725
  'system',
1726
1726
  'custom',
1727
1727
  'identity',
1728
1728
  'null'
1729
1729
  ])),
1730
- updated_at: v.optional(v.pipe(v.string(), v.isoTimestamp()))
1730
+ updated_at: v.nullish(v.pipe(v.string(), v.isoTimestamp()))
1731
1731
  }), v.readonly());
1732
1732
 
1733
1733
  /**
@@ -1767,10 +1767,10 @@ export const vDataActivationClientManualUploadCallRequest = v.intersect([vManual
1767
1767
  * Request body for MDM subject identity verification
1768
1768
  */
1769
1769
  export const vMdmVerifyRequest = v.object({
1770
- birth_date: v.optional(v.pipe(v.string(), v.isoDate())),
1771
- family_name: v.optional(v.string()),
1772
- given_name: v.optional(v.string()),
1773
- identifiers: v.optional(v.array(v.object({
1770
+ birth_date: v.nullish(v.pipe(v.string(), v.isoDate())),
1771
+ family_name: v.nullish(v.string()),
1772
+ given_name: v.nullish(v.string()),
1773
+ identifiers: v.nullish(v.array(v.object({
1774
1774
  system: v.string(),
1775
1775
  value: v.string()
1776
1776
  }))),
@@ -1828,7 +1828,7 @@ export const vResolvePageResponse = v.object({
1828
1828
  * Error response
1829
1829
  */
1830
1830
  export const vErrorResponse = v.object({
1831
- errors: v.optional(v.object({}))
1831
+ errors: v.nullish(v.object({}))
1832
1832
  });
1833
1833
 
1834
1834
  /**
@@ -1890,7 +1890,7 @@ export const vManualToolInvocationEmailCallResponse = v.intersect([vEmailCallRes
1890
1890
  * REST API call descriptor — HTTP method, path, body, params, and pagination context template. Reused across ActionStatusUpdater polling, data activation clients, tool protocols, OAuth token fetching, and chat completion.
1891
1891
  */
1892
1892
  export const vRestCallResponse = v.pipe(v.object({
1893
- body: v.optional(vTemplateConfigResponse),
1893
+ body: v.nullish(vTemplateConfigResponse),
1894
1894
  method: v.picklist([
1895
1895
  'head',
1896
1896
  'get',
@@ -1900,7 +1900,7 @@ export const vRestCallResponse = v.pipe(v.object({
1900
1900
  'patch'
1901
1901
  ]),
1902
1902
  pagination_context_template: vTemplateConfigResponse,
1903
- params: v.optional(vTemplateConfigResponse),
1903
+ params: v.nullish(vTemplateConfigResponse),
1904
1904
  path: vTemplateConfigResponse
1905
1905
  }), v.readonly());
1906
1906
 
@@ -1939,7 +1939,7 @@ export const vDataActivationClientRestCallResponse = v.intersect([vRestCallRespo
1939
1939
  */
1940
1940
  export const vSmsCallResponse = v.pipe(v.object({
1941
1941
  body: vTemplateConfigResponse,
1942
- sms_type: v.optional(v.picklist(['transactional', 'promotional']), 'transactional'),
1942
+ sms_type: v.nullish(v.picklist(['transactional', 'promotional']), 'transactional'),
1943
1943
  to: vTemplateConfigResponse
1944
1944
  }), v.readonly());
1945
1945
 
@@ -1975,8 +1975,8 @@ export const vMdmNotVerified = v.object({
1975
1975
  export const vExecuteActionRequest = v.object({
1976
1976
  dataset_id: v.pipe(v.string(), v.uuid()),
1977
1977
  decision_key: v.string(),
1978
- manual_override: v.optional(v.boolean(), false),
1979
- mode: v.optional(v.picklist(['live', 'dry_run']), 'live')
1978
+ manual_override: v.nullish(v.boolean(), false),
1979
+ mode: v.nullish(v.picklist(['live', 'dry_run']), 'live')
1980
1980
  });
1981
1981
 
1982
1982
  /**
@@ -2023,10 +2023,10 @@ export const vActionResponse = v.pipe(v.object({
2023
2023
  connected_app_metadata_template: v.nullish(v.string()),
2024
2024
  connected_app_route: v.nullish(v.string()),
2025
2025
  decision_key: v.string(),
2026
- id: v.optional(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
2026
+ id: v.nullish(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
2027
2027
  idempotency_template: v.string(),
2028
- inserted_at: v.optional(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly())),
2029
- position: v.optional(v.pipe(v.number(), v.integer()), 0),
2028
+ inserted_at: v.nullish(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly())),
2029
+ position: v.nullish(v.pipe(v.number(), v.integer()), 0),
2030
2030
  runtime_filter: v.nullish(v.string()),
2031
2031
  tool_call: v.union([
2032
2032
  v.intersect([v.object({
@@ -2056,8 +2056,8 @@ export const vActionResponse = v.pipe(v.object({
2056
2056
  ]),
2057
2057
  tool_id: v.pipe(v.string(), v.uuid()),
2058
2058
  trigger_template: v.string(),
2059
- updated_at: v.optional(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly())),
2060
- workflow_id: v.optional(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly()))
2059
+ updated_at: v.nullish(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly())),
2060
+ workflow_id: v.nullish(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly()))
2061
2061
  }), v.readonly());
2062
2062
 
2063
2063
  /**
@@ -2067,20 +2067,20 @@ export const vActionResponse = v.pipe(v.object({
2067
2067
  */
2068
2068
  export const vAwsLambdaResponse = v.pipe(v.object({
2069
2069
  access_key_id: v.nullish(v.string()),
2070
- auth_method: v.optional(v.picklist([
2070
+ auth_method: v.nullish(v.picklist([
2071
2071
  'access_key',
2072
2072
  'iam_role',
2073
2073
  'cloudformation'
2074
2074
  ])),
2075
- env_vars: v.optional(v.array(v.unknown())),
2075
+ env_vars: v.nullish(v.array(v.unknown())),
2076
2076
  error: v.nullish(v.pipe(v.string(), v.readonly())),
2077
2077
  function_arn: v.nullish(v.string()),
2078
- secrets: v.optional(v.array(v.unknown())),
2078
+ secrets: v.nullish(v.array(v.unknown())),
2079
2079
  secrets_manager_secret_arn: v.nullish(v.pipe(v.string(), v.readonly())),
2080
2080
  ssm_config_key: v.nullish(v.string()),
2081
2081
  stack_id: v.nullish(v.pipe(v.string(), v.readonly())),
2082
2082
  stack_name: v.nullish(v.pipe(v.string(), v.readonly())),
2083
- stack_status: v.optional(v.pipe(v.picklist([
2083
+ stack_status: v.nullish(v.pipe(v.picklist([
2084
2084
  'create_in_progress',
2085
2085
  'create_complete',
2086
2086
  'create_failed',
@@ -2128,21 +2128,21 @@ export const vIngestRequest = v.object({
2128
2128
  * Action Status Updater — automated polling for delivery status updates.
2129
2129
  */
2130
2130
  export const vActionStatusUpdaterResponse = v.pipe(v.object({
2131
- cron_expression: v.optional(v.string()),
2132
- datalake_id: v.optional(v.pipe(v.string(), v.uuid())),
2133
- id: v.optional(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
2134
- inserted_at: v.optional(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly())),
2135
- name: v.optional(v.string()),
2131
+ cron_expression: v.nullish(v.string()),
2132
+ datalake_id: v.nullish(v.pipe(v.string(), v.uuid())),
2133
+ id: v.nullish(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
2134
+ inserted_at: v.nullish(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly())),
2135
+ name: v.nullish(v.string()),
2136
2136
  sender_tool_ids: v.nullish(v.array(v.pipe(v.string(), v.uuid()))),
2137
- tenant_id: v.optional(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
2138
- updated_at: v.optional(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly())),
2139
- updater_body: v.optional(v.union([v.intersect([v.object({
2137
+ tenant_id: v.nullish(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
2138
+ updated_at: v.nullish(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly())),
2139
+ updater_body: v.nullish(v.union([v.intersect([v.object({
2140
2140
  updater_body_type: v.literal('cloud_watch_request')
2141
2141
  }), vActionStatusUpdaterCloudWatchQueryResponse]), v.intersect([v.object({
2142
2142
  updater_body_type: v.literal('restapi_request')
2143
2143
  }), vActionStatusUpdaterRestCallResponse])])),
2144
- updater_tool_id: v.optional(v.pipe(v.string(), v.uuid())),
2145
- updater_type: v.optional(v.picklist(['cloud_watch', 'restapi']))
2144
+ updater_tool_id: v.nullish(v.pipe(v.string(), v.uuid())),
2145
+ updater_type: v.nullish(v.picklist(['cloud_watch', 'restapi']))
2146
2146
  }), v.readonly());
2147
2147
 
2148
2148
  /**
@@ -2177,23 +2177,23 @@ export const vDataActivationClientS3CallResponse = v.intersect([vS3CallResponse,
2177
2177
  * Data Activation Client — binds a (datalake, data_source, tool) triple with a polymorphic `tool_call` config describing how to fetch data from the external system, plus optional cron schedule, row-level filter, downstream triggers, and interop contracts for row-level transformation.
2178
2178
  */
2179
2179
  export const vDataActivationClientResponse = v.pipe(v.object({
2180
- cron_expressions: v.optional(v.array(v.string()), []),
2180
+ cron_expressions: v.nullish(v.array(v.string()), []),
2181
2181
  data_source_id: v.pipe(v.string(), v.uuid()),
2182
- datalake_id: v.optional(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
2182
+ datalake_id: v.nullish(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
2183
2183
  description: v.nullish(v.string()),
2184
- downstream_connection_ids: v.optional(v.array(v.pipe(v.string(), v.uuid())), []),
2185
- id: v.optional(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
2186
- inserted_at: v.optional(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly())),
2187
- interoperability_contract_ids: v.optional(v.array(v.pipe(v.string(), v.uuid())), []),
2188
- is_default: v.optional(v.pipe(v.boolean(), v.readonly())),
2189
- loop_over: v.optional(v.array(v.picklist([
2184
+ downstream_connection_ids: v.nullish(v.array(v.pipe(v.string(), v.uuid())), []),
2185
+ id: v.nullish(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
2186
+ inserted_at: v.nullish(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly())),
2187
+ interoperability_contract_ids: v.nullish(v.array(v.pipe(v.string(), v.uuid())), []),
2188
+ is_default: v.nullish(v.pipe(v.boolean(), v.readonly())),
2189
+ loop_over: v.nullish(v.array(v.picklist([
2190
2190
  'services',
2191
2191
  'locations',
2192
2192
  'providers'
2193
2193
  ])), []),
2194
2194
  name: v.string(),
2195
2195
  row_filter: v.nullish(v.string()),
2196
- slug: v.optional(v.pipe(v.string(), v.readonly())),
2196
+ slug: v.nullish(v.pipe(v.string(), v.readonly())),
2197
2197
  tool_call: v.union([
2198
2198
  v.intersect([v.object({
2199
2199
  tool_call_type: v.literal('restapi_request')
@@ -2218,7 +2218,7 @@ export const vDataActivationClientResponse = v.pipe(v.object({
2218
2218
  }), vDataActivationClientS3CallResponse])
2219
2219
  ]),
2220
2220
  tool_id: v.pipe(v.string(), v.uuid()),
2221
- updated_at: v.optional(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly()))
2221
+ updated_at: v.nullish(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly()))
2222
2222
  }), v.readonly());
2223
2223
 
2224
2224
  /**
@@ -2230,13 +2230,13 @@ export const vDataActivationClientLogResponse = v.pipe(v.object({
2230
2230
  batch_id: v.pipe(v.string(), v.uuid()),
2231
2231
  client_id: v.pipe(v.pipe(v.string(), v.uuid()), v.readonly()),
2232
2232
  dataset_table: v.string(),
2233
- dataset_updated: v.optional(v.pipe(v.number(), v.integer()), 0),
2234
- id: v.optional(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
2235
- input_files: v.optional(v.array(v.string()), []),
2236
- inserted_at: v.optional(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly())),
2237
- output_files: v.optional(v.pipe(v.array(vDacRawLogFileResponse), v.readonly())),
2238
- rows_ingested: v.optional(v.pipe(v.number(), v.integer()), 0),
2239
- updated_at: v.optional(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly()))
2233
+ dataset_updated: v.nullish(v.pipe(v.number(), v.integer()), 0),
2234
+ id: v.nullish(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
2235
+ input_files: v.nullish(v.array(v.string()), []),
2236
+ inserted_at: v.nullish(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly())),
2237
+ output_files: v.nullish(v.pipe(v.array(vDacRawLogFileResponse), v.readonly())),
2238
+ rows_ingested: v.nullish(v.pipe(v.number(), v.integer()), 0),
2239
+ updated_at: v.nullish(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly()))
2240
2240
  }), v.readonly());
2241
2241
 
2242
2242
  /**
@@ -2282,15 +2282,15 @@ export const vTenantResponse = v.pipe(v.object({
2282
2282
  *
2283
2283
  */
2284
2284
  export const vSessionResponse = v.pipe(v.object({
2285
- api_key: v.optional(vApiKeyResponse),
2285
+ api_key: v.nullish(vApiKeyResponse),
2286
2286
  data_access_mode: v.picklist(['regulated', 'unregulated']),
2287
2287
  expires_at: v.nullish(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly())),
2288
- id: v.optional(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
2289
- role: v.optional(vRoleResponse),
2288
+ id: v.nullish(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
2289
+ role: v.nullish(vRoleResponse),
2290
2290
  session_token: v.nullish(v.pipe(v.string(), v.readonly())),
2291
- tenant: v.optional(vTenantResponse),
2291
+ tenant: v.nullish(vTenantResponse),
2292
2292
  type: v.pipe(v.picklist(['user', 'api']), v.readonly()),
2293
- user: v.optional(vUserResponse)
2293
+ user: v.nullish(vUserResponse)
2294
2294
  }), v.readonly());
2295
2295
 
2296
2296
  /**
@@ -2320,7 +2320,7 @@ export const vDatalakeResponse = v.pipe(v.object({
2320
2320
  timezone: v.nullable(v.string()),
2321
2321
  regulated_data_db_reader_auth_method: v.picklist(['password', 'iam_role']),
2322
2322
  regulated_data_db_writer_host: v.string(),
2323
- inserted_at: v.optional(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly())),
2323
+ inserted_at: v.nullish(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly())),
2324
2324
  regulated_data_db_writer_auth_method: v.picklist(['password', 'iam_role']),
2325
2325
  regulated_data_db_writer_schema: v.string(),
2326
2326
  regulated_data_db_writer_enable_ssl: v.boolean(),
@@ -2332,17 +2332,17 @@ export const vDatalakeResponse = v.pipe(v.object({
2332
2332
  regulated_data_db_reader_enable_ssl: v.boolean(),
2333
2333
  unregulated_db_reader_host: v.string(),
2334
2334
  unregulated_db_reader_port: v.pipe(v.number(), v.integer()),
2335
- status: v.optional(v.pipe(v.picklist([
2335
+ status: v.nullish(v.pipe(v.picklist([
2336
2336
  'new',
2337
2337
  'processing',
2338
2338
  'ready'
2339
2339
  ]), v.readonly())),
2340
- updated_at: v.optional(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly())),
2340
+ updated_at: v.nullish(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly())),
2341
2341
  pool_size: v.nullable(v.pipe(v.number(), v.integer())),
2342
2342
  description: v.nullish(v.string()),
2343
2343
  name: v.string(),
2344
- id: v.optional(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
2345
- tenant: v.optional(vTenantResponse),
2344
+ id: v.nullish(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
2345
+ tenant: v.nullish(vTenantResponse),
2346
2346
  unregulated_db_writer_auth_method: v.picklist(['password', 'iam_role']),
2347
2347
  unregulated_db_reader_name: v.string(),
2348
2348
  regulated_data_db_writer_name: v.string(),
@@ -2356,7 +2356,7 @@ export const vDatalakeResponse = v.pipe(v.object({
2356
2356
  regulated_data_db_reader_name: v.string(),
2357
2357
  regulated_data_db_reader_host: v.string(),
2358
2358
  unregulated_db_reader_auth_method: v.picklist(['password', 'iam_role']),
2359
- slug: v.optional(v.string())
2359
+ slug: v.nullish(v.string())
2360
2360
  }), v.readonly());
2361
2361
 
2362
2362
  /**
@@ -2365,11 +2365,11 @@ export const vDatalakeResponse = v.pipe(v.object({
2365
2365
  * Data source — connection to a third-party system or API
2366
2366
  */
2367
2367
  export const vDataSourceResponse = v.pipe(v.object({
2368
- datalake: v.optional(vDatalakeResponse),
2368
+ datalake: v.nullish(vDatalakeResponse),
2369
2369
  description: v.nullish(v.string()),
2370
- id: v.optional(v.pipe(v.string(), v.uuid())),
2370
+ id: v.nullish(v.pipe(v.string(), v.uuid())),
2371
2371
  image_url: v.nullish(v.string()),
2372
- inserted_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
2372
+ inserted_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
2373
2373
  is_default: v.boolean(),
2374
2374
  name: v.string(),
2375
2375
  status: v.picklist([
@@ -2377,7 +2377,7 @@ export const vDataSourceResponse = v.pipe(v.object({
2377
2377
  'active',
2378
2378
  'inactive'
2379
2379
  ]),
2380
- updated_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
2380
+ updated_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
2381
2381
  uri: v.string()
2382
2382
  }), v.readonly());
2383
2383
 
@@ -2408,13 +2408,13 @@ export const vDataSourceListResponse = v.object({
2408
2408
  */
2409
2409
  export const vInvitationResponse = v.pipe(v.object({
2410
2410
  email: v.pipe(v.string(), v.email()),
2411
- id: v.optional(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
2411
+ id: v.nullish(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
2412
2412
  role: v.picklist([
2413
2413
  'member',
2414
2414
  'researcher',
2415
2415
  'admin'
2416
2416
  ]),
2417
- tenant: v.optional(vTenantResponse)
2417
+ tenant: v.nullish(vTenantResponse)
2418
2418
  }), v.readonly());
2419
2419
 
2420
2420
  /**
@@ -2519,7 +2519,7 @@ export const vToolCloudWatchLogGroupResponse = v.intersect([vCloudWatchLogGroupR
2519
2519
  * Tool — a configurable capability reference for external services.
2520
2520
  */
2521
2521
  export const vToolResponse = v.pipe(v.object({
2522
- body: v.optional(v.union([
2522
+ body: v.nullish(v.union([
2523
2523
  v.intersect([v.object({
2524
2524
  tool_body_type: v.literal('email')
2525
2525
  }), vToolEmailResponse]),
@@ -2555,11 +2555,11 @@ export const vToolResponse = v.pipe(v.object({
2555
2555
  }), vToolManualUploadResponse])
2556
2556
  ])),
2557
2557
  data_source_id: v.nullish(v.pipe(v.string(), v.uuid())),
2558
- datalake_id: v.optional(v.pipe(v.string(), v.uuid())),
2558
+ datalake_id: v.nullish(v.pipe(v.string(), v.uuid())),
2559
2559
  description: v.nullish(v.string()),
2560
- id: v.optional(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
2561
- inserted_at: v.optional(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly())),
2562
- intent: v.optional(v.picklist([
2560
+ id: v.nullish(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
2561
+ inserted_at: v.nullish(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly())),
2562
+ intent: v.nullish(v.picklist([
2563
2563
  'sms',
2564
2564
  'email',
2565
2565
  'export',
@@ -2569,15 +2569,15 @@ export const vToolResponse = v.pipe(v.object({
2569
2569
  'chat_completion',
2570
2570
  'context_extraction'
2571
2571
  ])),
2572
- name: v.optional(v.string()),
2573
- status: v.optional(v.picklist([
2572
+ name: v.nullish(v.string()),
2573
+ status: v.nullish(v.picklist([
2574
2574
  'draft',
2575
2575
  'active',
2576
2576
  'inactive',
2577
2577
  'error',
2578
2578
  'marked_for_deletion'
2579
2579
  ])),
2580
- updated_at: v.optional(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly()))
2580
+ updated_at: v.nullish(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly()))
2581
2581
  }), v.readonly());
2582
2582
 
2583
2583
  /**
@@ -2587,20 +2587,20 @@ export const vToolResponse = v.pipe(v.object({
2587
2587
  */
2588
2588
  export const vAiAgentResponse = v.pipe(v.object({
2589
2589
  data_access: v.picklist(['regulated', 'unregulated']),
2590
- datalake: v.optional(vDatalakeResponse),
2590
+ datalake: v.nullish(vDatalakeResponse),
2591
2591
  description: v.nullish(v.string()),
2592
2592
  enabled: v.boolean(),
2593
- id: v.optional(v.pipe(v.string(), v.uuid())),
2594
- inserted_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
2593
+ id: v.nullish(v.pipe(v.string(), v.uuid())),
2594
+ inserted_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
2595
2595
  max_tokens: v.pipe(v.number(), v.integer()),
2596
2596
  model: v.string(),
2597
2597
  name: v.string(),
2598
- slug: v.optional(v.string()),
2598
+ slug: v.nullish(v.string()),
2599
2599
  temperature: v.number(),
2600
- tenant: v.optional(vTenantResponse),
2601
- tool: v.optional(vToolResponse),
2600
+ tenant: v.nullish(vTenantResponse),
2601
+ tool: v.nullish(vToolResponse),
2602
2602
  tool_id: v.pipe(v.string(), v.uuid()),
2603
- updated_at: v.optional(v.pipe(v.string(), v.isoTimestamp()))
2603
+ updated_at: v.nullish(v.pipe(v.string(), v.isoTimestamp()))
2604
2604
  }), v.readonly());
2605
2605
 
2606
2606
  /**
@@ -2632,16 +2632,16 @@ export const vMinimalAiAgentResponse = v.pipe(v.object({
2632
2632
  data_access: v.picklist(['regulated', 'unregulated']),
2633
2633
  description: v.nullish(v.string()),
2634
2634
  enabled: v.boolean(),
2635
- id: v.optional(v.pipe(v.string(), v.uuid())),
2636
- inserted_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
2635
+ id: v.nullish(v.pipe(v.string(), v.uuid())),
2636
+ inserted_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
2637
2637
  max_tokens: v.pipe(v.number(), v.integer()),
2638
2638
  model: v.string(),
2639
2639
  name: v.string(),
2640
- slug: v.optional(v.string()),
2640
+ slug: v.nullish(v.string()),
2641
2641
  temperature: v.number(),
2642
- tool: v.optional(vToolResponse),
2642
+ tool: v.nullish(vToolResponse),
2643
2643
  tool_id: v.pipe(v.string(), v.uuid()),
2644
- updated_at: v.optional(v.pipe(v.string(), v.isoTimestamp()))
2644
+ updated_at: v.nullish(v.pipe(v.string(), v.isoTimestamp()))
2645
2645
  }), v.readonly());
2646
2646
 
2647
2647
  /**
@@ -2650,11 +2650,11 @@ export const vMinimalAiAgentResponse = v.pipe(v.object({
2650
2650
  * Join entry linking an AI agent to a workflow at a specific execution position in the enrichment pipeline.
2651
2651
  */
2652
2652
  export const vWorkflowAiAgentResponse = v.pipe(v.object({
2653
- ai_agent: v.optional(vMinimalAiAgentResponse),
2653
+ ai_agent: v.nullish(vMinimalAiAgentResponse),
2654
2654
  ai_agent_id: v.pipe(v.string(), v.uuid()),
2655
- inserted_at: v.optional(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly())),
2655
+ inserted_at: v.nullish(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly())),
2656
2656
  position: v.pipe(v.number(), v.integer()),
2657
- updated_at: v.optional(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly()))
2657
+ updated_at: v.nullish(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly()))
2658
2658
  }), v.readonly());
2659
2659
 
2660
2660
  /**
@@ -2664,14 +2664,14 @@ export const vWorkflowAiAgentResponse = v.pipe(v.object({
2664
2664
  */
2665
2665
  export const vManualToolInvocationResponse = v.pipe(v.object({
2666
2666
  error_message: v.nullish(v.pipe(v.string(), v.readonly())),
2667
- id: v.optional(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
2668
- inserted_at: v.optional(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly())),
2669
- status: v.optional(v.pipe(v.picklist([
2667
+ id: v.nullish(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
2668
+ inserted_at: v.nullish(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly())),
2669
+ status: v.nullish(v.pipe(v.picklist([
2670
2670
  'pending',
2671
2671
  'success',
2672
2672
  'error'
2673
2673
  ]), v.readonly())),
2674
- tool_call: v.optional(v.union([
2674
+ tool_call: v.nullish(v.union([
2675
2675
  v.intersect([v.object({
2676
2676
  tool_call_type: v.literal('sms_request')
2677
2677
  }), vManualToolInvocationSmsCallResponse]),
@@ -2685,7 +2685,7 @@ export const vManualToolInvocationResponse = v.pipe(v.object({
2685
2685
  tool_call_type: v.literal('aws_lambda_request')
2686
2686
  }), vManualToolInvocationAwsLambdaCallResponse])
2687
2687
  ])),
2688
- updated_at: v.optional(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly()))
2688
+ updated_at: v.nullish(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly()))
2689
2689
  }), v.readonly());
2690
2690
 
2691
2691
  /**
@@ -2725,7 +2725,7 @@ export const vMembershipResponse = v.pipe(v.object({
2725
2725
  'researcher',
2726
2726
  'admin'
2727
2727
  ]), v.readonly()),
2728
- tenant: v.optional(vTenantResponse)
2728
+ tenant: v.nullish(vTenantResponse)
2729
2729
  }), v.readonly());
2730
2730
 
2731
2731
  /**
@@ -2789,7 +2789,7 @@ export const vDatalakeRequest = v.object({
2789
2789
  regulated_data_db_reader_name: v.string(),
2790
2790
  regulated_data_db_reader_host: v.string(),
2791
2791
  unregulated_db_reader_auth_method: v.picklist(['password', 'iam_role']),
2792
- slug: v.optional(v.string())
2792
+ slug: v.nullish(v.string())
2793
2793
  });
2794
2794
 
2795
2795
  /**
@@ -2800,13 +2800,13 @@ export const vDatalakeRequest = v.object({
2800
2800
  export const vContextDatasetResponse = v.pipe(v.object({
2801
2801
  dataset_type: v.string(),
2802
2802
  generic_table_id: v.nullish(v.pipe(v.string(), v.uuid())),
2803
- id: v.optional(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
2804
- inserted_at: v.optional(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly())),
2803
+ id: v.nullish(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
2804
+ inserted_at: v.nullish(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly())),
2805
2805
  limit: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1))),
2806
- position: v.optional(v.pipe(v.number(), v.integer()), 0),
2807
- updated_at: v.optional(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly())),
2806
+ position: v.nullish(v.pipe(v.number(), v.integer()), 0),
2807
+ updated_at: v.nullish(v.pipe(v.pipe(v.string(), v.isoTimestamp()), v.readonly())),
2808
2808
  where_clause: v.nullish(v.string()),
2809
- workflow_id: v.optional(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly()))
2809
+ workflow_id: v.nullish(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly()))
2810
2810
  }), v.readonly());
2811
2811
 
2812
2812
  /**
@@ -2815,17 +2815,17 @@ export const vContextDatasetResponse = v.pipe(v.object({
2815
2815
  * Agentic Workflow — event-driven automation pipeline Request
2816
2816
  */
2817
2817
  export const vAgenticWorkflowRequest = v.object({
2818
- actions: v.optional(v.array(vActionResponse)),
2819
- context_datasets: v.optional(v.array(vContextDatasetResponse)),
2818
+ actions: v.nullish(v.array(vActionResponse)),
2819
+ context_datasets: v.nullish(v.array(vContextDatasetResponse)),
2820
2820
  dataset_type: v.string(),
2821
2821
  description: v.string(),
2822
2822
  generic_table_id: v.nullish(v.pipe(v.string(), v.uuid())),
2823
- id: v.optional(v.pipe(v.string(), v.uuid())),
2824
- inserted_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
2823
+ id: v.nullish(v.pipe(v.string(), v.uuid())),
2824
+ inserted_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
2825
2825
  name: v.string(),
2826
- skip_mdm_resolution: v.optional(v.boolean()),
2826
+ skip_mdm_resolution: v.nullish(v.boolean()),
2827
2827
  status: v.picklist(['live', 'draft']),
2828
- updated_at: v.optional(v.pipe(v.string(), v.isoTimestamp()))
2828
+ updated_at: v.nullish(v.pipe(v.string(), v.isoTimestamp()))
2829
2829
  });
2830
2830
 
2831
2831
  /**
@@ -2834,20 +2834,20 @@ export const vAgenticWorkflowRequest = v.object({
2834
2834
  * Agentic Workflow — event-driven automation pipeline
2835
2835
  */
2836
2836
  export const vAgenticWorkflowResponse = v.pipe(v.object({
2837
- actions: v.optional(v.array(vActionResponse)),
2838
- context_datasets: v.optional(v.array(vContextDatasetResponse)),
2839
- datalake: v.optional(vDatalakeResponse),
2837
+ actions: v.nullish(v.array(vActionResponse)),
2838
+ context_datasets: v.nullish(v.array(vContextDatasetResponse)),
2839
+ datalake: v.nullish(vDatalakeResponse),
2840
2840
  dataset_type: v.string(),
2841
2841
  description: v.string(),
2842
2842
  generic_table_id: v.nullish(v.pipe(v.string(), v.uuid())),
2843
- id: v.optional(v.pipe(v.string(), v.uuid())),
2844
- inserted_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
2843
+ id: v.nullish(v.pipe(v.string(), v.uuid())),
2844
+ inserted_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
2845
2845
  name: v.string(),
2846
- skip_mdm_resolution: v.optional(v.boolean()),
2847
- slug: v.optional(v.pipe(v.string(), v.readonly())),
2846
+ skip_mdm_resolution: v.nullish(v.boolean()),
2847
+ slug: v.nullish(v.pipe(v.string(), v.readonly())),
2848
2848
  status: v.picklist(['live', 'draft']),
2849
- updated_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
2850
- workflow_ai_agents: v.optional(v.pipe(v.array(vWorkflowAiAgentResponse), v.readonly()))
2849
+ updated_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
2850
+ workflow_ai_agents: v.nullish(v.pipe(v.array(vWorkflowAiAgentResponse), v.readonly()))
2851
2851
  }), v.readonly());
2852
2852
 
2853
2853
  /**
@@ -2894,11 +2894,11 @@ export const vActionExecutionLogResponse = v.pipe(v.object({
2894
2894
  error_message: v.nullish(v.string()),
2895
2895
  external_id: v.nullish(v.string()),
2896
2896
  id: v.pipe(v.string(), v.uuid()),
2897
- inserted_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
2897
+ inserted_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
2898
2898
  message_body: v.nullish(v.pipe(v.string(), v.readonly())),
2899
2899
  message_id: v.nullish(v.pipe(v.string(), v.uuid())),
2900
2900
  mode: v.picklist(['live', 'dry_run']),
2901
- retry_count: v.optional(v.pipe(v.number(), v.integer())),
2901
+ retry_count: v.nullish(v.pipe(v.number(), v.integer())),
2902
2902
  runtime_filter_result: v.nullish(v.boolean()),
2903
2903
  scheduled_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
2904
2904
  started_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
@@ -2911,7 +2911,7 @@ export const vActionExecutionLogResponse = v.pipe(v.object({
2911
2911
  'filtered',
2912
2912
  'cancelled'
2913
2913
  ]),
2914
- updated_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
2914
+ updated_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
2915
2915
  workflow_execution_log_id: v.pipe(v.string(), v.uuid()),
2916
2916
  workflow_id: v.pipe(v.string(), v.uuid())
2917
2917
  }), v.readonly());
@@ -2922,19 +2922,19 @@ export const vActionExecutionLogResponse = v.pipe(v.object({
2922
2922
  * Workflow execution log — per-event execution detail
2923
2923
  */
2924
2924
  export const vWorkflowLogResponse = v.pipe(v.object({
2925
- action_execution_logs: v.optional(v.pipe(v.array(vActionExecutionLogResponse), v.readonly())),
2926
- actions_completed: v.optional(v.pipe(v.number(), v.integer())),
2927
- actions_failed: v.optional(v.pipe(v.number(), v.integer())),
2928
- actions_pending: v.optional(v.pipe(v.number(), v.integer())),
2929
- actions_total: v.optional(v.pipe(v.number(), v.integer())),
2925
+ action_execution_logs: v.nullish(v.pipe(v.array(vActionExecutionLogResponse), v.readonly())),
2926
+ actions_completed: v.nullish(v.pipe(v.number(), v.integer())),
2927
+ actions_failed: v.nullish(v.pipe(v.number(), v.integer())),
2928
+ actions_pending: v.nullish(v.pipe(v.number(), v.integer())),
2929
+ actions_total: v.nullish(v.pipe(v.number(), v.integer())),
2930
2930
  batch_id: v.nullish(v.string()),
2931
2931
  completed_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
2932
2932
  context_cloud_storage_key: v.nullish(v.string()),
2933
- datalake_id: v.optional(v.pipe(v.string(), v.uuid())),
2933
+ datalake_id: v.nullish(v.pipe(v.string(), v.uuid())),
2934
2934
  error_message: v.nullish(v.string()),
2935
2935
  filter_result: v.nullish(v.boolean()),
2936
- id: v.optional(v.pipe(v.string(), v.uuid())),
2937
- inserted_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
2936
+ id: v.nullish(v.pipe(v.string(), v.uuid())),
2937
+ inserted_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
2938
2938
  mode: v.picklist(['live', 'dry_run']),
2939
2939
  sampled_event_id: v.nullish(v.pipe(v.string(), v.uuid())),
2940
2940
  started_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
@@ -2948,8 +2948,8 @@ export const vWorkflowLogResponse = v.pipe(v.object({
2948
2948
  ]),
2949
2949
  subject_id: v.nullish(v.pipe(v.string(), v.uuid())),
2950
2950
  subject_type: v.nullish(v.string()),
2951
- tenant_id: v.optional(v.pipe(v.string(), v.uuid())),
2952
- workflow_id: v.optional(v.pipe(v.string(), v.uuid()))
2951
+ tenant_id: v.nullish(v.pipe(v.string(), v.uuid())),
2952
+ workflow_id: v.nullish(v.pipe(v.string(), v.uuid()))
2953
2953
  }), v.readonly());
2954
2954
 
2955
2955
  /**
@@ -2982,11 +2982,11 @@ export const vWorkflowLogListResponse = v.object({
2982
2982
  export const vUserSearchResponse = v.pipe(v.object({
2983
2983
  error_message: v.nullish(v.pipe(v.string(), v.readonly())),
2984
2984
  generic_table_id: v.nullish(v.pipe(v.string(), v.uuid())),
2985
- id: v.optional(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
2986
- resource_type: v.optional(v.pipe(v.string(), v.readonly())),
2985
+ id: v.nullish(v.pipe(v.pipe(v.string(), v.uuid()), v.readonly())),
2986
+ resource_type: v.nullish(v.pipe(v.string(), v.readonly())),
2987
2987
  results_count: v.nullish(v.pipe(v.pipe(v.number(), v.integer()), v.readonly())),
2988
2988
  search_query: v.pipe(v.string(), v.minLength(1)),
2989
- status: v.optional(v.pipe(v.picklist([
2989
+ status: v.nullish(v.pipe(v.picklist([
2990
2990
  'new',
2991
2991
  'in_progress',
2992
2992
  'completed',
@@ -3010,7 +3010,7 @@ export const vDatasetSearchResponse = v.object({
3010
3010
  data: v.array(v.record(v.string(), v.unknown())),
3011
3011
  meta: v.object({
3012
3012
  flop: vPaginationMeta,
3013
- sql: v.optional(v.union([vPaginationMeta, v.unknown()]))
3013
+ sql: v.nullish(v.union([vPaginationMeta, v.unknown()]))
3014
3014
  }),
3015
3015
  user_search: vUserSearchResponse
3016
3016
  });
@@ -3046,10 +3046,10 @@ export const vSqlDatabaseRequestWritable = v.object({
3046
3046
  export const vConnectedAppRequestWritable = v.object({
3047
3047
  cloudflare_pages_config: v.nullish(v.object({
3048
3048
  account_id: v.string(),
3049
- api_token: v.optional(v.string()),
3049
+ api_token: v.nullish(v.string()),
3050
3050
  build_command: v.nullish(v.string()),
3051
3051
  destination_dir: v.nullish(v.string()),
3052
- github_auth_method: v.optional(v.picklist(['github_app', 'pat'])),
3052
+ github_auth_method: v.nullish(v.picklist(['github_app', 'pat'])),
3053
3053
  github_pat: v.nullish(v.string()),
3054
3054
  production_branch: v.nullish(v.string())
3055
3055
  })),
@@ -3057,8 +3057,8 @@ export const vConnectedAppRequestWritable = v.object({
3057
3057
  mode: v.picklist(['managed', 'self_hosted']),
3058
3058
  name: v.string(),
3059
3059
  repo_url: v.nullish(v.string()),
3060
- urls: v.optional(v.array(v.object({
3061
- is_primary: v.optional(v.boolean()),
3060
+ urls: v.nullish(v.array(v.object({
3061
+ is_primary: v.nullish(v.boolean()),
3062
3062
  label: v.nullish(v.string()),
3063
3063
  url: v.string()
3064
3064
  })))
@@ -3100,10 +3100,10 @@ export const vRoleResponseWritable = v.pipe(v.object({
3100
3100
  export const vConnectedAppResponseWritable = v.pipe(v.object({
3101
3101
  cloudflare_pages_config: v.nullish(v.object({
3102
3102
  account_id: v.string(),
3103
- api_token: v.optional(v.string()),
3103
+ api_token: v.nullish(v.string()),
3104
3104
  build_command: v.nullish(v.string()),
3105
3105
  destination_dir: v.nullish(v.string()),
3106
- github_auth_method: v.optional(v.picklist(['github_app', 'pat'])),
3106
+ github_auth_method: v.nullish(v.picklist(['github_app', 'pat'])),
3107
3107
  github_pat: v.nullish(v.string()),
3108
3108
  production_branch: v.nullish(v.string())
3109
3109
  })),
@@ -3111,8 +3111,8 @@ export const vConnectedAppResponseWritable = v.pipe(v.object({
3111
3111
  mode: v.picklist(['managed', 'self_hosted']),
3112
3112
  name: v.string(),
3113
3113
  repo_url: v.nullish(v.string()),
3114
- urls: v.optional(v.array(v.object({
3115
- is_primary: v.optional(v.boolean()),
3114
+ urls: v.nullish(v.array(v.object({
3115
+ is_primary: v.nullish(v.boolean()),
3116
3116
  label: v.nullish(v.string()),
3117
3117
  url: v.string()
3118
3118
  })))
@@ -3146,8 +3146,8 @@ export const vCloudflarePagesConfigRequestWritable = v.object({
3146
3146
  * Generic Table — custom or system dataset table with column definitions.
3147
3147
  */
3148
3148
  export const vGenericTableResponseWritable = v.pipe(v.object({
3149
- columns: v.optional(v.array(v.unknown())),
3150
- data_domain: v.optional(v.picklist([
3149
+ columns: v.nullish(v.array(v.unknown())),
3150
+ data_domain: v.nullish(v.picklist([
3151
3151
  'healthcare',
3152
3152
  'core_banking',
3153
3153
  'payment_risk',
@@ -3155,8 +3155,8 @@ export const vGenericTableResponseWritable = v.pipe(v.object({
3155
3155
  'service_commerce',
3156
3156
  'trading'
3157
3157
  ])),
3158
- description: v.optional(v.string()),
3159
- title: v.optional(v.string())
3158
+ description: v.nullish(v.string()),
3159
+ title: v.nullish(v.string())
3160
3160
  }), v.readonly());
3161
3161
 
3162
3162
  /**
@@ -3181,12 +3181,12 @@ export const vSftpRequestWritable = v.object({
3181
3181
  * Data Activation Client — binds a (datalake, data_source, tool) triple with a polymorphic `tool_call` config describing how to fetch data from the external system, plus optional cron schedule, row-level filter, downstream triggers, and interop contracts for row-level transformation.
3182
3182
  */
3183
3183
  export const vDataActivationClientResponseWritable = v.pipe(v.object({
3184
- cron_expressions: v.optional(v.array(v.string()), []),
3184
+ cron_expressions: v.nullish(v.array(v.string()), []),
3185
3185
  data_source_id: v.pipe(v.string(), v.uuid()),
3186
3186
  description: v.nullish(v.string()),
3187
- downstream_connection_ids: v.optional(v.array(v.pipe(v.string(), v.uuid())), []),
3188
- interoperability_contract_ids: v.optional(v.array(v.pipe(v.string(), v.uuid())), []),
3189
- loop_over: v.optional(v.array(v.picklist([
3187
+ downstream_connection_ids: v.nullish(v.array(v.pipe(v.string(), v.uuid())), []),
3188
+ interoperability_contract_ids: v.nullish(v.array(v.pipe(v.string(), v.uuid())), []),
3189
+ loop_over: v.nullish(v.array(v.picklist([
3190
3190
  'services',
3191
3191
  'locations',
3192
3192
  'providers'
@@ -3213,8 +3213,8 @@ export const vApiKeyResponseWritable = v.pipe(v.object({
3213
3213
  */
3214
3214
  export const vCloudStorageAwsRequestWritable = v.object({
3215
3215
  access_key_id: v.nullish(v.string()),
3216
- auth_method: v.optional(v.picklist(['access_key', 'iam_role'])),
3217
- base_path: v.optional(v.string()),
3216
+ auth_method: v.nullish(v.picklist(['access_key', 'iam_role'])),
3217
+ base_path: v.nullish(v.string()),
3218
3218
  bucket: v.string(),
3219
3219
  endpoint: v.nullish(v.string()),
3220
3220
  region: v.string(),
@@ -3227,18 +3227,18 @@ export const vCloudStorageAwsRequestWritable = v.object({
3227
3227
  * Workflow execution log — per-event execution detail
3228
3228
  */
3229
3229
  export const vWorkflowLogResponseWritable = v.pipe(v.object({
3230
- actions_completed: v.optional(v.pipe(v.number(), v.integer())),
3231
- actions_failed: v.optional(v.pipe(v.number(), v.integer())),
3232
- actions_pending: v.optional(v.pipe(v.number(), v.integer())),
3233
- actions_total: v.optional(v.pipe(v.number(), v.integer())),
3230
+ actions_completed: v.nullish(v.pipe(v.number(), v.integer())),
3231
+ actions_failed: v.nullish(v.pipe(v.number(), v.integer())),
3232
+ actions_pending: v.nullish(v.pipe(v.number(), v.integer())),
3233
+ actions_total: v.nullish(v.pipe(v.number(), v.integer())),
3234
3234
  batch_id: v.nullish(v.string()),
3235
3235
  completed_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
3236
3236
  context_cloud_storage_key: v.nullish(v.string()),
3237
- datalake_id: v.optional(v.pipe(v.string(), v.uuid())),
3237
+ datalake_id: v.nullish(v.pipe(v.string(), v.uuid())),
3238
3238
  error_message: v.nullish(v.string()),
3239
3239
  filter_result: v.nullish(v.boolean()),
3240
- id: v.optional(v.pipe(v.string(), v.uuid())),
3241
- inserted_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
3240
+ id: v.nullish(v.pipe(v.string(), v.uuid())),
3241
+ inserted_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
3242
3242
  mode: v.picklist(['live', 'dry_run']),
3243
3243
  sampled_event_id: v.nullish(v.pipe(v.string(), v.uuid())),
3244
3244
  started_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
@@ -3252,8 +3252,8 @@ export const vWorkflowLogResponseWritable = v.pipe(v.object({
3252
3252
  ]),
3253
3253
  subject_id: v.nullish(v.pipe(v.string(), v.uuid())),
3254
3254
  subject_type: v.nullish(v.string()),
3255
- tenant_id: v.optional(v.pipe(v.string(), v.uuid())),
3256
- workflow_id: v.optional(v.pipe(v.string(), v.uuid()))
3255
+ tenant_id: v.nullish(v.pipe(v.string(), v.uuid())),
3256
+ workflow_id: v.nullish(v.pipe(v.string(), v.uuid()))
3257
3257
  }), v.readonly());
3258
3258
 
3259
3259
  /**
@@ -3262,8 +3262,8 @@ export const vWorkflowLogResponseWritable = v.pipe(v.object({
3262
3262
  * Email tool configuration — SES, Mailgun, SendGrid, or SMTP provider plus base Liquid templates.
3263
3263
  */
3264
3264
  export const vEmailResponseWritable = v.pipe(v.object({
3265
- access_key_id: v.optional(v.string()),
3266
- domain: v.optional(v.string()),
3265
+ access_key_id: v.nullish(v.string()),
3266
+ domain: v.nullish(v.string()),
3267
3267
  from_email: v.pipe(v.string(), v.email()),
3268
3268
  from_name: v.nullish(v.string()),
3269
3269
  provider: v.picklist([
@@ -3272,11 +3272,11 @@ export const vEmailResponseWritable = v.pipe(v.object({
3272
3272
  'sendgrid',
3273
3273
  'smtp'
3274
3274
  ]),
3275
- region: v.optional(v.string()),
3275
+ region: v.nullish(v.string()),
3276
3276
  reply_to: v.nullish(v.string()),
3277
- smtp_host: v.optional(v.string()),
3278
- smtp_port: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(65535))),
3279
- smtp_username: v.optional(v.string())
3277
+ smtp_host: v.nullish(v.string()),
3278
+ smtp_port: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(65535))),
3279
+ smtp_username: v.nullish(v.string())
3280
3280
  }), v.readonly());
3281
3281
 
3282
3282
  /**
@@ -3293,7 +3293,7 @@ export const vDataActivationClientSharePointExcelCallResponseWritable = v.inters
3293
3293
  */
3294
3294
  export const vRestapiRequestWritable = v.object({
3295
3295
  api_key: v.nullish(v.string()),
3296
- api_key_location: v.optional(v.picklist(['header', 'query'])),
3296
+ api_key_location: v.nullish(v.picklist(['header', 'query'])),
3297
3297
  api_key_name: v.nullish(v.string()),
3298
3298
  auth_method: v.picklist([
3299
3299
  'none',
@@ -3307,7 +3307,7 @@ export const vRestapiRequestWritable = v.object({
3307
3307
  bearer_token: v.nullish(v.string()),
3308
3308
  oauth2_client_id: v.nullish(v.string()),
3309
3309
  oauth2_client_secret: v.nullish(v.string()),
3310
- oauth2_grant_type: v.optional(v.picklist(['client_credentials', 'authorization_code'])),
3310
+ oauth2_grant_type: v.nullish(v.picklist(['client_credentials', 'authorization_code'])),
3311
3311
  oauth2_scope: v.nullish(v.string()),
3312
3312
  oauth2_token_ttl: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1))),
3313
3313
  oauth2_token_url: v.nullish(v.string()),
@@ -3355,7 +3355,7 @@ export const vTemplateConfigRequestWritable = v.object({
3355
3355
  */
3356
3356
  export const vSmsCallRequestWritable = v.object({
3357
3357
  body: vTemplateConfigRequestWritable,
3358
- sms_type: v.optional(v.picklist(['transactional', 'promotional']), 'transactional'),
3358
+ sms_type: v.nullish(v.picklist(['transactional', 'promotional']), 'transactional'),
3359
3359
  to: vTemplateConfigRequestWritable
3360
3360
  });
3361
3361
 
@@ -3367,7 +3367,7 @@ export const vSmsCallRequestWritable = v.object({
3367
3367
  export const vSqsResponseWritable = v.pipe(v.object({
3368
3368
  access_key_id: v.nullish(v.string()),
3369
3369
  auth_method: v.picklist(['access_key', 'iam_role']),
3370
- fifo: v.optional(v.boolean()),
3370
+ fifo: v.nullish(v.boolean()),
3371
3371
  queue_name: v.nullish(v.string()),
3372
3372
  queue_url: v.string(),
3373
3373
  region: v.string()
@@ -3429,7 +3429,7 @@ export const vSqlDatabaseResponseWritable = v.pipe(v.object({
3429
3429
  * REST API call descriptor — HTTP method, path, body, params, and pagination context template. Reused across ActionStatusUpdater polling, data activation clients, tool protocols, OAuth token fetching, and chat completion. Request
3430
3430
  */
3431
3431
  export const vRestCallRequestWritable = v.object({
3432
- body: v.optional(vTemplateConfigRequestWritable),
3432
+ body: v.nullish(vTemplateConfigRequestWritable),
3433
3433
  method: v.picklist([
3434
3434
  'head',
3435
3435
  'get',
@@ -3439,7 +3439,7 @@ export const vRestCallRequestWritable = v.object({
3439
3439
  'patch'
3440
3440
  ]),
3441
3441
  pagination_context_template: vTemplateConfigRequestWritable,
3442
- params: v.optional(vTemplateConfigRequestWritable),
3442
+ params: v.nullish(vTemplateConfigRequestWritable),
3443
3443
  path: vTemplateConfigRequestWritable
3444
3444
  });
3445
3445
 
@@ -3459,20 +3459,20 @@ export const vInteroperabilityContractRequestWritable = v.object({
3459
3459
  description: v.nullish(v.string()),
3460
3460
  filter_template: v.nullish(v.string()),
3461
3461
  generic_table_id: v.nullish(v.pipe(v.string(), v.uuid())),
3462
- id: v.optional(v.pipe(v.string(), v.uuid())),
3463
- inserted_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
3464
- mdm_input_config: v.optional(vTemplateConfigRequestWritable),
3462
+ id: v.nullish(v.pipe(v.string(), v.uuid())),
3463
+ inserted_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
3464
+ mdm_input_config: v.nullish(vTemplateConfigRequestWritable),
3465
3465
  name: v.string(),
3466
3466
  resource_type: v.string(),
3467
- slug: v.optional(v.string()),
3467
+ slug: v.nullish(v.string()),
3468
3468
  template_config: vTemplateConfigRequestWritable,
3469
- type: v.optional(v.picklist([
3469
+ type: v.nullish(v.picklist([
3470
3470
  'system',
3471
3471
  'custom',
3472
3472
  'identity',
3473
3473
  'null'
3474
3474
  ])),
3475
- updated_at: v.optional(v.pipe(v.string(), v.isoTimestamp()))
3475
+ updated_at: v.nullish(v.pipe(v.string(), v.isoTimestamp()))
3476
3476
  });
3477
3477
 
3478
3478
  /**
@@ -3508,9 +3508,9 @@ export const vSnsResponseWritable = v.pipe(v.object({
3508
3508
  */
3509
3509
  export const vToolResponseWritable = v.pipe(v.object({
3510
3510
  data_source_id: v.nullish(v.pipe(v.string(), v.uuid())),
3511
- datalake_id: v.optional(v.pipe(v.string(), v.uuid())),
3511
+ datalake_id: v.nullish(v.pipe(v.string(), v.uuid())),
3512
3512
  description: v.nullish(v.string()),
3513
- intent: v.optional(v.picklist([
3513
+ intent: v.nullish(v.picklist([
3514
3514
  'sms',
3515
3515
  'email',
3516
3516
  'export',
@@ -3520,8 +3520,8 @@ export const vToolResponseWritable = v.pipe(v.object({
3520
3520
  'chat_completion',
3521
3521
  'context_extraction'
3522
3522
  ])),
3523
- name: v.optional(v.string()),
3524
- status: v.optional(v.picklist([
3523
+ name: v.nullish(v.string()),
3524
+ status: v.nullish(v.picklist([
3525
3525
  'draft',
3526
3526
  'active',
3527
3527
  'inactive',
@@ -3548,7 +3548,7 @@ export const vToolListResponseWritable = v.object({
3548
3548
  export const vSqsRequestWritable = v.object({
3549
3549
  access_key_id: v.nullish(v.string()),
3550
3550
  auth_method: v.picklist(['access_key', 'iam_role']),
3551
- fifo: v.optional(v.boolean()),
3551
+ fifo: v.nullish(v.boolean()),
3552
3552
  queue_name: v.nullish(v.string()),
3553
3553
  queue_url: v.string(),
3554
3554
  region: v.string(),
@@ -3575,17 +3575,17 @@ export const vActionStatusUpdaterCloudWatchQueryRequestWritable = v.intersect([v
3575
3575
  * Action Status Updater — automated polling for delivery status updates. Request
3576
3576
  */
3577
3577
  export const vActionStatusUpdaterRequestWritable = v.object({
3578
- cron_expression: v.optional(v.string()),
3579
- datalake_id: v.optional(v.pipe(v.string(), v.uuid())),
3580
- name: v.optional(v.string()),
3578
+ cron_expression: v.nullish(v.string()),
3579
+ datalake_id: v.nullish(v.pipe(v.string(), v.uuid())),
3580
+ name: v.nullish(v.string()),
3581
3581
  sender_tool_ids: v.nullish(v.array(v.pipe(v.string(), v.uuid()))),
3582
- updater_body: v.optional(v.union([v.intersect([v.object({
3582
+ updater_body: v.nullish(v.union([v.intersect([v.object({
3583
3583
  updater_body_type: v.literal('cloud_watch_request')
3584
3584
  }), vActionStatusUpdaterCloudWatchQueryRequestWritable]), v.intersect([v.object({
3585
3585
  updater_body_type: v.literal('restapi_request')
3586
3586
  }), vActionStatusUpdaterRestCallRequestWritable])])),
3587
- updater_tool_id: v.optional(v.pipe(v.string(), v.uuid())),
3588
- updater_type: v.optional(v.picklist(['cloud_watch', 'restapi']))
3587
+ updater_tool_id: v.nullish(v.pipe(v.string(), v.uuid())),
3588
+ updater_type: v.nullish(v.picklist(['cloud_watch', 'restapi']))
3589
3589
  });
3590
3590
 
3591
3591
  /**
@@ -3730,10 +3730,10 @@ export const vSharePointRequestWritable = v.object({
3730
3730
  */
3731
3731
  export const vCloudStorageR2RequestWritable = v.object({
3732
3732
  access_key_id: v.string(),
3733
- base_path: v.optional(v.string()),
3733
+ base_path: v.nullish(v.string()),
3734
3734
  bucket: v.string(),
3735
3735
  endpoint: v.nullish(v.string()),
3736
- region: v.optional(v.string()),
3736
+ region: v.nullish(v.string()),
3737
3737
  secret_access_key: v.string()
3738
3738
  });
3739
3739
 
@@ -3774,16 +3774,16 @@ export const vMinimalAiAgentResponseWritable = v.pipe(v.object({
3774
3774
  data_access: v.picklist(['regulated', 'unregulated']),
3775
3775
  description: v.nullish(v.string()),
3776
3776
  enabled: v.boolean(),
3777
- id: v.optional(v.pipe(v.string(), v.uuid())),
3778
- inserted_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
3777
+ id: v.nullish(v.pipe(v.string(), v.uuid())),
3778
+ inserted_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
3779
3779
  max_tokens: v.pipe(v.number(), v.integer()),
3780
3780
  model: v.string(),
3781
3781
  name: v.string(),
3782
- slug: v.optional(v.string()),
3782
+ slug: v.nullish(v.string()),
3783
3783
  temperature: v.number(),
3784
- tool: v.optional(vToolResponseWritable),
3784
+ tool: v.nullish(vToolResponseWritable),
3785
3785
  tool_id: v.pipe(v.string(), v.uuid()),
3786
- updated_at: v.optional(v.pipe(v.string(), v.isoTimestamp()))
3786
+ updated_at: v.nullish(v.pipe(v.string(), v.isoTimestamp()))
3787
3787
  }), v.readonly());
3788
3788
 
3789
3789
  /**
@@ -3799,7 +3799,7 @@ export const vToolCloudWatchLogGroupRequestWritable = v.intersect([vCloudWatchLo
3799
3799
  * AWS Lambda invocation descriptor — Liquid-templated payload + timeout. Request
3800
3800
  */
3801
3801
  export const vAwsLambdaCallRequestWritable = v.object({
3802
- timeout_ms: v.optional(v.pipe(v.number(), v.integer()))
3802
+ timeout_ms: v.nullish(v.pipe(v.number(), v.integer()))
3803
3803
  });
3804
3804
 
3805
3805
  /**
@@ -3831,12 +3831,12 @@ export const vDataActivationClientAwsLambdaCallRequestWritable = v.intersect([vA
3831
3831
  export const vBatchLogResponseWritable = v.pipe(v.object({
3832
3832
  batch_id: v.string(),
3833
3833
  completed_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
3834
- completed_wels: v.optional(v.pipe(v.number(), v.integer())),
3835
- datalake_id: v.optional(v.pipe(v.string(), v.uuid())),
3836
- expected_events: v.optional(v.pipe(v.number(), v.integer())),
3837
- failed_wels: v.optional(v.pipe(v.number(), v.integer())),
3838
- id: v.optional(v.pipe(v.string(), v.uuid())),
3839
- inserted_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
3834
+ completed_wels: v.nullish(v.pipe(v.number(), v.integer())),
3835
+ datalake_id: v.nullish(v.pipe(v.string(), v.uuid())),
3836
+ expected_events: v.nullish(v.pipe(v.number(), v.integer())),
3837
+ failed_wels: v.nullish(v.pipe(v.number(), v.integer())),
3838
+ id: v.nullish(v.pipe(v.string(), v.uuid())),
3839
+ inserted_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
3840
3840
  last_refreshed_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
3841
3841
  started_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
3842
3842
  status: v.picklist([
@@ -3845,9 +3845,9 @@ export const vBatchLogResponseWritable = v.pipe(v.object({
3845
3845
  'partial',
3846
3846
  'failed'
3847
3847
  ]),
3848
- tenant_id: v.optional(v.pipe(v.string(), v.uuid())),
3849
- total_wels: v.optional(v.pipe(v.number(), v.integer())),
3850
- workflow_id: v.optional(v.pipe(v.string(), v.uuid()))
3848
+ tenant_id: v.nullish(v.pipe(v.string(), v.uuid())),
3849
+ total_wels: v.nullish(v.pipe(v.number(), v.integer())),
3850
+ workflow_id: v.nullish(v.pipe(v.string(), v.uuid()))
3851
3851
  }), v.readonly());
3852
3852
 
3853
3853
  /**
@@ -3901,8 +3901,8 @@ export const vToolSftpRequestWritable = v.intersect([vSftpRequestWritable, v.obj
3901
3901
  * Generic Table — custom or system dataset table with column definitions. Request
3902
3902
  */
3903
3903
  export const vGenericTableRequestWritable = v.object({
3904
- columns: v.optional(v.array(v.unknown())),
3905
- data_domain: v.optional(v.picklist([
3904
+ columns: v.nullish(v.array(v.unknown())),
3905
+ data_domain: v.nullish(v.picklist([
3906
3906
  'healthcare',
3907
3907
  'core_banking',
3908
3908
  'payment_risk',
@@ -3910,8 +3910,8 @@ export const vGenericTableRequestWritable = v.object({
3910
3910
  'service_commerce',
3911
3911
  'trading'
3912
3912
  ])),
3913
- description: v.optional(v.string()),
3914
- title: v.optional(v.string())
3913
+ description: v.nullish(v.string()),
3914
+ title: v.nullish(v.string())
3915
3915
  });
3916
3916
 
3917
3917
  /**
@@ -3954,7 +3954,7 @@ export const vWorkflowLogListResponseWritable = v.object({
3954
3954
  * Join entry linking an AI agent to a workflow at a specific execution position in the enrichment pipeline.
3955
3955
  */
3956
3956
  export const vWorkflowAiAgentResponseWritable = v.pipe(v.object({
3957
- ai_agent: v.optional(vMinimalAiAgentResponseWritable),
3957
+ ai_agent: v.nullish(vMinimalAiAgentResponseWritable),
3958
3958
  ai_agent_id: v.pipe(v.string(), v.uuid()),
3959
3959
  position: v.pipe(v.number(), v.integer())
3960
3960
  }), v.readonly());
@@ -4009,9 +4009,9 @@ export const vConnectedAppListResponseWritable = v.object({
4009
4009
  * Email tool configuration — SES, Mailgun, SendGrid, or SMTP provider plus base Liquid templates. Request
4010
4010
  */
4011
4011
  export const vEmailRequestWritable = v.object({
4012
- access_key_id: v.optional(v.string()),
4013
- api_key: v.optional(v.string()),
4014
- domain: v.optional(v.string()),
4012
+ access_key_id: v.nullish(v.string()),
4013
+ api_key: v.nullish(v.string()),
4014
+ domain: v.nullish(v.string()),
4015
4015
  from_email: v.pipe(v.string(), v.email()),
4016
4016
  from_name: v.nullish(v.string()),
4017
4017
  provider: v.picklist([
@@ -4020,13 +4020,13 @@ export const vEmailRequestWritable = v.object({
4020
4020
  'sendgrid',
4021
4021
  'smtp'
4022
4022
  ]),
4023
- region: v.optional(v.string()),
4023
+ region: v.nullish(v.string()),
4024
4024
  reply_to: v.nullish(v.string()),
4025
- secret_access_key: v.optional(v.string()),
4026
- smtp_host: v.optional(v.string()),
4027
- smtp_password: v.optional(v.string()),
4028
- smtp_port: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(65535))),
4029
- smtp_username: v.optional(v.string())
4025
+ secret_access_key: v.nullish(v.string()),
4026
+ smtp_host: v.nullish(v.string()),
4027
+ smtp_password: v.nullish(v.string()),
4028
+ smtp_port: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(65535))),
4029
+ smtp_username: v.nullish(v.string())
4030
4030
  });
4031
4031
 
4032
4032
  /**
@@ -4049,7 +4049,7 @@ export const vDataActivationClientS3CallResponseWritable = v.intersect([vS3CallR
4049
4049
  * REST API tool configuration with OpenAPI-compliant authentication (API key, basic, bearer, OAuth2, OIDC) plus base Liquid templates.
4050
4050
  */
4051
4051
  export const vRestapiResponseWritable = v.pipe(v.object({
4052
- api_key_location: v.optional(v.picklist(['header', 'query'])),
4052
+ api_key_location: v.nullish(v.picklist(['header', 'query'])),
4053
4053
  api_key_name: v.nullish(v.string()),
4054
4054
  auth_method: v.picklist([
4055
4055
  'none',
@@ -4061,7 +4061,7 @@ export const vRestapiResponseWritable = v.pipe(v.object({
4061
4061
  ]),
4062
4062
  base_url: v.string(),
4063
4063
  oauth2_client_id: v.nullish(v.string()),
4064
- oauth2_grant_type: v.optional(v.picklist(['client_credentials', 'authorization_code'])),
4064
+ oauth2_grant_type: v.nullish(v.picklist(['client_credentials', 'authorization_code'])),
4065
4065
  oauth2_scope: v.nullish(v.string()),
4066
4066
  oauth2_token_ttl: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1))),
4067
4067
  oauth2_token_url: v.nullish(v.string()),
@@ -4126,15 +4126,15 @@ export const vAiAgentRequestWritable = v.object({
4126
4126
  data_access: v.picklist(['regulated', 'unregulated']),
4127
4127
  description: v.nullish(v.string()),
4128
4128
  enabled: v.boolean(),
4129
- id: v.optional(v.pipe(v.string(), v.uuid())),
4130
- inserted_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
4129
+ id: v.nullish(v.pipe(v.string(), v.uuid())),
4130
+ inserted_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
4131
4131
  max_tokens: v.pipe(v.number(), v.integer()),
4132
4132
  model: v.string(),
4133
4133
  name: v.string(),
4134
- slug: v.optional(v.string()),
4134
+ slug: v.nullish(v.string()),
4135
4135
  temperature: v.number(),
4136
4136
  tool_id: v.pipe(v.string(), v.uuid()),
4137
- updated_at: v.optional(v.pipe(v.string(), v.isoTimestamp()))
4137
+ updated_at: v.nullish(v.pipe(v.string(), v.isoTimestamp()))
4138
4138
  });
4139
4139
 
4140
4140
  /**
@@ -4160,7 +4160,7 @@ export const vDataActivationClientRestCallRequestWritable = v.intersect([vRestCa
4160
4160
  * AWS Lambda invocation descriptor — Liquid-templated payload + timeout.
4161
4161
  */
4162
4162
  export const vAwsLambdaCallResponseWritable = v.pipe(v.object({
4163
- timeout_ms: v.optional(v.pipe(v.number(), v.integer()))
4163
+ timeout_ms: v.nullish(v.pipe(v.number(), v.integer()))
4164
4164
  }), v.readonly());
4165
4165
 
4166
4166
  /**
@@ -4198,15 +4198,15 @@ export const vToolSqsRequestWritable = v.intersect([vSqsRequestWritable, v.objec
4198
4198
  */
4199
4199
  export const vAwsLambdaRequestWritable = v.object({
4200
4200
  access_key_id: v.nullish(v.string()),
4201
- auth_method: v.optional(v.picklist([
4201
+ auth_method: v.nullish(v.picklist([
4202
4202
  'access_key',
4203
4203
  'iam_role',
4204
4204
  'cloudformation'
4205
4205
  ])),
4206
- env_vars: v.optional(v.array(v.unknown())),
4206
+ env_vars: v.nullish(v.array(v.unknown())),
4207
4207
  function_arn: v.nullish(v.string()),
4208
4208
  secret_access_key: v.nullish(v.string()),
4209
- secrets: v.optional(v.array(v.unknown())),
4209
+ secrets: v.nullish(v.array(v.unknown())),
4210
4210
  ssm_config_key: v.nullish(v.string()),
4211
4211
  type: v.picklist(['managed', 'external'])
4212
4212
  });
@@ -4234,18 +4234,18 @@ export const vInteroperabilityContractResponseWritable = v.pipe(v.object({
4234
4234
  description: v.nullish(v.string()),
4235
4235
  filter_template: v.nullish(v.string()),
4236
4236
  generic_table_id: v.nullish(v.pipe(v.string(), v.uuid())),
4237
- id: v.optional(v.pipe(v.string(), v.uuid())),
4238
- inserted_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
4237
+ id: v.nullish(v.pipe(v.string(), v.uuid())),
4238
+ inserted_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
4239
4239
  name: v.string(),
4240
4240
  resource_type: v.string(),
4241
- slug: v.optional(v.string()),
4242
- type: v.optional(v.picklist([
4241
+ slug: v.nullish(v.string()),
4242
+ type: v.nullish(v.picklist([
4243
4243
  'system',
4244
4244
  'custom',
4245
4245
  'identity',
4246
4246
  'null'
4247
4247
  ])),
4248
- updated_at: v.optional(v.pipe(v.string(), v.isoTimestamp()))
4248
+ updated_at: v.nullish(v.pipe(v.string(), v.isoTimestamp()))
4249
4249
  }), v.readonly());
4250
4250
 
4251
4251
  /**
@@ -4277,7 +4277,7 @@ export const vActionResponseWritable = v.pipe(v.object({
4277
4277
  connected_app_route: v.nullish(v.string()),
4278
4278
  decision_key: v.string(),
4279
4279
  idempotency_template: v.string(),
4280
- position: v.optional(v.pipe(v.number(), v.integer()), 0),
4280
+ position: v.nullish(v.pipe(v.number(), v.integer()), 0),
4281
4281
  runtime_filter: v.nullish(v.string()),
4282
4282
  tool_id: v.pipe(v.string(), v.uuid()),
4283
4283
  trigger_template: v.string()
@@ -4330,7 +4330,7 @@ export const vManualToolInvocationEmailCallResponseWritable = v.intersect([vEmai
4330
4330
  * REST API call descriptor — HTTP method, path, body, params, and pagination context template. Reused across ActionStatusUpdater polling, data activation clients, tool protocols, OAuth token fetching, and chat completion.
4331
4331
  */
4332
4332
  export const vRestCallResponseWritable = v.pipe(v.object({
4333
- body: v.optional(vTemplateConfigResponseWritable),
4333
+ body: v.nullish(vTemplateConfigResponseWritable),
4334
4334
  method: v.picklist([
4335
4335
  'head',
4336
4336
  'get',
@@ -4340,7 +4340,7 @@ export const vRestCallResponseWritable = v.pipe(v.object({
4340
4340
  'patch'
4341
4341
  ]),
4342
4342
  pagination_context_template: vTemplateConfigResponseWritable,
4343
- params: v.optional(vTemplateConfigResponseWritable),
4343
+ params: v.nullish(vTemplateConfigResponseWritable),
4344
4344
  path: vTemplateConfigResponseWritable
4345
4345
  }), v.readonly());
4346
4346
 
@@ -4379,7 +4379,7 @@ export const vDataActivationClientRestCallResponseWritable = v.intersect([vRestC
4379
4379
  */
4380
4380
  export const vSmsCallResponseWritable = v.pipe(v.object({
4381
4381
  body: vTemplateConfigResponseWritable,
4382
- sms_type: v.optional(v.picklist(['transactional', 'promotional']), 'transactional'),
4382
+ sms_type: v.nullish(v.picklist(['transactional', 'promotional']), 'transactional'),
4383
4383
  to: vTemplateConfigResponseWritable
4384
4384
  }), v.readonly());
4385
4385
 
@@ -4429,14 +4429,14 @@ export const vActionSharePointExcelCallResponseWritable = v.intersect([vSharePoi
4429
4429
  */
4430
4430
  export const vAwsLambdaResponseWritable = v.pipe(v.object({
4431
4431
  access_key_id: v.nullish(v.string()),
4432
- auth_method: v.optional(v.picklist([
4432
+ auth_method: v.nullish(v.picklist([
4433
4433
  'access_key',
4434
4434
  'iam_role',
4435
4435
  'cloudformation'
4436
4436
  ])),
4437
- env_vars: v.optional(v.array(v.unknown())),
4437
+ env_vars: v.nullish(v.array(v.unknown())),
4438
4438
  function_arn: v.nullish(v.string()),
4439
- secrets: v.optional(v.array(v.unknown())),
4439
+ secrets: v.nullish(v.array(v.unknown())),
4440
4440
  ssm_config_key: v.nullish(v.string()),
4441
4441
  type: v.picklist(['managed', 'external'])
4442
4442
  }), v.readonly());
@@ -4492,13 +4492,13 @@ export const vRunManuallyRequestWritable = v.object({
4492
4492
  * Data Activation Client — binds a (datalake, data_source, tool) triple with a polymorphic `tool_call` config describing how to fetch data from the external system, plus optional cron schedule, row-level filter, downstream triggers, and interop contracts for row-level transformation. Request
4493
4493
  */
4494
4494
  export const vDataActivationClientRequestWritable = v.object({
4495
- cron_expressions: v.optional(v.array(v.string()), []),
4495
+ cron_expressions: v.nullish(v.array(v.string()), []),
4496
4496
  data_source_id: v.pipe(v.string(), v.uuid()),
4497
4497
  description: v.nullish(v.string()),
4498
- downstream_connection_ids: v.optional(v.array(v.pipe(v.string(), v.uuid())), []),
4499
- filter_config: v.optional(vTemplateConfigRequestWritable),
4500
- interoperability_contract_ids: v.optional(v.array(v.pipe(v.string(), v.uuid())), []),
4501
- loop_over: v.optional(v.array(v.picklist([
4498
+ downstream_connection_ids: v.nullish(v.array(v.pipe(v.string(), v.uuid())), []),
4499
+ filter_config: v.nullish(vTemplateConfigRequestWritable),
4500
+ interoperability_contract_ids: v.nullish(v.array(v.pipe(v.string(), v.uuid())), []),
4501
+ loop_over: v.nullish(v.array(v.picklist([
4502
4502
  'services',
4503
4503
  'locations',
4504
4504
  'providers'
@@ -4537,12 +4537,12 @@ export const vDataActivationClientRequestWritable = v.object({
4537
4537
  * Action Status Updater — automated polling for delivery status updates.
4538
4538
  */
4539
4539
  export const vActionStatusUpdaterResponseWritable = v.pipe(v.object({
4540
- cron_expression: v.optional(v.string()),
4541
- datalake_id: v.optional(v.pipe(v.string(), v.uuid())),
4542
- name: v.optional(v.string()),
4540
+ cron_expression: v.nullish(v.string()),
4541
+ datalake_id: v.nullish(v.pipe(v.string(), v.uuid())),
4542
+ name: v.nullish(v.string()),
4543
4543
  sender_tool_ids: v.nullish(v.array(v.pipe(v.string(), v.uuid()))),
4544
- updater_tool_id: v.optional(v.pipe(v.string(), v.uuid())),
4545
- updater_type: v.optional(v.picklist(['cloud_watch', 'restapi']))
4544
+ updater_tool_id: v.nullish(v.pipe(v.string(), v.uuid())),
4545
+ updater_type: v.nullish(v.picklist(['cloud_watch', 'restapi']))
4546
4546
  }), v.readonly());
4547
4547
 
4548
4548
  /**
@@ -4563,9 +4563,9 @@ export const vActionStatusUpdaterListResponseWritable = v.object({
4563
4563
  export const vDataActivationClientLogResponseWritable = v.pipe(v.object({
4564
4564
  batch_id: v.pipe(v.string(), v.uuid()),
4565
4565
  dataset_table: v.string(),
4566
- dataset_updated: v.optional(v.pipe(v.number(), v.integer()), 0),
4567
- input_files: v.optional(v.array(v.string()), []),
4568
- rows_ingested: v.optional(v.pipe(v.number(), v.integer()), 0)
4566
+ dataset_updated: v.nullish(v.pipe(v.number(), v.integer()), 0),
4567
+ input_files: v.nullish(v.array(v.string()), []),
4568
+ rows_ingested: v.nullish(v.pipe(v.number(), v.integer()), 0)
4569
4569
  }), v.readonly());
4570
4570
 
4571
4571
  /**
@@ -4609,11 +4609,11 @@ export const vTenantResponseWritable = v.pipe(v.object({
4609
4609
  *
4610
4610
  */
4611
4611
  export const vSessionResponseWritable = v.pipe(v.object({
4612
- api_key: v.optional(vApiKeyResponseWritable),
4612
+ api_key: v.nullish(vApiKeyResponseWritable),
4613
4613
  data_access_mode: v.picklist(['regulated', 'unregulated']),
4614
- role: v.optional(vRoleResponseWritable),
4615
- tenant: v.optional(vTenantResponseWritable),
4616
- user: v.optional(vUserResponseWritable)
4614
+ role: v.nullish(vRoleResponseWritable),
4615
+ tenant: v.nullish(vTenantResponseWritable),
4616
+ user: v.nullish(vUserResponseWritable)
4617
4617
  }), v.readonly());
4618
4618
 
4619
4619
  /**
@@ -4657,7 +4657,7 @@ export const vDatalakeResponseWritable = v.pipe(v.object({
4657
4657
  pool_size: v.nullable(v.pipe(v.number(), v.integer())),
4658
4658
  description: v.nullish(v.string()),
4659
4659
  name: v.string(),
4660
- tenant: v.optional(vTenantResponseWritable),
4660
+ tenant: v.nullish(vTenantResponseWritable),
4661
4661
  unregulated_db_writer_auth_method: v.picklist(['password', 'iam_role']),
4662
4662
  unregulated_db_reader_name: v.string(),
4663
4663
  regulated_data_db_writer_name: v.string(),
@@ -4671,7 +4671,7 @@ export const vDatalakeResponseWritable = v.pipe(v.object({
4671
4671
  regulated_data_db_reader_name: v.string(),
4672
4672
  regulated_data_db_reader_host: v.string(),
4673
4673
  unregulated_db_reader_auth_method: v.picklist(['password', 'iam_role']),
4674
- slug: v.optional(v.string())
4674
+ slug: v.nullish(v.string())
4675
4675
  }), v.readonly());
4676
4676
 
4677
4677
  /**
@@ -4680,11 +4680,11 @@ export const vDatalakeResponseWritable = v.pipe(v.object({
4680
4680
  * Data source — connection to a third-party system or API
4681
4681
  */
4682
4682
  export const vDataSourceResponseWritable = v.pipe(v.object({
4683
- datalake: v.optional(vDatalakeResponseWritable),
4683
+ datalake: v.nullish(vDatalakeResponseWritable),
4684
4684
  description: v.nullish(v.string()),
4685
- id: v.optional(v.pipe(v.string(), v.uuid())),
4685
+ id: v.nullish(v.pipe(v.string(), v.uuid())),
4686
4686
  image_url: v.nullish(v.string()),
4687
- inserted_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
4687
+ inserted_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
4688
4688
  is_default: v.boolean(),
4689
4689
  name: v.string(),
4690
4690
  status: v.picklist([
@@ -4692,7 +4692,7 @@ export const vDataSourceResponseWritable = v.pipe(v.object({
4692
4692
  'active',
4693
4693
  'inactive'
4694
4694
  ]),
4695
- updated_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
4695
+ updated_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
4696
4696
  uri: v.string()
4697
4697
  }), v.readonly());
4698
4698
 
@@ -4703,20 +4703,20 @@ export const vDataSourceResponseWritable = v.pipe(v.object({
4703
4703
  */
4704
4704
  export const vAiAgentResponseWritable = v.pipe(v.object({
4705
4705
  data_access: v.picklist(['regulated', 'unregulated']),
4706
- datalake: v.optional(vDatalakeResponseWritable),
4706
+ datalake: v.nullish(vDatalakeResponseWritable),
4707
4707
  description: v.nullish(v.string()),
4708
4708
  enabled: v.boolean(),
4709
- id: v.optional(v.pipe(v.string(), v.uuid())),
4710
- inserted_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
4709
+ id: v.nullish(v.pipe(v.string(), v.uuid())),
4710
+ inserted_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
4711
4711
  max_tokens: v.pipe(v.number(), v.integer()),
4712
4712
  model: v.string(),
4713
4713
  name: v.string(),
4714
- slug: v.optional(v.string()),
4714
+ slug: v.nullish(v.string()),
4715
4715
  temperature: v.number(),
4716
- tenant: v.optional(vTenantResponseWritable),
4717
- tool: v.optional(vToolResponseWritable),
4716
+ tenant: v.nullish(vTenantResponseWritable),
4717
+ tool: v.nullish(vToolResponseWritable),
4718
4718
  tool_id: v.pipe(v.string(), v.uuid()),
4719
- updated_at: v.optional(v.pipe(v.string(), v.isoTimestamp()))
4719
+ updated_at: v.nullish(v.pipe(v.string(), v.isoTimestamp()))
4720
4720
  }), v.readonly());
4721
4721
 
4722
4722
  /**
@@ -4761,7 +4761,7 @@ export const vInvitationResponseWritable = v.pipe(v.object({
4761
4761
  'researcher',
4762
4762
  'admin'
4763
4763
  ]),
4764
- tenant: v.optional(vTenantResponseWritable)
4764
+ tenant: v.nullish(vTenantResponseWritable)
4765
4765
  }), v.readonly());
4766
4766
 
4767
4767
  /**
@@ -4843,7 +4843,7 @@ export const vManualToolInvocationEmailCallRequestWritable = v.intersect([vEmail
4843
4843
  * 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
4844
4844
  */
4845
4845
  export const vManualToolInvocationRequestWritable = v.object({
4846
- tool_call: v.optional(v.union([
4846
+ tool_call: v.nullish(v.union([
4847
4847
  v.intersect([v.object({
4848
4848
  tool_call_type: v.literal('sms_request')
4849
4849
  }), vManualToolInvocationSmsCallRequestWritable]),
@@ -4885,7 +4885,7 @@ export const vActionRequestWritable = v.object({
4885
4885
  connected_app_route: v.nullish(v.string()),
4886
4886
  decision_key: v.string(),
4887
4887
  idempotency_template: v.string(),
4888
- position: v.optional(v.pipe(v.number(), v.integer()), 0),
4888
+ position: v.nullish(v.pipe(v.number(), v.integer()), 0),
4889
4889
  runtime_filter: v.nullish(v.string()),
4890
4890
  tool_call: v.union([
4891
4891
  v.intersect([v.object({
@@ -4923,7 +4923,7 @@ export const vActionRequestWritable = v.object({
4923
4923
  * Tenant membership — binds a user to a tenant with a role.
4924
4924
  */
4925
4925
  export const vMembershipResponseWritable = v.pipe(v.object({
4926
- tenant: v.optional(vTenantResponseWritable)
4926
+ tenant: v.nullish(vTenantResponseWritable)
4927
4927
  }), v.readonly());
4928
4928
 
4929
4929
  /**
@@ -4949,7 +4949,7 @@ export const vToolRestapiRequestWritable = v.intersect([vRestapiRequestWritable,
4949
4949
  * Tool — a configurable capability reference for external services. Request
4950
4950
  */
4951
4951
  export const vToolRequestWritable = v.object({
4952
- body: v.optional(v.union([
4952
+ body: v.nullish(v.union([
4953
4953
  v.intersect([v.object({
4954
4954
  tool_body_type: v.literal('email')
4955
4955
  }), vToolEmailRequestWritable]),
@@ -4985,9 +4985,9 @@ export const vToolRequestWritable = v.object({
4985
4985
  }), vToolManualUploadRequest])
4986
4986
  ])),
4987
4987
  data_source_id: v.nullish(v.pipe(v.string(), v.uuid())),
4988
- datalake_id: v.optional(v.pipe(v.string(), v.uuid())),
4988
+ datalake_id: v.nullish(v.pipe(v.string(), v.uuid())),
4989
4989
  description: v.nullish(v.string()),
4990
- intent: v.optional(v.picklist([
4990
+ intent: v.nullish(v.picklist([
4991
4991
  'sms',
4992
4992
  'email',
4993
4993
  'export',
@@ -4997,8 +4997,8 @@ export const vToolRequestWritable = v.object({
4997
4997
  'chat_completion',
4998
4998
  'context_extraction'
4999
4999
  ])),
5000
- name: v.optional(v.string()),
5001
- status: v.optional(v.picklist([
5000
+ name: v.nullish(v.string()),
5001
+ status: v.nullish(v.picklist([
5002
5002
  'draft',
5003
5003
  'active',
5004
5004
  'inactive',
@@ -5031,35 +5031,35 @@ export const vDatalakeRequestWritable = v.object({
5031
5031
  unregulated_db_writer_enable_ssl: v.boolean(),
5032
5032
  unregulated_db_writer_port: v.pipe(v.number(), v.integer()),
5033
5033
  regulated_data_db_writer_port: v.pipe(v.number(), v.integer()),
5034
- unregulated_db_reader_pass: v.optional(v.string()),
5034
+ unregulated_db_reader_pass: v.nullish(v.string()),
5035
5035
  unregulated_db_reader_enable_ssl: v.boolean(),
5036
5036
  regulated_data_db_reader_enable_ssl: v.boolean(),
5037
5037
  unregulated_db_reader_host: v.string(),
5038
- regulated_data_db_writer_pass: v.optional(v.string()),
5038
+ regulated_data_db_writer_pass: v.nullish(v.string()),
5039
5039
  unregulated_db_reader_port: v.pipe(v.number(), v.integer()),
5040
5040
  pool_size: v.nullable(v.pipe(v.number(), v.integer())),
5041
5041
  description: v.nullish(v.string()),
5042
5042
  name: v.string(),
5043
- unregulated_db_reader_user: v.optional(v.string()),
5043
+ unregulated_db_reader_user: v.nullish(v.string()),
5044
5044
  unregulated_db_writer_auth_method: v.picklist(['password', 'iam_role']),
5045
5045
  unregulated_db_reader_name: v.string(),
5046
5046
  regulated_data_db_writer_name: v.string(),
5047
5047
  unregulated_db_writer_host: v.string(),
5048
- regulated_data_db_reader_user: v.optional(v.string()),
5048
+ regulated_data_db_reader_user: v.nullish(v.string()),
5049
5049
  regulated_data_db_reader_schema: v.string(),
5050
5050
  unregulated_db_writer_name: v.string(),
5051
5051
  unregulated_db_writer_schema: v.string(),
5052
5052
  regulated_data_db_reader_port: v.pipe(v.number(), v.integer()),
5053
- regulated_data_db_writer_user: v.optional(v.string()),
5054
- regulated_data_db_reader_pass: v.optional(v.string()),
5053
+ regulated_data_db_writer_user: v.nullish(v.string()),
5054
+ regulated_data_db_reader_pass: v.nullish(v.string()),
5055
5055
  unregulated_cloud_storage: v.record(v.string(), v.unknown()),
5056
5056
  regulated_cloud_storage: v.record(v.string(), v.unknown()),
5057
5057
  regulated_data_db_reader_name: v.string(),
5058
5058
  regulated_data_db_reader_host: v.string(),
5059
- unregulated_db_writer_user: v.optional(v.string()),
5059
+ unregulated_db_writer_user: v.nullish(v.string()),
5060
5060
  unregulated_db_reader_auth_method: v.picklist(['password', 'iam_role']),
5061
- slug: v.optional(v.string()),
5062
- unregulated_db_writer_pass: v.optional(v.string())
5061
+ slug: v.nullish(v.string()),
5062
+ unregulated_db_writer_pass: v.nullish(v.string())
5063
5063
  });
5064
5064
 
5065
5065
  /**
@@ -5071,7 +5071,7 @@ export const vContextDatasetResponseWritable = v.pipe(v.object({
5071
5071
  dataset_type: v.string(),
5072
5072
  generic_table_id: v.nullish(v.pipe(v.string(), v.uuid())),
5073
5073
  limit: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1))),
5074
- position: v.optional(v.pipe(v.number(), v.integer()), 0),
5074
+ position: v.nullish(v.pipe(v.number(), v.integer()), 0),
5075
5075
  where_clause: v.nullish(v.string())
5076
5076
  }), v.readonly());
5077
5077
 
@@ -5081,18 +5081,18 @@ export const vContextDatasetResponseWritable = v.pipe(v.object({
5081
5081
  * Agentic Workflow — event-driven automation pipeline Request
5082
5082
  */
5083
5083
  export const vAgenticWorkflowRequestWritable = v.object({
5084
- actions: v.optional(v.array(vActionResponseWritable)),
5085
- ai_agents: v.optional(v.array(vWorkflowAiAgentRequestWritable)),
5086
- context_datasets: v.optional(v.array(vContextDatasetResponseWritable)),
5084
+ actions: v.nullish(v.array(vActionResponseWritable)),
5085
+ ai_agents: v.nullish(v.array(vWorkflowAiAgentRequestWritable)),
5086
+ context_datasets: v.nullish(v.array(vContextDatasetResponseWritable)),
5087
5087
  dataset_type: v.string(),
5088
5088
  description: v.string(),
5089
5089
  generic_table_id: v.nullish(v.pipe(v.string(), v.uuid())),
5090
- id: v.optional(v.pipe(v.string(), v.uuid())),
5091
- inserted_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
5090
+ id: v.nullish(v.pipe(v.string(), v.uuid())),
5091
+ inserted_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
5092
5092
  name: v.string(),
5093
- skip_mdm_resolution: v.optional(v.boolean()),
5093
+ skip_mdm_resolution: v.nullish(v.boolean()),
5094
5094
  status: v.picklist(['live', 'draft']),
5095
- updated_at: v.optional(v.pipe(v.string(), v.isoTimestamp()))
5095
+ updated_at: v.nullish(v.pipe(v.string(), v.isoTimestamp()))
5096
5096
  });
5097
5097
 
5098
5098
  /**
@@ -5101,18 +5101,18 @@ export const vAgenticWorkflowRequestWritable = v.object({
5101
5101
  * Agentic Workflow — event-driven automation pipeline
5102
5102
  */
5103
5103
  export const vAgenticWorkflowResponseWritable = v.pipe(v.object({
5104
- actions: v.optional(v.array(vActionResponseWritable)),
5105
- context_datasets: v.optional(v.array(vContextDatasetResponseWritable)),
5106
- datalake: v.optional(vDatalakeResponseWritable),
5104
+ actions: v.nullish(v.array(vActionResponseWritable)),
5105
+ context_datasets: v.nullish(v.array(vContextDatasetResponseWritable)),
5106
+ datalake: v.nullish(vDatalakeResponseWritable),
5107
5107
  dataset_type: v.string(),
5108
5108
  description: v.string(),
5109
5109
  generic_table_id: v.nullish(v.pipe(v.string(), v.uuid())),
5110
- id: v.optional(v.pipe(v.string(), v.uuid())),
5111
- inserted_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
5110
+ id: v.nullish(v.pipe(v.string(), v.uuid())),
5111
+ inserted_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
5112
5112
  name: v.string(),
5113
- skip_mdm_resolution: v.optional(v.boolean()),
5113
+ skip_mdm_resolution: v.nullish(v.boolean()),
5114
5114
  status: v.picklist(['live', 'draft']),
5115
- updated_at: v.optional(v.pipe(v.string(), v.isoTimestamp()))
5115
+ updated_at: v.nullish(v.pipe(v.string(), v.isoTimestamp()))
5116
5116
  }), v.readonly());
5117
5117
 
5118
5118
  /**
@@ -5145,10 +5145,10 @@ export const vActionExecutionLogResponseWritable = v.pipe(v.object({
5145
5145
  error_message: v.nullish(v.string()),
5146
5146
  external_id: v.nullish(v.string()),
5147
5147
  id: v.pipe(v.string(), v.uuid()),
5148
- inserted_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
5148
+ inserted_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
5149
5149
  message_id: v.nullish(v.pipe(v.string(), v.uuid())),
5150
5150
  mode: v.picklist(['live', 'dry_run']),
5151
- retry_count: v.optional(v.pipe(v.number(), v.integer())),
5151
+ retry_count: v.nullish(v.pipe(v.number(), v.integer())),
5152
5152
  runtime_filter_result: v.nullish(v.boolean()),
5153
5153
  scheduled_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
5154
5154
  started_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
@@ -5161,7 +5161,7 @@ export const vActionExecutionLogResponseWritable = v.pipe(v.object({
5161
5161
  'filtered',
5162
5162
  'cancelled'
5163
5163
  ]),
5164
- updated_at: v.optional(v.pipe(v.string(), v.isoTimestamp())),
5164
+ updated_at: v.nullish(v.pipe(v.string(), v.isoTimestamp())),
5165
5165
  workflow_execution_log_id: v.pipe(v.string(), v.uuid()),
5166
5166
  workflow_id: v.pipe(v.string(), v.uuid())
5167
5167
  }), v.readonly());
@@ -5204,7 +5204,7 @@ export const vDatasetSearchResponseWritable = v.object({
5204
5204
  data: v.array(v.record(v.string(), v.unknown())),
5205
5205
  meta: v.object({
5206
5206
  flop: vPaginationMeta,
5207
- sql: v.optional(v.union([vPaginationMeta, v.unknown()]))
5207
+ sql: v.nullish(v.union([vPaginationMeta, v.unknown()]))
5208
5208
  }),
5209
5209
  user_search: vUserSearchResponseWritable
5210
5210
  });
@@ -5236,13 +5236,13 @@ export const vPlatformApiInteroperabilityContractControllerRunPath = v.object({
5236
5236
  });
5237
5237
 
5238
5238
  export const vPlatformApiInteroperabilityContractControllerRunQuery = v.object({
5239
- page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
5240
- page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
5241
- order_by: v.optional(v.array(v.string())),
5242
- order_directions: v.optional(v.array(v.picklist(['asc', 'desc']))),
5243
- filters: v.optional(v.array(v.object({
5239
+ page: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1))),
5240
+ page_size: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
5241
+ order_by: v.nullish(v.array(v.string())),
5242
+ order_directions: v.nullish(v.array(v.picklist(['asc', 'desc']))),
5243
+ filters: v.nullish(v.array(v.object({
5244
5244
  field: v.string(),
5245
- op: v.optional(v.picklist([
5245
+ op: v.nullish(v.picklist([
5246
5246
  '==',
5247
5247
  '!=',
5248
5248
  '<',
@@ -5276,13 +5276,13 @@ export const vPlatformApiActionStatusUpdaterControllerIndexPath = v.object({
5276
5276
  });
5277
5277
 
5278
5278
  export const vPlatformApiActionStatusUpdaterControllerIndexQuery = v.object({
5279
- page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
5280
- page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
5281
- order_by: v.optional(v.array(v.string())),
5282
- order_directions: v.optional(v.array(v.picklist(['asc', 'desc']))),
5283
- filters: v.optional(v.array(v.object({
5279
+ page: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1))),
5280
+ page_size: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
5281
+ order_by: v.nullish(v.array(v.string())),
5282
+ order_directions: v.nullish(v.array(v.picklist(['asc', 'desc']))),
5283
+ filters: v.nullish(v.array(v.object({
5284
5284
  field: v.string(),
5285
- op: v.optional(v.picklist([
5285
+ op: v.nullish(v.picklist([
5286
5286
  '==',
5287
5287
  '!=',
5288
5288
  '<',
@@ -5321,13 +5321,13 @@ export const vPlatformApiActionStatusUpdaterControllerCreatePath = v.object({
5321
5321
  });
5322
5322
 
5323
5323
  export const vPlatformApiActionStatusUpdaterControllerCreateQuery = v.object({
5324
- page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
5325
- page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
5326
- order_by: v.optional(v.array(v.string())),
5327
- order_directions: v.optional(v.array(v.picklist(['asc', 'desc']))),
5328
- filters: v.optional(v.array(v.object({
5324
+ page: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1))),
5325
+ page_size: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
5326
+ order_by: v.nullish(v.array(v.string())),
5327
+ order_directions: v.nullish(v.array(v.picklist(['asc', 'desc']))),
5328
+ filters: v.nullish(v.array(v.object({
5329
5329
  field: v.string(),
5330
- op: v.optional(v.picklist([
5330
+ op: v.nullish(v.picklist([
5331
5331
  '==',
5332
5332
  '!=',
5333
5333
  '<',
@@ -5362,13 +5362,13 @@ export const vPlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexPath =
5362
5362
  });
5363
5363
 
5364
5364
  export const vPlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexQuery = v.object({
5365
- page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
5366
- page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
5367
- order_by: v.optional(v.array(v.string())),
5368
- order_directions: v.optional(v.array(v.picklist(['asc', 'desc']))),
5369
- filters: v.optional(v.array(v.object({
5365
+ page: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1))),
5366
+ page_size: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
5367
+ order_by: v.nullish(v.array(v.string())),
5368
+ order_directions: v.nullish(v.array(v.picklist(['asc', 'desc']))),
5369
+ filters: v.nullish(v.array(v.object({
5370
5370
  field: v.string(),
5371
- op: v.optional(v.picklist([
5371
+ op: v.nullish(v.picklist([
5372
5372
  '==',
5373
5373
  '!=',
5374
5374
  '<',
@@ -5407,7 +5407,7 @@ export const vPlatformApiDatasetControllerCreateUserSearchPath = v.object({
5407
5407
  });
5408
5408
 
5409
5409
  export const vPlatformApiDatasetControllerCreateUserSearchQuery = v.object({
5410
- datalake_id: v.optional(v.pipe(v.string(), v.uuid()))
5410
+ datalake_id: v.nullish(v.pipe(v.string(), v.uuid()))
5411
5411
  });
5412
5412
 
5413
5413
  /**
@@ -5420,11 +5420,11 @@ export const vPlatformApiDatasetControllerSearchPath = v.object({
5420
5420
  });
5421
5421
 
5422
5422
  export const vPlatformApiDatasetControllerSearchQuery = v.object({
5423
- user_search_id: v.optional(v.pipe(v.string(), v.uuid())),
5424
- datalake_id: v.optional(v.pipe(v.string(), v.uuid())),
5425
- data_access_mode: v.optional(v.picklist(['regulated', 'unregulated'])),
5426
- outer_pagination: v.optional(vOuterPagination),
5427
- inner_search: v.optional(vInnerSearch)
5423
+ user_search_id: v.nullish(v.pipe(v.string(), v.uuid())),
5424
+ datalake_id: v.nullish(v.pipe(v.string(), v.uuid())),
5425
+ data_access_mode: v.nullish(v.picklist(['regulated', 'unregulated'])),
5426
+ outer_pagination: v.nullish(vOuterPagination),
5427
+ inner_search: v.nullish(vInnerSearch)
5428
5428
  });
5429
5429
 
5430
5430
  /**
@@ -5438,13 +5438,13 @@ export const vPlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexPat
5438
5438
  });
5439
5439
 
5440
5440
  export const vPlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexQuery = v.object({
5441
- page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
5442
- page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
5443
- order_by: v.optional(v.array(v.string())),
5444
- order_directions: v.optional(v.array(v.picklist(['asc', 'desc']))),
5445
- filters: v.optional(v.array(v.object({
5441
+ page: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1))),
5442
+ page_size: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
5443
+ order_by: v.nullish(v.array(v.string())),
5444
+ order_directions: v.nullish(v.array(v.picklist(['asc', 'desc']))),
5445
+ filters: v.nullish(v.array(v.object({
5446
5446
  field: v.string(),
5447
- op: v.optional(v.picklist([
5447
+ op: v.nullish(v.picklist([
5448
5448
  '==',
5449
5449
  '!=',
5450
5450
  '<',
@@ -5545,13 +5545,13 @@ export const vPlatformApiDataActivationClientControllerIndexPath = v.object({
5545
5545
  });
5546
5546
 
5547
5547
  export const vPlatformApiDataActivationClientControllerIndexQuery = v.object({
5548
- page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
5549
- page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
5550
- order_by: v.optional(v.array(v.string())),
5551
- order_directions: v.optional(v.array(v.picklist(['asc', 'desc']))),
5552
- filters: v.optional(v.array(v.object({
5548
+ page_size: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
5549
+ page: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1))),
5550
+ order_by: v.nullish(v.array(v.string())),
5551
+ order_directions: v.nullish(v.array(v.picklist(['asc', 'desc']))),
5552
+ filters: v.nullish(v.array(v.object({
5553
5553
  field: v.string(),
5554
- op: v.optional(v.picklist([
5554
+ op: v.nullish(v.picklist([
5555
5555
  '==',
5556
5556
  '!=',
5557
5557
  '<',
@@ -5664,13 +5664,13 @@ export const vPlatformApiDataActivationClientControllerLogsIndexPath = v.object(
5664
5664
  });
5665
5665
 
5666
5666
  export const vPlatformApiDataActivationClientControllerLogsIndexQuery = v.object({
5667
- page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
5668
- page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
5669
- order_by: v.optional(v.array(v.string())),
5670
- order_directions: v.optional(v.array(v.picklist(['asc', 'desc']))),
5671
- filters: v.optional(v.array(v.object({
5667
+ page_size: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
5668
+ page: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1))),
5669
+ order_by: v.nullish(v.array(v.string())),
5670
+ order_directions: v.nullish(v.array(v.picklist(['asc', 'desc']))),
5671
+ filters: v.nullish(v.array(v.object({
5672
5672
  field: v.string(),
5673
- op: v.optional(v.picklist([
5673
+ op: v.nullish(v.picklist([
5674
5674
  '==',
5675
5675
  '!=',
5676
5676
  '<',
@@ -5727,13 +5727,13 @@ export const vPlatformApiAgenticWorkflowControllerIndexPath = v.object({
5727
5727
  });
5728
5728
 
5729
5729
  export const vPlatformApiAgenticWorkflowControllerIndexQuery = v.object({
5730
- page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
5731
- page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
5732
- order_by: v.optional(v.array(v.string())),
5733
- order_directions: v.optional(v.array(v.picklist(['asc', 'desc']))),
5734
- filters: v.optional(v.array(v.object({
5730
+ page_size: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
5731
+ page: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1))),
5732
+ order_by: v.nullish(v.array(v.string())),
5733
+ order_directions: v.nullish(v.array(v.picklist(['asc', 'desc']))),
5734
+ filters: v.nullish(v.array(v.object({
5735
5735
  field: v.string(),
5736
- op: v.optional(v.picklist([
5736
+ op: v.nullish(v.picklist([
5737
5737
  '==',
5738
5738
  '!=',
5739
5739
  '<',
@@ -5819,13 +5819,13 @@ export const vPlatformApiConnectedAppMgmtControllerIndexPath = v.object({
5819
5819
  });
5820
5820
 
5821
5821
  export const vPlatformApiConnectedAppMgmtControllerIndexQuery = v.object({
5822
- page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
5823
- page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
5824
- order_by: v.optional(v.array(v.string())),
5825
- order_directions: v.optional(v.array(v.picklist(['asc', 'desc']))),
5826
- filters: v.optional(v.array(v.object({
5822
+ page: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1))),
5823
+ page_size: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
5824
+ order_by: v.nullish(v.array(v.string())),
5825
+ order_directions: v.nullish(v.array(v.picklist(['asc', 'desc']))),
5826
+ filters: v.nullish(v.array(v.object({
5827
5827
  field: v.string(),
5828
- op: v.optional(v.picklist([
5828
+ op: v.nullish(v.picklist([
5829
5829
  '==',
5830
5830
  '!=',
5831
5831
  '<',
@@ -5938,13 +5938,13 @@ export const vPlatformApiDataSourceControllerIndexPath = v.object({
5938
5938
  });
5939
5939
 
5940
5940
  export const vPlatformApiDataSourceControllerIndexQuery = v.object({
5941
- page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
5942
- page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
5943
- order_by: v.optional(v.array(v.string())),
5944
- order_directions: v.optional(v.array(v.picklist(['asc', 'desc']))),
5945
- filters: v.optional(v.array(v.object({
5941
+ page_size: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
5942
+ page: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1))),
5943
+ order_by: v.nullish(v.array(v.string())),
5944
+ order_directions: v.nullish(v.array(v.picklist(['asc', 'desc']))),
5945
+ filters: v.nullish(v.array(v.object({
5946
5946
  field: v.string(),
5947
- op: v.optional(v.picklist([
5947
+ op: v.nullish(v.picklist([
5948
5948
  '==',
5949
5949
  '!=',
5950
5950
  '<',
@@ -5984,13 +5984,13 @@ export const vPlatformApiDataSourceControllerCreatePath = v.object({
5984
5984
  });
5985
5985
 
5986
5986
  export const vPlatformApiDataSourceControllerCreateQuery = v.object({
5987
- page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
5988
- page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
5989
- order_by: v.optional(v.array(v.string())),
5990
- order_directions: v.optional(v.array(v.picklist(['asc', 'desc']))),
5991
- filters: v.optional(v.array(v.object({
5987
+ page: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1))),
5988
+ page_size: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
5989
+ order_by: v.nullish(v.array(v.string())),
5990
+ order_directions: v.nullish(v.array(v.picklist(['asc', 'desc']))),
5991
+ filters: v.nullish(v.array(v.object({
5992
5992
  field: v.string(),
5993
- op: v.optional(v.picklist([
5993
+ op: v.nullish(v.picklist([
5994
5994
  '==',
5995
5995
  '!=',
5996
5996
  '<',
@@ -6042,7 +6042,7 @@ export const vPlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowPath
6042
6042
  });
6043
6043
 
6044
6044
  export const vPlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowQuery = v.object({
6045
- data_access_mode: v.optional(v.picklist(['regulated', 'unregulated']))
6045
+ data_access_mode: v.nullish(v.picklist(['regulated', 'unregulated']))
6046
6046
  });
6047
6047
 
6048
6048
  /**
@@ -6057,13 +6057,13 @@ export const vPlatformApiInteroperabilityContractControllerDeletePath = v.object
6057
6057
  });
6058
6058
 
6059
6059
  export const vPlatformApiInteroperabilityContractControllerDeleteQuery = v.object({
6060
- page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
6061
- page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
6062
- order_by: v.optional(v.array(v.string())),
6063
- order_directions: v.optional(v.array(v.picklist(['asc', 'desc']))),
6064
- filters: v.optional(v.array(v.object({
6060
+ page: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1))),
6061
+ page_size: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
6062
+ order_by: v.nullish(v.array(v.string())),
6063
+ order_directions: v.nullish(v.array(v.picklist(['asc', 'desc']))),
6064
+ filters: v.nullish(v.array(v.object({
6065
6065
  field: v.string(),
6066
- op: v.optional(v.picklist([
6066
+ op: v.nullish(v.picklist([
6067
6067
  '==',
6068
6068
  '!=',
6069
6069
  '<',
@@ -6099,13 +6099,13 @@ export const vPlatformApiInteroperabilityContractControllerShowPath = v.object({
6099
6099
  });
6100
6100
 
6101
6101
  export const vPlatformApiInteroperabilityContractControllerShowQuery = v.object({
6102
- page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
6103
- page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
6104
- order_by: v.optional(v.array(v.string())),
6105
- order_directions: v.optional(v.array(v.picklist(['asc', 'desc']))),
6106
- filters: v.optional(v.array(v.object({
6102
+ page: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1))),
6103
+ page_size: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
6104
+ order_by: v.nullish(v.array(v.string())),
6105
+ order_directions: v.nullish(v.array(v.picklist(['asc', 'desc']))),
6106
+ filters: v.nullish(v.array(v.object({
6107
6107
  field: v.string(),
6108
- op: v.optional(v.picklist([
6108
+ op: v.nullish(v.picklist([
6109
6109
  '==',
6110
6110
  '!=',
6111
6111
  '<',
@@ -6146,13 +6146,13 @@ export const vPlatformApiInteroperabilityContractControllerUpdatePath = v.object
6146
6146
  });
6147
6147
 
6148
6148
  export const vPlatformApiInteroperabilityContractControllerUpdateQuery = v.object({
6149
- page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
6150
- page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
6151
- order_by: v.optional(v.array(v.string())),
6152
- order_directions: v.optional(v.array(v.picklist(['asc', 'desc']))),
6153
- filters: v.optional(v.array(v.object({
6149
+ page: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1))),
6150
+ page_size: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
6151
+ order_by: v.nullish(v.array(v.string())),
6152
+ order_directions: v.nullish(v.array(v.picklist(['asc', 'desc']))),
6153
+ filters: v.nullish(v.array(v.object({
6154
6154
  field: v.string(),
6155
- op: v.optional(v.picklist([
6155
+ op: v.nullish(v.picklist([
6156
6156
  '==',
6157
6157
  '!=',
6158
6158
  '<',
@@ -6187,13 +6187,13 @@ export const vPlatformApiDatalakeControllerMetadataPath = v.object({
6187
6187
  });
6188
6188
 
6189
6189
  export const vPlatformApiDatalakeControllerMetadataQuery = v.object({
6190
- page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
6191
- page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
6192
- order_by: v.optional(v.array(v.string())),
6193
- order_directions: v.optional(v.array(v.picklist(['asc', 'desc']))),
6194
- filters: v.optional(v.array(v.object({
6190
+ page: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1))),
6191
+ page_size: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
6192
+ order_by: v.nullish(v.array(v.string())),
6193
+ order_directions: v.nullish(v.array(v.picklist(['asc', 'desc']))),
6194
+ filters: v.nullish(v.array(v.object({
6195
6195
  field: v.string(),
6196
- op: v.optional(v.picklist([
6196
+ op: v.nullish(v.picklist([
6197
6197
  '==',
6198
6198
  '!=',
6199
6199
  '<',
@@ -6228,13 +6228,13 @@ export const vPlatformApiAiAgentControllerIndexPath = v.object({
6228
6228
  });
6229
6229
 
6230
6230
  export const vPlatformApiAiAgentControllerIndexQuery = v.object({
6231
- page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
6232
- page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
6233
- order_by: v.optional(v.array(v.string())),
6234
- order_directions: v.optional(v.array(v.picklist(['asc', 'desc']))),
6235
- filters: v.optional(v.array(v.object({
6231
+ page: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1))),
6232
+ page_size: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
6233
+ order_by: v.nullish(v.array(v.string())),
6234
+ order_directions: v.nullish(v.array(v.picklist(['asc', 'desc']))),
6235
+ filters: v.nullish(v.array(v.object({
6236
6236
  field: v.string(),
6237
- op: v.optional(v.picklist([
6237
+ op: v.nullish(v.picklist([
6238
6238
  '==',
6239
6239
  '!=',
6240
6240
  '<',
@@ -6289,13 +6289,13 @@ export const vPlatformApiActionStatusUpdaterControllerUpdatePath = v.object({
6289
6289
  });
6290
6290
 
6291
6291
  export const vPlatformApiActionStatusUpdaterControllerUpdateQuery = v.object({
6292
- page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
6293
- page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
6294
- order_by: v.optional(v.array(v.string())),
6295
- order_directions: v.optional(v.array(v.picklist(['asc', 'desc']))),
6296
- filters: v.optional(v.array(v.object({
6292
+ page: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1))),
6293
+ page_size: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
6294
+ order_by: v.nullish(v.array(v.string())),
6295
+ order_directions: v.nullish(v.array(v.picklist(['asc', 'desc']))),
6296
+ filters: v.nullish(v.array(v.object({
6297
6297
  field: v.string(),
6298
- op: v.optional(v.picklist([
6298
+ op: v.nullish(v.picklist([
6299
6299
  '==',
6300
6300
  '!=',
6301
6301
  '<',
@@ -6416,13 +6416,13 @@ export const vPlatformApiDataSourceControllerUpdatePath = v.object({
6416
6416
  });
6417
6417
 
6418
6418
  export const vPlatformApiDataSourceControllerUpdateQuery = v.object({
6419
- page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
6420
- page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
6421
- order_by: v.optional(v.array(v.string())),
6422
- order_directions: v.optional(v.array(v.picklist(['asc', 'desc']))),
6423
- filters: v.optional(v.array(v.object({
6419
+ page: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1))),
6420
+ page_size: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
6421
+ order_by: v.nullish(v.array(v.string())),
6422
+ order_directions: v.nullish(v.array(v.picklist(['asc', 'desc']))),
6423
+ filters: v.nullish(v.array(v.object({
6424
6424
  field: v.string(),
6425
- op: v.optional(v.picklist([
6425
+ op: v.nullish(v.picklist([
6426
6426
  '==',
6427
6427
  '!=',
6428
6428
  '<',
@@ -6468,13 +6468,13 @@ export const vPlatformApiDatalakeControllerIndexPath = v.object({
6468
6468
  });
6469
6469
 
6470
6470
  export const vPlatformApiDatalakeControllerIndexQuery = v.object({
6471
- page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
6472
- page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
6473
- order_by: v.optional(v.array(v.string())),
6474
- order_directions: v.optional(v.array(v.picklist(['asc', 'desc']))),
6475
- filters: v.optional(v.array(v.object({
6471
+ page_size: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
6472
+ page: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1))),
6473
+ order_by: v.nullish(v.array(v.string())),
6474
+ order_directions: v.nullish(v.array(v.picklist(['asc', 'desc']))),
6475
+ filters: v.nullish(v.array(v.object({
6476
6476
  field: v.string(),
6477
- op: v.optional(v.picklist([
6477
+ op: v.nullish(v.picklist([
6478
6478
  '==',
6479
6479
  '!=',
6480
6480
  '<',
@@ -6513,13 +6513,13 @@ export const vPlatformApiDatalakeControllerCreatePath = v.object({
6513
6513
  });
6514
6514
 
6515
6515
  export const vPlatformApiDatalakeControllerCreateQuery = v.object({
6516
- page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
6517
- page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
6518
- order_by: v.optional(v.array(v.string())),
6519
- order_directions: v.optional(v.array(v.picklist(['asc', 'desc']))),
6520
- filters: v.optional(v.array(v.object({
6516
+ page: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1))),
6517
+ page_size: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
6518
+ order_by: v.nullish(v.array(v.string())),
6519
+ order_directions: v.nullish(v.array(v.picklist(['asc', 'desc']))),
6520
+ filters: v.nullish(v.array(v.object({
6521
6521
  field: v.string(),
6522
- op: v.optional(v.picklist([
6522
+ op: v.nullish(v.picklist([
6523
6523
  '==',
6524
6524
  '!=',
6525
6525
  '<',
@@ -6559,13 +6559,13 @@ export const vPlatformApiDatalakeControllerCreateUploadLinkPath = v.object({
6559
6559
  });
6560
6560
 
6561
6561
  export const vPlatformApiDatalakeControllerCreateUploadLinkQuery = v.object({
6562
- page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
6563
- page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
6564
- order_by: v.optional(v.array(v.string())),
6565
- order_directions: v.optional(v.array(v.picklist(['asc', 'desc']))),
6566
- filters: v.optional(v.array(v.object({
6562
+ page: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1))),
6563
+ page_size: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
6564
+ order_by: v.nullish(v.array(v.string())),
6565
+ order_directions: v.nullish(v.array(v.picklist(['asc', 'desc']))),
6566
+ filters: v.nullish(v.array(v.object({
6567
6567
  field: v.string(),
6568
- op: v.optional(v.picklist([
6568
+ op: v.nullish(v.picklist([
6569
6569
  '==',
6570
6570
  '!=',
6571
6571
  '<',
@@ -6636,13 +6636,13 @@ export const vPlatformApiInteroperabilityContractControllerMetadataPath = v.obje
6636
6636
  });
6637
6637
 
6638
6638
  export const vPlatformApiInteroperabilityContractControllerMetadataQuery = v.object({
6639
- page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
6640
- page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
6641
- order_by: v.optional(v.array(v.string())),
6642
- order_directions: v.optional(v.array(v.picklist(['asc', 'desc']))),
6643
- filters: v.optional(v.array(v.object({
6639
+ page: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1))),
6640
+ page_size: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
6641
+ order_by: v.nullish(v.array(v.string())),
6642
+ order_directions: v.nullish(v.array(v.picklist(['asc', 'desc']))),
6643
+ filters: v.nullish(v.array(v.object({
6644
6644
  field: v.string(),
6645
- op: v.optional(v.picklist([
6645
+ op: v.nullish(v.picklist([
6646
6646
  '==',
6647
6647
  '!=',
6648
6648
  '<',
@@ -6677,13 +6677,13 @@ export const vPlatformApiInteroperabilityContractControllerIndexPath = v.object(
6677
6677
  });
6678
6678
 
6679
6679
  export const vPlatformApiInteroperabilityContractControllerIndexQuery = v.object({
6680
- page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
6681
- page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
6682
- order_by: v.optional(v.array(v.string())),
6683
- order_directions: v.optional(v.array(v.picklist(['asc', 'desc']))),
6684
- filters: v.optional(v.array(v.object({
6680
+ page_size: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
6681
+ page: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1))),
6682
+ order_by: v.nullish(v.array(v.string())),
6683
+ order_directions: v.nullish(v.array(v.picklist(['asc', 'desc']))),
6684
+ filters: v.nullish(v.array(v.object({
6685
6685
  field: v.string(),
6686
- op: v.optional(v.picklist([
6686
+ op: v.nullish(v.picklist([
6687
6687
  '==',
6688
6688
  '!=',
6689
6689
  '<',
@@ -6723,13 +6723,13 @@ export const vPlatformApiInteroperabilityContractControllerCreatePath = v.object
6723
6723
  });
6724
6724
 
6725
6725
  export const vPlatformApiInteroperabilityContractControllerCreateQuery = v.object({
6726
- page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
6727
- page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
6728
- order_by: v.optional(v.array(v.string())),
6729
- order_directions: v.optional(v.array(v.picklist(['asc', 'desc']))),
6730
- filters: v.optional(v.array(v.object({
6726
+ page: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1))),
6727
+ page_size: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
6728
+ order_by: v.nullish(v.array(v.string())),
6729
+ order_directions: v.nullish(v.array(v.picklist(['asc', 'desc']))),
6730
+ filters: v.nullish(v.array(v.object({
6731
6731
  field: v.string(),
6732
- op: v.optional(v.picklist([
6732
+ op: v.nullish(v.picklist([
6733
6733
  '==',
6734
6734
  '!=',
6735
6735
  '<',
@@ -6769,13 +6769,13 @@ export const vPlatformApiGenericTableControllerIndexPath = v.object({
6769
6769
  });
6770
6770
 
6771
6771
  export const vPlatformApiGenericTableControllerIndexQuery = v.object({
6772
- page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
6773
- page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
6774
- order_by: v.optional(v.array(v.string())),
6775
- order_directions: v.optional(v.array(v.picklist(['asc', 'desc']))),
6776
- filters: v.optional(v.array(v.object({
6772
+ page: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1))),
6773
+ page_size: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
6774
+ order_by: v.nullish(v.array(v.string())),
6775
+ order_directions: v.nullish(v.array(v.picklist(['asc', 'desc']))),
6776
+ filters: v.nullish(v.array(v.object({
6777
6777
  field: v.string(),
6778
- op: v.optional(v.picklist([
6778
+ op: v.nullish(v.picklist([
6779
6779
  '==',
6780
6780
  '!=',
6781
6781
  '<',
@@ -6820,13 +6820,13 @@ export const vPlatformApiGenericTableControllerCreatePath = v.object({
6820
6820
  export const vPlatformApiGenericTableControllerCreateResponse = vGenericTableResponse;
6821
6821
 
6822
6822
  export const vPlatformApiTenantControllerIndexQuery = v.object({
6823
- page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
6824
- page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
6825
- order_by: v.optional(v.array(v.string())),
6826
- order_directions: v.optional(v.array(v.picklist(['asc', 'desc']))),
6827
- filters: v.optional(v.array(v.object({
6823
+ page: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1))),
6824
+ page_size: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
6825
+ order_by: v.nullish(v.array(v.string())),
6826
+ order_directions: v.nullish(v.array(v.picklist(['asc', 'desc']))),
6827
+ filters: v.nullish(v.array(v.object({
6828
6828
  field: v.string(),
6829
- op: v.optional(v.picklist([
6829
+ op: v.nullish(v.picklist([
6830
6830
  '==',
6831
6831
  '!=',
6832
6832
  '<',
@@ -6870,8 +6870,8 @@ export const vPlatformApiDatasetControllerDatasetMetadataPath = v.object({
6870
6870
  });
6871
6871
 
6872
6872
  export const vPlatformApiDatasetControllerDatasetMetadataQuery = v.object({
6873
- datalake_id: v.optional(v.pipe(v.string(), v.uuid())),
6874
- generic_table_id: v.optional(v.pipe(v.string(), v.uuid()))
6873
+ datalake_id: v.nullish(v.pipe(v.string(), v.uuid())),
6874
+ generic_table_id: v.nullish(v.pipe(v.string(), v.uuid()))
6875
6875
  });
6876
6876
 
6877
6877
  /**
@@ -6900,13 +6900,13 @@ export const vPlatformApiDatalakeControllerShowPath = v.object({
6900
6900
  });
6901
6901
 
6902
6902
  export const vPlatformApiDatalakeControllerShowQuery = v.object({
6903
- page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
6904
- page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
6905
- order_by: v.optional(v.array(v.string())),
6906
- order_directions: v.optional(v.array(v.picklist(['asc', 'desc']))),
6907
- filters: v.optional(v.array(v.object({
6903
+ page: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1))),
6904
+ page_size: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
6905
+ order_by: v.nullish(v.array(v.string())),
6906
+ order_directions: v.nullish(v.array(v.picklist(['asc', 'desc']))),
6907
+ filters: v.nullish(v.array(v.object({
6908
6908
  field: v.string(),
6909
- op: v.optional(v.picklist([
6909
+ op: v.nullish(v.picklist([
6910
6910
  '==',
6911
6911
  '!=',
6912
6912
  '<',
@@ -6960,7 +6960,7 @@ export const vPlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadP
6960
6960
  * Presigned download URL
6961
6961
  */
6962
6962
  export const vPlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadResponse = v.object({
6963
- url: v.optional(v.pipe(v.string(), v.url()))
6963
+ url: v.nullish(v.pipe(v.string(), v.url()))
6964
6964
  });
6965
6965
 
6966
6966
  /**
@@ -7021,13 +7021,13 @@ export const vPlatformApiToolControllerIndexPath = v.object({
7021
7021
  });
7022
7022
 
7023
7023
  export const vPlatformApiToolControllerIndexQuery = v.object({
7024
- page: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
7025
- page_size: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
7026
- order_by: v.optional(v.array(v.string())),
7027
- order_directions: v.optional(v.array(v.picklist(['asc', 'desc']))),
7028
- filters: v.optional(v.array(v.object({
7024
+ page: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1))),
7025
+ page_size: v.nullish(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100))),
7026
+ order_by: v.nullish(v.array(v.string())),
7027
+ order_directions: v.nullish(v.array(v.picklist(['asc', 'desc']))),
7028
+ filters: v.nullish(v.array(v.object({
7029
7029
  field: v.string(),
7030
- op: v.optional(v.picklist([
7030
+ op: v.nullish(v.picklist([
7031
7031
  '==',
7032
7032
  '!=',
7033
7033
  '<',