@wise/dynamic-flow-types 4.15.1 → 4.16.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.
@@ -2,67 +2,92 @@
2
2
  import { z } from 'zod';
3
3
  import {
4
4
  type JsonElement,
5
- type ObjectSchema,
5
+ type Step,
6
6
  type Schema,
7
- type AlertLayout,
7
+ type Layout,
8
+ type Polling,
9
+ type LinkHandler,
10
+ type Toolbar,
8
11
  type Behavior,
9
- type IntegerSchema,
10
- type PersistAsync,
11
- type BooleanSchema,
12
- type StringSchema,
13
- type ArraySchemaTuple,
14
- type NumberSchema,
15
- type ArraySchema,
16
- type ArraySchemaList,
12
+ type SubflowResponseBody,
13
+ type SearchInitialLayoutConfig,
14
+ type SearchInitialState,
15
+ type SearchLayoutResponseBody,
16
+ type SearchResponse,
17
+ type ModalResponseBody,
17
18
  type BlobSchema,
19
+ type AlertLayout,
18
20
  type AllOfSchema,
19
- type OneOfSchema,
21
+ type ArraySchema,
22
+ type BooleanSchema,
20
23
  type ConstSchema,
21
- type Layout,
22
- type ReviewLayoutField,
24
+ type IntegerSchema,
25
+ type NumberSchema,
26
+ type ObjectSchema,
27
+ type OneOfSchema,
28
+ type StringSchema,
29
+ type ArraySchemaList,
30
+ type PersistAsync,
31
+ type ArraySchemaTuple,
32
+ type ModalBehavior,
33
+ type SubflowBehavior,
34
+ type ToolbarItem,
35
+ type ToolbarButton,
36
+ type PollingOnError,
23
37
  type AdditionalInfo,
38
+ type ReviewLayout,
39
+ type ReviewLayoutField,
24
40
  type ReviewLayoutCallToAction,
41
+ type StatusListLayoutItem,
42
+ type ItemCallToAction,
43
+ type ListLayoutCallToAction,
44
+ type SectionLayoutCallToAction,
45
+ type ButtonLayout,
25
46
  type DecisionLayout,
26
47
  type DecisionLayoutOption,
27
- type ReviewLayout,
28
- type UpsellLayout,
29
- type UpsellLayoutCallToAction,
30
- type SectionLayout,
31
- type SectionLayoutCallToAction,
32
- type TabsLayout,
33
- type TabsLayoutTab,
48
+ type BoxLayout,
49
+ type ModalLayoutContent,
34
50
  type ColumnsLayout,
35
- type ButtonLayout,
36
- type ListLayoutCallToAction,
37
- type StatusListLayout,
38
- type StatusListLayoutItem,
39
- type ItemCallToAction,
40
51
  type ListLayout,
52
+ type ModalLayout,
53
+ type SearchLayout,
54
+ type SectionLayout,
55
+ type StatusListLayout,
56
+ type TabsLayout,
57
+ type UpsellLayout,
41
58
  type ListLayoutItem,
42
59
  type AlertLayoutCallToAction,
43
- type ModalLayoutContent,
44
- type BoxLayout,
45
- type SearchLayout,
46
- type SearchInitialState,
47
- type ModalLayout,
48
- type SubflowResponseBody,
49
- type SearchInitialLayoutConfig,
50
- type SearchLayoutResponseBody,
51
- type SearchResponse,
52
- type ModalResponseBody,
53
- type PollingOnError,
54
- type ToolbarButton,
55
- type Toolbar,
56
- type ToolbarItem,
57
- type ModalBehavior,
58
- type SubflowBehavior,
59
- type Polling,
60
- type LinkHandler,
61
- type Step,
60
+ type UpsellLayoutCallToAction,
61
+ type TabsLayoutTab,
62
62
  } from '../spec';
63
63
 
