@fourier-labs/harbour-contracts 0.95.0 → 0.97.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/contract-release.json +27 -25
  2. package/dist/gen-ts/app-integrations-declaration.d.ts +5 -0
  3. package/dist/gen-ts/contract-release.d.ts +6 -6
  4. package/dist/gen-ts/contract-release.js +6 -6
  5. package/dist/gen-ts/data-grant-v2.d.ts +4 -4
  6. package/dist/gen-ts/deployment-app-registration.d.ts +43 -7
  7. package/dist/gen-ts/file-arrival.d.ts +13 -0
  8. package/dist/gen-ts/file-arrival.js +3 -0
  9. package/dist/gen-ts/index.d.ts +1 -0
  10. package/dist/gen-ts/index.js +1 -0
  11. package/dist/gen-ts/integration-execute-input-rules.d.ts +130 -0
  12. package/dist/gen-ts/integration-execute-input-rules.js +42 -0
  13. package/dist/gen-ts/integration-execute-request.d.ts +5 -3
  14. package/dist/gen-ts/integration-execute-result.d.ts +36 -0
  15. package/dist/gen-ts/integration-operations.d.ts +35 -0
  16. package/dist/gen-ts/integration-operations.js +45 -0
  17. package/dist/gen-ts/saas-connection.d.ts +6 -6
  18. package/gen-ts/app-integrations-declaration.ts +5 -0
  19. package/gen-ts/contract-release.ts +6 -6
  20. package/gen-ts/data-grant-v2.ts +12 -2
  21. package/gen-ts/deployment-app-registration.ts +55 -9
  22. package/gen-ts/file-arrival.ts +20 -0
  23. package/gen-ts/index.ts +1 -0
  24. package/gen-ts/integration-execute-input-rules.ts +42 -0
  25. package/gen-ts/integration-execute-request.ts +10 -3
  26. package/gen-ts/integration-execute-result.ts +36 -0
  27. package/gen-ts/integration-operations.ts +45 -0
  28. package/gen-ts/saas-connection.ts +18 -3
  29. package/package.json +1 -1
  30. package/schema/app-integrations-declaration.schema.json +71 -1
  31. package/schema/data-grant-v2.schema.json +2 -2
  32. package/schema/deployment-app-registration.schema.json +183 -22
  33. package/schema/file-arrival.schema.json +88 -0
  34. package/schema/integration-execute-request.schema.json +358 -10
  35. package/schema/integration-execute-result.schema.json +156 -1
  36. package/schema/saas-connection.schema.json +3 -3
@@ -305,7 +305,11 @@ export type IntegrationExecuteResult = {
305
305
  description?: string;
306
306
  lineItemId?: string;
307
307
  purchaseOrderItemId?: string;
308
+ sku?: string;
309
+ taxId?: string;
310
+ isInvoiced?: boolean;
308
311
  }[];
312
+ referenceNumber?: string;
309
313
  };
310
314
  /**
311
315
  * @maxItems 100
@@ -337,7 +341,11 @@ export type IntegrationExecuteResult = {
337
341
  description?: string;
338
342
  lineItemId?: string;
339
343
  purchaseOrderItemId?: string;
344
+ sku?: string;
345
+ taxId?: string;
346
+ isInvoiced?: boolean;
340
347
  }[];
348
+ referenceNumber?: string;
341
349
  }[];
342
350
  /**
343
351
  * Resolved reply recipients, when supplied by the provider adapter. Outlook uses replyTo when present, otherwise from. Optional for backward compatibility.
@@ -345,6 +353,34 @@ export type IntegrationExecuteResult = {
345
353
  * @maxItems 50
346
354
  */
347
355
  replyTo?: string[];
356
+ /**
357
+ * @maxItems 100
358
+ */
359
+ booksSalesOrders?: {
360
+ id: string;
361
+ number: string;
362
+ status: string;
363
+ currency: string;
364
+ total: string;
365
+ vendorId?: string;
366
+ customerId?: string;
367
+ /**
368
+ * @maxItems 100
369
+ */
370
+ lineItems: {
371
+ itemId: string;
372
+ quantity: string;
373
+ rate: string;
374
+ total: string;
375
+ description?: string;
376
+ lineItemId?: string;
377
+ purchaseOrderItemId?: string;
378
+ sku?: string;
379
+ taxId?: string;
380
+ isInvoiced?: boolean;
381
+ }[];
382
+ referenceNumber?: string;
383
+ }[];
348
384
  };
