@fourier-labs/harbour-contracts 0.80.0 → 0.82.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.
- package/README.md +3 -3
- package/contract-release.json +22 -22
- package/dist/gen-ts/app-integrations-declaration.d.ts +6 -0
- package/dist/gen-ts/contract-release.d.ts +6 -6
- package/dist/gen-ts/contract-release.js +6 -6
- package/dist/gen-ts/data-grant-v2.d.ts +5 -5
- package/dist/gen-ts/integration-execute-input-rules.d.ts +41 -0
- package/dist/gen-ts/integration-execute-input-rules.js +37 -9
- package/dist/gen-ts/integration-execute-request.d.ts +20 -3
- package/dist/gen-ts/integration-operations.d.ts +14 -0
- package/dist/gen-ts/integration-operations.js +18 -0
- package/dist/gen-ts/resolved-app-serving.d.ts +10 -0
- package/dist/gen-ts/saas-connection.d.ts +7 -7
- package/gen-ts/app-integrations-declaration.ts +6 -0
- package/gen-ts/contract-release.ts +6 -6
- package/gen-ts/data-grant-v2.ts +6 -4
- package/gen-ts/integration-execute-input-rules.ts +34 -7
- package/gen-ts/integration-execute-request.ts +21 -2
- package/gen-ts/integration-operations.ts +18 -0
- package/gen-ts/resolved-app-serving.ts +10 -0
- package/gen-ts/saas-connection.ts +8 -6
- package/package.json +1 -1
- package/schema/app-integrations-declaration.schema.json +62 -1
- package/schema/data-grant-v2.schema.json +4 -4
- package/schema/integration-execute-request.schema.json +129 -1
- package/schema/resolved-app-serving.schema.json +11 -0
- package/schema/saas-connection.schema.json +22 -7
package/README.md
CHANGED
|
@@ -38,9 +38,9 @@ exist here first.
|
|
|
38
38
|
| `binding-classification-subject.schema.json` | Complete value-free binding-name classification before version allocation | AI governance §5.7 / SEC-UP-01 |
|
|
39
39
|
| `sanitized-binding-evidence.schema.json` | Exact-version sanitized runtime-binding allocation receipt | AI governance §5.7 / SEC-UP-02 |
|
|
40
40
|
| `ai-pricing-revision`, `ai-metering-policy`, `ai-budget-ledger-event`, `ai-trace-event-v2` | Additive metering v2 records, including media dimensions and P5 trace attribution; v1 records remain readable | AI governance §9 |
|
|
41
|
-
| `app-integrations-declaration.schema.json` | Committed `.isomorph/integrations.json` (`isomorph.app-integrations/2.0`): closed thirty-
|
|
42
|
-
| `integration-execute-request`, `integration-execute-result`, `integration-connect-result`, `integration-error-details` | App SDK integrations wire contract on `/_harbour/integrations/*`: per-operation input bounds (a warehouse read filters, groups, aggregates and sorts in the warehouse and says when it was `truncated` — ADR 0017; Slack and Gmail reads page, posts thread, mail carries HTML and attachments — ADR 0018; a development warehouse read may carry the app's `sampleRows` and the result says `sample` — ADR 0021; Basecamp lists page by `pageToken`, ids are digit strings, writes answer `{id, appUrl}` — ADR 0022; SharePoint lists page by a Graph `$skiptoken`, ids are Graph ids, `fields` is a bounded record, writes answer `{id, webUrl}` — ADR 0024), the per-operation result shapes, consent states and the closed `details.code` reason set | Dev kit §4, §8 |
|
|
43
|
-
| `saas-connection.schema.json`, `data-grant-v2.schema.json` | Tenant SaaS connection record (one installation and channel map per tenant and provider; IT's optional `oauthClient`, `userModeApproval`, `directMessages`, `externalRecipients` — ADR 0018; a Basecamp connection's pinned `account` and project ids in `channels` — ADR 0022; a SharePoint connection's pinned Microsoft 365 tenant in `account` and site ids in `channels` — ADR 0024; up to 20 `approvers` who may approve access requests beside the tenant admins — ADR 0026) and the additive `harbour.data-grant/2.0` grant record with structured resources and provisioning lease/cleanup (status machine generated; legacy `data-grant` untouched) | Dev kit §5 |
|
|
41
|
+
| `app-integrations-declaration.schema.json` | Committed `.isomorph/integrations.json` (`isomorph.app-integrations/2.0`): closed thirty-five-operation set (Slack read/post/update/delete/DM/lookup, Gmail list/thread/read/send/attachment — ADR 0018; Basecamp project/to-do list/to-do/message/comment/people lists, to-do create and complete, message, comment and Campfire posts — ADR 0022; SharePoint list/item/drive/file lists, file search and read, item create and update, file upload — ADR 0024; phone SMS list — ADR 0028; warehouse view read and table append, the view mapping saying `access: read|append` — ADR 0028; service request) with fixed or declared identity modes; owns the shared operation/identity/environment enums | Dev kit §4 |
|
|
42
|
+
| `integration-execute-request`, `integration-execute-result`, `integration-connect-result`, `integration-error-details` | App SDK integrations wire contract on `/_harbour/integrations/*`: per-operation input bounds (a warehouse read filters, groups, aggregates and sorts in the warehouse and says when it was `truncated` — ADR 0017; Slack and Gmail reads page, posts thread, mail carries HTML and attachments — ADR 0018; a development warehouse read may carry the app's `sampleRows` and the result says `sample` — ADR 0021; Basecamp lists page by `pageToken`, ids are digit strings, writes answer `{id, appUrl}` — ADR 0022; SharePoint lists page by a Graph `$skiptoken`, ids are Graph ids, `fields` is a bounded record, writes answer `{id, webUrl}` — ADR 0024; a warehouse append takes `rows`, a bounded list of records, and a phone SMS list takes `since`/`from` — ADR 0028), the per-operation result shapes, consent states and the closed `details.code` reason set | Dev kit §4, §8 |
|
|
43
|
+
| `saas-connection.schema.json`, `data-grant-v2.schema.json` | Tenant SaaS connection record (one installation and channel map per tenant and provider; IT's optional `oauthClient`, `userModeApproval`, `directMessages`, `externalRecipients` — ADR 0018; a Basecamp connection's pinned `account` and project ids in `channels` — ADR 0022; a SharePoint connection's pinned Microsoft 365 tenant in `account` and site ids in `channels` — ADR 0024; up to 20 `approvers` who may approve access requests beside the tenant admins — ADR 0026; a phone connection's E.164 numbers in `channels` — ADR 0028) and the additive `harbour.data-grant/2.0` grant record with structured resources and provisioning lease/cleanup (status machine generated; legacy `data-grant` untouched) | Dev kit §5 |
|
|
44
44
|
| `kit-bundle-manifest.schema.json`, `kit-lock.schema.json` | Published kit bundle identity (SDK tarball digest plus optional `sdk.version` and https `sdk.url` download location) and the committed `.isomorph/kit.lock.json` the CodeBuild SDK-vendoring gate compares against | Dev kit §3 |
|
|
45
45
|
| `deploy-response.schema.json` | 202 Accepted body for `POST /v1/tenants/{tenant}/apps/{app}/deployments`, returned only after the authoritative QUEUED version exists and its SQS message is accepted | — |
|
|
46
46
|
| `deployment-source.schema.json` | Credential-free source in the `DeployRequest` body: `provider` is `github` or `gitlab`, `repositoryUrl` is shape-only and the deployment control plane checks the host against the tenant's source connection (ADR 0023); credentials are resolved internally by MaterializeSource | — |
|
package/contract-release.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema": "harbour.contract-release/1.0",
|
|
3
|
-
"repositoryVersion": "0.
|
|
4
|
-
"publishVersion": "0.
|
|
5
|
-
"publishTag": "v0.
|
|
6
|
-
"schemasDigest": "sha256:
|
|
3
|
+
"repositoryVersion": "0.82.0.0",
|
|
4
|
+
"publishVersion": "0.82.0",
|
|
5
|
+
"publishTag": "v0.82.0",
|
|
6
|
+
"schemasDigest": "sha256:5e343582707c909a64aff417f7df3a060180acd1feaea494f1aeba226dc9d8a6",
|
|
7
7
|
"aiFixturesDigest": "sha256:edac31c92e146ca1c40130f2fb5649db82e24b8cd1ac758153b90612052fddb6",
|
|
8
|
-
"generatedGoDigest": "sha256:
|
|
9
|
-
"generatedTypeScriptDigest": "sha256:
|
|
8
|
+
"generatedGoDigest": "sha256:e73e21a8cb0d2bd51c9f97bccb1cbde3500abed034ff39c0c57dbfd115c74eb0",
|
|
9
|
+
"generatedTypeScriptDigest": "sha256:2463ea4f5e1111d75056fc41155247945385b1d2716f7771eecfdba76910af02",
|
|
10
10
|
"generatedExclusions": {
|
|
11
11
|
"gen-go/contract_release.go": "contains the generated aggregate digests (self-reference)",
|
|
12
12
|
"gen-ts/contract-release.ts": "contains the generated aggregate digests (self-reference)"
|
|
@@ -31,13 +31,13 @@
|
|
|
31
31
|
"schema/ai-transform-result.schema.json": "sha256:244e380a36957ab2dcb526ea22aaecb56b53664ce1fda6934d0021c084c99133",
|
|
32
32
|
"schema/ai-verification-evidence.schema.json": "sha256:bdbc762df256d2a8dd0bdda60d4d13915ce40034cd756af9515871d145f10ad9",
|
|
33
33
|
"schema/api-error-response.schema.json": "sha256:3d43d5bdf0b59c944e20509d832e6776c3ecdba4d6c245a9118bbe52062a8304",
|
|
34
|
-
"schema/app-integrations-declaration.schema.json": "sha256:
|
|
34
|
+
"schema/app-integrations-declaration.schema.json": "sha256:04b79becdd80019bcfc285dbe081cb4ad0b643b3789471efaeb335f380f4ce4b",
|
|
35
35
|
"schema/app-sign-in.schema.json": "sha256:2093740131b84a69757c2e474d16e32ff5d0bf0edd6f6f8de62ede7f82988f29",
|
|
36
36
|
"schema/artifact-contract.schema.json": "sha256:8047b461a1c6d07bbe867a259c57bdf5cc0fdf282cf842ec7b683a9e93713b10",
|
|
37
37
|
"schema/binding-classification-subject.schema.json": "sha256:a8825ce652e7e00a18759c4249bd5bcd0cae552dd58440513f867e87f685133c",
|
|
38
38
|
"schema/builder-input-proposal.schema.json": "sha256:fe85cffa6d76b1e1effe1f5d75525f8fe0e1eaa3be4a304e491aa23ad72c0e72",
|
|
39
39
|
"schema/data-dependency.schema.json": "sha256:b4cc2b2484e982cfed64c0f56b8f1e9d1363c71854cd71f845b24fbe7d85c971",
|
|
40
|
-
"schema/data-grant-v2.schema.json": "sha256:
|
|
40
|
+
"schema/data-grant-v2.schema.json": "sha256:6c948c4a25555a0eee42a9dffb7d4a0f7f20ccb7b1cbe783d5306e6ff01967cf",
|
|
41
41
|
"schema/data-grant.schema.json": "sha256:e640553831ecc1c01cc9a37fe388b84d0ffeaa0d0050e63712b48f65fa437c8a",
|
|
42
42
|
"schema/data-source.schema.json": "sha256:46ef4ace5fce612fce055813bf4f99956423b46c929993fbbc5dfec497087bad",
|
|
43
43
|
"schema/deploy-request.schema.json": "sha256:c978406c273fa430db262888f0a8646b14e3057f64b0633780fcd6cfa646bc67",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"schema/identity-context.schema.json": "sha256:a0be3d3499b70f1641887ec66ab5b21ca5ab71063e9209290905738943a36e59",
|
|
58
58
|
"schema/integration-connect-result.schema.json": "sha256:3f254b67ef739dc1fa395bdc8c4dc93359b16d481dba2a2d777aa5b6f34b7af8",
|
|
59
59
|
"schema/integration-error-details.schema.json": "sha256:5a290584b1542b2b8cdd4966869126180ce29c1f0dd250dca7fb68c05e76b8e9",
|
|
60
|
-
"schema/integration-execute-request.schema.json": "sha256:
|
|
60
|
+
"schema/integration-execute-request.schema.json": "sha256:d66041c6a113c399e8ddf9855841f7983a7aa1916a7c42a50d0bf6d6f1de87ed",
|
|
61
61
|
"schema/integration-execute-result.schema.json": "sha256:ad70ace26317b5517386e0e412947c68636f53692f0895fb7108dad25e887b8a",
|
|
62
62
|
"schema/internal-configuration-request.schema.json": "sha256:229d44a3458f68dceddfba802e5c1adcd95523a45af29b93b972706b88461a7d",
|
|
63
63
|
"schema/kit-bundle-manifest.schema.json": "sha256:4a9fcdd52ba0d55718ef4dbdab112b145ef90471d9356d4d3fb41e50fe9e400d",
|
|
@@ -65,8 +65,8 @@
|
|
|
65
65
|
"schema/kvs-routing-entry.schema.json": "sha256:b75f3a5dfa93a428b2764e03222b66b6ef2bed980f8bac8ffac54afdf3526bc5",
|
|
66
66
|
"schema/promotion-request.schema.json": "sha256:00e96dfd8ddbdba88ea222941d43f3609ff6c815a79e34f6705cab458101c969",
|
|
67
67
|
"schema/promotion-response.schema.json": "sha256:4129712d2e29d6ef21d93d4bd0bacfd60ada3f2ee0ade852824e64346b817634",
|
|
68
|
-
"schema/resolved-app-serving.schema.json": "sha256:
|
|
69
|
-
"schema/saas-connection.schema.json": "sha256:
|
|
68
|
+
"schema/resolved-app-serving.schema.json": "sha256:1912f3224db1a1699618e6322358e07f76425d3097aec2fbe5d38a10e5c967e3",
|
|
69
|
+
"schema/saas-connection.schema.json": "sha256:0bf4bc43e0b685b2ae3bd1f0bcab518076ff184db9af71742c266175ef0eec52",
|
|
70
70
|
"schema/sanitized-binding-evidence.schema.json": "sha256:1191ab88e2764df927e5f17837674cebebe068d480da2b2fdb390e589f96b51f",
|
|
71
71
|
"schema/secret-reference.schema.json": "sha256:db4e3c2c6a2dbd72d7ea0f9c91cb3b2343a7e67b601996c6818b2ef08e440895",
|
|
72
72
|
"schema/security-scan-input-v2.schema.json": "sha256:0d418342078c9b5046ea6f4bef3c2c57539285dfee99cc0850d4f0d03739ee13",
|
|
@@ -112,11 +112,11 @@
|
|
|
112
112
|
"gen-go/contracts_test.go": "sha256:56376287cb1548be1b35ab4c65d6f0b558c5d34885f7a47cb3d9e8d786607bf5",
|
|
113
113
|
"gen-go/doc.go": "sha256:316d610ce568597a2ce6f38e9782e34fa5920f6f51ab0866e6d061b8a41cd822",
|
|
114
114
|
"gen-go/error_category.go": "sha256:b2ddea22dcfa030f1a45e721e635485b0bd816cf1f38e7654628a653f5ed4583",
|
|
115
|
-
"gen-go/integration_execute_input_rules.go": "sha256:
|
|
116
|
-
"gen-go/integration_execute_input_rules_test.go": "sha256:
|
|
117
|
-
"gen-go/integration_operations.go": "sha256:
|
|
115
|
+
"gen-go/integration_execute_input_rules.go": "sha256:e1272150d93bf86175070e58d45e91012b8c34479d0d1b2c0c7cf1900749a638",
|
|
116
|
+
"gen-go/integration_execute_input_rules_test.go": "sha256:1151639b08c1a228af47b41368762c61958c47356729ce23b3ed28871096b421",
|
|
117
|
+
"gen-go/integration_operations.go": "sha256:3939ad2e4729f0c37dec269eac009945ca9a2b54ac17cd727be66103966ae5d1",
|
|
118
118
|
"gen-go/schema_documents.go": "sha256:c19c0d540f602ee997a84b90e20702d9bc63ed7d27aec267e76c04655fc182e0",
|
|
119
|
-
"gen-go/types.go": "sha256:
|
|
119
|
+
"gen-go/types.go": "sha256:7f3d880de0cbb54549dc9e825e3ff1361398a294ae9075467c8260bc6b8d2fbb",
|
|
120
120
|
"gen-go/version_state.go": "sha256:4ef8abb126414c0025cf2c59bc9c79a74ef4a2ff89e8f316cbf05acc872371c1"
|
|
121
121
|
},
|
|
122
122
|
"generatedTypeScript": {
|
|
@@ -141,14 +141,14 @@
|
|
|
141
141
|
"gen-ts/ai-transform-result.ts": "sha256:208c66b2aeb425c0cbcc18b7191f6e8989443f2b2c1690648e0e06cc1448ce25",
|
|
142
142
|
"gen-ts/ai-verification-evidence.ts": "sha256:979439d77f8b47631d1eb3b6c3c54ea6fec41089d2a51dc815fd370b1c4917fc",
|
|
143
143
|
"gen-ts/api-error-response.ts": "sha256:0fd73be282e7a5d72d6c343a4e64d09c232556b16161167f0cffd6278ed7e3d3",
|
|
144
|
-
"gen-ts/app-integrations-declaration.ts": "sha256:
|
|
144
|
+
"gen-ts/app-integrations-declaration.ts": "sha256:a629532c69e3fdb3beac01729ee1c78441691a393e7a3bf017515bdd26823004",
|
|
145
145
|
"gen-ts/app-sign-in.ts": "sha256:bf88671c00e9d9badb5ffc961a7e803cf92cee5a98c2f6c9e3172bbf5aaf0424",
|
|
146
146
|
"gen-ts/artifact-contract.ts": "sha256:4a6dc6d2caaeed4bb2066cc8a333e6e09e5a0d4745e0b1038293d54ab9403aeb",
|
|
147
147
|
"gen-ts/binding-classification-digest-helper.ts": "sha256:40fc7d85b4c3f3ffc5caf7d7950c62d013c83ee42058c7453b2100d95817f167",
|
|
148
148
|
"gen-ts/binding-classification-subject.ts": "sha256:c409a3fd7b942b50419632c51d9a79474fb30d6374bdc79c0e25c73618e800c3",
|
|
149
149
|
"gen-ts/builder-input-proposal.ts": "sha256:b0108c3787873d3cf1a39f00967379418a6766275d3474cfa55f5a9d93ead174",
|
|
150
150
|
"gen-ts/data-dependency.ts": "sha256:259f19e2759395d72ead90b8ed74a6dcef0c2641124f4f182823138cfd19bedf",
|
|
151
|
-
"gen-ts/data-grant-v2.ts": "sha256:
|
|
151
|
+
"gen-ts/data-grant-v2.ts": "sha256:e4517a579fb09c8e585aee4a6b93d615bd56408cdb428e4b0478e925339d0b5c",
|
|
152
152
|
"gen-ts/data-grant.ts": "sha256:2358579d8aa1e57b01a6f2b0eacce5531e7f21ef226404c9809925365e0d6155",
|
|
153
153
|
"gen-ts/data-source.ts": "sha256:f30d4c14c15afbb9530d30af9235844198765984ce1579fa25961d7f07bcfb1f",
|
|
154
154
|
"gen-ts/deploy-request.ts": "sha256:913245577a95354849d3a8cb43fbaedbf895efe7b653c8502d25edfa22b7a864",
|
|
@@ -170,18 +170,18 @@
|
|
|
170
170
|
"gen-ts/index.ts": "sha256:8f0b03bc46f0f24489e6a3f7a3ddee23c86dacc8ab2058b3b131c3d9dd75ab29",
|
|
171
171
|
"gen-ts/integration-connect-result.ts": "sha256:4b10f169b6e1af364e9b418de21caa9fadbfb77b43cbff77d741cfae0b52180c",
|
|
172
172
|
"gen-ts/integration-error-details.ts": "sha256:e73cb5942373ef88b2d8e03a1de56d5a69e71069ecd14e68396f7edba1f60780",
|
|
173
|
-
"gen-ts/integration-execute-input-rules.ts": "sha256:
|
|
174
|
-
"gen-ts/integration-execute-request.ts": "sha256:
|
|
173
|
+
"gen-ts/integration-execute-input-rules.ts": "sha256:097437c79c9a8a61300af1182688f8c6d70b1a46639e8551e458ad85a8b5379c",
|
|
174
|
+
"gen-ts/integration-execute-request.ts": "sha256:d69778e4c3d4a6f3c0e9b2c90e0f1084d29ca288e6e78944a472109e5d92a2c4",
|
|
175
175
|
"gen-ts/integration-execute-result.ts": "sha256:3ec3dfddb5c93b9802607c5fb8dfab499e5a578501fd4ce20d05d511b37e43d8",
|
|
176
|
-
"gen-ts/integration-operations.ts": "sha256:
|
|
176
|
+
"gen-ts/integration-operations.ts": "sha256:bfcf44fd4cf65554f740cf2256e8b3f45c66dbe3e6d00d5587ff21374047a0e9",
|
|
177
177
|
"gen-ts/internal-configuration-request.ts": "sha256:7032437797473fa1c581d134adef2f3d4b4f4132f482cd17743e9d47097886bc",
|
|
178
178
|
"gen-ts/kit-bundle-manifest.ts": "sha256:2777a268aef8787b81e71d154a7d05f6f5ded09d66f378211ff5493ddb885171",
|
|
179
179
|
"gen-ts/kit-lock.ts": "sha256:00ceeb97e9b7d0187bec00728f5099fd34e775e9cc44c85c4714f7a3a4118ef6",
|
|
180
180
|
"gen-ts/kvs-routing-entry.ts": "sha256:d92e85ee9f257d77850d1d3aac9438e2055f38084ff84a48fcedae239d47d4ca",
|
|
181
181
|
"gen-ts/promotion-request.ts": "sha256:9db88cef67f777a16bac628039ec3f582acb9e8cfff6fb592b30d0a0e55abc68",
|
|
182
182
|
"gen-ts/promotion-response.ts": "sha256:f1c9cafac96faeb02a443a31786f67714e818f38d90108e7af41958396524d6f",
|
|
183
|
-
"gen-ts/resolved-app-serving.ts": "sha256:
|
|
184
|
-
"gen-ts/saas-connection.ts": "sha256:
|
|
183
|
+
"gen-ts/resolved-app-serving.ts": "sha256:584792e8e0dcaf4322129b6f78579cd8cd21652c8db8a1606f802408c892534c",
|
|
184
|
+
"gen-ts/saas-connection.ts": "sha256:2b87289f3b7fd07de73402cf03c26e02d02139779ef0229adb6916fe9941b63c",
|
|
185
185
|
"gen-ts/sanitized-binding-digest-helper.ts": "sha256:c47d7fdc20500e2e72c23fe39ecdd610fc397c47fcba51335ebec3c380fe6872",
|
|
186
186
|
"gen-ts/sanitized-binding-evidence.ts": "sha256:f3fb7b1d7d2e0929eb0ea981eaf32db3104010647185f6ae59f67167d42538a9",
|
|
187
187
|
"gen-ts/secret-reference.ts": "sha256:731fbcde7315cb4128d5b01bdbe6e6f248f13c7ad8dea04a3a4e927ac4890198",
|
|
@@ -33,7 +33,9 @@ export type DeclaredConnection = {
|
|
|
33
33
|
'sharepoint.file.search'?: UserModeChannelOperation;
|
|
34
34
|
'sharepoint.file.read'?: UserModeChannelOperation;
|
|
35
35
|
'sharepoint.file.upload'?: UserModeChannelOperation;
|
|
36
|
+
'phone.sms.list'?: AppModeChannelOperation;
|
|
36
37
|
'warehouse.view.read'?: AppModeViewOperation;
|
|
38
|
+
'warehouse.table.append'?: AppModeViewOperation;
|
|
37
39
|
'service.request'?: ServiceOperation;
|
|
38
40
|
};
|
|
39
41
|
};
|
|
@@ -104,7 +106,11 @@ export interface AppModeViewOperation {
|
|
|
104
106
|
[k: string]: ViewResource;
|
|
105
107
|
};
|
|
106
108
|
}
|
|
109
|
+
/**
|
|
110
|
+
* One declared warehouse alias: the columns the app uses and, since 0.82.0, how it uses them. `access` is read (warehouse.view.read, the default when absent, so every existing declaration and stored mapping is unchanged) or append (warehouse.table.append: the app writes rows with these columns and never reads). Governance refuses an append on a read alias and a read on an append alias with RESOURCE_NOT_APPROVED.
|
|
111
|
+
*/
|
|
107
112
|
export interface ViewResource {
|
|
113
|
+
access?: 'read' | 'append';
|
|
108
114
|
/**
|
|
109
115
|
* @minItems 1
|
|
110
116
|
* @maxItems 32
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export declare const ContractRepositoryVersion: "0.
|
|
2
|
-
export declare const ContractPublishVersion: "0.
|
|
3
|
-
export declare const ContractPublishTag: "v0.
|
|
4
|
-
export declare const ContractSchemasDigest: "sha256:
|
|
1
|
+
export declare const ContractRepositoryVersion: "0.82.0.0";
|
|
2
|
+
export declare const ContractPublishVersion: "0.82.0";
|
|
3
|
+
export declare const ContractPublishTag: "v0.82.0";
|
|
4
|
+
export declare const ContractSchemasDigest: "sha256:5e343582707c909a64aff417f7df3a060180acd1feaea494f1aeba226dc9d8a6";
|
|
5
5
|
export declare const ContractAiFixturesDigest: "sha256:edac31c92e146ca1c40130f2fb5649db82e24b8cd1ac758153b90612052fddb6";
|
|
6
|
-
export declare const ContractGeneratedGoDigest: "sha256:
|
|
7
|
-
export declare const ContractGeneratedTypeScriptDigest: "sha256:
|
|
6
|
+
export declare const ContractGeneratedGoDigest: "sha256:e73e21a8cb0d2bd51c9f97bccb1cbde3500abed034ff39c0c57dbfd115c74eb0";
|
|
7
|
+
export declare const ContractGeneratedTypeScriptDigest: "sha256:2463ea4f5e1111d75056fc41155247945385b1d2716f7771eecfdba76910af02";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/* eslint-disable */
|
|
2
2
|
// Code generated by tools/gen/gen.mjs from schema/*.json. DO NOT EDIT.
|
|
3
|
-
export const ContractRepositoryVersion = "0.
|
|
4
|
-
export const ContractPublishVersion = "0.
|
|
5
|
-
export const ContractPublishTag = "v0.
|
|
6
|
-
export const ContractSchemasDigest = "sha256:
|
|
3
|
+
export const ContractRepositoryVersion = "0.82.0.0";
|
|
4
|
+
export const ContractPublishVersion = "0.82.0";
|
|
5
|
+
export const ContractPublishTag = "v0.82.0";
|
|
6
|
+
export const ContractSchemasDigest = "sha256:5e343582707c909a64aff417f7df3a060180acd1feaea494f1aeba226dc9d8a6";
|
|
7
7
|
export const ContractAiFixturesDigest = "sha256:edac31c92e146ca1c40130f2fb5649db82e24b8cd1ac758153b90612052fddb6";
|
|
8
|
-
export const ContractGeneratedGoDigest = "sha256:
|
|
9
|
-
export const ContractGeneratedTypeScriptDigest = "sha256:
|
|
8
|
+
export const ContractGeneratedGoDigest = "sha256:e73e21a8cb0d2bd51c9f97bccb1cbde3500abed034ff39c0c57dbfd115c74eb0";
|
|
9
|
+
export const ContractGeneratedTypeScriptDigest = "sha256:2463ea4f5e1111d75056fc41155247945385b1d2716f7771eecfdba76910af02";
|
|
@@ -29,11 +29,11 @@ export interface DataGrantV2 {
|
|
|
29
29
|
kind: 'saas' | 'database' | 'service';
|
|
30
30
|
status: DataGrantV2Status;
|
|
31
31
|
/**
|
|
32
|
-
* Approved operations; each must match this grant's mode. Empty until the first approval. At most the thirty-
|
|
32
|
+
* Approved operations; each must match this grant's mode. Empty until the first approval. At most the thirty-two SaaS operations (0.82.0: eleven Slack and Gmail, eleven Basecamp, nine SharePoint, one phone); a database grant holds up to two (warehouse.view.read, warehouse.table.append).
|
|
33
33
|
*
|
|
34
|
-
* @maxItems
|
|
34
|
+
* @maxItems 32
|
|
35
35
|
*/
|
|
36
|
-
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' | 'warehouse.view.read' | 'service.request')[];
|
|
36
|
+
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' | 'warehouse.view.read' | 'warehouse.table.append' | 'service.request')[];
|
|
37
37
|
/**
|
|
38
38
|
* Approved logical resources. Never inherited by wildcard. Empty until the first approval.
|
|
39
39
|
*
|
|
@@ -82,7 +82,7 @@ export interface DataGrantV2 {
|
|
|
82
82
|
installation?: string;
|
|
83
83
|
}
|
|
84
84
|
/**
|
|
85
|
-
* One approved logical resource: a Slack channel alias, the fixed Gmail `inbox` alias, a Basecamp project alias or the fixed Basecamp `account` alias (0.76.0), a SharePoint site alias (0.78.0), or a warehouse view alias with the approved columns.
|
|
85
|
+
* One approved logical resource: a Slack channel alias, the fixed Gmail `inbox` alias, a Basecamp project alias or the fixed Basecamp `account` alias (0.76.0), a SharePoint site alias (0.78.0), a phone number alias (0.82.0), or a warehouse view alias with the approved columns.
|
|
86
86
|
*/
|
|
87
87
|
export interface IntegrationResource {
|
|
88
88
|
/**
|
|
@@ -90,7 +90,7 @@ export interface IntegrationResource {
|
|
|
90
90
|
*/
|
|
91
91
|
name: string;
|
|
92
92
|
/**
|
|
93
|
-
* warehouse.view.read only: the approved columns of the view.
|
|
93
|
+
* warehouse.view.read and warehouse.table.append only: the approved columns of the view.
|
|
94
94
|
*
|
|
95
95
|
* @minItems 1
|
|
96
96
|
* @maxItems 32
|
|
@@ -63,6 +63,15 @@ export type IntegrationExecuteInputFieldRule = {
|
|
|
63
63
|
maxProperties: number;
|
|
64
64
|
types: readonly IntegrationExecuteInputRecordValueType[];
|
|
65
65
|
maxLength?: number;
|
|
66
|
+
} | {
|
|
67
|
+
kind: 'record[]';
|
|
68
|
+
required: boolean;
|
|
69
|
+
minItems: number;
|
|
70
|
+
maxItems: number;
|
|
71
|
+
minProperties: number;
|
|
72
|
+
maxProperties: number;
|
|
73
|
+
types: readonly IntegrationExecuteInputRecordValueType[];
|
|
74
|
+
maxLength?: number;
|
|
66
75
|
};
|
|
67
76
|
/** The scalar types a `value` input accepts, alone or in its list form. */
|
|
68
77
|
export type IntegrationExecuteInputValueType = 'string' | 'number' | 'boolean';
|
|
@@ -771,6 +780,23 @@ export declare const IntegrationExecuteInputRules: {
|
|
|
771
780
|
};
|
|
772
781
|
};
|
|
773
782
|
};
|
|
783
|
+
readonly "phone.sms.list": {
|
|
784
|
+
readonly idempotencyKey: false;
|
|
785
|
+
readonly fields: {
|
|
786
|
+
readonly since: {
|
|
787
|
+
readonly kind: "string";
|
|
788
|
+
readonly required: true;
|
|
789
|
+
readonly minLength: 1;
|
|
790
|
+
readonly 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})$";
|
|
791
|
+
};
|
|
792
|
+
readonly from: {
|
|
793
|
+
readonly kind: "string";
|
|
794
|
+
readonly required: false;
|
|
795
|
+
readonly minLength: 0;
|
|
796
|
+
readonly maxLength: 32;
|
|
797
|
+
};
|
|
798
|
+
};
|
|
799
|
+
};
|
|
774
800
|
readonly "warehouse.view.read": {
|
|
775
801
|
readonly idempotencyKey: false;
|
|
776
802
|
readonly fields: {
|
|
@@ -880,6 +906,21 @@ export declare const IntegrationExecuteInputRules: {
|
|
|
880
906
|
};
|
|
881
907
|
};
|
|
882
908
|
};
|
|
909
|
+
readonly "warehouse.table.append": {
|
|
910
|
+
readonly idempotencyKey: true;
|
|
911
|
+
readonly fields: {
|
|
912
|
+
readonly rows: {
|
|
913
|
+
readonly kind: "record[]";
|
|
914
|
+
readonly required: true;
|
|
915
|
+
readonly minItems: 1;
|
|
916
|
+
readonly maxItems: 500;
|
|
917
|
+
readonly minProperties: 1;
|
|
918
|
+
readonly maxProperties: 64;
|
|
919
|
+
readonly types: readonly ["string", "number", "boolean", "null"];
|
|
920
|
+
readonly maxLength: 4000;
|
|
921
|
+
};
|
|
922
|
+
};
|
|
923
|
+
};
|
|
883
924
|
readonly "service.request": {
|
|
884
925
|
readonly idempotencyKey: false;
|
|
885
926
|
readonly fields: {
|
|
@@ -241,6 +241,13 @@ export const IntegrationExecuteInputRules = {
|
|
|
241
241
|
conflict: { kind: "enum", required: false, values: ["rename", "replace", "fail"], default: "rename" },
|
|
242
242
|
},
|
|
243
243
|
},
|
|
244
|
+
"phone.sms.list": {
|
|
245
|
+
idempotencyKey: false,
|
|
246
|
+
fields: {
|
|
247
|
+
since: { 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})$" },
|
|
248
|
+
from: { kind: "string", required: false, minLength: 0, maxLength: 32 },
|
|
249
|
+
},
|
|
250
|
+
},
|
|
244
251
|
"warehouse.view.read": {
|
|
245
252
|
idempotencyKey: false,
|
|
246
253
|
fields: {
|
|
@@ -263,6 +270,12 @@ export const IntegrationExecuteInputRules = {
|
|
|
263
270
|
limit: { kind: "integer", required: false, minimum: 1, maximum: 1000, default: 100 },
|
|
264
271
|
},
|
|
265
272
|
},
|
|
273
|
+
"warehouse.table.append": {
|
|
274
|
+
idempotencyKey: true,
|
|
275
|
+
fields: {
|
|
276
|
+
rows: { kind: "record[]", required: true, minItems: 1, maxItems: 500, minProperties: 1, maxProperties: 64, types: ["string", "number", "boolean", "null"], maxLength: 4000 },
|
|
277
|
+
},
|
|
278
|
+
},
|
|
266
279
|
"service.request": {
|
|
267
280
|
idempotencyKey: false,
|
|
268
281
|
fields: {
|
|
@@ -337,6 +350,19 @@ function checkFields(operation, prefix, fields, given, nullIsAbsent) {
|
|
|
337
350
|
}
|
|
338
351
|
return { ok: true, value: out };
|
|
339
352
|
}
|
|
353
|
+
/** One record: a bounded count of free keys, every value one of the record's scalar types. */
|
|
354
|
+
function checkRecord(path, field, value) {
|
|
355
|
+
if (value === null || typeof value !== 'object' || Array.isArray(value))
|
|
356
|
+
return refuse(path, `${path} must be a JSON object`);
|
|
357
|
+
const keys = Object.keys(value);
|
|
358
|
+
if (keys.length < field.minProperties || keys.length > field.maxProperties)
|
|
359
|
+
return refuse(path, `${path} must have ${field.minProperties} to ${field.maxProperties} properties`);
|
|
360
|
+
for (const key of keys) {
|
|
361
|
+
if (!isScalar(field.types, field.maxLength, value[key]))
|
|
362
|
+
return refuse(`${path}.${key}`, `${path}.${key} must be ${either(scalarShapes(field.types, field.maxLength))}`);
|
|
363
|
+
}
|
|
364
|
+
return { ok: true, value };
|
|
365
|
+
}
|
|
340
366
|
function checkField(operation, path, name, field, value) {
|
|
341
367
|
switch (field.kind) {
|
|
342
368
|
case 'object':
|
|
@@ -347,15 +373,17 @@ function checkField(operation, path, name, field, value) {
|
|
|
347
373
|
if (typeof value !== 'boolean')
|
|
348
374
|
return refuse(path, `${path} must be a boolean`);
|
|
349
375
|
return { ok: true, value };
|
|
350
|
-
case 'record':
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
376
|
+
case 'record':
|
|
377
|
+
return checkRecord(path, field, value);
|
|
378
|
+
case 'record[]': {
|
|
379
|
+
if (!Array.isArray(value) || value.length < field.minItems || value.length > field.maxItems)
|
|
380
|
+
return refuse(path, `${path} must list ${field.minItems} to ${field.maxItems} items`);
|
|
381
|
+
for (const [index, item] of value.entries()) {
|
|
382
|
+
if (item === null || typeof item !== 'object' || Array.isArray(item))
|
|
383
|
+
return refuse(path, `${path}[${index}] is not a valid ${name} entry`);
|
|
384
|
+
const entry = checkRecord(`${path}[${index}]`, field, item);
|
|
385
|
+
if (!entry.ok)
|
|
386
|
+
return entry;
|
|
359
387
|
}
|
|
360
388
|
return { ok: true, value };
|
|
361
389
|
}
|
|
@@ -7,9 +7,9 @@ export type IntegrationExecuteRequest = {
|
|
|
7
7
|
*/
|
|
8
8
|
connection: string;
|
|
9
9
|
/**
|
|
10
|
-
* Closed operation set. Extending it is a contracts change. 0.78.0 (ADR 0024) adds the nine SharePoint operations, every one user mode only on a site alias (a key of the connection's `channels` map, holding a Microsoft Graph site id): sharepoint.list.list, sharepoint.item.list, sharepoint.item.create (a receipted write: explicit action, idempotencyKey), sharepoint.item.update (a PATCH, idempotent at Graph, no key), sharepoint.drive.list, sharepoint.file.list, sharepoint.file.search, sharepoint.file.read and sharepoint.file.upload (a receipted write). 0.76.0 (ADR 0022) adds the eleven Basecamp operations, every one user mode only like gmail.*: basecamp.project.list (the projects of the company's pinned Basecamp account; its resource is the fixed `account` alias), and on one mapped project (the resource is a project alias, a key of the connection's `channels` map) basecamp.todolist.list, basecamp.todo.list, basecamp.todo.create (a receipted write: explicit action, idempotencyKey), basecamp.todo.complete (idempotent at Basecamp, no key), basecamp.message.list, basecamp.message.post, basecamp.comment.list, basecamp.comment.post, basecamp.campfire.post (the three posts are receipted writes) and basecamp.people.list. gmail.message.send (0.50.0) sends one email as the signed-in person: a send like slack.message.post (explicit Send, idempotencyKey, write receipt) under user identity; since 0.71.0 it may carry an HTML body and attachments. slack.message.post (0.53.0) runs in the mode the app declares: app (the company's Slack app, under the IT-approved per-app name) or user (the signed-in person, after their consent); since 0.55.0 each call names which of the approved modes it runs under. 0.71.0 (ADR 0018) adds slack.message.update and slack.message.delete (declared mode, like post), slack.dm.send (app mode: a direct message to 1..8 workspace members named by email), slack.user.lookup (app mode: email to Slack user id), gmail.thread.read (every message of one thread) and gmail.attachment.read (one attachment's bytes), and lets slack.channel.history run in app mode as well as user mode.
|
|
10
|
+
* Closed operation set. Extending it is a contracts change. 0.78.0 (ADR 0024) adds the nine SharePoint operations, every one user mode only on a site alias (a key of the connection's `channels` map, holding a Microsoft Graph site id): sharepoint.list.list, sharepoint.item.list, sharepoint.item.create (a receipted write: explicit action, idempotencyKey), sharepoint.item.update (a PATCH, idempotent at Graph, no key), sharepoint.drive.list, sharepoint.file.list, sharepoint.file.search, sharepoint.file.read and sharepoint.file.upload (a receipted write). 0.76.0 (ADR 0022) adds the eleven Basecamp operations, every one user mode only like gmail.*: basecamp.project.list (the projects of the company's pinned Basecamp account; its resource is the fixed `account` alias), and on one mapped project (the resource is a project alias, a key of the connection's `channels` map) basecamp.todolist.list, basecamp.todo.list, basecamp.todo.create (a receipted write: explicit action, idempotencyKey), basecamp.todo.complete (idempotent at Basecamp, no key), basecamp.message.list, basecamp.message.post, basecamp.comment.list, basecamp.comment.post, basecamp.campfire.post (the three posts are receipted writes) and basecamp.people.list. gmail.message.send (0.50.0) sends one email as the signed-in person: a send like slack.message.post (explicit Send, idempotencyKey, write receipt) under user identity; since 0.71.0 it may carry an HTML body and attachments. slack.message.post (0.53.0) runs in the mode the app declares: app (the company's Slack app, under the IT-approved per-app name) or user (the signed-in person, after their consent); since 0.55.0 each call names which of the approved modes it runs under. 0.71.0 (ADR 0018) adds slack.message.update and slack.message.delete (declared mode, like post), slack.dm.send (app mode: a direct message to 1..8 workspace members named by email), slack.user.lookup (app mode: email to Slack user id), gmail.thread.read (every message of one thread) and gmail.attachment.read (one attachment's bytes), and lets slack.channel.history run in app mode as well as user mode. 0.82.0 (ADR 0028) adds phone.sms.list (app mode only, a number alias from a phone connection's `channels` map: the SMS received on that number since a time) and warehouse.table.append (app mode only on a database connection, a receipted write with idempotencyKey: rows appended to a view alias whose mapping says `access: append`).
|
|
11
11
|
*/
|
|
12
|
-
operation: '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' | 'warehouse.view.read' | 'service.request';
|
|
12
|
+
operation: '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' | 'warehouse.view.read' | 'warehouse.table.append' | 'service.request';
|
|
13
13
|
/**
|
|
14
14
|
* Tenant-wide logical alias of a connection (governance sourceId) or of a resource under it.
|
|
15
15
|
*/
|
|
@@ -234,9 +234,26 @@ export type IntegrationExecuteRequest = {
|
|
|
234
234
|
body?: {
|
|
235
235
|
[k: string]: unknown;
|
|
236
236
|
};
|
|
237
|
+
/**
|
|
238
|
+
* warehouse.table.append (0.82.0): the rows to append, 1..500 of them, every one a record of the approved columns. Governance refuses an unapproved column, a value outside its column type and a request above 1 MB with ROW_VALUE_INVALID; nothing is coerced.
|
|
239
|
+
*
|
|
240
|
+
* @minItems 1
|
|
241
|
+
* @maxItems 500
|
|
242
|
+
*/
|
|
243
|
+
rows?: {
|
|
244
|
+
[k: string]: string | number | boolean | null;
|
|
245
|
+
}[];
|
|
246
|
+
/**
|
|
247
|
+
* phone.sms.list (0.82.0): the ISO 8601 date-time (with a zone) after which received messages are listed; inclusive. Messages are kept for 30 minutes, so an older `since` lists what is still held.
|
|
248
|
+
*/
|
|
249
|
+
since?: string;
|
|
250
|
+
/**
|
|
251
|
+
* phone.sms.list (0.82.0): only messages from this sender id or number (as the provider reports it, e.g. `VK-GSTNIN` or `+919876543210`); absent lists every sender.
|
|
252
|
+
*/
|
|
253
|
+
from?: string;
|
|
237
254
|
};
|
|
238
255
|
/**
|
|
239
|
-
* UUID of one explicit Send action; required for the sends (slack.message.post, slack.dm.send, gmail.message.send), the receipted Basecamp writes (basecamp.todo.create, basecamp.message.post, basecamp.comment.post, basecamp.campfire.post; 0.76.0)
|
|
256
|
+
* UUID of one explicit Send action; required for the sends (slack.message.post, slack.dm.send, gmail.message.send), the receipted Basecamp writes (basecamp.todo.create, basecamp.message.post, basecamp.comment.post, basecamp.campfire.post; 0.76.0) the receipted SharePoint writes (sharepoint.item.create, sharepoint.file.upload; 0.78.0) and the receipted warehouse append (warehouse.table.append; 0.82.0, where it is also the BigQuery load job id), refused everywhere else. The same key with the same payload and subject returns the recorded outcome for seven days.
|
|
240
257
|
*/
|
|
241
258
|
idempotencyKey?: string;
|
|
242
259
|
/**
|
|
@@ -217,6 +217,13 @@ export declare const IntegrationOperations: {
|
|
|
217
217
|
readonly declaredMode: false;
|
|
218
218
|
readonly idempotencyKey: true;
|
|
219
219
|
};
|
|
220
|
+
readonly "phone.sms.list": {
|
|
221
|
+
readonly kind: "saas";
|
|
222
|
+
readonly identities: readonly ["app"];
|
|
223
|
+
readonly readOnly: true;
|
|
224
|
+
readonly declaredMode: false;
|
|
225
|
+
readonly idempotencyKey: false;
|
|
226
|
+
};
|
|
220
227
|
readonly "warehouse.view.read": {
|
|
221
228
|
readonly kind: "database";
|
|
222
229
|
readonly identities: readonly ["app"];
|
|
@@ -224,6 +231,13 @@ export declare const IntegrationOperations: {
|
|
|
224
231
|
readonly declaredMode: false;
|
|
225
232
|
readonly idempotencyKey: false;
|
|
226
233
|
};
|
|
234
|
+
readonly "warehouse.table.append": {
|
|
235
|
+
readonly kind: "database";
|
|
236
|
+
readonly identities: readonly ["app"];
|
|
237
|
+
readonly readOnly: false;
|
|
238
|
+
readonly declaredMode: false;
|
|
239
|
+
readonly idempotencyKey: true;
|
|
240
|
+
};
|
|
227
241
|
readonly "service.request": {
|
|
228
242
|
readonly kind: "service";
|
|
229
243
|
readonly identities: readonly ["app"];
|
|
@@ -285,6 +285,15 @@ export const IntegrationOperations = {
|
|
|
285
285
|
"declaredMode": false,
|
|
286
286
|
"idempotencyKey": true
|
|
287
287
|
},
|
|
288
|
+
"phone.sms.list": {
|
|
289
|
+
"kind": "saas",
|
|
290
|
+
"identities": [
|
|
291
|
+
"app"
|
|
292
|
+
],
|
|
293
|
+
"readOnly": true,
|
|
294
|
+
"declaredMode": false,
|
|
295
|
+
"idempotencyKey": false
|
|
296
|
+
},
|
|
288
297
|
"warehouse.view.read": {
|
|
289
298
|
"kind": "database",
|
|
290
299
|
"identities": [
|
|
@@ -294,6 +303,15 @@ export const IntegrationOperations = {
|
|
|
294
303
|
"declaredMode": false,
|
|
295
304
|
"idempotencyKey": false
|
|
296
305
|
},
|
|
306
|
+
"warehouse.table.append": {
|
|
307
|
+
"kind": "database",
|
|
308
|
+
"identities": [
|
|
309
|
+
"app"
|
|
310
|
+
],
|
|
311
|
+
"readOnly": false,
|
|
312
|
+
"declaredMode": false,
|
|
313
|
+
"idempotencyKey": true
|
|
314
|
+
},
|
|
297
315
|
"service.request": {
|
|
298
316
|
"kind": "service",
|
|
299
317
|
"identities": [
|
|
@@ -31,6 +31,16 @@ export interface ResolvedAppServing {
|
|
|
31
31
|
* Bare hostname of apiUrl.
|
|
32
32
|
*/
|
|
33
33
|
apiHost?: string;
|
|
34
|
+
/**
|
|
35
|
+
* Present only while the tenant enforces a network access policy (governance ADR 0130): the effective list of client ranges the app's gateway SecurityPolicy allows, the tenant's ranges plus the platform cell's own egress, as textual CIDRs. Absent means every network.
|
|
36
|
+
*/
|
|
37
|
+
networkAccess?: {
|
|
38
|
+
/**
|
|
39
|
+
* @minItems 1
|
|
40
|
+
* @maxItems 128
|
|
41
|
+
*/
|
|
42
|
+
clientCidrs: string[];
|
|
43
|
+
};
|
|
34
44
|
/**
|
|
35
45
|
* Present only when source is tenant: the ready delegated company zone the page and API hosts live under, and the shared gateway/TLS secret the cell serves it with.
|
|
36
46
|
*/
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Slack carries an installation and a channel map; Gmail is user-consent only; Basecamp is user-consent only with an IT-pinned account and a project map in `channels`; SharePoint (0.78.0) is user-consent only, pinned to the company's Microsoft 365 tenant in `account`, with a site map in `channels`.
|
|
2
|
+
* Slack carries an installation and a channel map; Gmail is user-consent only; Basecamp is user-consent only with an IT-pinned account and a project map in `channels`; SharePoint (0.78.0) is user-consent only, pinned to the company's Microsoft 365 tenant in `account`, with a site map in `channels`. Phone (0.82.0) is app mode only with no installation: the tenant's inbound SMS numbers (E.164) mapped from aliases in `channels`, and the SMS the platform received on them listed by phone.sms.list.
|
|
3
3
|
*/
|
|
4
|
-
export type SaasProvider = 'slack' | 'gmail' | 'basecamp' | 'sharepoint';
|
|
4
|
+
export type SaasProvider = 'slack' | 'gmail' | 'basecamp' | 'sharepoint' | 'phone';
|
|
5
5
|
/**
|
|
6
6
|
* DISABLED stops every app call immediately (details.code CONNECTION_DISABLED).
|
|
7
7
|
*/
|
|
@@ -43,21 +43,21 @@ export interface SaasConnection {
|
|
|
43
43
|
installation?: SaasInstallation;
|
|
44
44
|
account?: BasecampAccount;
|
|
45
45
|
/**
|
|
46
|
-
* Logical alias → provider resource id: a Slack channel id, a Basecamp project id
|
|
46
|
+
* Logical alias → provider resource id: a Slack channel id, a Basecamp project id, a SharePoint site id or a phone number. Always empty for Gmail.
|
|
47
47
|
*/
|
|
48
48
|
channels: {
|
|
49
49
|
/**
|
|
50
|
-
* A Slack channel id (public, non-archived), a Basecamp project id (digits)
|
|
50
|
+
* A Slack channel id (public, non-archived), a Basecamp project id (digits), a SharePoint site id (0.78.0: the Microsoft Graph composite `hostname,siteCollectionGuid,webGuid`) or a phone number (0.82.0: E.164, a leading `+` and digits).
|
|
51
51
|
*/
|
|
52
52
|
[k: string]: string;
|
|
53
53
|
};
|
|
54
54
|
/**
|
|
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). Never warehouse.view.read.
|
|
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). Never warehouse.view.read. Phone (0.82.0): phone.sms.list.
|
|
56
56
|
*
|
|
57
57
|
* @minItems 1
|
|
58
|
-
* @maxItems
|
|
58
|
+
* @maxItems 32
|
|
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' | 'warehouse.view.read' | 'service.request')[];
|
|
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' | 'warehouse.view.read' | 'warehouse.table.append' | 'service.request')[];
|
|
61
61
|
developmentPreapproval: DevelopmentPreapproval;
|
|
62
62
|
oauthClient?: SaasOauthClient;
|
|
63
63
|
userModeApproval?: UserModeApproval;
|
|
@@ -36,7 +36,9 @@ export type DeclaredConnection = {
|
|
|
36
36
|
'sharepoint.file.search'?: UserModeChannelOperation;
|
|
37
37
|
'sharepoint.file.read'?: UserModeChannelOperation;
|
|
38
38
|
'sharepoint.file.upload'?: UserModeChannelOperation;
|
|
39
|
+
'phone.sms.list'?: AppModeChannelOperation;
|
|
39
40
|
'warehouse.view.read'?: AppModeViewOperation;
|
|
41
|
+
'warehouse.table.append'?: AppModeViewOperation;
|
|
40
42
|
'service.request'?: ServiceOperation;
|
|
41
43
|
};
|
|
42
44
|
};
|
|
@@ -108,7 +110,11 @@ export interface AppModeViewOperation {
|
|
|
108
110
|
[k: string]: ViewResource;
|
|
109
111
|
};
|
|
110
112
|
}
|
|
113
|
+
/**
|
|
114
|
+
* One declared warehouse alias: the columns the app uses and, since 0.82.0, how it uses them. `access` is read (warehouse.view.read, the default when absent, so every existing declaration and stored mapping is unchanged) or append (warehouse.table.append: the app writes rows with these columns and never reads). Governance refuses an append on a read alias and a read on an append alias with RESOURCE_NOT_APPROVED.
|
|
115
|
+
*/
|
|
111
116
|
export interface ViewResource {
|
|
117
|
+
access?: 'read' | 'append';
|
|
112
118
|
/**
|
|
113
119
|
* @minItems 1
|
|
114
120
|
* @maxItems 32
|
|
@@ -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.
|
|
5
|
-
export const ContractPublishVersion = "0.
|
|
6
|
-
export const ContractPublishTag = "v0.
|
|
7
|
-
export const ContractSchemasDigest = "sha256:
|
|
4
|
+
export const ContractRepositoryVersion = "0.82.0.0" as const;
|
|
5
|
+
export const ContractPublishVersion = "0.82.0" as const;
|
|
6
|
+
export const ContractPublishTag = "v0.82.0" as const;
|
|
7
|
+
export const ContractSchemasDigest = "sha256:5e343582707c909a64aff417f7df3a060180acd1feaea494f1aeba226dc9d8a6" as const;
|
|
8
8
|
export const ContractAiFixturesDigest = "sha256:edac31c92e146ca1c40130f2fb5649db82e24b8cd1ac758153b90612052fddb6" as const;
|
|
9
|
-
export const ContractGeneratedGoDigest = "sha256:
|
|
10
|
-
export const ContractGeneratedTypeScriptDigest = "sha256:
|
|
9
|
+
export const ContractGeneratedGoDigest = "sha256:e73e21a8cb0d2bd51c9f97bccb1cbde3500abed034ff39c0c57dbfd115c74eb0" as const;
|
|
10
|
+
export const ContractGeneratedTypeScriptDigest = "sha256:2463ea4f5e1111d75056fc41155247945385b1d2716f7771eecfdba76910af02" as const;
|