64
- export const helpSchema = z.object({
65
- markdown: z.string(),
64
+ export const jsonElementSchema: z.ZodSchema<JsonElement> = z.lazy(() =>
65
+ z
66
+ .union([
67
+ z.string(),
68
+ z.number(),
69
+ z.boolean(),
70
+ z.record(jsonElementSchema),
71
+ z.array(jsonElementSchema),
72
+ ])
73
+ .nullable(),
74
+ );
75
+
76
+ export const externalSchema = z.object({
77
+ url: z.string(),
78
+ });
79
+
80
+ export const stepErrorSchema = z.object({
81
+ error: z.string().optional(),
82
+ validation: jsonElementSchema.optional(),
83
+ });
84
+
85
+ export const errorResponseBodySchema = z.object({
86
+ refreshFormUrl: z.string().optional(),
87
+ analytics: z.record(z.string()).optional(),
88
+ error: z.string().optional(),
89
+ validation: jsonElementSchema.optional(),
90
+ refreshUrl: z.string().optional(),
66
91
  });
67
92
 
68
93
  export const imageSchema = z.object({
@@ -72,6 +97,23 @@ export const imageSchema = z.object({
72
97
  accessibilityDescription: z.string().optional(),
73
98
  });
74
99
 
100
+ export const httpMethodSchema = z.union([
101
+ z.literal('GET'),
102
+ z.literal('POST'),
103
+ z.literal('PUT'),
104
+ z.literal('PATCH'),
105
+ z.literal('DELETE'),
106
+ ]);
107
+
108
+ export const searchSearchRequestSchema = z.object({
109
+ url: z.string(),
110
+ method: httpMethodSchema,
111
+ param: z.string(),
112
+ query: z.string(),
113
+ });
114
+
115
+ export const noOpResponseBodySchema = z.object({});
116
+
75
117
  export const summaryProviderSchema = z.object({
76
118
  providesTitle: z.boolean().optional(),
77
119
  providesDescription: z.boolean().optional(),
@@ -80,11 +122,32 @@ export const summaryProviderSchema = z.object({
80
122
  providesMedia: z.boolean().optional(),
81
123
  });
82
124
 
125
+ export const validateAsyncSchema = z.object({
126
+ param: z.string(),
127
+ method: httpMethodSchema,
128
+ url: z.string(),
129
+ });
130
+
131
+ export const uploadSourceSchema = z.union([z.literal('camera'), z.literal('file')]);
132
+
83
133
  export const supportingValuesSchema = z.object({
84
134
  value: z.string().optional(),
85
135
  subvalue: z.string().optional(),
86
136
  });
87
137
 
138
+ export const stringSchemaFormatSchema = z.union([
139
+ z.literal('date'),
140
+ z.literal('email'),
141
+ z.literal('numeric'),
142
+ z.literal('password'),
143
+ z.literal('phone-number'),
144
+ z.literal('base64url'),
145
+ ]);
146
+
147
+ export const helpSchema = z.object({
148
+ markdown: z.string(),
149
+ });
150
+
88
151
  export const autocompleteTokenSchema = z.union([
89
152
  z.literal('on'),
90
153
  z.literal('name'),
@@ -151,15 +214,6 @@ export const autocompleteTokenSchema = z.union([
151
214
  z.literal('pager'),
152
215
  ]);
153
216
 
154
- export const stringSchemaFormatSchema = z.union([
155
- z.literal('date'),
156
- z.literal('email'),
157
- z.literal('numeric'),
158
- z.literal('password'),
159
- z.literal('phone-number'),
160
- z.literal('base64url'),
161
- ]);
162
-
163
217
  export const autocapitalizationTypeSchema = z.union([
164
218
  z.literal('none'),
165
219
  z.literal('characters'),
@@ -167,72 +221,176 @@ export const autocapitalizationTypeSchema = z.union([
167
221
  z.literal('words'),
168
222
  ]);
169
223
 
170
- export const jsonElementSchema: z.ZodSchema<JsonElement> = z.lazy(() =>
171
- z
172
- .union([
173
- z.string(),
174
- z.number(),
175
- z.boolean(),
176
- z.record(jsonElementSchema),
177
- z.array(jsonElementSchema),
178
- ])
179
- .nullable(),
180
- );
224
+ export const requestSchema = z.object({
225
+ url: z.string(),
226
+ method: httpMethodSchema,
227
+ body: jsonElementSchema.optional(),
228
+ prefetch: z.boolean().optional(),
229
+ headers: z.record(z.string()).optional(),
230
+ });
181
231
 
182
- export const uploadSourceSchema = z.union([z.literal('camera'), z.literal('file')]);
232
+ export const copyBehaviorSchema = z.object({
233
+ type: z.literal('copy'),
234
+ content: z.string(),
235
+ analytics: z.record(z.string()).optional(),
236
+ });
183
237
 
184
- export const sizeSchema = z.union([
185
- z.literal('xs'),
186
- z.literal('sm'),
187
- z.literal('md'),
188
- z.literal('lg'),
189
- z.literal('xl'),
190
- ]);
238
+ export const dismissBehaviorSchema = z.object({
239
+ type: z.literal('dismiss'),
240
+ analytics: z.record(z.string()).optional(),
241
+ });
191
242
 
192
- export const alignSchema = z.union([z.literal('left'), z.literal('center'), z.literal('right')]);
243
+ export const downloadBehaviorSchema = z.object({
244
+ type: z.literal('download'),
245
+ request: requestSchema,
246
+ analytics: z.record(z.string()).optional(),
247
+ });
193
248
 
194
- export const columnsLayoutBiasSchema = z.union([
195
- z.literal('none'),
196
- z.literal('left'),
197
- z.literal('right'),
198
- ]);
249
+ export const linkBehaviorSchema = z.object({
250
+ type: z.literal('link'),
251
+ url: z.string(),
252
+ analytics: z.record(z.string()).optional(),
253
+ });
199
254
 
200
- export const contextSchema = z.union([
255
+ export const refreshBehaviorSchema = z.object({
256
+ type: z.literal('refresh'),
257
+ analytics: z.record(z.string()).optional(),
258
+ });
259
+
260
+ export const actionTypeSchema = z.union([
261
+ z.literal('primary'),
262
+ z.literal('secondary'),
263
+ z.literal('link'),
201
264
  z.literal('positive'),
202
- z.literal('neutral'),
203
- z.literal('warning'),
204
265
  z.literal('negative'),
205
- z.literal('success'),
206
- z.literal('failure'),
207
- z.literal('info'),
208
- z.literal('primary'),
209
266
  ]);
210
267
 
211
- export const markdownLayoutSchema = z.object({
212
- type: z.literal('markdown'),
213
- content: z.string(),
214
- align: alignSchema.optional(),
215
- control: z.string().optional(),
216
- margin: sizeSchema.optional(),
217
- analyticsId: z.string().optional(),
218
- tags: z.array(z.string()).optional(),
219
- size: sizeSchema.optional(),
268
+ export const linkSchema = z.object({
269
+ url: z.string(),
220
270
  });
221
271
 
222
- export const statusListLayoutStatusSchema = z.union([
223
- z.literal('not-done'),
224
- z.literal('pending'),
225
- z.literal('done'),
272
+ export const navigationStackBehaviorSchema = z.union([
273
+ z.literal('default'),
274
+ z.literal('remove-previous'),
275
+ z.literal('remove-all'),
276
+ z.literal('replace-current'),
226
277
  ]);
227
278
 
228
- export const dividerLayoutSchema = z.object({
229
- type: z.literal('divider'),
230
- control: z.string().optional(),
231
- margin: sizeSchema.optional(),
232
- analyticsId: z.string().optional(),
279
+ export const actionSchema = z.object({
280
+ title: z.string().optional(),
281
+ type: actionTypeSchema.optional(),
282
+ disabled: z.boolean().optional(),
283
+ $id: z.string().optional(),
284
+ $ref: z.string().optional(),
285
+ id: z.string().optional(),
286
+ url: z.string().optional(),
287
+ method: httpMethodSchema.optional(),
288
+ exit: z.boolean().optional(),
289
+ result: jsonElementSchema.optional(),
290
+ data: jsonElementSchema.optional(),
291
+ timeout: z.number().optional(),
292
+ skipValidation: z.boolean().optional(),
293
+ prefetch: z.boolean().optional(),
294
+ });
295
+
296
+ export const actionBehaviorSchema = z.object({
297
+ type: z.literal('action'),
298
+ action: actionSchema,
299
+ analytics: z.record(z.string()).optional(),
300
+ });
301
+
302
+ export const contextSchema = z.union([
303
+ z.literal('positive'),
304
+ z.literal('neutral'),
305
+ z.literal('warning'),
306
+ z.literal('negative'),
307
+ z.literal('success'),
308
+ z.literal('failure'),
309
+ z.literal('info'),
310
+ z.literal('primary'),
311
+ ]);
312
+
313
+ export const containerBehaviorSchema = z.object({
314
+ action: actionSchema.optional(),
315
+ link: linkSchema.optional(),
316
+ analytics: z.record(z.string()).optional(),
317
+ });
318
+
319
+ export const modalPresentationSchema = z.object({
320
+ type: z.literal('modal'),
321
+ });
322
+
323
+ export const pushPresentationSchema = z.object({
324
+ type: z.literal('push'),
325
+ });
326
+
327
+ export const nativeLaunchConfigSchema = z.object({
328
+ type: z.literal('native'),
329
+ id: z.string(),
330
+ payload: jsonElementSchema.optional(),
331
+ });
332
+
333
+ export const sizeSchema = z.union([
334
+ z.literal('xs'),
335
+ z.literal('sm'),
336
+ z.literal('md'),
337
+ z.literal('lg'),
338
+ z.literal('xl'),
339
+ ]);
340
+
341
+ export const iconTextSchema = z.object({
342
+ text: z.string(),
343
+ });
344
+
345
+ export const alignSchema = z.union([z.literal('left'), z.literal('center'), z.literal('right')]);
346
+
347
+ export const iconNamedSchema = z.object({
348
+ name: z.string(),
349
+ });
350
+
351
+ export const iconSchema = z.union([iconNamedSchema, iconTextSchema]);
352
+
353
+ export const inlineAlertSchema = z.object({
354
+ content: z.string(),
355
+ context: contextSchema.optional(),
356
+ });
357
+
358
+ export const avatarUriContentSchema = z.object({
359
+ type: z.literal('uri'),
360
+ uri: z.string(),
361
+ badgeUri: z.string().optional(),
362
+ });
363
+
364
+ export const avatarTextContentSchema = z.object({
365
+ type: z.literal('text'),
366
+ text: z.string(),
367
+ badgeUri: z.string().optional(),
368
+ });
369
+
370
+ export const mediaImageSchema = z.object({
371
+ type: z.literal('image'),
372
+ uri: z.string(),
373
+ accessibilityDescription: z.string().optional(),
374
+ });
375
+
376
+ export const statusListLayoutStatusSchema = z.union([
377
+ z.literal('not-done'),
378
+ z.literal('pending'),
379
+ z.literal('done'),
380
+ ]);
381
+
382
+ export const dividerLayoutSchema = z.object({
383
+ type: z.literal('divider'),
384
+ control: z.string().optional(),
385
+ margin: sizeSchema.optional(),
386
+ analyticsId: z.string().optional(),
233
387
  tags: z.array(z.string()).optional(),
234
388
  });
235
389
 
390
+ export const formLayoutSchemaReferenceSchema = z.object({
391
+ $ref: z.string(),
392
+ });
393
+
236
394
  export const imageLayoutSchema = z.object({
237
395
  type: z.literal('image'),
238
396
  text: z.string().optional(),
@@ -247,41 +405,35 @@ export const imageLayoutSchema = z.object({
247
405
  tags: z.array(z.string()).optional(),
248
406
  });
249
407
 
250
- export const modalLayoutTriggerSchema = z.object({
251
- title: z.string(),
252
- });
253
-
254
- export const instructionsLayoutItemSchema = z.object({
255
- text: z.string(),
256
- context: contextSchema,
257
- tag: z.string().optional(),
408
+ export const formLayoutSchema = z.object({
409
+ type: z.literal('form'),
410
+ schema: formLayoutSchemaReferenceSchema.optional(),
411
+ schemaId: z.string(),
412
+ control: z.string().optional(),
413
+ margin: sizeSchema.optional(),
258
414
  analyticsId: z.string().optional(),
259
415
  tags: z.array(z.string()).optional(),
260
416
  });
261
417
 
262
- export const paragraphLayoutSchema = z.object({
263
- type: z.literal('paragraph'),
418
+ export const headingLayoutSchema = z.object({
419
+ type: z.literal('heading'),
264
420
  text: z.string(),
421
+ size: sizeSchema.optional(),
265
422
  align: alignSchema.optional(),
266
423
  control: z.string().optional(),
267
424
  margin: sizeSchema.optional(),
268
425
  analyticsId: z.string().optional(),
269
426
  tags: z.array(z.string()).optional(),
270
- size: sizeSchema.optional(),
271
427
  });
272
428
 
273
- export const progressLayoutSchema = z.object({
274
- type: z.literal('progress'),
275
- title: z.string().optional(),
276
- description: z.string().optional(),
277
- progress: z.number(),
278
- progressText: z.string(),
279
- context: contextSchema.optional(),
280
- help: helpSchema.optional(),
429
+ export const infoLayoutSchema = z.object({
430
+ type: z.literal('info'),
431
+ tags: z.array(z.string()).optional(),
432
+ markdown: z.string(),
433
+ align: alignSchema.optional(),
281
434
  control: z.string().optional(),
282
435
  margin: sizeSchema.optional(),
283
436
  analyticsId: z.string().optional(),
284
- tags: z.array(z.string()).optional(),
285
437
  });
286
438
 
287
439
  export const loadingIndicatorLayoutSchema = z.object({
@@ -293,226 +445,90 @@ export const loadingIndicatorLayoutSchema = z.object({
293
445
  tags: z.array(z.string()).optional(),
294
446
  });
295
447
 
296
- export const formLayoutSchemaReferenceSchema = z.object({
297
- $ref: z.string(),
298
- });
299
-
300
- export const listLayoutStatusSchema = z.union([
301
- z.literal('warning'),
302
- z.literal('neutral'),
303
- z.literal('positive'),
304
- ]);
305
-
306
- export const httpMethodSchema = z.union([
307
- z.literal('GET'),
308
- z.literal('POST'),
309
- z.literal('PUT'),
310
- z.literal('PATCH'),
311
- z.literal('DELETE'),
312
- ]);
313
-
314
- export const inlineAlertSchema = z.object({
448
+ export const markdownLayoutSchema = z.object({
449
+ type: z.literal('markdown'),
315
450
  content: z.string(),
316
- context: contextSchema.optional(),
317
- });
318
-
319
- export const infoLayoutSchema = z.object({
320
- type: z.literal('info'),
321
- tags: z.array(z.string()).optional(),
322
- markdown: z.string(),
323
451
  align: alignSchema.optional(),
324
452
  control: z.string().optional(),
325
453
  margin: sizeSchema.optional(),
326
454
  analyticsId: z.string().optional(),
327
- });
328
-
329
- export const formLayoutSchema = z.object({
330
- type: z.literal('form'),
331
- schema: formLayoutSchemaReferenceSchema.optional(),
332
- schemaId: z.string(),
333
- control: z.string().optional(),
334
- margin: sizeSchema.optional(),
335
- analyticsId: z.string().optional(),
336
455
  tags: z.array(z.string()).optional(),
456
+ size: sizeSchema.optional(),
337
457
  });
338
458
 
339
- export const headingLayoutSchema = z.object({
340
- type: z.literal('heading'),
459
+ export const paragraphLayoutSchema = z.object({
460
+ type: z.literal('paragraph'),
341
461
  text: z.string(),
342
- size: sizeSchema.optional(),
343
462
  align: alignSchema.optional(),
344
463
  control: z.string().optional(),
345
464
  margin: sizeSchema.optional(),
346
465
  analyticsId: z.string().optional(),
347
466
  tags: z.array(z.string()).optional(),
467
+ size: sizeSchema.optional(),
348
468
  });
349
469
 
350
- export const instructionsLayoutSchema = z.object({
351
- type: z.literal('instructions'),
470
+ export const progressLayoutSchema = z.object({
471
+ type: z.literal('progress'),
352
472
  title: z.string().optional(),
353
- items: z.array(instructionsLayoutItemSchema),
473
+ description: z.string().optional(),
474
+ progress: z.number(),
475
+ progressText: z.string(),
476
+ context: contextSchema.optional(),
477
+ help: helpSchema.optional(),
354
478
  control: z.string().optional(),
355
479
  margin: sizeSchema.optional(),
356
480
  analyticsId: z.string().optional(),
357
481
  tags: z.array(z.string()).optional(),
358
482
  });
359
483
 
360
- export const errorResponseBodySchema = z.object({
361
- refreshFormUrl: z.string().optional(),
362
- analytics: z.record(z.string()).optional(),
363
- error: z.string().optional(),
364
- validation: jsonElementSchema.optional(),
365
- refreshUrl: z.string().optional(),
366
- });
367
-
368
- export const noOpResponseBodySchema = z.object({});
369
-
370
- export const searchSearchRequestSchema = z.object({
371
- url: z.string(),
372
- method: httpMethodSchema,
373
- param: z.string(),
374
- query: z.string(),
375
- });
376
-
377
- export const stepErrorSchema = z.object({
378
- error: z.string().optional(),
379
- validation: jsonElementSchema.optional(),
380
- });
381
-
382
- export const validateAsyncSchema = z.object({
383
- param: z.string(),
384
- method: httpMethodSchema,
385
- url: z.string(),
386
- });
387
-
388
- export const linkSchema = z.object({
389
- url: z.string(),
390
- });
391
-
392
- export const modalPresentationSchema = z.object({
393
- type: z.literal('modal'),
394
- });
395
-
396
- export const pushPresentationSchema = z.object({
397
- type: z.literal('push'),
398
- });
399
-
400
- export const nativeLaunchConfigSchema = z.object({
401
- type: z.literal('native'),
402
- id: z.string(),
403
- payload: jsonElementSchema.optional(),
404
- });
405
-
406
- export const presentationSchema = z.union([modalPresentationSchema, pushPresentationSchema]);
407
-
408
- export const requestSchema = z.object({
409
- url: z.string(),
410
- method: httpMethodSchema,
411
- body: jsonElementSchema.optional(),
412
- prefetch: z.boolean().optional(),
413
- headers: z.record(z.string()).optional(),
414
- });
415
-
416
- export const actionTypeSchema = z.union([
417
- z.literal('primary'),
418
- z.literal('secondary'),
419
- z.literal('link'),
484
+ export const listLayoutStatusSchema = z.union([
485
+ z.literal('warning'),
486
+ z.literal('neutral'),
420
487
  z.literal('positive'),
421
- z.literal('negative'),
422
488
  ]);
423
489
 
424
- export const dismissBehaviorSchema = z.object({
425
- type: z.literal('dismiss'),
426
- analytics: z.record(z.string()).optional(),
427
- });
428
-
429
- export const navigationStackBehaviorSchema = z.union([
430
- z.literal('default'),
431
- z.literal('remove-previous'),
432
- z.literal('remove-all'),
433
- z.literal('replace-current'),
490
+ export const columnsLayoutBiasSchema = z.union([
491
+ z.literal('none'),
492
+ z.literal('left'),
493
+ z.literal('right'),
434
494
  ]);
435
495
 
436
- export const actionSchema = z.object({
437
- title: z.string().optional(),
438
- type: actionTypeSchema.optional(),
439
- disabled: z.boolean().optional(),
440
- $id: z.string().optional(),
441
- $ref: z.string().optional(),
442
- id: z.string().optional(),
443
- url: z.string().optional(),
444
- method: httpMethodSchema.optional(),
445
- exit: z.boolean().optional(),
446
- result: jsonElementSchema.optional(),
447
- data: jsonElementSchema.optional(),
448
- timeout: z.number().optional(),
449
- skipValidation: z.boolean().optional(),
450
- prefetch: z.boolean().optional(),
451
- });
452
-
453
- export const actionBehaviorSchema = z.object({
454
- type: z.literal('action'),
455
- action: actionSchema,
456
- analytics: z.record(z.string()).optional(),
457
- });
458
-
459
- export const navigationBackBehaviorSchema = z.object({
460
- title: z.string().optional(),
461
- action: actionSchema,
462
- });
463
-
464
- export const externalSchema = z.object({
465
- url: z.string(),
466
- });
467
-
468
- export const downloadBehaviorSchema = z.object({
469
- type: z.literal('download'),
470
- request: requestSchema,
471
- analytics: z.record(z.string()).optional(),
472
- });
473
-
474
- export const refreshBehaviorSchema = z.object({
475
- type: z.literal('refresh'),
476
- analytics: z.record(z.string()).optional(),
496
+ export const instructionsLayoutItemSchema = z.object({
497
+ text: z.string(),
498
+ context: contextSchema,
499
+ tag: z.string().optional(),
500
+ analyticsId: z.string().optional(),
501
+ tags: z.array(z.string()).optional(),
477
502
  });
478
503
 
479
- export const copyBehaviorSchema = z.object({
480
- type: z.literal('copy'),
481
- content: z.string(),
482
- analytics: z.record(z.string()).optional(),
504
+ export const modalLayoutTriggerSchema = z.object({
505
+ title: z.string(),
483
506
  });
484
507
 
485
- export const containerBehaviorSchema = z.object({
486
- action: actionSchema.optional(),
487
- link: linkSchema.optional(),
488
- analytics: z.record(z.string()).optional(),
508
+ export const actionResponseBodySchema = z.object({
509
+ action: actionSchema,
489
510
  });
490
511
 
491
- export const linkBehaviorSchema = z.object({
492
- type: z.literal('link'),
493
- url: z.string(),
494
- analytics: z.record(z.string()).optional(),
512
+ export const navigationBackBehaviorSchema = z.object({
513
+ title: z.string().optional(),
514
+ action: actionSchema,
495
515
  });
496
516
 
497
- export const iconTextSchema = z.object({
498
- text: z.string(),
517
+ export const navigationSchema = z.object({
518
+ backButton: navigationBackBehaviorSchema.optional(),
519
+ back: navigationBackBehaviorSchema.optional(),
520
+ stackBehavior: navigationStackBehaviorSchema.optional(),
499
521
  });
500
522
 
501
- export const iconNamedSchema = z.object({
502
- name: z.string(),
503
- });
523
+ export const presentationSchema = z.union([modalPresentationSchema, pushPresentationSchema]);
504
524
 
505
- export const avatarTextContentSchema = z.object({
506
- type: z.literal('text'),
507
- text: z.string(),
508
- badgeUri: z.string().optional(),
525
+ export const dynamicLaunchConfigSchema = z.object({
526
+ type: z.literal('dynamic'),
527
+ request: requestSchema,
528
+ presentation: presentationSchema,
509
529
  });
510
530
 
511
- export const avatarUriContentSchema = z.object({
512
- type: z.literal('uri'),
513
- uri: z.string(),
514
- badgeUri: z.string().optional(),
515
- });
531
+ export const launchConfigSchema = z.union([dynamicLaunchConfigSchema, nativeLaunchConfigSchema]);
516
532
 
517
533
  export const avatarContentSchema = z.union([avatarTextContentSchema, avatarUriContentSchema]);
518
534
 
@@ -522,33 +538,16 @@ export const mediaAvatarSchema = z.object({
522
538
  accessibilityDescription: z.string().optional(),
523
539
  });
524
540
 
525
- export const mediaImageSchema = z.object({
526
- type: z.literal('image'),
527
- uri: z.string(),
528
- accessibilityDescription: z.string().optional(),
529
- });
530
-
531
- export const iconSchema = z.union([iconNamedSchema, iconTextSchema]);
532
-
533
- export const navigationSchema = z.object({
534
- backButton: navigationBackBehaviorSchema.optional(),
535
- back: navigationBackBehaviorSchema.optional(),
536
- stackBehavior: navigationStackBehaviorSchema.optional(),
537
- });
538
-
539
541
  export const mediaSchema = z.union([mediaAvatarSchema, mediaImageSchema]);
540
542
 
541
- export const summarySummariserSchema = z.object({
542
- defaultTitle: z.string().optional(),
543
- defaultDescription: z.string().optional(),
544
- defaultIcon: iconSchema.optional(),
545
- defaultImage: imageSchema.optional(),
546
- providesTitle: z.boolean().optional(),
547
- providesDescription: z.boolean().optional(),
548
- providesIcon: z.boolean().optional(),
549
- providesImage: z.boolean().optional(),
550
- defaultMedia: mediaSchema.optional(),
551
- providesMedia: z.boolean().optional(),
543
+ export const instructionsLayoutSchema = z.object({
544
+ type: z.literal('instructions'),
545
+ title: z.string().optional(),
546
+ items: z.array(instructionsLayoutItemSchema),
547
+ control: z.string().optional(),
548
+ margin: sizeSchema.optional(),
549
+ analyticsId: z.string().optional(),
550
+ tags: z.array(z.string()).optional(),
552
551
  });
553
552
 
554
553
  export const mediaLayoutSchema = z.object({
@@ -562,10 +561,6 @@ export const mediaLayoutSchema = z.object({
562
561
  tags: z.array(z.string()).optional(),
563
562
  });
564
563
 
565
- export const actionResponseBodySchema = z.object({
566
- action: actionSchema,
567
- });
568
-
569
564
  export const searchResultActionSchema = z.object({
570
565
  type: z.literal('action'),
571
566
  title: z.string(),
@@ -588,11 +583,31 @@ export const searchResultSearchSchema = z.object({
588
583
 
589
584
  export const searchResultSchema = z.union([searchResultActionSchema, searchResultSearchSchema]);
590
585
 
586
+ export const searchResponseBodySchema = z.object({
587
+ type: z.literal('results').optional(),
588
+ results: z.array(searchResultSchema),
589
+ });
590
+
591
591
  export const searchResultsResponseBodySchema = z.object({
592
592
  type: z.literal('results'),
593
593
  results: z.array(searchResultSchema),
594
594
  });
595
595
 
596
+ export const summarySummariserSchema = z.object({
597
+ defaultTitle: z.string().optional(),
598
+ defaultDescription: z.string().optional(),
599
+ defaultIcon: iconSchema.optional(),
600
+ defaultImage: imageSchema.optional(),
601
+ providesTitle: z.boolean().optional(),
602
+ providesDescription: z.boolean().optional(),
603
+ providesIcon: z.boolean().optional(),
604
+ providesImage: z.boolean().optional(),
605
+ defaultMedia: mediaSchema.optional(),
606
+ providesMedia: z.boolean().optional(),
607
+ });
608
+
609
+ export const summarySchema = z.union([summaryProviderSchema, summarySummariserSchema]);
610
+
596
611
  export const suggestionsValueSchema = z.object({
597
612
  label: z.string(),
598
613
  value: jsonElementSchema,
@@ -604,39 +619,170 @@ export const suggestionsValueSchema = z.object({
604
619
  tags: z.array(z.string()).optional(),
605
620
  });
606
621
 
607
- export const dynamicLaunchConfigSchema = z.object({
608
- type: z.literal('dynamic'),
609
- request: requestSchema,
610
- presentation: presentationSchema,
622
+ export const searchInitialResultsConfigSchema = z.object({
623
+ type: z.literal('results'),
624
+ results: z.array(searchResultSchema),
611
625
  });
612
626
 
613
- export const launchConfigSchema = z.union([dynamicLaunchConfigSchema, nativeLaunchConfigSchema]);
614
-
615
- export const summarySchema = z.union([summaryProviderSchema, summarySummariserSchema]);
616
-
617
627
  export const suggestionsSchema = z.object({
618
628
  values: z.array(suggestionsValueSchema),
619
629
  });
620
630
 
621
- export const searchInitialResultsConfigSchema = z.object({
622
- type: z.literal('results'),
623
- results: z.array(searchResultSchema),
624
- });
631
+ export const stepSchema: z.ZodSchema<Step> = z.lazy(() =>
632
+ z.object({
633
+ key: z.string().optional(),
634
+ type: z.string().optional(),
635
+ actions: z.array(actionSchema).optional(),
636
+ refreshFormUrl: z.string().optional(),
637
+ id: z.string(),
638
+ title: z.string(),
639
+ schemas: z.array(schemaSchema),
640
+ layout: z.array(layoutSchema),
641
+ description: z.string().optional(),
642
+ model: jsonElementSchema.optional(),
643
+ external: externalSchema.optional(),
644
+ polling: pollingSchema.optional(),
645
+ linkHandlers: z.array(linkHandlerSchema).optional(),
646
+ analytics: z.record(z.string()).optional(),
647
+ errors: stepErrorSchema.optional(),
648
+ navigation: navigationSchema.optional(),
649
+ refreshUrl: z.string().optional(),
650
+ control: z.string().optional(),
651
+ refreshAfter: z.string().optional(),
652
+ toolbar: toolbarSchema.optional(),
653
+ tags: z.array(z.string()).optional(),
654
+ footer: z.array(layoutSchema).optional(),
655
+ onLoad: behaviorSchema.optional(),
656
+ }),
657
+ );
658
+
659
+ export const schemaSchema: z.ZodSchema<Schema> = z.lazy(() =>
660
+ z.union([
661
+ allOfSchemaSchema,
662
+ arraySchemaSchema,
663
+ blobSchemaSchema,
664
+ booleanSchemaSchema,
665
+ constSchemaSchema,
666
+ integerSchemaSchema,
667
+ numberSchemaSchema,
668
+ objectSchemaSchema,
669
+ oneOfSchemaSchema,
670
+ stringSchemaSchema,
671
+ ]),
672
+ );
673
+
674
+ export const layoutSchema: z.ZodSchema<Layout> = z.lazy(() =>
675
+ z.union([
676
+ alertLayoutSchema,
677
+ boxLayoutSchema,
678
+ buttonLayoutSchema,
679
+ columnsLayoutSchema,
680
+ decisionLayoutSchema,
681
+ dividerLayoutSchema,
682
+ formLayoutSchema,
683
+ headingLayoutSchema,
684
+ imageLayoutSchema,
685
+ infoLayoutSchema,
686
+ instructionsLayoutSchema,
687
+ listLayoutSchema,
688
+ loadingIndicatorLayoutSchema,
689
+ markdownLayoutSchema,
690
+ mediaLayoutSchema,
691
+ modalLayoutSchema,
692
+ paragraphLayoutSchema,
693
+ progressLayoutSchema,
694
+ reviewLayoutSchema,
695
+ searchLayoutSchema,
696
+ sectionLayoutSchema,
697
+ statusListLayoutSchema,
698
+ tabsLayoutSchema,
699
+ upsellLayoutSchema,
700
+ ]),
701
+ );
702
+
703
+ export const pollingSchema: z.ZodSchema<Polling> = z.lazy(() =>
704
+ z.object({
705
+ interval: z.number().optional(),
706
+ url: z.string(),
707
+ delay: z.number().optional(),
708
+ timeout: z.number().optional(),
709
+ maxAttempts: z.number(),
710
+ onError: pollingOnErrorSchema,
711
+ }),
712
+ );
713
+
714
+ export const linkHandlerSchema: z.ZodSchema<LinkHandler> = z.lazy(() =>
715
+ z.object({
716
+ regexPattern: z.string(),
717
+ behavior: behaviorSchema.optional(),
718
+ }),
719
+ );
720
+
721
+ export const toolbarSchema: z.ZodSchema<Toolbar> = z.lazy(() =>
722
+ z.object({
723
+ items: z.array(toolbarItemSchema),
724
+ control: z.string().optional(),
725
+ tags: z.array(z.string()).optional(),
726
+ }),
727
+ );
728
+
729
+ export const behaviorSchema: z.ZodSchema<Behavior> = z.lazy(() =>
730
+ z.union([
731
+ actionBehaviorSchema,
732
+ containerBehaviorSchema,
733
+ copyBehaviorSchema,
734
+ dismissBehaviorSchema,
735
+ downloadBehaviorSchema,
736
+ linkBehaviorSchema,
737
+ modalBehaviorSchema,
738
+ refreshBehaviorSchema,
739
+ subflowBehaviorSchema,
740
+ ]),
741
+ );
742
+
743
+ export const subflowResponseBodySchema: z.ZodSchema<SubflowResponseBody> = z.lazy(() =>
744
+ z.object({
745
+ referrerId: z.string(),
746
+ launchConfig: launchConfigSchema,
747
+ resultKey: z.string().optional(),
748
+ onCompletion: behaviorSchema.optional(),
749
+ onError: behaviorSchema.optional(),
750
+ }),
751
+ );
752
+
753
+ export const searchInitialLayoutConfigSchema: z.ZodSchema<SearchInitialLayoutConfig> = z.lazy(() =>
754
+ z.object({
755
+ type: z.literal('layout'),
756
+ content: z.array(layoutSchema),
757
+ }),
758
+ );
759
+
760
+ export const searchInitialStateSchema: z.ZodSchema<SearchInitialState> = z.lazy(() =>
761
+ z.union([searchInitialLayoutConfigSchema, searchInitialResultsConfigSchema]),
762
+ );
763
+
764
+ export const searchLayoutResponseBodySchema: z.ZodSchema<SearchLayoutResponseBody> = z.lazy(() =>
765
+ z.object({
766
+ type: z.literal('layout'),
767
+ content: z.array(layoutSchema),
768
+ }),
769
+ );
770
+
771
+ export const searchResponseSchema: z.ZodSchema<SearchResponse> = z.lazy(() =>
772
+ z.union([searchLayoutResponseBodySchema, searchResultsResponseBodySchema]),
773
+ );
625
774
 
626
- export const searchResponseBodySchema = z.object({
627
- type: z.literal('results').optional(),
628
- results: z.array(searchResultSchema),
629
- });
775
+ export const modalResponseBodySchema: z.ZodSchema<ModalResponseBody> = z.lazy(() =>
776
+ z.object({
777
+ title: z.string().optional(),
778
+ content: z.array(layoutSchema),
779
+ }),
780
+ );
630
781
 
631
- export const objectSchemaSchema: z.ZodSchema<ObjectSchema> = z.lazy(() =>
782
+ export const blobSchemaSchema: z.ZodSchema<BlobSchema> = z.lazy(() =>
632
783
  z.object({
633
- type: z.literal('object'),
634
- disabled: z.boolean().optional(),
784
+ type: z.literal('blob'),
635
785
  promoted: z.boolean().optional(),
636
- help: helpSchema.optional(),
637
- properties: z.record(schemaSchema),
638
- displayOrder: z.array(z.string()),
639
- required: z.array(z.string()).optional(),
640
786
  $id: z.string().optional(),
641
787
  title: z.string().optional(),
642
788
  description: z.string().optional(),
@@ -647,32 +793,22 @@ export const objectSchemaSchema: z.ZodSchema<ObjectSchema> = z.lazy(() =>
647
793
  keywords: z.array(z.string()).optional(),
648
794
  summary: summaryProviderSchema.optional(),
649
795
  analyticsId: z.string().optional(),
796
+ validationAsync: validateAsyncSchema.optional(),
797
+ validationMessages: z.record(z.string()).optional(),
650
798
  alert: alertLayoutSchema.optional(),
799
+ cameraConfig: jsonElementSchema.optional(),
800
+ accepts: z.array(z.string()).optional(),
801
+ maxSize: z.number().optional(),
802
+ source: uploadSourceSchema.optional(),
803
+ disabled: z.boolean().optional(),
651
804
  media: mediaSchema.optional(),
652
805
  tags: z.array(z.string()).optional(),
653
- format: z.string().optional(),
654
806
  additionalText: z.string().optional(),
655
807
  supportingValues: supportingValuesSchema.optional(),
656
808
  inlineAlert: inlineAlertSchema.optional(),
657
- onChange: behaviorSchema.optional(),
658
809
  }),
659
810
  );
660
811
 
661
- export const schemaSchema: z.ZodSchema<Schema> = z.lazy(() =>
662
- z.union([
663
- allOfSchemaSchema,
664
- arraySchemaSchema,
665
- blobSchemaSchema,
666
- booleanSchemaSchema,
667
- constSchemaSchema,
668
- integerSchemaSchema,
669
- numberSchemaSchema,
670
- objectSchemaSchema,
671
- oneOfSchemaSchema,
672
- stringSchemaSchema,
673
- ]),
674
- );
675
-
676
812
  export const alertLayoutSchema: z.ZodSchema<AlertLayout> = z.lazy(() =>
677
813
  z.object({
678
814
  type: z.literal('alert'),
@@ -686,52 +822,22 @@ export const alertLayoutSchema: z.ZodSchema<AlertLayout> = z.lazy(() =>
686
822
  }),
687
823
  );
688
824
 
689
- export const behaviorSchema: z.ZodSchema<Behavior> = z.lazy(() =>
690
- z.union([
691
- actionBehaviorSchema,
692
- containerBehaviorSchema,
693
- copyBehaviorSchema,
694
- dismissBehaviorSchema,
695
- downloadBehaviorSchema,
696
- linkBehaviorSchema,
697
- modalBehaviorSchema,
698
- refreshBehaviorSchema,
699
- subflowBehaviorSchema,
700
- ]),
701
- );
702
-
703
- export const integerSchemaSchema: z.ZodSchema<IntegerSchema> = z.lazy(() =>
825
+ export const allOfSchemaSchema: z.ZodSchema<AllOfSchema> = z.lazy(() =>
704
826
  z.object({
705
- type: z.literal('integer'),
706
- autofillProvider: z.string().optional(),
827
+ disabled: z.boolean().optional(),
707
828
  promoted: z.boolean().optional(),
708
- refreshFormOnChange: z.boolean().optional(),
709
- refreshUrl: z.string().optional(),
710
- refreshFormUrl: z.string().optional(),
711
- placeholder: z.string().optional(),
712
- minimum: z.number().optional(),
713
- maximum: z.number().optional(),
829
+ allOf: z.array(schemaSchema),
714
830
  $id: z.string().optional(),
715
831
  title: z.string().optional(),
716
832
  description: z.string().optional(),
717
833
  control: z.string().optional(),
718
- default: z.number().optional(),
719
834
  hidden: z.boolean().optional(),
720
- disabled: z.boolean().optional(),
721
835
  icon: iconSchema.optional(),
722
836
  image: imageSchema.optional(),
723
837
  keywords: z.array(z.string()).optional(),
724
838
  summary: summaryProviderSchema.optional(),
725
839
  analyticsId: z.string().optional(),
726
- persistAsync: persistAsyncSchema.optional(),
727
- refreshStepOnChange: z.boolean().optional(),
728
- validationAsync: validateAsyncSchema.optional(),
729
- validationMessages: z.record(z.string()).optional(),
730
840
  alert: alertLayoutSchema.optional(),
731
- autocompleteHint: z.array(autocompleteTokenSchema).optional(),
732
- autofillKey: z.string().optional(),
733
- help: helpSchema.optional(),
734
- onChange: behaviorSchema.optional(),
735
841
  media: mediaSchema.optional(),
736
842
  tags: z.array(z.string()).optional(),
737
843
  additionalText: z.string().optional(),
@@ -740,14 +846,8 @@ export const integerSchemaSchema: z.ZodSchema<IntegerSchema> = z.lazy(() =>
740
846
  }),
741
847
  );
742
848
 
743
- export const persistAsyncSchema: z.ZodSchema<PersistAsync> = z.lazy(() =>
744
- z.object({
745
- param: z.string(),
746
- idProperty: z.string(),
747
- schema: schemaSchema,
748
- url: z.string(),
749
- method: httpMethodSchema,
750
- }),
849
+ export const arraySchemaSchema: z.ZodSchema<ArraySchema> = z.lazy(() =>
850
+ z.union([arraySchemaListSchema, arraySchemaTupleSchema]),
751
851
  );
752
852
 
753
853
  export const booleanSchemaSchema: z.ZodSchema<BooleanSchema> = z.lazy(() =>
@@ -785,51 +885,24 @@ export const booleanSchemaSchema: z.ZodSchema<BooleanSchema> = z.lazy(() =>
785
885
  }),
786
886
  );
787
887
 
788
- export const stringSchemaSchema: z.ZodSchema<StringSchema> = z.lazy(() =>
888
+ export const constSchemaSchema: z.ZodSchema<ConstSchema> = z.lazy(() =>
789
889
  z.object({
790
- type: z.literal('string'),
791
- autofillProvider: z.string().optional(),
890
+ hidden: z.boolean().optional(),
891
+ control: z.string().optional(),
792
892
  promoted: z.boolean().optional(),
793
- refreshFormOnChange: z.boolean().optional(),
794
- refreshUrl: z.string().optional(),
795
- refreshFormUrl: z.string().optional(),
796
- format: stringSchemaFormatSchema.optional(),
797
- displayFormat: z.string().optional(),
798
- placeholder: z.string().optional(),
799
- minLength: z.number().optional(),
800
- maxLength: z.number().optional(),
801
- minimum: z.string().optional(),
802
- maximum: z.string().optional(),
803
- pattern: z.string().optional(),
804
- autocapitalization: autocapitalizationTypeSchema.optional(),
805
- autocorrect: z.boolean().optional(),
806
893
  $id: z.string().optional(),
894
+ const: jsonElementSchema,
807
895
  title: z.string().optional(),
808
896
  description: z.string().optional(),
809
- control: z.string().optional(),
810
- default: z.string().optional(),
811
- hidden: z.boolean().optional(),
812
- disabled: z.boolean().optional(),
813
897
  icon: iconSchema.optional(),
814
898
  image: imageSchema.optional(),
815
899
  keywords: z.array(z.string()).optional(),
816
900
  summary: summaryProviderSchema.optional(),
817
901
  analyticsId: z.string().optional(),
818
- persistAsync: persistAsyncSchema.optional(),
819
- refreshStepOnChange: z.boolean().optional(),
820
- validationAsync: validateAsyncSchema.optional(),
821
- validationMessages: z.record(z.string()).optional(),
822
- alert: alertLayoutSchema.optional(),
823
- cameraConfig: jsonElementSchema.optional(),
824
- accepts: z.array(z.string()).optional(),
825
- maxSize: z.number().optional(),
826
- source: uploadSourceSchema.optional(),
827
- autocompleteHint: z.array(autocompleteTokenSchema).optional(),
828
- autofillKey: z.string().optional(),
829
- help: helpSchema.optional(),
830
- suggestions: suggestionsSchema.optional(),
831
- onChange: behaviorSchema.optional(),
902
+ disabled: z.boolean().optional(),
832
903
  media: mediaSchema.optional(),
904
+ alert: alertLayoutSchema.optional(),
905
+ layout: z.array(layoutSchema).optional(),
833
906
  tags: z.array(z.string()).optional(),
834
907
  additionalText: z.string().optional(),
835
908
  supportingValues: supportingValuesSchema.optional(),
@@ -837,24 +910,38 @@ export const stringSchemaSchema: z.ZodSchema<StringSchema> = z.lazy(() =>
837
910
  }),
838
911
  );
839
912
 
840
- export const arraySchemaTupleSchema: z.ZodSchema<ArraySchemaTuple> = z.lazy(() =>
913
+ export const integerSchemaSchema: z.ZodSchema<IntegerSchema> = z.lazy(() =>
841
914
  z.object({
842
- type: z.literal('array'),
915
+ type: z.literal('integer'),
916
+ autofillProvider: z.string().optional(),
843
917
  promoted: z.boolean().optional(),
918
+ refreshFormOnChange: z.boolean().optional(),
919
+ refreshUrl: z.string().optional(),
920
+ refreshFormUrl: z.string().optional(),
921
+ placeholder: z.string().optional(),
922
+ minimum: z.number().optional(),
923
+ maximum: z.number().optional(),
844
924
  $id: z.string().optional(),
845
- items: z.array(schemaSchema),
846
925
  title: z.string().optional(),
847
926
  description: z.string().optional(),
848
927
  control: z.string().optional(),
928
+ default: z.number().optional(),
849
929
  hidden: z.boolean().optional(),
930
+ disabled: z.boolean().optional(),
850
931
  icon: iconSchema.optional(),
851
932
  image: imageSchema.optional(),
852
933
  keywords: z.array(z.string()).optional(),
853
934
  summary: summaryProviderSchema.optional(),
854
935
  analyticsId: z.string().optional(),
855
936
  persistAsync: persistAsyncSchema.optional(),
937
+ refreshStepOnChange: z.boolean().optional(),
856
938
  validationAsync: validateAsyncSchema.optional(),
939
+ validationMessages: z.record(z.string()).optional(),
857
940
  alert: alertLayoutSchema.optional(),
941
+ autocompleteHint: z.array(autocompleteTokenSchema).optional(),
942
+ autofillKey: z.string().optional(),
943
+ help: helpSchema.optional(),
944
+ onChange: behaviorSchema.optional(),
858
945
  media: mediaSchema.optional(),
859
946
  tags: z.array(z.string()).optional(),
860
947
  additionalText: z.string().optional(),
@@ -903,21 +990,16 @@ export const numberSchemaSchema: z.ZodSchema<NumberSchema> = z.lazy(() =>
903
990
  }),
904
991
  );
905
992
 
906
- export const arraySchemaSchema: z.ZodSchema<ArraySchema> = z.lazy(() =>
907
- z.union([arraySchemaListSchema, arraySchemaTupleSchema]),
908
- );
909
-
910
- export const arraySchemaListSchema: z.ZodSchema<ArraySchemaList> = z.lazy(() =>
993
+ export const objectSchemaSchema: z.ZodSchema<ObjectSchema> = z.lazy(() =>
911
994
  z.object({
912
- type: z.literal('array'),
995
+ type: z.literal('object'),
996
+ disabled: z.boolean().optional(),
913
997
  promoted: z.boolean().optional(),
998
+ help: helpSchema.optional(),
999
+ properties: z.record(schemaSchema),
1000
+ displayOrder: z.array(z.string()),
1001
+ required: z.array(z.string()).optional(),
914
1002
  $id: z.string().optional(),
915
- items: schemaSchema,
916
- addItemTitle: z.string(),
917
- editItemTitle: z.string(),
918
- minItems: z.number().optional(),
919
- maxItems: z.number().optional(),
920
- placeholder: z.string().optional(),
921
1003
  title: z.string().optional(),
922
1004
  description: z.string().optional(),
923
1005
  control: z.string().optional(),
@@ -925,43 +1007,48 @@ export const arraySchemaListSchema: z.ZodSchema<ArraySchemaList> = z.lazy(() =>
925
1007
  icon: iconSchema.optional(),
926
1008
  image: imageSchema.optional(),
927
1009
  keywords: z.array(z.string()).optional(),
928
- summary: summarySummariserSchema.optional(),
1010
+ summary: summaryProviderSchema.optional(),
929
1011
  analyticsId: z.string().optional(),
930
- persistAsync: persistAsyncSchema.optional(),
931
- validationAsync: validateAsyncSchema.optional(),
932
1012
  alert: alertLayoutSchema.optional(),
933
- validationMessages: z.record(z.string()).optional(),
934
- disabled: z.boolean().optional(),
935
1013
  media: mediaSchema.optional(),
936
1014
  tags: z.array(z.string()).optional(),
1015
+ format: z.string().optional(),
937
1016
  additionalText: z.string().optional(),
938
1017
  supportingValues: supportingValuesSchema.optional(),
939
1018
  inlineAlert: inlineAlertSchema.optional(),
1019
+ onChange: behaviorSchema.optional(),
940
1020
  }),
941
1021
  );
942
1022
 
943
- export const blobSchemaSchema: z.ZodSchema<BlobSchema> = z.lazy(() =>
1023
+ export const oneOfSchemaSchema: z.ZodSchema<OneOfSchema> = z.lazy(() =>
944
1024
  z.object({
945
- type: z.literal('blob'),
1025
+ autofillProvider: z.string().optional(),
946
1026
  promoted: z.boolean().optional(),
1027
+ refreshFormOnChange: z.boolean().optional(),
1028
+ refreshUrl: z.string().optional(),
1029
+ refreshFormUrl: z.string().optional(),
1030
+ promotion: jsonElementSchema.optional(),
1031
+ oneOf: z.array(schemaSchema),
1032
+ placeholder: z.string().optional(),
947
1033
  $id: z.string().optional(),
948
1034
  title: z.string().optional(),
949
1035
  description: z.string().optional(),
950
1036
  control: z.string().optional(),
1037
+ default: jsonElementSchema.optional(),
951
1038
  hidden: z.boolean().optional(),
952
1039
  icon: iconSchema.optional(),
953
1040
  image: imageSchema.optional(),
954
1041
  keywords: z.array(z.string()).optional(),
955
1042
  summary: summaryProviderSchema.optional(),
956
1043
  analyticsId: z.string().optional(),
957
- validationAsync: validateAsyncSchema.optional(),
958
- validationMessages: z.record(z.string()).optional(),
1044
+ refreshStepOnChange: z.boolean().optional(),
959
1045
  alert: alertLayoutSchema.optional(),
960
- cameraConfig: jsonElementSchema.optional(),
961
- accepts: z.array(z.string()).optional(),
962
- maxSize: z.number().optional(),
963
- source: uploadSourceSchema.optional(),
1046
+ help: helpSchema.optional(),
1047
+ autocompleteHint: z.array(autocompleteTokenSchema).optional(),
1048
+ autofillKey: z.string().optional(),
1049
+ validationMessages: z.record(z.string()).optional(),
964
1050
  disabled: z.boolean().optional(),
1051
+ onChange: behaviorSchema.optional(),
965
1052
  media: mediaSchema.optional(),
966
1053
  tags: z.array(z.string()).optional(),
967
1054
  additionalText: z.string().optional(),
@@ -970,22 +1057,50 @@ export const blobSchemaSchema: z.ZodSchema<BlobSchema> = z.lazy(() =>
970
1057
  }),
971
1058
  );
972
1059
 
973
- export const allOfSchemaSchema: z.ZodSchema<AllOfSchema> = z.lazy(() =>
1060
+ export const stringSchemaSchema: z.ZodSchema<StringSchema> = z.lazy(() =>
974
1061
  z.object({
975
- disabled: z.boolean().optional(),
1062
+ type: z.literal('string'),
1063
+ autofillProvider: z.string().optional(),
976
1064
  promoted: z.boolean().optional(),
977
- allOf: z.array(schemaSchema),
1065
+ refreshFormOnChange: z.boolean().optional(),
1066
+ refreshUrl: z.string().optional(),
1067
+ refreshFormUrl: z.string().optional(),
1068
+ format: stringSchemaFormatSchema.optional(),
1069
+ displayFormat: z.string().optional(),
1070
+ placeholder: z.string().optional(),
1071
+ minLength: z.number().optional(),
1072
+ maxLength: z.number().optional(),
1073
+ minimum: z.string().optional(),
1074
+ maximum: z.string().optional(),
1075
+ pattern: z.string().optional(),
1076
+ autocapitalization: autocapitalizationTypeSchema.optional(),
1077
+ autocorrect: z.boolean().optional(),
978
1078
  $id: z.string().optional(),
979
1079
  title: z.string().optional(),
980
1080
  description: z.string().optional(),
981
1081
  control: z.string().optional(),
1082
+ default: z.string().optional(),
982
1083
  hidden: z.boolean().optional(),
1084
+ disabled: z.boolean().optional(),
983
1085
  icon: iconSchema.optional(),
984
1086
  image: imageSchema.optional(),
985
1087
  keywords: z.array(z.string()).optional(),
986
1088
  summary: summaryProviderSchema.optional(),
987
1089
  analyticsId: z.string().optional(),
1090
+ persistAsync: persistAsyncSchema.optional(),
1091
+ refreshStepOnChange: z.boolean().optional(),
1092
+ validationAsync: validateAsyncSchema.optional(),
1093
+ validationMessages: z.record(z.string()).optional(),
988
1094
  alert: alertLayoutSchema.optional(),
1095
+ cameraConfig: jsonElementSchema.optional(),
1096
+ accepts: z.array(z.string()).optional(),
1097
+ maxSize: z.number().optional(),
1098
+ source: uploadSourceSchema.optional(),
1099
+ autocompleteHint: z.array(autocompleteTokenSchema).optional(),
1100
+ autofillKey: z.string().optional(),
1101
+ help: helpSchema.optional(),
1102
+ suggestions: suggestionsSchema.optional(),
1103
+ onChange: behaviorSchema.optional(),
989
1104
  media: mediaSchema.optional(),
990
1105
  tags: z.array(z.string()).optional(),
991
1106
  additionalText: z.string().optional(),
@@ -994,35 +1109,31 @@ export const allOfSchemaSchema: z.ZodSchema<AllOfSchema> = z.lazy(() =>
994
1109
  }),
995
1110
  );
996
1111
 
997
- export const oneOfSchemaSchema: z.ZodSchema<OneOfSchema> = z.lazy(() =>
998
- z.object({
999
- autofillProvider: z.string().optional(),
1000
- promoted: z.boolean().optional(),
1001
- refreshFormOnChange: z.boolean().optional(),
1002
- refreshUrl: z.string().optional(),
1003
- refreshFormUrl: z.string().optional(),
1004
- promotion: jsonElementSchema.optional(),
1005
- oneOf: z.array(schemaSchema),
1006
- placeholder: z.string().optional(),
1112
+ export const arraySchemaListSchema: z.ZodSchema<ArraySchemaList> = z.lazy(() =>
1113
+ z.object({
1114
+ type: z.literal('array'),
1115
+ promoted: z.boolean().optional(),
1007
1116
  $id: z.string().optional(),
1117
+ items: schemaSchema,
1118
+ addItemTitle: z.string(),
1119
+ editItemTitle: z.string(),
1120
+ minItems: z.number().optional(),
1121
+ maxItems: z.number().optional(),
1122
+ placeholder: z.string().optional(),
1008
1123
  title: z.string().optional(),
1009
1124
  description: z.string().optional(),
1010
1125
  control: z.string().optional(),
1011
- default: jsonElementSchema.optional(),
1012
1126
  hidden: z.boolean().optional(),
1013
1127
  icon: iconSchema.optional(),
1014
1128
  image: imageSchema.optional(),
1015
1129
  keywords: z.array(z.string()).optional(),
1016
- summary: summaryProviderSchema.optional(),
1130
+ summary: summarySummariserSchema.optional(),
1017
1131
  analyticsId: z.string().optional(),
1018
- refreshStepOnChange: z.boolean().optional(),
1132
+ persistAsync: persistAsyncSchema.optional(),
1133
+ validationAsync: validateAsyncSchema.optional(),
1019
1134
  alert: alertLayoutSchema.optional(),
1020
- help: helpSchema.optional(),
1021
- autocompleteHint: z.array(autocompleteTokenSchema).optional(),
1022
- autofillKey: z.string().optional(),
1023
1135
  validationMessages: z.record(z.string()).optional(),
1024
1136
  disabled: z.boolean().optional(),
1025
- onChange: behaviorSchema.optional(),
1026
1137
  media: mediaSchema.optional(),
1027
1138
  tags: z.array(z.string()).optional(),
1028
1139
  additionalText: z.string().optional(),
@@ -1031,24 +1142,35 @@ export const oneOfSchemaSchema: z.ZodSchema<OneOfSchema> = z.lazy(() =>
1031
1142
  }),
1032
1143
  );
1033
1144
 
1034
- export const constSchemaSchema: z.ZodSchema<ConstSchema> = z.lazy(() =>
1145
+ export const persistAsyncSchema: z.ZodSchema<PersistAsync> = z.lazy(() =>
1035
1146
  z.object({
1036
- hidden: z.boolean().optional(),
1037
- control: z.string().optional(),
1147
+ param: z.string(),
1148
+ idProperty: z.string(),
1149
+ schema: schemaSchema,
1150
+ url: z.string(),
1151
+ method: httpMethodSchema,
1152
+ }),
1153
+ );
1154
+
1155
+ export const arraySchemaTupleSchema: z.ZodSchema<ArraySchemaTuple> = z.lazy(() =>
1156
+ z.object({
1157
+ type: z.literal('array'),
1038
1158
  promoted: z.boolean().optional(),
1039
1159
  $id: z.string().optional(),
1040
- const: jsonElementSchema,
1160
+ items: z.array(schemaSchema),
1041
1161
  title: z.string().optional(),
1042
1162
  description: z.string().optional(),
1163
+ control: z.string().optional(),
1164
+ hidden: z.boolean().optional(),
1043
1165
  icon: iconSchema.optional(),
1044
1166
  image: imageSchema.optional(),
1045
1167
  keywords: z.array(z.string()).optional(),
1046
1168
  summary: summaryProviderSchema.optional(),
1047
1169
  analyticsId: z.string().optional(),
1048
- disabled: z.boolean().optional(),
1049
- media: mediaSchema.optional(),
1170
+ persistAsync: persistAsyncSchema.optional(),
1171
+ validationAsync: validateAsyncSchema.optional(),
1050
1172
  alert: alertLayoutSchema.optional(),
1051
- layout: z.array(layoutSchema).optional(),
1173
+ media: mediaSchema.optional(),
1052
1174
  tags: z.array(z.string()).optional(),
1053
1175
  additionalText: z.string().optional(),
1054
1176
  supportingValues: supportingValuesSchema.optional(),
@@ -1056,100 +1178,56 @@ export const constSchemaSchema: z.ZodSchema<ConstSchema> = z.lazy(() =>
1056
1178
  }),
1057
1179
  );
1058
1180
 
1059
- export const layoutSchema: z.ZodSchema<Layout> = z.lazy(() =>
1060
- z.union([
1061
- alertLayoutSchema,
1062
- boxLayoutSchema,
1063
- buttonLayoutSchema,
1064
- columnsLayoutSchema,
1065
- decisionLayoutSchema,
1066
- dividerLayoutSchema,
1067
- formLayoutSchema,
1068
- headingLayoutSchema,
1069
- imageLayoutSchema,
1070
- infoLayoutSchema,
1071
- instructionsLayoutSchema,
1072
- listLayoutSchema,
1073
- loadingIndicatorLayoutSchema,
1074
- markdownLayoutSchema,
1075
- mediaLayoutSchema,
1076
- modalLayoutSchema,
1077
- paragraphLayoutSchema,
1078
- progressLayoutSchema,
1079
- reviewLayoutSchema,
1080
- searchLayoutSchema,
1081
- sectionLayoutSchema,
1082
- statusListLayoutSchema,
1083
- tabsLayoutSchema,
1084
- upsellLayoutSchema,
1085
- ]),
1086
- );
1087
-
1088
- export const reviewLayoutFieldSchema: z.ZodSchema<ReviewLayoutField> = z.lazy(() =>
1181
+ export const modalBehaviorSchema: z.ZodSchema<ModalBehavior> = z.lazy(() =>
1089
1182
  z.object({
1090
- label: z.string(),
1091
- value: z.string(),
1092
- rawValue: z.string().optional(),
1093
- help: helpSchema.optional(),
1094
- tag: z.string().optional(),
1095
- icon: iconSchema.optional(),
1096
- image: imageSchema.optional(),
1097
- additionalInfo: additionalInfoSchema.optional(),
1098
- inlineAlert: inlineAlertSchema.optional(),
1099
- callToAction: reviewLayoutCallToActionSchema.optional(),
1100
- media: mediaSchema.optional(),
1101
- analyticsId: z.string().optional(),
1102
- tags: z.array(z.string()).optional(),
1183
+ type: z.literal('modal'),
1184
+ title: z.string().optional(),
1185
+ content: z.array(layoutSchema),
1186
+ analytics: z.record(z.string()).optional(),
1103
1187
  }),
1104
1188
  );
1105
1189
 
1106
- export const additionalInfoSchema: z.ZodSchema<AdditionalInfo> = z.lazy(() =>
1190
+ export const subflowBehaviorSchema: z.ZodSchema<SubflowBehavior> = z.lazy(() =>
1107
1191
  z.object({
1108
- text: z.string(),
1109
- behavior: behaviorSchema.optional(),
1110
- accessibilityDescription: z.string().optional(),
1192
+ type: z.literal('subflow'),
1193
+ referrerId: z.string(),
1194
+ launchConfig: launchConfigSchema,
1195
+ resultKey: z.string().optional(),
1196
+ onCompletion: behaviorSchema.optional(),
1197
+ onError: behaviorSchema.optional(),
1198
+ analytics: z.record(z.string()).optional(),
1111
1199
  }),
1112
1200
  );
1113
1201
 
1114
- export const reviewLayoutCallToActionSchema: z.ZodSchema<ReviewLayoutCallToAction> = z.lazy(() =>
1202
+ export const toolbarItemSchema: z.ZodSchema<ToolbarItem> = z.lazy(() => toolbarButtonSchema);
1203
+
1204
+ export const toolbarButtonSchema: z.ZodSchema<ToolbarButton> = z.lazy(() =>
1115
1205
  z.object({
1116
- action: actionSchema.optional(),
1206
+ type: z.literal('toolbar-button'),
1117
1207
  title: z.string(),
1208
+ behavior: behaviorSchema,
1118
1209
  accessibilityDescription: z.string().optional(),
1119
- behavior: behaviorSchema.optional(),
1210
+ media: mediaSchema.optional(),
1211
+ control: z.string().optional(),
1120
1212
  context: contextSchema.optional(),
1213
+ disabled: z.boolean().optional(),
1214
+ analyticsId: z.string().optional(),
1215
+ tags: z.array(z.string()).optional(),
1121
1216
  }),
1122
1217
  );
1123
1218
 
1124
- export const decisionLayoutSchema: z.ZodSchema<DecisionLayout> = z.lazy(() =>
1219
+ export const pollingOnErrorSchema: z.ZodSchema<PollingOnError> = z.lazy(() =>
1125
1220
  z.object({
1126
- type: z.literal('decision'),
1127
- title: z.string().optional(),
1128
- options: z.array(decisionLayoutOptionSchema),
1129
- control: z.string().optional(),
1130
- margin: sizeSchema.optional(),
1131
- analyticsId: z.string().optional(),
1132
- tags: z.array(z.string()).optional(),
1221
+ action: actionSchema.optional(),
1222
+ behavior: behaviorSchema.optional(),
1133
1223
  }),
1134
1224
  );
1135
1225
 
1136
- export const decisionLayoutOptionSchema: z.ZodSchema<DecisionLayoutOption> = z.lazy(() =>
1226
+ export const additionalInfoSchema: z.ZodSchema<AdditionalInfo> = z.lazy(() =>
1137
1227
  z.object({
1138
- action: actionSchema.optional(),
1139
- title: z.string(),
1140
- description: z.string().optional(),
1141
- disabled: z.boolean().optional(),
1142
- icon: iconSchema.optional(),
1143
- image: imageSchema.optional(),
1228
+ text: z.string(),
1144
1229
  behavior: behaviorSchema.optional(),
1145
- tag: z.string().optional(),
1146
- additionalText: z.string().optional(),
1147
- supportingValues: supportingValuesSchema.optional(),
1148
- inlineAlert: inlineAlertSchema.optional(),
1149
- media: mediaSchema.optional(),
1150
- analyticsId: z.string().optional(),
1151
- keywords: z.array(z.string()).optional(),
1152
- tags: z.array(z.string()).optional(),
1230
+ accessibilityDescription: z.string().optional(),
1153
1231
  }),
1154
1232
  );
1155
1233
 
@@ -1168,104 +1246,48 @@ export const reviewLayoutSchema: z.ZodSchema<ReviewLayout> = z.lazy(() =>
1168
1246
  }),
1169
1247
  );
1170
1248
 
1171
- export const upsellLayoutSchema: z.ZodSchema<UpsellLayout> = z.lazy(() =>
1249
+ export const reviewLayoutFieldSchema: z.ZodSchema<ReviewLayoutField> = z.lazy(() =>
1172
1250
  z.object({
1173
- type: z.literal('upsell'),
1174
- text: z.string(),
1175
- callToAction: upsellLayoutCallToActionSchema,
1251
+ label: z.string(),
1252
+ value: z.string(),
1253
+ rawValue: z.string().optional(),
1254
+ help: helpSchema.optional(),
1255
+ tag: z.string().optional(),
1256
+ icon: iconSchema.optional(),
1257
+ image: imageSchema.optional(),
1258
+ additionalInfo: additionalInfoSchema.optional(),
1259
+ inlineAlert: inlineAlertSchema.optional(),
1260
+ callToAction: reviewLayoutCallToActionSchema.optional(),
1176
1261
  media: mediaSchema.optional(),
1177
- onDismiss: requestSchema.optional(),
1178
- control: z.string().optional(),
1179
- margin: sizeSchema.optional(),
1180
- analyticsId: z.string().optional(),
1181
- tags: z.array(z.string()).optional(),
1182
- }),
1183
- );
1184
-
1185
- export const upsellLayoutCallToActionSchema: z.ZodSchema<UpsellLayoutCallToAction> = z.lazy(() =>
1186
- z.object({
1187
- title: z.string(),
1188
- accessibilityDescription: z.string().optional(),
1189
- behavior: behaviorSchema,
1190
- context: contextSchema.optional(),
1191
- }),
1192
- );
1193
-
1194
- export const sectionLayoutSchema: z.ZodSchema<SectionLayout> = z.lazy(() =>
1195
- z.object({
1196
- type: z.literal('section'),
1197
- components: z.array(layoutSchema),
1198
- title: z.string(),
1199
- callToAction: sectionLayoutCallToActionSchema.optional(),
1200
- control: z.string().optional(),
1201
- margin: sizeSchema.optional(),
1202
1262
  analyticsId: z.string().optional(),
1203
1263
  tags: z.array(z.string()).optional(),
1204
1264
  }),
1205
1265
  );
1206
1266
 
1207
- export const sectionLayoutCallToActionSchema: z.ZodSchema<SectionLayoutCallToAction> = z.lazy(() =>
1267
+ export const reviewLayoutCallToActionSchema: z.ZodSchema<ReviewLayoutCallToAction> = z.lazy(() =>
1208
1268
  z.object({
1269
+ action: actionSchema.optional(),
1209
1270
  title: z.string(),
1210
1271
  accessibilityDescription: z.string().optional(),
1211
- behavior: behaviorSchema,
1272
+ behavior: behaviorSchema.optional(),
1212
1273
  context: contextSchema.optional(),
1213
1274
  }),
1214
1275
  );
1215
1276
 
1216
- export const tabsLayoutSchema: z.ZodSchema<TabsLayout> = z.lazy(() =>
1217
- z.object({
1218
- type: z.literal('tabs'),
1219
- tabs: z.array(tabsLayoutTabSchema),
1220
- control: z.string().optional(),
1221
- margin: sizeSchema.optional(),
1222
- analyticsId: z.string().optional(),
1223
- tags: z.array(z.string()).optional(),
1224
- }),
1225
- );
1226
-
1227
- export const tabsLayoutTabSchema: z.ZodSchema<TabsLayoutTab> = z.lazy(() =>
1277
+ export const statusListLayoutItemSchema: z.ZodSchema<StatusListLayoutItem> = z.lazy(() =>
1228
1278
  z.object({
1229
1279
  title: z.string(),
1230
- components: z.array(layoutSchema),
1280
+ description: z.string().optional(),
1281
+ icon: iconSchema,
1282
+ status: statusListLayoutStatusSchema.optional(),
1283
+ callToAction: itemCallToActionSchema.optional(),
1231
1284
  tag: z.string().optional(),
1232
1285
  analyticsId: z.string().optional(),
1233
1286
  tags: z.array(z.string()).optional(),
1234
1287
  }),
1235
1288
  );
1236
1289
 
1237
- export const columnsLayoutSchema: z.ZodSchema<ColumnsLayout> = z.lazy(() =>
1238
- z.object({
1239
- type: z.literal('columns'),
1240
- left: z.array(layoutSchema),
1241
- right: z.array(layoutSchema),
1242
- bias: columnsLayoutBiasSchema.optional(),
1243
- control: z.string().optional(),
1244
- margin: sizeSchema.optional(),
1245
- analyticsId: z.string().optional(),
1246
- tags: z.array(z.string()).optional(),
1247
- }),
1248
- );
1249
-
1250
- export const buttonLayoutSchema: z.ZodSchema<ButtonLayout> = z.lazy(() =>
1251
- z.object({
1252
- type: z.literal('button'),
1253
- action: actionSchema.optional(),
1254
- size: sizeSchema.optional(),
1255
- title: z.string().optional(),
1256
- behavior: behaviorSchema.optional(),
1257
- context: contextSchema.optional(),
1258
- disabled: z.boolean().optional(),
1259
- pinOrder: z.number().optional(),
1260
- control: z.string().optional(),
1261
- margin: sizeSchema.optional(),
1262
- analyticsId: z.string().optional(),
1263
- tags: z.array(z.string()).optional(),
1264
- media: mediaSchema.optional(),
1265
- }),
1266
- );
1267
-
1268
- export const listLayoutCallToActionSchema: z.ZodSchema<ListLayoutCallToAction> = z.lazy(() =>
1290
+ export const itemCallToActionSchema: z.ZodSchema<ItemCallToAction> = z.lazy(() =>
1269
1291
  z.object({
1270
1292
  title: z.string(),
1271
1293
  accessibilityDescription: z.string().optional(),
@@ -1274,32 +1296,16 @@ export const listLayoutCallToActionSchema: z.ZodSchema<ListLayoutCallToAction> =
1274
1296
  }),
1275
1297
  );
1276
1298
 
1277
- export const statusListLayoutSchema: z.ZodSchema<StatusListLayout> = z.lazy(() =>
1278
- z.object({
1279
- type: z.literal('status-list'),
1280
- items: z.array(statusListLayoutItemSchema),
1281
- title: z.string().optional(),
1282
- control: z.string().optional(),
1283
- margin: sizeSchema.optional(),
1284
- analyticsId: z.string().optional(),
1285
- tags: z.array(z.string()).optional(),
1286
- }),
1287
- );
1288
-
1289
- export const statusListLayoutItemSchema: z.ZodSchema<StatusListLayoutItem> = z.lazy(() =>
1299
+ export const listLayoutCallToActionSchema: z.ZodSchema<ListLayoutCallToAction> = z.lazy(() =>
1290
1300
  z.object({
1291
1301
  title: z.string(),
1292
- description: z.string().optional(),
1293
- icon: iconSchema,
1294
- status: statusListLayoutStatusSchema.optional(),
1295
- callToAction: itemCallToActionSchema.optional(),
1296
- tag: z.string().optional(),
1297
- analyticsId: z.string().optional(),
1298
- tags: z.array(z.string()).optional(),
1302
+ accessibilityDescription: z.string().optional(),
1303
+ behavior: behaviorSchema,
1304
+ context: contextSchema.optional(),
1299
1305
  }),
1300
1306
  );
1301
1307
 
1302
- export const itemCallToActionSchema: z.ZodSchema<ItemCallToAction> = z.lazy(() =>
1308
+ export const sectionLayoutCallToActionSchema: z.ZodSchema<SectionLayoutCallToAction> = z.lazy(() =>
1303
1309
  z.object({
1304
1310
  title: z.string(),
1305
1311
  accessibilityDescription: z.string().optional(),
@@ -1308,46 +1314,66 @@ export const itemCallToActionSchema: z.ZodSchema<ItemCallToAction> = z.lazy(() =
1308
1314
  }),
1309
1315
  );
1310
1316
 
1311
- export const listLayoutSchema: z.ZodSchema<ListLayout> = z.lazy(() =>
1317
+ export const buttonLayoutSchema: z.ZodSchema<ButtonLayout> = z.lazy(() =>
1312
1318
  z.object({
1313
- type: z.literal('list'),
1319
+ type: z.literal('button'),
1320
+ action: actionSchema.optional(),
1321
+ size: sizeSchema.optional(),
1314
1322
  title: z.string().optional(),
1315
- callToAction: listLayoutCallToActionSchema.optional(),
1316
- items: z.array(listLayoutItemSchema),
1323
+ behavior: behaviorSchema.optional(),
1324
+ context: contextSchema.optional(),
1325
+ disabled: z.boolean().optional(),
1326
+ pinOrder: z.number().optional(),
1317
1327
  control: z.string().optional(),
1318
1328
  margin: sizeSchema.optional(),
1319
1329
  analyticsId: z.string().optional(),
1320
1330
  tags: z.array(z.string()).optional(),
1331
+ media: mediaSchema.optional(),
1321
1332
  }),
1322
1333
  );
1323
1334
 
1324
- export const listLayoutItemSchema: z.ZodSchema<ListLayoutItem> = z.lazy(() =>
1335
+ export const decisionLayoutSchema: z.ZodSchema<DecisionLayout> = z.lazy(() =>
1325
1336
  z.object({
1326
- status: listLayoutStatusSchema.optional(),
1337
+ type: z.literal('decision'),
1338
+ title: z.string().optional(),
1339
+ options: z.array(decisionLayoutOptionSchema),
1340
+ control: z.string().optional(),
1341
+ margin: sizeSchema.optional(),
1342
+ analyticsId: z.string().optional(),
1343
+ tags: z.array(z.string()).optional(),
1344
+ }),
1345
+ );
1346
+
1347
+ export const decisionLayoutOptionSchema: z.ZodSchema<DecisionLayoutOption> = z.lazy(() =>
1348
+ z.object({
1349
+ action: actionSchema.optional(),
1350
+ title: z.string(),
1351
+ description: z.string().optional(),
1352
+ disabled: z.boolean().optional(),
1327
1353
  icon: iconSchema.optional(),
1328
1354
  image: imageSchema.optional(),
1329
- title: z.string().optional(),
1330
- subtitle: z.string().optional(),
1331
- value: z.string().optional(),
1332
- subvalue: z.string().optional(),
1355
+ behavior: behaviorSchema.optional(),
1333
1356
  tag: z.string().optional(),
1334
- additionalInfo: additionalInfoSchema.optional(),
1357
+ additionalText: z.string().optional(),
1335
1358
  supportingValues: supportingValuesSchema.optional(),
1336
1359
  inlineAlert: inlineAlertSchema.optional(),
1337
- description: z.string().optional(),
1338
1360
  media: mediaSchema.optional(),
1339
1361
  analyticsId: z.string().optional(),
1362
+ keywords: z.array(z.string()).optional(),
1340
1363
  tags: z.array(z.string()).optional(),
1341
- callToAction: listLayoutCallToActionSchema.optional(),
1342
1364
  }),
1343
1365
  );
1344
1366
 
1345
- export const alertLayoutCallToActionSchema: z.ZodSchema<AlertLayoutCallToAction> = z.lazy(() =>
1367
+ export const boxLayoutSchema: z.ZodSchema<BoxLayout> = z.lazy(() =>
1346
1368
  z.object({
1347
- title: z.string(),
1348
- accessibilityDescription: z.string().optional(),
1349
- behavior: behaviorSchema,
1350
- context: contextSchema.optional(),
1369
+ type: z.literal('box'),
1370
+ components: z.array(layoutSchema),
1371
+ width: sizeSchema.optional(),
1372
+ border: z.boolean().optional(),
1373
+ control: z.string().optional(),
1374
+ margin: sizeSchema.optional(),
1375
+ analyticsId: z.string().optional(),
1376
+ tags: z.array(z.string()).optional(),
1351
1377
  }),
1352
1378
  );
1353
1379
 
@@ -1358,12 +1384,12 @@ export const modalLayoutContentSchema: z.ZodSchema<ModalLayoutContent> = z.lazy(
1358
1384
  }),
1359
1385
  );
1360
1386
 
1361
- export const boxLayoutSchema: z.ZodSchema<BoxLayout> = z.lazy(() =>
1387
+ export const columnsLayoutSchema: z.ZodSchema<ColumnsLayout> = z.lazy(() =>
1362
1388
  z.object({
1363
- type: z.literal('box'),
1364
- components: z.array(layoutSchema),
1365
- width: sizeSchema.optional(),
1366
- border: z.boolean().optional(),
1389
+ type: z.literal('columns'),
1390
+ left: z.array(layoutSchema),
1391
+ right: z.array(layoutSchema),
1392
+ bias: columnsLayoutBiasSchema.optional(),
1367
1393
  control: z.string().optional(),
1368
1394
  margin: sizeSchema.optional(),
1369
1395
  analyticsId: z.string().optional(),
@@ -1371,27 +1397,19 @@ export const boxLayoutSchema: z.ZodSchema<BoxLayout> = z.lazy(() =>
1371
1397
  }),
1372
1398
  );
1373
1399
 
1374
- export const searchLayoutSchema: z.ZodSchema<SearchLayout> = z.lazy(() =>
1400
+ export const listLayoutSchema: z.ZodSchema<ListLayout> = z.lazy(() =>
1375
1401
  z.object({
1376
- type: z.literal('search'),
1377
- title: z.string(),
1378
- method: httpMethodSchema,
1379
- url: z.string(),
1380
- param: z.string(),
1381
- emptyMessage: z.string().optional(),
1402
+ type: z.literal('list'),
1403
+ title: z.string().optional(),
1404
+ callToAction: listLayoutCallToActionSchema.optional(),
1405
+ items: z.array(listLayoutItemSchema),
1382
1406
  control: z.string().optional(),
1383
1407
  margin: sizeSchema.optional(),
1384
1408
  analyticsId: z.string().optional(),
1385
1409
  tags: z.array(z.string()).optional(),
1386
- hint: z.string().optional(),
1387
- initialState: searchInitialStateSchema.optional(),
1388
1410
  }),
1389
1411
  );
1390
1412
 
1391
- export const searchInitialStateSchema: z.ZodSchema<SearchInitialState> = z.lazy(() =>
1392
- z.union([searchInitialLayoutConfigSchema, searchInitialResultsConfigSchema]),
1393
- );
1394
-
1395
1413
  export const modalLayoutSchema: z.ZodSchema<ModalLayout> = z.lazy(() =>
1396
1414
  z.object({
1397
1415
  type: z.literal('modal'),
@@ -1404,136 +1422,118 @@ export const modalLayoutSchema: z.ZodSchema<ModalLayout> = z.lazy(() =>
1404
1422
  }),
1405
1423
  );
1406
1424
 
1407
- export const subflowResponseBodySchema: z.ZodSchema<SubflowResponseBody> = z.lazy(() =>
1408
- z.object({
1409
- referrerId: z.string(),
1410
- launchConfig: launchConfigSchema,
1411
- resultKey: z.string().optional(),
1412
- onCompletion: behaviorSchema.optional(),
1413
- onError: behaviorSchema.optional(),
1414
- }),
1415
- );
1416
-
1417
- export const searchInitialLayoutConfigSchema: z.ZodSchema<SearchInitialLayoutConfig> = z.lazy(() =>
1425
+ export const searchLayoutSchema: z.ZodSchema<SearchLayout> = z.lazy(() =>
1418
1426
  z.object({
1419
- type: z.literal('layout'),
1420
- content: z.array(layoutSchema),
1427
+ type: z.literal('search'),
1428
+ title: z.string(),
1429
+ method: httpMethodSchema,
1430
+ url: z.string(),
1431
+ param: z.string(),
1432
+ emptyMessage: z.string().optional(),
1433
+ control: z.string().optional(),
1434
+ margin: sizeSchema.optional(),
1435
+ analyticsId: z.string().optional(),
1436
+ tags: z.array(z.string()).optional(),
1437
+ hint: z.string().optional(),
1438
+ initialState: searchInitialStateSchema.optional(),
1421
1439
  }),
1422
1440
  );
1423
1441
 
1424
- export const searchLayoutResponseBodySchema: z.ZodSchema<SearchLayoutResponseBody> = z.lazy(() =>
1442
+ export const sectionLayoutSchema: z.ZodSchema<SectionLayout> = z.lazy(() =>
1425
1443
  z.object({
1426
- type: z.literal('layout'),
1427
- content: z.array(layoutSchema),
1444
+ type: z.literal('section'),
1445
+ components: z.array(layoutSchema),
1446
+ title: z.string(),
1447
+ callToAction: sectionLayoutCallToActionSchema.optional(),
1448
+ control: z.string().optional(),
1449
+ margin: sizeSchema.optional(),
1450
+ analyticsId: z.string().optional(),
1451
+ tags: z.array(z.string()).optional(),
1428
1452
  }),
1429
1453
  );
1430
1454
 
1431
- export const searchResponseSchema: z.ZodSchema<SearchResponse> = z.lazy(() =>
1432
- z.union([searchLayoutResponseBodySchema, searchResultsResponseBodySchema]),
1433
- );
1434
-
1435
- export const modalResponseBodySchema: z.ZodSchema<ModalResponseBody> = z.lazy(() =>
1455
+ export const statusListLayoutSchema: z.ZodSchema<StatusListLayout> = z.lazy(() =>
1436
1456
  z.object({
1457
+ type: z.literal('status-list'),
1458
+ items: z.array(statusListLayoutItemSchema),
1437
1459
  title: z.string().optional(),
1438
- content: z.array(layoutSchema),
1439
- }),
1440
- );
1441
-
1442
- export const pollingOnErrorSchema: z.ZodSchema<PollingOnError> = z.lazy(() =>
1443
- z.object({
1444
- action: actionSchema.optional(),
1445
- behavior: behaviorSchema.optional(),
1460
+ control: z.string().optional(),
1461
+ margin: sizeSchema.optional(),
1462
+ analyticsId: z.string().optional(),
1463
+ tags: z.array(z.string()).optional(),
1446
1464
  }),
1447
1465
  );
1448
1466
 
1449
- export const toolbarButtonSchema: z.ZodSchema<ToolbarButton> = z.lazy(() =>
1467
+ export const tabsLayoutSchema: z.ZodSchema<TabsLayout> = z.lazy(() =>
1450
1468
  z.object({
1451
- type: z.literal('toolbar-button'),
1452
- title: z.string(),
1453
- behavior: behaviorSchema,
1454
- accessibilityDescription: z.string().optional(),
1455
- media: mediaSchema.optional(),
1469
+ type: z.literal('tabs'),
1470
+ tabs: z.array(tabsLayoutTabSchema),
1456
1471
  control: z.string().optional(),
1457
- context: contextSchema.optional(),
1458
- disabled: z.boolean().optional(),
1472
+ margin: sizeSchema.optional(),
1459
1473
  analyticsId: z.string().optional(),
1460
1474
  tags: z.array(z.string()).optional(),
1461
1475
  }),
1462
1476
  );
1463
1477
 
1464
- export const toolbarSchema: z.ZodSchema<Toolbar> = z.lazy(() =>
1478
+ export const upsellLayoutSchema: z.ZodSchema<UpsellLayout> = z.lazy(() =>
1465
1479
  z.object({
1466
- items: z.array(toolbarItemSchema),
1480
+ type: z.literal('upsell'),
1481
+ text: z.string(),
1482
+ callToAction: upsellLayoutCallToActionSchema,
1483
+ media: mediaSchema.optional(),
1484
+ onDismiss: requestSchema.optional(),
1467
1485
  control: z.string().optional(),
1486
+ margin: sizeSchema.optional(),
1487
+ analyticsId: z.string().optional(),
1468
1488
  tags: z.array(z.string()).optional(),
1469
1489
  }),
1470
1490
  );
1471
1491
 
1472
- export const toolbarItemSchema: z.ZodSchema<ToolbarItem> = z.lazy(() => toolbarButtonSchema);
1473
-
1474
- export const modalBehaviorSchema: z.ZodSchema<ModalBehavior> = z.lazy(() =>
1492
+ export const listLayoutItemSchema: z.ZodSchema<ListLayoutItem> = z.lazy(() =>
1475
1493
  z.object({
1476
- type: z.literal('modal'),
1494
+ status: listLayoutStatusSchema.optional(),
1495
+ icon: iconSchema.optional(),
1496
+ image: imageSchema.optional(),
1477
1497
  title: z.string().optional(),
1478
- content: z.array(layoutSchema),
1479
- analytics: z.record(z.string()).optional(),
1480
- }),
1481
- );
1482
-
1483
- export const subflowBehaviorSchema: z.ZodSchema<SubflowBehavior> = z.lazy(() =>
1484
- z.object({
1485
- type: z.literal('subflow'),
1486
- referrerId: z.string(),
1487
- launchConfig: launchConfigSchema,
1488
- resultKey: z.string().optional(),
1489
- onCompletion: behaviorSchema.optional(),
1490
- onError: behaviorSchema.optional(),
1491
- analytics: z.record(z.string()).optional(),
1498
+ subtitle: z.string().optional(),
1499
+ value: z.string().optional(),
1500
+ subvalue: z.string().optional(),
1501
+ tag: z.string().optional(),
1502
+ additionalInfo: additionalInfoSchema.optional(),
1503
+ supportingValues: supportingValuesSchema.optional(),
1504
+ inlineAlert: inlineAlertSchema.optional(),
1505
+ description: z.string().optional(),
1506
+ media: mediaSchema.optional(),
1507
+ analyticsId: z.string().optional(),
1508
+ tags: z.array(z.string()).optional(),
1509
+ callToAction: listLayoutCallToActionSchema.optional(),
1492
1510
  }),
1493
1511
  );
1494
1512
 
1495
- export const pollingSchema: z.ZodSchema<Polling> = z.lazy(() =>
1513
+ export const alertLayoutCallToActionSchema: z.ZodSchema<AlertLayoutCallToAction> = z.lazy(() =>
1496
1514
  z.object({
1497
- interval: z.number().optional(),
1498
- url: z.string(),
1499
- delay: z.number().optional(),
1500
- timeout: z.number().optional(),
1501
- maxAttempts: z.number(),
1502
- onError: pollingOnErrorSchema,
1515
+ title: z.string(),
1516
+ accessibilityDescription: z.string().optional(),
1517
+ behavior: behaviorSchema,
1518
+ context: contextSchema.optional(),
1503
1519
  }),
1504
1520
  );
1505
1521
 
1506
- export const linkHandlerSchema: z.ZodSchema<LinkHandler> = z.lazy(() =>
1522
+ export const upsellLayoutCallToActionSchema: z.ZodSchema<UpsellLayoutCallToAction> = z.lazy(() =>
1507
1523
  z.object({
1508
- regexPattern: z.string(),
1509
- behavior: behaviorSchema.optional(),
1524
+ title: z.string(),
1525
+ accessibilityDescription: z.string().optional(),
1526
+ behavior: behaviorSchema,
1527
+ context: contextSchema.optional(),
1510
1528
  }),
1511
1529
  );
1512
1530
 
1513
- export const stepSchema: z.ZodSchema<Step> = z.lazy(() =>
1531
+ export const tabsLayoutTabSchema: z.ZodSchema<TabsLayoutTab> = z.lazy(() =>
1514
1532
  z.object({
1515
- key: z.string().optional(),
1516
- type: z.string().optional(),
1517
- actions: z.array(actionSchema).optional(),
1518
- refreshFormUrl: z.string().optional(),
1519
- id: z.string(),
1520
1533
  title: z.string(),
1521
- schemas: z.array(schemaSchema),
1522
- layout: z.array(layoutSchema),
1523
- description: z.string().optional(),
1524
- model: jsonElementSchema.optional(),
1525
- external: externalSchema.optional(),
1526
- polling: pollingSchema.optional(),
1527
- linkHandlers: z.array(linkHandlerSchema).optional(),
1528
- analytics: z.record(z.string()).optional(),
1529
- errors: stepErrorSchema.optional(),
1530
- navigation: navigationSchema.optional(),
1531
- refreshUrl: z.string().optional(),
1532
- control: z.string().optional(),
1533
- refreshAfter: z.string().optional(),
1534
- toolbar: toolbarSchema.optional(),
1534
+ components: z.array(layoutSchema),
1535
+ tag: z.string().optional(),
1536
+ analyticsId: z.string().optional(),
1535
1537
  tags: z.array(z.string()).optional(),
1536
- footer: z.array(layoutSchema).optional(),
1537
- onLoad: behaviorSchema.optional(),
1538
1538
  }),
1539
1539
  );