349
385
  /**
350
386
  * An event's state (0.86.0): confirmed (Google `confirmed`, Graph not cancelled and not tentative), tentative, or cancelled.
@@ -623,4 +623,39 @@ export declare const IntegrationOperations: {
623
623
  readonly declaredMode: false;
624
624
  readonly idempotencyKey: false;
625
625
  };
626
+ readonly "zohobooks.salesorder.list": {
627
+ readonly kind: "saas";
628
+ readonly identities: readonly ["user"];
629
+ readonly readOnly: true;
630
+ readonly declaredMode: false;
631
+ readonly idempotencyKey: false;
632
+ };
633
+ readonly "zohobooks.salesorder.read": {
634
+ readonly kind: "saas";
635
+ readonly identities: readonly ["user"];
636
+ readonly readOnly: true;
637
+ readonly declaredMode: false;
638
+ readonly idempotencyKey: false;
639
+ };
640
+ readonly "zohobooks.invoice.reviseDraft": {
641
+ readonly kind: "saas";
642
+ readonly identities: readonly ["user"];
643
+ readonly readOnly: false;
644
+ readonly declaredMode: false;
645
+ readonly idempotencyKey: true;
646
+ };
647
+ readonly "zohobooks.creditnote.create": {
648
+ readonly kind: "saas";
649
+ readonly identities: readonly ["user"];
650
+ readonly readOnly: false;
651
+ readonly declaredMode: false;
652
+ readonly idempotencyKey: true;
653
+ };
654
+ readonly "zohobooks.creditnote.read": {
655
+ readonly kind: "saas";
656
+ readonly identities: readonly ["user"];
657
+ readonly readOnly: true;
658
+ readonly declaredMode: false;
659
+ readonly idempotencyKey: false;
660
+ };
626
661
  };
@@ -806,5 +806,50 @@ export const IntegrationOperations = {
806
806
  "readOnly": true,
807
807
  "declaredMode": false,
808
808
  "idempotencyKey": false
809
+ },
810
+ "zohobooks.salesorder.list": {
811
+ "kind": "saas",
812
+ "identities": [
813
+ "user"
814
+ ],
815
+ "readOnly": true,
816
+ "declaredMode": false,
817
+ "idempotencyKey": false
818
+ },
819
+ "zohobooks.salesorder.read": {
820
+ "kind": "saas",
821
+ "identities": [
822
+ "user"
823
+ ],
824
+ "readOnly": true,
825
+ "declaredMode": false,
826
+ "idempotencyKey": false
827
+ },
828
+ "zohobooks.invoice.reviseDraft": {
829
+ "kind": "saas",
830
+ "identities": [
831
+ "user"
832
+ ],
833
+ "readOnly": false,
834
+ "declaredMode": false,
835
+ "idempotencyKey": true
836
+ },
837
+ "zohobooks.creditnote.create": {
838
+ "kind": "saas",
839
+ "identities": [
840
+ "user"
841
+ ],
842
+ "readOnly": false,
843
+ "declaredMode": false,
844
+ "idempotencyKey": true
845
+ },
846
+ "zohobooks.creditnote.read": {
847
+ "kind": "saas",
848
+ "identities": [
849
+ "user"
850
+ ],
851
+ "readOnly": true,
852
+ "declaredMode": false,
853
+ "idempotencyKey": false
809
854
  }
810
855
  };
@@ -55,15 +55,15 @@ export interface SaasConnection {
55
55
  * Operations IT allows apps to request on this connection: the provider's own SaaS operations (Slack: slack.channel.history, slack.message.post, slack.message.update, slack.message.delete, slack.dm.send, slack.user.lookup; Gmail: gmail.thread.list, gmail.thread.read, gmail.message.read, gmail.message.send, gmail.attachment.read; Basecamp (0.76.0): basecamp.project.list, basecamp.todolist.list, basecamp.todo.list, basecamp.todo.create, basecamp.todo.complete, basecamp.message.list, basecamp.message.post, basecamp.comment.list, basecamp.comment.post, basecamp.campfire.post, basecamp.people.list; SharePoint (0.78.0): sharepoint.list.list, sharepoint.item.list, sharepoint.item.create, sharepoint.item.update, sharepoint.drive.list, sharepoint.file.list, sharepoint.file.search, sharepoint.file.read, sharepoint.file.upload; Google Workspace and Microsoft 365 (0.86.0): the calendar.*, drive.*, docs.*, sheets.*, outlook.*, onedrive.*, excel.* and teams.* operations of the connection's provider). Never warehouse.view.read. Phone (0.82.0): phone.sms.list; 0.83.0 adds phone.number.get. Seventy-eight SaaS operations in all since 0.86.0.
56
56
  *
57
57
  * @minItems 1
58
- * @maxItems 86
58
+ * @maxItems 91
59
59
  */
