@isomorph.ai/app-sdk 1.20.0 → 1.21.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.
@@ -252,6 +252,383 @@ export const IntegrationExecuteInputRules = {
252
252
  idempotencyKey: false,
253
253
  fields: {},
254
254
  },
255
+ "calendar.calendar.list": {
256
+ idempotencyKey: false,
257
+ fields: {
258
+ pageToken: { kind: "string", required: false, minLength: 1, maxLength: 2048 },
259
+ },
260
+ },
261
+ "calendar.event.list": {
262
+ idempotencyKey: false,
263
+ fields: {
264
+ calendarId: { kind: "string", required: false, minLength: 1, maxLength: 256 },
265
+ timeMin: { kind: "string", required: true, minLength: 1, pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]{1,9})?(Z|[+-][0-9]{2}:[0-9]{2})$" },
266
+ timeMax: { kind: "string", required: true, minLength: 1, pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]{1,9})?(Z|[+-][0-9]{2}:[0-9]{2})$" },
267
+ q: { kind: "string", required: false, minLength: 1, maxLength: 256 },
268
+ pageToken: { kind: "string", required: false, minLength: 1, maxLength: 2048 },
269
+ },
270
+ },
271
+ "calendar.event.read": {
272
+ idempotencyKey: false,
273
+ fields: {
274
+ calendarId: { kind: "string", required: false, minLength: 1, maxLength: 256 },
275
+ eventId: { kind: "string", required: true, minLength: 1, maxLength: 1024 },
276
+ },
277
+ },
278
+ "calendar.event.create": {
279
+ idempotencyKey: true,
280
+ fields: {
281
+ calendarId: { kind: "string", required: false, minLength: 1, maxLength: 256 },
282
+ title: { kind: "string", required: true, minLength: 1, maxLength: 256 },
283
+ start: { kind: "string", required: true, minLength: 1, pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]{1,9})?(Z|[+-][0-9]{2}:[0-9]{2})$" },
284
+ end: { kind: "string", required: true, minLength: 1, pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]{1,9})?(Z|[+-][0-9]{2}:[0-9]{2})$" },
285
+ timeZone: { kind: "string", required: false, minLength: 1, maxLength: 64 },
286
+ allDay: { kind: "boolean", required: false },
287
+ description: { kind: "string", required: false, minLength: 1, maxLength: 8000 },
288
+ location: { kind: "string", required: false, minLength: 1, maxLength: 512 },
289
+ attendees: { kind: "string[]", required: false, minItems: 1, maxItems: 100, uniqueItems: true, item: { minLength: 3, maxLength: 254, pattern: "^[^\\s@<>,;\"]+@[^\\s@<>,;\"]+\\.[^\\s@<>,;\"]+$" } },
290
+ notify: { kind: "boolean", required: false },
291
+ },
292
+ },
293
+ "calendar.event.update": {
294
+ idempotencyKey: false,
295
+ fields: {
296
+ calendarId: { kind: "string", required: false, minLength: 1, maxLength: 256 },
297
+ eventId: { kind: "string", required: true, minLength: 1, maxLength: 1024 },
298
+ title: { kind: "string", required: false, minLength: 1, maxLength: 256 },
299
+ start: { kind: "string", required: false, minLength: 1, pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]{1,9})?(Z|[+-][0-9]{2}:[0-9]{2})$" },
300
+ end: { kind: "string", required: false, minLength: 1, pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]{1,9})?(Z|[+-][0-9]{2}:[0-9]{2})$" },
301
+ timeZone: { kind: "string", required: false, minLength: 1, maxLength: 64 },
302
+ description: { kind: "string", required: false, minLength: 1, maxLength: 8000 },
303
+ location: { kind: "string", required: false, minLength: 1, maxLength: 512 },
304
+ attendees: { kind: "string[]", required: false, minItems: 1, maxItems: 100, uniqueItems: true, item: { minLength: 3, maxLength: 254, pattern: "^[^\\s@<>,;\"]+@[^\\s@<>,;\"]+\\.[^\\s@<>,;\"]+$" } },
305
+ notify: { kind: "boolean", required: false },
306
+ },
307
+ },
308
+ "calendar.event.cancel": {
309
+ idempotencyKey: false,
310
+ fields: {
311
+ calendarId: { kind: "string", required: false, minLength: 1, maxLength: 256 },
312
+ eventId: { kind: "string", required: true, minLength: 1, maxLength: 1024 },
313
+ notify: { kind: "boolean", required: false },
314
+ },
315
+ },
316
+ "drive.file.list": {
317
+ idempotencyKey: false,
318
+ fields: {
319
+ folderId: { kind: "string", required: false, minLength: 0, pattern: "^[A-Za-z0-9!._,=-]{1,256}$" },
320
+ pageToken: { kind: "string", required: false, minLength: 1, maxLength: 2048 },
321
+ },
322
+ },
323
+ "drive.file.search": {
324
+ idempotencyKey: false,
325
+ fields: {
326
+ q: { kind: "string", required: true, minLength: 1, maxLength: 256 },
327
+ pageToken: { kind: "string", required: false, minLength: 1, maxLength: 2048 },
328
+ },
329
+ },
330
+ "drive.file.read": {
331
+ idempotencyKey: false,
332
+ fields: {
333
+ fileId: { kind: "string", required: true, minLength: 0, pattern: "^[A-Za-z0-9!._,=-]{1,256}$" },
334
+ exportAs: { kind: "enum", required: false, values: ["text", "csv", "pdf"] },
335
+ },
336
+ },
337
+ "drive.file.upload": {
338
+ idempotencyKey: true,
339
+ fields: {
340
+ filename: { kind: "string", required: true, minLength: 1, maxLength: 255 },
341
+ contentType: { kind: "string", required: true, minLength: 1, maxLength: 128 },
342
+ dataBase64: { kind: "string", required: true, minLength: 1, maxLength: 2796203 },
343
+ folderId: { kind: "string", required: false, minLength: 0, pattern: "^[A-Za-z0-9!._,=-]{1,256}$" },
344
+ conflict: { kind: "enum", required: false, values: ["rename", "replace", "fail"], default: "rename" },
345
+ },
346
+ },
347
+ "drive.folder.create": {
348
+ idempotencyKey: true,
349
+ fields: {
350
+ title: { kind: "string", required: true, minLength: 1, maxLength: 256 },
351
+ folderId: { kind: "string", required: false, minLength: 0, pattern: "^[A-Za-z0-9!._,=-]{1,256}$" },
352
+ },
353
+ },
354
+ "docs.document.read": {
355
+ idempotencyKey: false,
356
+ fields: {
357
+ documentId: { kind: "string", required: true, minLength: 0, pattern: "^[A-Za-z0-9_-]{10,128}$" },
358
+ },
359
+ },
360
+ "docs.document.create": {
361
+ idempotencyKey: true,
362
+ fields: {
363
+ title: { kind: "string", required: true, minLength: 1, maxLength: 256 },
364
+ text: { kind: "string", required: false, minLength: 1, maxLength: 65536 },
365
+ },
366
+ },
367
+ "docs.document.append": {
368
+ idempotencyKey: false,
369
+ fields: {
370
+ documentId: { kind: "string", required: true, minLength: 0, pattern: "^[A-Za-z0-9_-]{10,128}$" },
371
+ text: { kind: "string", required: true, minLength: 1, maxLength: 65536 },
372
+ },
373
+ },
374
+ "docs.text.replace": {
375
+ idempotencyKey: false,
376
+ fields: {
377
+ documentId: { kind: "string", required: true, minLength: 0, pattern: "^[A-Za-z0-9_-]{10,128}$" },
378
+ replacements: { kind: "object[]", required: true, minItems: 1, maxItems: 64, fields: {
379
+ find: { kind: "string", required: true, minLength: 1, maxLength: 512 },
380
+ replace: { kind: "string", required: true, minLength: 0, maxLength: 4000 },
381
+ matchCase: { kind: "boolean", required: false },
382
+ } },
383
+ },
384
+ },
385
+ "sheets.spreadsheet.read": {
386
+ idempotencyKey: false,
387
+ fields: {
388
+ spreadsheetId: { kind: "string", required: true, minLength: 0, pattern: "^[A-Za-z0-9_-]{10,128}$" },
389
+ },
390
+ },
391
+ "sheets.values.read": {
392
+ idempotencyKey: false,
393
+ fields: {
394
+ spreadsheetId: { kind: "string", required: true, minLength: 0, pattern: "^[A-Za-z0-9_-]{10,128}$" },
395
+ range: { kind: "string", required: true, minLength: 1, maxLength: 256 },
396
+ },
397
+ },
398
+ "sheets.values.append": {
399
+ idempotencyKey: true,
400
+ fields: {
401
+ spreadsheetId: { kind: "string", required: true, minLength: 0, pattern: "^[A-Za-z0-9_-]{10,128}$" },
402
+ range: { kind: "string", required: true, minLength: 1, maxLength: 256 },
403
+ values: { kind: "matrix", required: true, minItems: 1, maxItems: 1000, row: { minItems: 1, maxItems: 100 }, types: ["string", "number", "boolean", "null"], maxLength: 4000 },
404
+ valueInput: { kind: "enum", required: false, values: ["raw", "user"], default: "user" },
405
+ },
406
+ },
407
+ "sheets.values.update": {
408
+ idempotencyKey: false,
409
+ fields: {
410
+ spreadsheetId: { kind: "string", required: true, minLength: 0, pattern: "^[A-Za-z0-9_-]{10,128}$" },
411
+ range: { kind: "string", required: true, minLength: 1, maxLength: 256 },
412
+ values: { kind: "matrix", required: true, minItems: 1, maxItems: 1000, row: { minItems: 1, maxItems: 100 }, types: ["string", "number", "boolean", "null"], maxLength: 4000 },
413
+ valueInput: { kind: "enum", required: false, values: ["raw", "user"], default: "user" },
414
+ },
415
+ },
416
+ "sheets.values.clear": {
417
+ idempotencyKey: false,
418
+ fields: {
419
+ spreadsheetId: { kind: "string", required: true, minLength: 0, pattern: "^[A-Za-z0-9_-]{10,128}$" },
420
+ range: { kind: "string", required: true, minLength: 1, maxLength: 256 },
421
+ },
422
+ },
423
+ "sheets.spreadsheet.create": {
424
+ idempotencyKey: true,
425
+ fields: {
426
+ title: { kind: "string", required: true, minLength: 1, maxLength: 256 },
427
+ sheets: { kind: "string[]", required: false, minItems: 1, maxItems: 20, uniqueItems: true, item: { minLength: 1, maxLength: 100 } },
428
+ },
429
+ },
430
+ "outlook.message.list": {
431
+ idempotencyKey: false,
432
+ fields: {
433
+ folder: { kind: "string", required: false, minLength: 1, maxLength: 256 },
434
+ q: { kind: "string", required: false, minLength: 1, maxLength: 256 },
435
+ pageToken: { kind: "string", required: false, minLength: 1, maxLength: 2048 },
436
+ },
437
+ },
438
+ "outlook.message.read": {
439
+ idempotencyKey: false,
440
+ fields: {
441
+ messageId: { kind: "string", required: true, minLength: 0, pattern: "^[A-Za-z0-9._=-]{1,256}$" },
442
+ },
443
+ },
444
+ "outlook.attachment.read": {
445
+ idempotencyKey: false,
446
+ fields: {
447
+ messageId: { kind: "string", required: true, minLength: 0, pattern: "^[A-Za-z0-9._=-]{1,256}$" },
448
+ attachmentId: { kind: "string", required: true, minLength: 1, maxLength: 512 },
449
+ },
450
+ },
451
+ "outlook.message.send": {
452
+ idempotencyKey: true,
453
+ fields: {
454
+ to: { kind: "string[]", required: true, minItems: 1, maxItems: 50, uniqueItems: true, item: { minLength: 3, maxLength: 254, pattern: "^[^\\s@<>,;\"]+@[^\\s@<>,;\"]+\\.[^\\s@<>,;\"]+$" } },
455
+ cc: { kind: "string[]", required: false, minItems: 1, maxItems: 50, uniqueItems: true, item: { minLength: 3, maxLength: 254, pattern: "^[^\\s@<>,;\"]+@[^\\s@<>,;\"]+\\.[^\\s@<>,;\"]+$" } },
456
+ bcc: { kind: "string[]", required: false, minItems: 1, maxItems: 50, uniqueItems: true, item: { minLength: 3, maxLength: 254, pattern: "^[^\\s@<>,;\"]+@[^\\s@<>,;\"]+\\.[^\\s@<>,;\"]+$" } },
457
+ subject: { kind: "string", required: true, minLength: 1, maxLength: 256 },
458
+ text: { kind: "string", required: true, minLength: 1, maxLength: 4000 },
459
+ html: { kind: "string", required: false, minLength: 1, maxLength: 65536 },
460
+ attachments: { kind: "object[]", required: false, minItems: 1, maxItems: 5, fields: {
461
+ filename: { kind: "string", required: true, minLength: 1, maxLength: 255 },
462
+ contentType: { kind: "string", required: true, minLength: 1, maxLength: 128 },
463
+ dataBase64: { kind: "string", required: true, minLength: 1, maxLength: 2796203 },
464
+ } },
465
+ },
466
+ },
467
+ "outlook.message.reply": {
468
+ idempotencyKey: true,
469
+ fields: {
470
+ messageId: { kind: "string", required: true, minLength: 0, pattern: "^[A-Za-z0-9._=-]{1,256}$" },
471
+ text: { kind: "string", required: true, minLength: 1, maxLength: 4000 },
472
+ },
473
+ },
474
+ "outlook.event.list": {
475
+ idempotencyKey: false,
476
+ fields: {
477
+ start: { kind: "string", required: true, minLength: 1, pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]{1,9})?(Z|[+-][0-9]{2}:[0-9]{2})$" },
478
+ end: { kind: "string", required: true, minLength: 1, pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]{1,9})?(Z|[+-][0-9]{2}:[0-9]{2})$" },
479
+ pageToken: { kind: "string", required: false, minLength: 1, maxLength: 2048 },
480
+ },
481
+ },
482
+ "outlook.event.read": {
483
+ idempotencyKey: false,
484
+ fields: {
485
+ eventId: { kind: "string", required: true, minLength: 1, maxLength: 1024 },
486
+ },
487
+ },
488
+ "outlook.event.create": {
489
+ idempotencyKey: true,
490
+ fields: {
491
+ title: { kind: "string", required: true, minLength: 1, maxLength: 256 },
492
+ start: { kind: "string", required: true, minLength: 1, pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]{1,9})?(Z|[+-][0-9]{2}:[0-9]{2})$" },
493
+ end: { kind: "string", required: true, minLength: 1, pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]{1,9})?(Z|[+-][0-9]{2}:[0-9]{2})$" },
494
+ timeZone: { kind: "string", required: false, minLength: 1, maxLength: 64 },
495
+ allDay: { kind: "boolean", required: false },
496
+ description: { kind: "string", required: false, minLength: 1, maxLength: 8000 },
497
+ location: { kind: "string", required: false, minLength: 1, maxLength: 512 },
498
+ attendees: { kind: "string[]", required: false, minItems: 1, maxItems: 100, uniqueItems: true, item: { minLength: 3, maxLength: 254, pattern: "^[^\\s@<>,;\"]+@[^\\s@<>,;\"]+\\.[^\\s@<>,;\"]+$" } },
499
+ notify: { kind: "boolean", required: false },
500
+ },
501
+ },
502
+ "outlook.event.update": {
503
+ idempotencyKey: false,
504
+ fields: {
505
+ eventId: { kind: "string", required: true, minLength: 1, maxLength: 1024 },
506
+ title: { kind: "string", required: false, minLength: 1, maxLength: 256 },
507
+ start: { kind: "string", required: false, minLength: 1, pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]{1,9})?(Z|[+-][0-9]{2}:[0-9]{2})$" },
508
+ end: { kind: "string", required: false, minLength: 1, pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]{1,9})?(Z|[+-][0-9]{2}:[0-9]{2})$" },
509
+ timeZone: { kind: "string", required: false, minLength: 1, maxLength: 64 },
510
+ description: { kind: "string", required: false, minLength: 1, maxLength: 8000 },
511
+ location: { kind: "string", required: false, minLength: 1, maxLength: 512 },
512
+ attendees: { kind: "string[]", required: false, minItems: 1, maxItems: 100, uniqueItems: true, item: { minLength: 3, maxLength: 254, pattern: "^[^\\s@<>,;\"]+@[^\\s@<>,;\"]+\\.[^\\s@<>,;\"]+$" } },
513
+ notify: { kind: "boolean", required: false },
514
+ },
515
+ },
516
+ "outlook.event.cancel": {
517
+ idempotencyKey: false,
518
+ fields: {
519
+ eventId: { kind: "string", required: true, minLength: 1, maxLength: 1024 },
520
+ comment: { kind: "string", required: false, minLength: 1, maxLength: 4000 },
521
+ },
522
+ },
523
+ "onedrive.file.list": {
524
+ idempotencyKey: false,
525
+ fields: {
526
+ folderId: { kind: "string", required: false, minLength: 0, pattern: "^[A-Za-z0-9!._,=-]{1,256}$" },
527
+ pageToken: { kind: "string", required: false, minLength: 1, maxLength: 2048 },
528
+ },
529
+ },
530
+ "onedrive.file.search": {
531
+ idempotencyKey: false,
532
+ fields: {
533
+ q: { kind: "string", required: true, minLength: 1, maxLength: 256 },
534
+ pageToken: { kind: "string", required: false, minLength: 1, maxLength: 2048 },
535
+ },
536
+ },
537
+ "onedrive.file.read": {
538
+ idempotencyKey: false,
539
+ fields: {
540
+ fileId: { kind: "string", required: true, minLength: 0, pattern: "^[A-Za-z0-9!._,=-]{1,256}$" },
541
+ },
542
+ },
543
+ "onedrive.file.upload": {
544
+ idempotencyKey: true,
545
+ fields: {
546
+ filename: { kind: "string", required: true, minLength: 1, maxLength: 255 },
547
+ contentType: { kind: "string", required: true, minLength: 1, maxLength: 128 },
548
+ dataBase64: { kind: "string", required: true, minLength: 1, maxLength: 2796203 },
549
+ folderId: { kind: "string", required: false, minLength: 0, pattern: "^[A-Za-z0-9!._,=-]{1,256}$" },
550
+ conflict: { kind: "enum", required: false, values: ["rename", "replace", "fail"], default: "rename" },
551
+ },
552
+ },
553
+ "onedrive.folder.create": {
554
+ idempotencyKey: true,
555
+ fields: {
556
+ title: { kind: "string", required: true, minLength: 1, maxLength: 256 },
557
+ folderId: { kind: "string", required: false, minLength: 0, pattern: "^[A-Za-z0-9!._,=-]{1,256}$" },
558
+ },
559
+ },
560
+ "excel.worksheet.list": {
561
+ idempotencyKey: false,
562
+ fields: {
563
+ fileId: { kind: "string", required: true, minLength: 0, pattern: "^[A-Za-z0-9!._,=-]{1,256}$" },
564
+ driveId: { kind: "string", required: false, minLength: 0, pattern: "^[A-Za-z0-9!._,=-]{1,256}$" },
565
+ },
566
+ },
567
+ "excel.range.read": {
568
+ idempotencyKey: false,
569
+ fields: {
570
+ fileId: { kind: "string", required: true, minLength: 0, pattern: "^[A-Za-z0-9!._,=-]{1,256}$" },
571
+ driveId: { kind: "string", required: false, minLength: 0, pattern: "^[A-Za-z0-9!._,=-]{1,256}$" },
572
+ worksheet: { kind: "string", required: true, minLength: 1, maxLength: 255 },
573
+ address: { kind: "string", required: false, minLength: 1, maxLength: 64 },
574
+ },
575
+ },
576
+ "excel.range.update": {
577
+ idempotencyKey: false,
578
+ fields: {
579
+ fileId: { kind: "string", required: true, minLength: 0, pattern: "^[A-Za-z0-9!._,=-]{1,256}$" },
580
+ driveId: { kind: "string", required: false, minLength: 0, pattern: "^[A-Za-z0-9!._,=-]{1,256}$" },
581
+ worksheet: { kind: "string", required: true, minLength: 1, maxLength: 255 },
582
+ address: { kind: "string", required: true, minLength: 1, maxLength: 64 },
583
+ values: { kind: "matrix", required: true, minItems: 1, maxItems: 1000, row: { minItems: 1, maxItems: 100 }, types: ["string", "number", "boolean", "null"], maxLength: 4000 },
584
+ },
585
+ },
586
+ "excel.table.list": {
587
+ idempotencyKey: false,
588
+ fields: {
589
+ fileId: { kind: "string", required: true, minLength: 0, pattern: "^[A-Za-z0-9!._,=-]{1,256}$" },
590
+ driveId: { kind: "string", required: false, minLength: 0, pattern: "^[A-Za-z0-9!._,=-]{1,256}$" },
591
+ worksheet: { kind: "string", required: false, minLength: 1, maxLength: 255 },
592
+ },
593
+ },
594
+ "excel.row.add": {
595
+ idempotencyKey: true,
596
+ fields: {
597
+ fileId: { kind: "string", required: true, minLength: 0, pattern: "^[A-Za-z0-9!._,=-]{1,256}$" },
598
+ driveId: { kind: "string", required: false, minLength: 0, pattern: "^[A-Za-z0-9!._,=-]{1,256}$" },
599
+ tableName: { kind: "string", required: true, minLength: 1, maxLength: 255 },
600
+ values: { kind: "matrix", required: true, minItems: 1, maxItems: 1000, row: { minItems: 1, maxItems: 100 }, types: ["string", "number", "boolean", "null"], maxLength: 4000 },
601
+ },
602
+ },
603
+ "excel.worksheet.add": {
604
+ idempotencyKey: true,
605
+ fields: {
606
+ fileId: { kind: "string", required: true, minLength: 0, pattern: "^[A-Za-z0-9!._,=-]{1,256}$" },
607
+ driveId: { kind: "string", required: false, minLength: 0, pattern: "^[A-Za-z0-9!._,=-]{1,256}$" },
608
+ title: { kind: "string", required: true, minLength: 1, maxLength: 256 },
609
+ },
610
+ },
611
+ "teams.message.list": {
612
+ idempotencyKey: false,
613
+ fields: {
614
+ pageToken: { kind: "string", required: false, minLength: 1, maxLength: 2048 },
615
+ },
616
+ },
617
+ "teams.message.post": {
618
+ idempotencyKey: true,
619
+ fields: {
620
+ text: { kind: "string", required: true, minLength: 1, maxLength: 4000 },
621
+ html: { kind: "string", required: false, minLength: 1, maxLength: 65536 },
622
+ },
623
+ },
624
+ "teams.reply.post": {
625
+ idempotencyKey: true,
626
+ fields: {
627
+ messageId: { kind: "string", required: true, minLength: 0, pattern: "^[A-Za-z0-9._=-]{1,256}$" },
628
+ text: { kind: "string", required: true, minLength: 1, maxLength: 4000 },
629
+ html: { kind: "string", required: false, minLength: 1, maxLength: 65536 },
630
+ },
631
+ },
255
632
  "warehouse.view.read": {
256
633
  idempotencyKey: false,
257
634
  fields: {
@@ -391,6 +768,21 @@ function checkField(operation, path, name, field, value) {
391
768
  }
392
769
  return { ok: true, value };
393
770
  }
771
+ case 'matrix': {
772
+ if (!Array.isArray(value) || value.length < field.minItems || value.length > field.maxItems)
773
+ return refuse(path, `${path} must list ${field.minItems} to ${field.maxItems} items`);
774
+ for (const [index, row] of value.entries()) {
775
+ if (!Array.isArray(row))
776
+ return refuse(path, `${path}[${index}] is not a valid ${name} entry`);
777
+ if (row.length < field.row.minItems || row.length > field.row.maxItems)
778
+ return refuse(`${path}[${index}]`, `${path}[${index}] must list ${field.row.minItems} to ${field.row.maxItems} items`);
779
+ for (const [column, cell] of row.entries()) {
780
+ if (!isScalar(field.types, field.maxLength, cell))
781
+ return refuse(`${path}[${index}][${column}]`, `${path}[${index}][${column}] must be ${either(scalarShapes(field.types, field.maxLength))}`);
782
+ }
783
+ }
784
+ return { ok: true, value };
785
+ }
394
786
  case 'integer':
395
787
  if (typeof value !== 'number' || !Number.isInteger(value) || value < field.minimum || value > field.maximum)
396
788
  return refuse(path, `${path} must be an integer between ${field.minimum} and ${field.maximum}`);