60
- operations: ('slack.channel.history' | 'slack.message.post' | 'slack.message.update' | 'slack.message.delete' | 'slack.dm.send' | 'slack.user.lookup' | 'gmail.thread.list' | 'gmail.thread.read' | 'gmail.message.read' | 'gmail.message.send' | 'gmail.attachment.read' | 'basecamp.project.list' | 'basecamp.todolist.list' | 'basecamp.todo.list' | 'basecamp.todo.create' | 'basecamp.todo.complete' | 'basecamp.message.list' | 'basecamp.message.post' | 'basecamp.comment.list' | 'basecamp.comment.post' | 'basecamp.campfire.post' | 'basecamp.people.list' | 'sharepoint.list.list' | 'sharepoint.item.list' | 'sharepoint.item.create' | 'sharepoint.item.update' | 'sharepoint.drive.list' | 'sharepoint.file.list' | 'sharepoint.file.search' | 'sharepoint.file.read' | 'sharepoint.file.upload' | 'phone.sms.list' | 'phone.number.get' | 'calendar.calendar.list' | 'calendar.event.list' | 'calendar.event.read' | 'calendar.event.create' | 'calendar.event.update' | 'calendar.event.cancel' | 'drive.file.list' | 'drive.file.search' | 'drive.file.read' | 'drive.file.upload' | 'drive.folder.create' | 'docs.document.read' | 'docs.document.create' | 'docs.document.append' | 'docs.text.replace' | 'sheets.spreadsheet.read' | 'sheets.values.read' | 'sheets.values.append' | 'sheets.values.update' | 'sheets.values.clear' | 'sheets.spreadsheet.create' | 'outlook.message.list' | 'outlook.message.read' | 'outlook.attachment.read' | 'outlook.message.send' | 'outlook.message.reply' | 'outlook.event.list' | 'outlook.event.read' | 'outlook.event.create' | 'outlook.event.update' | 'outlook.event.cancel' | 'onedrive.file.list' | 'onedrive.file.search' | 'onedrive.file.read' | 'onedrive.file.upload' | 'onedrive.folder.create' | 'excel.worksheet.list' | 'excel.range.read' | 'excel.range.update' | 'excel.table.list' | 'excel.row.add' | 'excel.worksheet.add' | 'teams.message.list' | 'teams.message.post' | 'teams.reply.post' | 'warehouse.view.read' | 'warehouse.table.append' | 'service.request' | 'zohobooks.contact.list' | 'zohobooks.purchaseorder.list' | 'zohobooks.purchaseorder.read' | 'zohobooks.bill.create' | 'zohobooks.bill.read' | 'zohobooks.invoice.create' | 'zohobooks.invoice.read' | 'zohobooks.invoice.pdf')[];
60
+ operations: ('slack.channel.history' | 'slack.message.post' | 'slack.message.update' | 'slack.message.delete' | 'slack.dm.send' | 'slack.user.lookup' | 'gmail.thread.list' | 'gmail.thread.read' | 'gmail.message.read' | 'gmail.message.send' | 'gmail.attachment.read' | 'basecamp.project.list' | 'basecamp.todolist.list' | 'basecamp.todo.list' | 'basecamp.todo.create' | 'basecamp.todo.complete' | 'basecamp.message.list' | 'basecamp.message.post' | 'basecamp.comment.list' | 'basecamp.comment.post' | 'basecamp.campfire.post' | 'basecamp.people.list' | 'sharepoint.list.list' | 'sharepoint.item.list' | 'sharepoint.item.create' | 'sharepoint.item.update' | 'sharepoint.drive.list' | 'sharepoint.file.list' | 'sharepoint.file.search' | 'sharepoint.file.read' | 'sharepoint.file.upload' | 'phone.sms.list' | 'phone.number.get' | 'calendar.calendar.list' | 'calendar.event.list' | 'calendar.event.read' | 'calendar.event.create' | 'calendar.event.update' | 'calendar.event.cancel' | 'drive.file.list' | 'drive.file.search' | 'drive.file.read' | 'drive.file.upload' | 'drive.folder.create' | 'docs.document.read' | 'docs.document.create' | 'docs.document.append' | 'docs.text.replace' | 'sheets.spreadsheet.read' | 'sheets.values.read' | 'sheets.values.append' | 'sheets.values.update' | 'sheets.values.clear' | 'sheets.spreadsheet.create' | 'outlook.message.list' | 'outlook.message.read' | 'outlook.attachment.read' | 'outlook.message.send' | 'outlook.message.reply' | 'outlook.event.list' | 'outlook.event.read' | 'outlook.event.create' | 'outlook.event.update' | 'outlook.event.cancel' | 'onedrive.file.list' | 'onedrive.file.search' | 'onedrive.file.read' | 'onedrive.file.upload' | 'onedrive.folder.create' | 'excel.worksheet.list' | 'excel.range.read' | 'excel.range.update' | 'excel.table.list' | 'excel.row.add' | 'excel.worksheet.add' | 'teams.message.list' | 'teams.message.post' | 'teams.reply.post' | 'warehouse.view.read' | 'warehouse.table.append' | 'service.request' | 'zohobooks.contact.list' | 'zohobooks.purchaseorder.list' | 'zohobooks.purchaseorder.read' | 'zohobooks.bill.create' | 'zohobooks.bill.read' | 'zohobooks.invoice.create' | 'zohobooks.invoice.read' | 'zohobooks.invoice.pdf' | 'zohobooks.salesorder.list' | 'zohobooks.salesorder.read' | 'zohobooks.invoice.reviseDraft' | 'zohobooks.creditnote.create' | 'zohobooks.creditnote.read')[];
61
61
  /**
62
62
  * Explicit user-mode operations eligible for automatic app access, subject to the connection operation ceiling and personal consent. Empty means review all; absent inherits company defaults or the existing userModeApproval migration rule. Governance validates provider and mode compatibility. Background execution still requires personal background consent, not a separate admin grant.
63
63
  *
64
- * @maxItems 86
64
+ * @maxItems 91
65
65
  */
66
- automaticUserOperations?: ('slack.channel.history' | 'slack.message.post' | 'slack.message.update' | 'slack.message.delete' | 'slack.dm.send' | 'slack.user.lookup' | 'gmail.thread.list' | 'gmail.thread.read' | 'gmail.message.read' | 'gmail.message.send' | 'gmail.attachment.read' | 'basecamp.project.list' | 'basecamp.todolist.list' | 'basecamp.todo.list' | 'basecamp.todo.create' | 'basecamp.todo.complete' | 'basecamp.message.list' | 'basecamp.message.post' | 'basecamp.comment.list' | 'basecamp.comment.post' | 'basecamp.campfire.post' | 'basecamp.people.list' | 'sharepoint.list.list' | 'sharepoint.item.list' | 'sharepoint.item.create' | 'sharepoint.item.update' | 'sharepoint.drive.list' | 'sharepoint.file.list' | 'sharepoint.file.search' | 'sharepoint.file.read' | 'sharepoint.file.upload' | 'phone.sms.list' | 'phone.number.get' | 'calendar.calendar.list' | 'calendar.event.list' | 'calendar.event.read' | 'calendar.event.create' | 'calendar.event.update' | 'calendar.event.cancel' | 'drive.file.list' | 'drive.file.search' | 'drive.file.read' | 'drive.file.upload' | 'drive.folder.create' | 'docs.document.read' | 'docs.document.create' | 'docs.document.append' | 'docs.text.replace' | 'sheets.spreadsheet.read' | 'sheets.values.read' | 'sheets.values.append' | 'sheets.values.update' | 'sheets.values.clear' | 'sheets.spreadsheet.create' | 'outlook.message.list' | 'outlook.message.read' | 'outlook.attachment.read' | 'outlook.message.send' | 'outlook.message.reply' | 'outlook.event.list' | 'outlook.event.read' | 'outlook.event.create' | 'outlook.event.update' | 'outlook.event.cancel' | 'onedrive.file.list' | 'onedrive.file.search' | 'onedrive.file.read' | 'onedrive.file.upload' | 'onedrive.folder.create' | 'excel.worksheet.list' | 'excel.range.read' | 'excel.range.update' | 'excel.table.list' | 'excel.row.add' | 'excel.worksheet.add' | 'teams.message.list' | 'teams.message.post' | 'teams.reply.post' | 'warehouse.view.read' | 'warehouse.table.append' | 'service.request' | 'zohobooks.contact.list' | 'zohobooks.purchaseorder.list' | 'zohobooks.purchaseorder.read' | 'zohobooks.bill.create' | 'zohobooks.bill.read' | 'zohobooks.invoice.create' | 'zohobooks.invoice.read' | 'zohobooks.invoice.pdf')[];
66
+ automaticUserOperations?: ('slack.channel.history' | 'slack.message.post' | 'slack.message.update' | 'slack.message.delete' | 'slack.dm.send' | 'slack.user.lookup' | 'gmail.thread.list' | 'gmail.thread.read' | 'gmail.message.read' | 'gmail.message.send' | 'gmail.attachment.read' | 'basecamp.project.list' | 'basecamp.todolist.list' | 'basecamp.todo.list' | 'basecamp.todo.create' | 'basecamp.todo.complete' | 'basecamp.message.list' | 'basecamp.message.post' | 'basecamp.comment.list' | 'basecamp.comment.post' | 'basecamp.campfire.post' | 'basecamp.people.list' | 'sharepoint.list.list' | 'sharepoint.item.list' | 'sharepoint.item.create' | 'sharepoint.item.update' | 'sharepoint.drive.list' | 'sharepoint.file.list' | 'sharepoint.file.search' | 'sharepoint.file.read' | 'sharepoint.file.upload' | 'phone.sms.list' | 'phone.number.get' | 'calendar.calendar.list' | 'calendar.event.list' | 'calendar.event.read' | 'calendar.event.create' | 'calendar.event.update' | 'calendar.event.cancel' | 'drive.file.list' | 'drive.file.search' | 'drive.file.read' | 'drive.file.upload' | 'drive.folder.create' | 'docs.document.read' | 'docs.document.create' | 'docs.document.append' | 'docs.text.replace' | 'sheets.spreadsheet.read' | 'sheets.values.read' | 'sheets.values.append' | 'sheets.values.update' | 'sheets.values.clear' | 'sheets.spreadsheet.create' | 'outlook.message.list' | 'outlook.message.read' | 'outlook.attachment.read' | 'outlook.message.send' | 'outlook.message.reply' | 'outlook.event.list' | 'outlook.event.read' | 'outlook.event.create' | 'outlook.event.update' | 'outlook.event.cancel' | 'onedrive.file.list' | 'onedrive.file.search' | 'onedrive.file.read' | 'onedrive.file.upload' | 'onedrive.folder.create' | 'excel.worksheet.list' | 'excel.range.read' | 'excel.range.update' | 'excel.table.list' | 'excel.row.add' | 'excel.worksheet.add' | 'teams.message.list' | 'teams.message.post' | 'teams.reply.post' | 'warehouse.view.read' | 'warehouse.table.append' | 'service.request' | 'zohobooks.contact.list' | 'zohobooks.purchaseorder.list' | 'zohobooks.purchaseorder.read' | 'zohobooks.bill.create' | 'zohobooks.bill.read' | 'zohobooks.invoice.create' | 'zohobooks.invoice.read' | 'zohobooks.invoice.pdf' | 'zohobooks.salesorder.list' | 'zohobooks.salesorder.read' | 'zohobooks.invoice.reviseDraft' | 'zohobooks.creditnote.create' | 'zohobooks.creditnote.read')[];
67
67
  /**
68
68
  * Reusable permissions for admitted builders on explicit shared SaaS resources. Governance checks registered resources, provider/mode compatibility and the connection operation ceiling. Connection version and audit record changes; no per-entry approval metadata.
69
69
  *
@@ -168,9 +168,9 @@ export interface ReusableSaasAccess {
168
168
  mode: 'app' | 'user';
169
169
  /**
170
170
  * @minItems 1
171
- * @maxItems 86
171
+ * @maxItems 91
172
172
  */
173
- operations: ('slack.channel.history' | 'slack.message.post' | 'slack.message.update' | 'slack.message.delete' | 'slack.dm.send' | 'slack.user.lookup' | 'gmail.thread.list' | 'gmail.thread.read' | 'gmail.message.read' | 'gmail.message.send' | 'gmail.attachment.read' | 'basecamp.project.list' | 'basecamp.todolist.list' | 'basecamp.todo.list' | 'basecamp.todo.create' | 'basecamp.todo.complete' | 'basecamp.message.list' | 'basecamp.message.post' | 'basecamp.comment.list' | 'basecamp.comment.post' | 'basecamp.campfire.post' | 'basecamp.people.list' | 'sharepoint.list.list' | 'sharepoint.item.list' | 'sharepoint.item.create' | 'sharepoint.item.update' | 'sharepoint.drive.list' | 'sharepoint.file.list' | 'sharepoint.file.search' | 'sharepoint.file.read' | 'sharepoint.file.upload' | 'phone.sms.list' | 'phone.number.get' | 'calendar.calendar.list' | 'calendar.event.list' | 'calendar.event.read' | 'calendar.event.create' | 'calendar.event.update' | 'calendar.event.cancel' | 'drive.file.list' | 'drive.file.search' | 'drive.file.read' | 'drive.file.upload' | 'drive.folder.create' | 'docs.document.read' | 'docs.document.create' | 'docs.document.append' | 'docs.text.replace' | 'sheets.spreadsheet.read' | 'sheets.values.read' | 'sheets.values.append' | 'sheets.values.update' | 'sheets.values.clear' | 'sheets.spreadsheet.create' | 'outlook.message.list' | 'outlook.message.read' | 'outlook.attachment.read' | 'outlook.message.send' | 'outlook.message.reply' | 'outlook.event.list' | 'outlook.event.read' | 'outlook.event.create' | 'outlook.event.update' | 'outlook.event.cancel' | 'onedrive.file.list' | 'onedrive.file.search' | 'onedrive.file.read' | 'onedrive.file.upload' | 'onedrive.folder.create' | 'excel.worksheet.list' | 'excel.range.read' | 'excel.range.update' | 'excel.table.list' | 'excel.row.add' | 'excel.worksheet.add' | 'teams.message.list' | 'teams.message.post' | 'teams.reply.post' | 'warehouse.view.read' | 'warehouse.table.append' | 'service.request' | 'zohobooks.contact.list' | 'zohobooks.purchaseorder.list' | 'zohobooks.purchaseorder.read' | 'zohobooks.bill.create' | 'zohobooks.bill.read' | 'zohobooks.invoice.create' | 'zohobooks.invoice.read' | 'zohobooks.invoice.pdf')[];
173
+ operations: ('slack.channel.history' | 'slack.message.post' | 'slack.message.update' | 'slack.message.delete' | 'slack.dm.send' | 'slack.user.lookup' | 'gmail.thread.list' | 'gmail.thread.read' | 'gmail.message.read' | 'gmail.message.send' | 'gmail.attachment.read' | 'basecamp.project.list' | 'basecamp.todolist.list' | 'basecamp.todo.list' | 'basecamp.todo.create' | 'basecamp.todo.complete' | 'basecamp.message.list' | 'basecamp.message.post' | 'basecamp.comment.list' | 'basecamp.comment.post' | 'basecamp.campfire.post' | 'basecamp.people.list' | 'sharepoint.list.list' | 'sharepoint.item.list' | 'sharepoint.item.create' | 'sharepoint.item.update' | 'sharepoint.drive.list' | 'sharepoint.file.list' | 'sharepoint.file.search' | 'sharepoint.file.read' | 'sharepoint.file.upload' | 'phone.sms.list' | 'phone.number.get' | 'calendar.calendar.list' | 'calendar.event.list' | 'calendar.event.read' | 'calendar.event.create' | 'calendar.event.update' | 'calendar.event.cancel' | 'drive.file.list' | 'drive.file.search' | 'drive.file.read' | 'drive.file.upload' | 'drive.folder.create' | 'docs.document.read' | 'docs.document.create' | 'docs.document.append' | 'docs.text.replace' | 'sheets.spreadsheet.read' | 'sheets.values.read' | 'sheets.values.append' | 'sheets.values.update' | 'sheets.values.clear' | 'sheets.spreadsheet.create' | 'outlook.message.list' | 'outlook.message.read' | 'outlook.attachment.read' | 'outlook.message.send' | 'outlook.message.reply' | 'outlook.event.list' | 'outlook.event.read' | 'outlook.event.create' | 'outlook.event.update' | 'outlook.event.cancel' | 'onedrive.file.list' | 'onedrive.file.search' | 'onedrive.file.read' | 'onedrive.file.upload' | 'onedrive.folder.create' | 'excel.worksheet.list' | 'excel.range.read' | 'excel.range.update' | 'excel.table.list' | 'excel.row.add' | 'excel.worksheet.add' | 'teams.message.list' | 'teams.message.post' | 'teams.reply.post' | 'warehouse.view.read' | 'warehouse.table.append' | 'service.request' | 'zohobooks.contact.list' | 'zohobooks.purchaseorder.list' | 'zohobooks.purchaseorder.read' | 'zohobooks.bill.create' | 'zohobooks.bill.read' | 'zohobooks.invoice.create' | 'zohobooks.invoice.read' | 'zohobooks.invoice.pdf' | 'zohobooks.salesorder.list' | 'zohobooks.salesorder.read' | 'zohobooks.invoice.reviseDraft' | 'zohobooks.creditnote.create' | 'zohobooks.creditnote.read')[];
174
174
  }
175
175
  export interface DevelopmentPreapproval {
176
176
  /**
@@ -94,6 +94,11 @@ export type DeclaredConnection = {
94
94
  'zohobooks.invoice.create'?: UserModeChannelOperation;
95
95
  'zohobooks.invoice.read'?: UserModeChannelOperation;
96
96
  'zohobooks.invoice.pdf'?: UserModeChannelOperation;
97
+ 'zohobooks.salesorder.list'?: UserModeChannelOperation;
98
+ 'zohobooks.salesorder.read'?: UserModeChannelOperation;
99
+ 'zohobooks.invoice.reviseDraft'?: UserModeChannelOperation;
100
+ 'zohobooks.creditnote.create'?: UserModeChannelOperation;
101
+ 'zohobooks.creditnote.read'?: UserModeChannelOperation;
97
102
  };
98
103
  };
99
104
  export type IntegrationConnectionKind = 'saas' | 'database' | 'service';
@@ -1,10 +1,10 @@
1
1
  /* eslint-disable */
2
2
  // Code generated by tools/gen/gen.mjs from schema/*.json. DO NOT EDIT.
3
3
 
4
- export const ContractRepositoryVersion = "0.95.0.0" as const;
5
- export const ContractPublishVersion = "0.95.0" as const;
6
- export const ContractPublishTag = "v0.95.0" as const;
7
- export const ContractSchemasDigest = "sha256:b1e4bf6cb073156c1e04bda0c9bbfa64b3469793fe76dd74f4aa7d85c6a8a9ac" as const;
4
+ export const ContractRepositoryVersion = "0.97.0.0" as const;
5
+ export const ContractPublishVersion = "0.97.0" as const;
6
+ export const ContractPublishTag = "v0.97.0" as const;
7
+ export const ContractSchemasDigest = "sha256:96d7ca6fc25f98bb0b35598d8d72eb68cabd841d4b8b644330dea37fbed0916f" as const;
8
8
  export const ContractAiFixturesDigest = "sha256:edac31c92e146ca1c40130f2fb5649db82e24b8cd1ac758153b90612052fddb6" as const;
9
- export const ContractGeneratedGoDigest = "sha256:ed380cb87f47db9a9b090d819e0e35d647f1bc653da2c42e5f2382c5240f6245" as const;
10
- export const ContractGeneratedTypeScriptDigest = "sha256:cc27d7e7a3915755581478ac4ec04fb70bf7e6e044eb42d14f3babccaa1ae0c6" as const;
9
+ export const ContractGeneratedGoDigest = "sha256:628254d6676684c7356611eaa434890fa28ad7cf78a487ec407d33b4aa8dad0a" as const;
10
+ export const ContractGeneratedTypeScriptDigest = "sha256:db0823b4134a04e599b159fab0fd439c88160541bdf67c58b568758c98a8dfcc" as const;
@@ -35,7 +35,7 @@ export interface DataGrantV2 {
35
35
  /**
36
36
  * Approved operations; each must match this grant's mode. Empty until the first approval. At most the seventy-eight SaaS operations (0.86.0: eleven Slack and Gmail, eleven Basecamp, nine SharePoint, two phone, forty-five Google Workspace and Microsoft 365); a database grant holds up to two (warehouse.view.read, warehouse.table.append).
37
37
  *
38
- * @maxItems 86
38
+ * @maxItems 91
39
39
  */
40
40
  operations: (
41
41
  | 'slack.channel.history'
@@ -127,6 +127,11 @@ export interface DataGrantV2 {
127
127
  | 'zohobooks.invoice.create'
128
128
  | 'zohobooks.invoice.read'
129
129
  | 'zohobooks.invoice.pdf'
130
+ | 'zohobooks.salesorder.list'
131
+ | 'zohobooks.salesorder.read'
132
+ | 'zohobooks.invoice.reviseDraft'
133
+ | 'zohobooks.creditnote.create'
134
+ | 'zohobooks.creditnote.read'
130
135
  )[];
131
136
  /**
132
137
  * Approved logical resources. Never inherited by wildcard. Empty until the first approval.
@@ -197,7 +202,7 @@ export interface IntegrationResource {
197
202
  */
198
203
  export interface ReviewedIntegrationScope {
199
204
  /**
200
- * @maxItems 86
205
+ * @maxItems 91
201
206
  */
202
207
  operations: (
203
208
  | 'slack.channel.history'
@@ -289,6 +294,11 @@ export interface ReviewedIntegrationScope {
289
294
  | 'zohobooks.invoice.create'
290
295
  | 'zohobooks.invoice.read'
291
296
  | 'zohobooks.invoice.pdf'
297
+ | 'zohobooks.salesorder.list'
298
+ | 'zohobooks.salesorder.read'
299
+ | 'zohobooks.invoice.reviseDraft'
300
+ | 'zohobooks.creditnote.create'
301
+ | 'zohobooks.creditnote.read'
292
302
  )[];
293
303
  /**
294
304
  * @maxItems 64
@@ -24,6 +24,9 @@ export type DeploymentAppRegistration = {
24
24
  * @maxItems 1
25
25
  */
26
26
  signInMethods?: ('phone' | 'email')[];
27
+ /**
28
+ * Temporary rolling-release input for email targets; writers use eventTarget. Remove after old deployments are migrated.
29
+ */
27
30
  mailArrivalTarget?:
28
31
  | {
29
32
  functionArn: string;
@@ -35,6 +38,17 @@ export type DeploymentAppRegistration = {
35
38
  jobs: MailArrivalJobs;
36
39
  gatewayUrl: string;
37
40
  };
41
+ eventTarget?:
42
+ | {
43
+ functionArn: string;
44
+ versionId: string;
45
+ jobs: EventJobs;
46
+ }
47
+ | {
48
+ versionId: string;
49
+ jobs: EventJobs;
50
+ gatewayUrl: string;
51
+ };
38
52
  };
39
53
  /**
40
54
  * @minItems 1
@@ -42,13 +56,45 @@ export type DeploymentAppRegistration = {
42
56
  */
43
57
  export type MailArrivalJobs = {
44
58
  name: string;
45
- trigger: {
46
- type: 'email.arrived';
47
- connection: string;
48
- resource: 'inbox';
49
- filter?: {
50
- from?: string;
51
- subjectContains?: string;
52
- };
53
- };
59
+ trigger: EmailArrivalTrigger;
54
60
  }[];
61
+ /**
62
+ * @minItems 1
63
+ * @maxItems 100
64
+ */
65
+ export type EventJobs = {
66
+ name: string;
67
+ trigger:
68
+ | EmailArrivalTrigger
69
+ | {
70
+ type: 'file.created';
71
+ connection: string;
72
+ resource: string;
73
+ folderId?: string;
74
+ driveId?: string;
75
+ /**
76
+ * @minItems 1
77
+ * @maxItems 4
78
+ */
79
+ mimeTypes?: (
80
+ | 'application/pdf'
81
+ | 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
82
+ | 'image/png'
83
+ | 'image/jpeg'
84
+ )[];
85
+ /**
86
+ * The app owner may select a folder at runtime within the declared connection and resource.
87
+ */
88
+ configurableFolder?: true;
89
+ };
90
+ }[];
91
+
92
+ export interface EmailArrivalTrigger {
93
+ type: 'email.arrived';
94
+ connection: string;
95
+ resource: 'inbox';
96
+ filter?: {
97
+ from?: string;
98
+ subjectContains?: string;
99
+ };
100
+ }
@@ -0,0 +1,20 @@
1
+ /* eslint-disable */
2
+ // Code generated by tools/gen/gen.mjs from schema/*.json. DO NOT EDIT.
3
+
4
+ export type FileArrival = {
5
+ type: 'file.created';
6
+ provider: 'drive' | 'sharepoint';
7
+ sourceId: string;
8
+ fileId: string;
9
+ folderId: string;
10
+ driveId?: string;
11
+ name: string;
12
+ mimeType:
13
+ | 'application/pdf'
14
+ | 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
15
+ | 'image/png'
16
+ | 'image/jpeg';
17
+ size: number;
18
+ createdAt: string;
19
+ observedAt: string;
20
+ };
package/gen-ts/index.ts CHANGED
@@ -48,6 +48,7 @@ export * from './error-category-registry.js';
48
48
  export * from './error-category.js';
49
49
  export * from './error-envelope.js';
50
50
  export * from './external-sign-in.js';
51
+ export * from './file-arrival.js';
51
52
  export * from './identity-context.js';
52
53
  export * from './integration-connect-result.js';
53
54
  export * from './integration-error-details.js';
@@ -758,6 +758,7 @@ export const IntegrationExecuteInputRules = {
758
758
  rate: { kind: "string", required: true, minLength: 0, maxLength: 17, pattern: "^[0-9]{1,10}(\\.[0-9]{1,6})?$" },
759
759
  taxId: { kind: "string", required: false, minLength: 0, maxLength: 32, pattern: "^[0-9]{1,32}$" },
760
760
  description: { kind: "string", required: false, minLength: 0, maxLength: 2000 },
761
+ salesOrderItemId: { kind: "string", required: false, minLength: 0, maxLength: 32, pattern: "^[0-9]{1,32}$" },
761
762
  } },
762
763
  },
763
764
  },
@@ -773,6 +774,47 @@ export const IntegrationExecuteInputRules = {
773
774
  documentId: { kind: "string", required: true, minLength: 0, maxLength: 32, pattern: "^[0-9]{1,32}$" },
774
775
  },
775
776
  },
777
+ "zohobooks.salesorder.list": {
778
+ idempotencyKey: false,
779
+ fields: {
780
+ customerId: { kind: "string", required: true, minLength: 0, maxLength: 32, pattern: "^[0-9]{1,32}$" },
781
+ pageToken: { kind: "string", required: false, minLength: 1, maxLength: 2048 },
782
+ },
783
+ },
784
+ "zohobooks.salesorder.read": {
785
+ idempotencyKey: false,
786
+ fields: {
787
+ documentId: { kind: "string", required: true, minLength: 0, maxLength: 32, pattern: "^[0-9]{1,32}$" },
788
+ },
789
+ },
790
+ "zohobooks.invoice.reviseDraft": {
791
+ idempotencyKey: true,
792
+ fields: {
793
+ documentId: { kind: "string", required: true, minLength: 0, maxLength: 32, pattern: "^[0-9]{1,32}$" },
794
+ lineItems: { kind: "object[]", required: true, minItems: 1, maxItems: 100, fields: {
795
+ lineItemId: { kind: "string", required: true, minLength: 0, maxLength: 32, pattern: "^[0-9]{1,32}$" },
796
+ quantity: { kind: "string", required: true, minLength: 0, maxLength: 17, pattern: "^[0-9]{1,10}(\\.[0-9]{1,6})?$" },
797
+ } },
798
+ },
799
+ },
800
+ "zohobooks.creditnote.create": {
801
+ idempotencyKey: true,
802
+ fields: {
803
+ documentId: { kind: "string", required: true, minLength: 0, maxLength: 32, pattern: "^[0-9]{1,32}$" },
804
+ documentDate: { kind: "string", required: true, minLength: 0, maxLength: 10, pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}$" },
805
+ referenceNumber: { kind: "string", required: false, minLength: 1, maxLength: 100 },
806
+ lineItems: { kind: "object[]", required: true, minItems: 1, maxItems: 100, fields: {
807
+ lineItemId: { kind: "string", required: true, minLength: 0, maxLength: 32, pattern: "^[0-9]{1,32}$" },
808
+ quantity: { kind: "string", required: true, minLength: 0, maxLength: 17, pattern: "^[0-9]{1,10}(\\.[0-9]{1,6})?$" },
809
+ } },
810
+ },
811
+ },
812
+ "zohobooks.creditnote.read": {
813
+ idempotencyKey: false,
814
+ fields: {
815
+ documentId: { kind: "string", required: true, minLength: 0, maxLength: 32, pattern: "^[0-9]{1,32}$" },
816
+ },
817
+ },
776
818
  } as const satisfies Record<string, IntegrationExecuteOperationRule>;
777
819
 
778
820
  export type IntegrationExecuteOperation = keyof typeof IntegrationExecuteInputRules;
@@ -101,7 +101,12 @@ export type IntegrationExecuteRequest = {
101
101
  | 'zohobooks.bill.read'
102
102
  | 'zohobooks.invoice.create'
103
103
  | 'zohobooks.invoice.read'
104
- | 'zohobooks.invoice.pdf';
104
+ | 'zohobooks.invoice.pdf'
105
+ | 'zohobooks.salesorder.list'
106
+ | 'zohobooks.salesorder.read'
107
+ | 'zohobooks.invoice.reviseDraft'
108
+ | 'zohobooks.creditnote.create'
109
+ | 'zohobooks.creditnote.read';
105
110
  /**
106
111
  * Tenant-wide logical alias of a connection (governance sourceId) or of a resource under it.
107
112
  */
@@ -462,12 +467,14 @@ export type IntegrationExecuteRequest = {
462
467
  * @maxItems 100
463
468
  */
464
469
  lineItems?: {
465
- itemId: string;
470
+ itemId?: string;
466
471
  quantity: string;
467
- rate: string;
472
+ rate?: string;
468
473
  taxId?: string;
469
474
  description?: string;
470
475
  purchaseOrderItemId?: string;
476
+ lineItemId?: string;
477
+ salesOrderItemId?: string;
471
478
  }[];
472
479
  };
473
480
  /**
@@ -308,7 +308,11 @@ export type IntegrationExecuteResult = {
308
308
  description?: string;
309
309
  lineItemId?: string;
310
310
  purchaseOrderItemId?: string;
311
+ sku?: string;
312
+ taxId?: string;
313
+ isInvoiced?: boolean;
311
314
  }[];
315
+ referenceNumber?: string;
312
316
  };
313
317
  /**
314
318
  * @maxItems 100
@@ -340,7 +344,11 @@ export type IntegrationExecuteResult = {
340
344
  description?: string;
341
345
  lineItemId?: string;
342
346
  purchaseOrderItemId?: string;
347
+ sku?: string;
348
+ taxId?: string;
349
+ isInvoiced?: boolean;
343
350
  }[];
351
+ referenceNumber?: string;
344
352
  }[];
345
353
  /**
346
354
  * Resolved reply recipients, when supplied by the provider adapter. Outlook uses replyTo when present, otherwise from. Optional for backward compatibility.
@@ -348,6 +356,34 @@ export type IntegrationExecuteResult = {
348
356
  * @maxItems 50
349
357
  */
350
358
  replyTo?: string[];
359
+ /**
360
+ * @maxItems 100
361
+ */
362
+ booksSalesOrders?: {
363
+ id: string;
364
+ number: string;
365
+ status: string;
366
+ currency: string;
367
+ total: string;
368
+ vendorId?: string;
369
+ customerId?: string;
370
+ /**
371
+ * @maxItems 100
372
+ */
373
+ lineItems: {
374
+ itemId: string;
375
+ quantity: string;
376
+ rate: string;
377
+ total: string;
378
+ description?: string;
379
+ lineItemId?: string;
380
+ purchaseOrderItemId?: string;
381
+ sku?: string;
382
+ taxId?: string;
383
+ isInvoiced?: boolean;
384
+ }[];
385
+ referenceNumber?: string;
386
+ }[];
351
387
  };
352
388
  /**
353
389
  * An event's state (0.86.0): confirmed (Google `confirmed`, Graph not cancelled and not tentative), tentative, or cancelled.
@@ -807,5 +807,50 @@ export const IntegrationOperations = {
807
807
  "readOnly": true,
808
808
  "declaredMode": false,
809
809
  "idempotencyKey": false
810
+ },
811
+ "zohobooks.salesorder.list": {
812
+ "kind": "saas",
813
+ "identities": [
814
+ "user"
815
+ ],
816
+ "readOnly": true,
817
+ "declaredMode": false,
818
+ "idempotencyKey": false
819
+ },
820
+ "zohobooks.salesorder.read": {
821
+ "kind": "saas",
822
+ "identities": [
823
+ "user"
824
+ ],
825
+ "readOnly": true,
826
+ "declaredMode": false,
827
+ "idempotencyKey": false
828
+ },
829
+ "zohobooks.invoice.reviseDraft": {
830
+ "kind": "saas",
831
+ "identities": [
832
+ "user"
833
+ ],
834
+ "readOnly": false,
835
+ "declaredMode": false,
836
+ "idempotencyKey": true
837
+ },
838
+ "zohobooks.creditnote.create": {
839
+ "kind": "saas",
840
+ "identities": [
841
+ "user"
842
+ ],
843
+ "readOnly": false,
844
+ "declaredMode": false,
845
+ "idempotencyKey": true
846
+ },
847
+ "zohobooks.creditnote.read": {
848
+ "kind": "saas",
849
+ "identities": [
850
+ "user"
851
+ ],
852
+ "readOnly": true,
853
+ "declaredMode": false,
854
+ "idempotencyKey": false
810
855
  }
811
856
  } as const;
@@ -73,7 +73,7 @@ export interface SaasConnection {
73
73
  * Operations IT allows apps to request on this connection: the provider's own SaaS operations (Slack: slack.channel.history, slack.message.post, slack.message.update, slack.message.delete, slack.dm.send, slack.user.lookup; Gmail: gmail.thread.list, gmail.thread.read, gmail.message.read, gmail.message.send, gmail.attachment.read; Basecamp (0.76.0): basecamp.project.list, basecamp.todolist.list, basecamp.todo.list, basecamp.todo.create, basecamp.todo.complete, basecamp.message.list, basecamp.message.post, basecamp.comment.list, basecamp.comment.post, basecamp.campfire.post, basecamp.people.list; SharePoint (0.78.0): sharepoint.list.list, sharepoint.item.list, sharepoint.item.create, sharepoint.item.update, sharepoint.drive.list, sharepoint.file.list, sharepoint.file.search, sharepoint.file.read, sharepoint.file.upload; Google Workspace and Microsoft 365 (0.86.0): the calendar.*, drive.*, docs.*, sheets.*, outlook.*, onedrive.*, excel.* and teams.* operations of the connection's provider). Never warehouse.view.read. Phone (0.82.0): phone.sms.list; 0.83.0 adds phone.number.get. Seventy-eight SaaS operations in all since 0.86.0.
74
74
  *
75
75
  * @minItems 1
76
- * @maxItems 86
76
+ * @maxItems 91
77
77
  */
78
78
  operations: (
79
79
  | 'slack.channel.history'
@@ -165,11 +165,16 @@ export interface SaasConnection {
165
165
  | 'zohobooks.invoice.create'
166
166
  | 'zohobooks.invoice.read'
167
167
  | 'zohobooks.invoice.pdf'
168
+ | 'zohobooks.salesorder.list'
169
+ | 'zohobooks.salesorder.read'
170
+ | 'zohobooks.invoice.reviseDraft'
171
+ | 'zohobooks.creditnote.create'
172
+ | 'zohobooks.creditnote.read'
168
173
  )[];
169
174
  /**
170
175
  * Explicit user-mode operations eligible for automatic app access, subject to the connection operation ceiling and personal consent. Empty means review all; absent inherits company defaults or the existing userModeApproval migration rule. Governance validates provider and mode compatibility. Background execution still requires personal background consent, not a separate admin grant.
171
176
  *
172
- * @maxItems 86
177
+ * @maxItems 91
173
178
  */
174
179
  automaticUserOperations?: (
175
180
  | 'slack.channel.history'
@@ -261,6 +266,11 @@ export interface SaasConnection {
261
266
  | 'zohobooks.invoice.create'
262
267
  | 'zohobooks.invoice.read'
263
268
  | 'zohobooks.invoice.pdf'
269
+ | 'zohobooks.salesorder.list'
270
+ | 'zohobooks.salesorder.read'
271
+ | 'zohobooks.invoice.reviseDraft'
272
+ | 'zohobooks.creditnote.create'
273
+ | 'zohobooks.creditnote.read'
264
274
  )[];
265
275
  /**
266
276
  * Reusable permissions for admitted builders on explicit shared SaaS resources. Governance checks registered resources, provider/mode compatibility and the connection operation ceiling. Connection version and audit record changes; no per-entry approval metadata.
@@ -366,7 +376,7 @@ export interface ReusableSaasAccess {
366
376
  mode: 'app' | 'user';
367
377
  /**
368
378
  * @minItems 1
369
- * @maxItems 86
379
+ * @maxItems 91
370
380
  */
371
381
  operations: (
372
382
  | 'slack.channel.history'
@@ -458,6 +468,11 @@ export interface ReusableSaasAccess {
458
468
  | 'zohobooks.invoice.create'
459
469
  | 'zohobooks.invoice.read'
460
470
  | 'zohobooks.invoice.pdf'
471
+ | 'zohobooks.salesorder.list'
472
+ | 'zohobooks.salesorder.read'
473
+ | 'zohobooks.invoice.reviseDraft'
474
+ | 'zohobooks.creditnote.create'
475
+ | 'zohobooks.creditnote.read'
461
476
  )[];
462
477
  }
463
478
  export interface DevelopmentPreapproval {