@fourier-labs/harbour-contracts 0.91.0 → 0.93.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/contract-release.json +18 -16
- package/dist/gen-ts/contract-release.d.ts +6 -6
- package/dist/gen-ts/contract-release.js +6 -6
- package/dist/gen-ts/deployment-app-registration.d.ts +20 -0
- package/dist/gen-ts/index.d.ts +1 -0
- package/dist/gen-ts/index.js +1 -0
- package/dist/gen-ts/integration-execute-input-rules.d.ts +7 -0
- package/dist/gen-ts/integration-execute-input-rules.js +1 -0
- package/dist/gen-ts/integration-execute-request.d.ts +1 -0
- package/dist/gen-ts/integration-execute-result.d.ts +4 -0
- package/dist/gen-ts/mail-arrival-event.d.ts +17 -0
- package/dist/gen-ts/mail-arrival-event.js +3 -0
- package/gen-ts/contract-release.ts +6 -6
- package/gen-ts/deployment-app-registration.ts +20 -0
- package/gen-ts/index.ts +1 -0
- package/gen-ts/integration-execute-input-rules.ts +1 -0
- package/gen-ts/integration-execute-request.ts +1 -0
- package/gen-ts/integration-execute-result.ts +4 -0
- package/gen-ts/mail-arrival-event.ts +20 -0
- package/package.json +1 -1
- package/schema/deployment-app-registration.schema.json +199 -17
- package/schema/integration-execute-request.schema.json +68 -1
- package/schema/integration-execute-result.schema.json +17 -1
- package/schema/mail-arrival-event.schema.json +75 -0
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.93.0.0",
|
|
4
|
+
"publishVersion": "0.93.0",
|
|
5
|
+
"publishTag": "v0.93.0",
|
|
6
|
+
"schemasDigest": "sha256:9fe4dd0a739805bd2029674641576a428d728fa4cd17667e1f87538ab08e14e5",
|
|
7
7
|
"aiFixturesDigest": "sha256:edac31c92e146ca1c40130f2fb5649db82e24b8cd1ac758153b90612052fddb6",
|
|
8
|
-
"generatedGoDigest": "sha256:
|
|
9
|
-
"generatedTypeScriptDigest": "sha256:
|
|
8
|
+
"generatedGoDigest": "sha256:ba1a5b846bd8b5352b117601634df3d7fdb0e66782a3bac220b2574254407102",
|
|
9
|
+
"generatedTypeScriptDigest": "sha256:68bd763bc5f48338e257c1f48d72542fb73a70f0b26758faaaebb546dc5752e3",
|
|
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)"
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"schema/data-source.schema.json": "sha256:f32b2b4312bc06e023f4e1da60eed52ddfade59b74c1a1cc8e4b740a6f9c930b",
|
|
43
43
|
"schema/deploy-request.schema.json": "sha256:c978406c273fa430db262888f0a8646b14e3057f64b0633780fcd6cfa646bc67",
|
|
44
44
|
"schema/deploy-response.schema.json": "sha256:09064948abdbba7022738285d802ed44648a16ddc2a5b8c2eeb170ae19a66aeb",
|
|
45
|
-
"schema/deployment-app-registration.schema.json": "sha256:
|
|
45
|
+
"schema/deployment-app-registration.schema.json": "sha256:4386dfd6f5ac2604214ab161cbb37146245baf7e70b63773c9702bd3270c3ca5",
|
|
46
46
|
"schema/deployment-continuation.schema.json": "sha256:55b6945439f2c91cd851dfe4bc9484e67a64091b7763b2d8267354b4a8bfae8c",
|
|
47
47
|
"schema/deployment-environment.schema.json": "sha256:35b26cae07da9ee375a842b5e87c4570c8eca06775e9fd6dd46eb9eb8aa0df6c",
|
|
48
48
|
"schema/deployment-preview-retirement.schema.json": "sha256:ccf6b971b7853ca98530272f280fe62cd3aab5425b10b81ae6b717cc949e014f",
|
|
@@ -57,12 +57,13 @@
|
|
|
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:
|
|
61
|
-
"schema/integration-execute-result.schema.json": "sha256:
|
|
60
|
+
"schema/integration-execute-request.schema.json": "sha256:52afdb416c37d4fd911eafec3e63831ff7778dd70bc756102e44f8c6bb099fc0",
|
|
61
|
+
"schema/integration-execute-result.schema.json": "sha256:d85f135e8ba43e82e08bf13f720e3cc7988c6fa99da2bd727642a48342404b8f",
|
|
62
62
|
"schema/internal-configuration-request.schema.json": "sha256:229d44a3458f68dceddfba802e5c1adcd95523a45af29b93b972706b88461a7d",
|
|
63
63
|
"schema/kit-bundle-manifest.schema.json": "sha256:d8fc6ca9c30d791e785b021687e084e9171c0ea1a3a176d0f1582fcccf2c0e19",
|
|
64
64
|
"schema/kit-lock.schema.json": "sha256:a48154d9471e49a893d928f7b0e1e0bc77708a4a7edce4fdf14073203e0e8987",
|
|
65
65
|
"schema/kvs-routing-entry.schema.json": "sha256:b75f3a5dfa93a428b2764e03222b66b6ef2bed980f8bac8ffac54afdf3526bc5",
|
|
66
|
+
"schema/mail-arrival-event.schema.json": "sha256:b4fee8777a7e09ee223919330ca772e35b0e617ecfb3d5a197bfe0ee1effe4f5",
|
|
66
67
|
"schema/promotion-request.schema.json": "sha256:00e96dfd8ddbdba88ea222941d43f3609ff6c815a79e34f6705cab458101c969",
|
|
67
68
|
"schema/promotion-response.schema.json": "sha256:4129712d2e29d6ef21d93d4bd0bacfd60ada3f2ee0ade852824e64346b817634",
|
|
68
69
|
"schema/resolved-app-serving.schema.json": "sha256:3b49268e189429310c2a5dcfd45e9d2187c80b6dbb9d329a0177e96e065c31c0",
|
|
@@ -112,11 +113,11 @@
|
|
|
112
113
|
"gen-go/contracts_test.go": "sha256:56376287cb1548be1b35ab4c65d6f0b558c5d34885f7a47cb3d9e8d786607bf5",
|
|
113
114
|
"gen-go/doc.go": "sha256:316d610ce568597a2ce6f38e9782e34fa5920f6f51ab0866e6d061b8a41cd822",
|
|
114
115
|
"gen-go/error_category.go": "sha256:b2ddea22dcfa030f1a45e721e635485b0bd816cf1f38e7654628a653f5ed4583",
|
|
115
|
-
"gen-go/integration_execute_input_rules.go": "sha256:
|
|
116
|
+
"gen-go/integration_execute_input_rules.go": "sha256:6dbb58be21c9f92256cbaee4be35322ef27372d8ec49abb8d6be719af01f9237",
|
|
116
117
|
"gen-go/integration_execute_input_rules_test.go": "sha256:6db850bbdfc31f60ac7ce6ec5cade4f5260b1836e56b2727efbfeee56db7a706",
|
|
117
118
|
"gen-go/integration_operations.go": "sha256:1ba7ea4e118a2c4c8dd735b460b18d8658fbd7fd74e601ae372aff2844322f35",
|
|
118
119
|
"gen-go/schema_documents.go": "sha256:c19c0d540f602ee997a84b90e20702d9bc63ed7d27aec267e76c04655fc182e0",
|
|
119
|
-
"gen-go/types.go": "sha256:
|
|
120
|
+
"gen-go/types.go": "sha256:2a522bd0dac6904ac36bf6b6c0050c269e554a45b27c1d2becb9a002047de896",
|
|
120
121
|
"gen-go/version_state.go": "sha256:4ef8abb126414c0025cf2c59bc9c79a74ef4a2ff89e8f316cbf05acc872371c1"
|
|
121
122
|
},
|
|
122
123
|
"generatedTypeScript": {
|
|
@@ -153,7 +154,7 @@
|
|
|
153
154
|
"gen-ts/data-source.ts": "sha256:2566f0d5c72e44278869f55211cf3d433aeb3552e57ae0ace0ff0b85e769dde6",
|
|
154
155
|
"gen-ts/deploy-request.ts": "sha256:913245577a95354849d3a8cb43fbaedbf895efe7b653c8502d25edfa22b7a864",
|
|
155
156
|
"gen-ts/deploy-response.ts": "sha256:364d9f1acf32e491498237cdd3f402d5f8e102f208db7748034f4ec68c6a6137",
|
|
156
|
-
"gen-ts/deployment-app-registration.ts": "sha256:
|
|
157
|
+
"gen-ts/deployment-app-registration.ts": "sha256:cb02a7e54a1733fb0865802215235c0f9d532229fffca2dc26677bee5e5e950e",
|
|
157
158
|
"gen-ts/deployment-continuation.ts": "sha256:cc9f63af4d0da5086a79103789e4f043783b75b4ed11c6512f044439a551a79c",
|
|
158
159
|
"gen-ts/deployment-environment.ts": "sha256:fc08cabe2e52ebb93cfe84d2019994260f71734c33d0e50e7c63e40ef5b17cef",
|
|
159
160
|
"gen-ts/deployment-preview-retirement.ts": "sha256:309421d08daf0ade163b6457ed0e5410ec6573c40a59423a6cce14780d9c38db",
|
|
@@ -167,17 +168,18 @@
|
|
|
167
168
|
"gen-ts/error-envelope.ts": "sha256:4457309be794f9d4fc0cf62530cc2d442c007bac9ae84aff66df099cc9e40310",
|
|
168
169
|
"gen-ts/external-sign-in.ts": "sha256:393ef74d72e37d33e374e3226f34ab3e854fdb0c1129a367997cbb690bf253a6",
|
|
169
170
|
"gen-ts/identity-context.ts": "sha256:4b8151a321e224229250d214ef3e17f2ac986bb54ff0aadbb4509481724f6883",
|
|
170
|
-
"gen-ts/index.ts": "sha256:
|
|
171
|
+
"gen-ts/index.ts": "sha256:258bdcaa0d8d26dd2bb996d3ddb0b4bf4533db83d1b7f0d35a2a2af85c728117",
|
|
171
172
|
"gen-ts/integration-connect-result.ts": "sha256:4b10f169b6e1af364e9b418de21caa9fadbfb77b43cbff77d741cfae0b52180c",
|
|
172
173
|
"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:
|
|
175
|
-
"gen-ts/integration-execute-result.ts": "sha256:
|
|
174
|
+
"gen-ts/integration-execute-input-rules.ts": "sha256:f340553858e61476e0c20a2c9b607adfaa6d0a8aa7f5e42279e9fc477e624425",
|
|
175
|
+
"gen-ts/integration-execute-request.ts": "sha256:df8a4eff42cd1a51ba084e4eaa9bf541bc39499844b861d11125a940a927b32b",
|
|
176
|
+
"gen-ts/integration-execute-result.ts": "sha256:ebc136b0da21100319bf8201cc5688295844702d40384c07435461fa4a90be0f",
|
|
176
177
|
"gen-ts/integration-operations.ts": "sha256:9e1f0b330a86eb63b7999b7f78b1da08dcefa0582325917581d98879fa25899f",
|
|
177
178
|
"gen-ts/internal-configuration-request.ts": "sha256:7032437797473fa1c581d134adef2f3d4b4f4132f482cd17743e9d47097886bc",
|
|
178
179
|
"gen-ts/kit-bundle-manifest.ts": "sha256:73f5271d2eb3b5ce91e28933c5ab6883615c72a3808aa386f860f58f6df8edf6",
|
|
179
180
|
"gen-ts/kit-lock.ts": "sha256:06bddeaf1e2c449c9cc0dbbc696210355a9005349c604d4050eb22385fb4c22e",
|
|
180
181
|
"gen-ts/kvs-routing-entry.ts": "sha256:d92e85ee9f257d77850d1d3aac9438e2055f38084ff84a48fcedae239d47d4ca",
|
|
182
|
+
"gen-ts/mail-arrival-event.ts": "sha256:deb342c7f930a2c7bf66a46e4c0973e3b9047cd9725e714ccaeab8c64a89d25f",
|
|
181
183
|
"gen-ts/promotion-request.ts": "sha256:9db88cef67f777a16bac628039ec3f582acb9e8cfff6fb592b30d0a0e55abc68",
|
|
182
184
|
"gen-ts/promotion-response.ts": "sha256:f1c9cafac96faeb02a443a31786f67714e818f38d90108e7af41958396524d6f",
|
|
183
185
|
"gen-ts/resolved-app-serving.ts": "sha256:3264e85827be47bf391781cb13a1e58318d356f7bee8c2ff3e5b00a062253b23",
|
|
@@ -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.93.0.0";
|
|
2
|
+
export declare const ContractPublishVersion: "0.93.0";
|
|
3
|
+
export declare const ContractPublishTag: "v0.93.0";
|
|
4
|
+
export declare const ContractSchemasDigest: "sha256:9fe4dd0a739805bd2029674641576a428d728fa4cd17667e1f87538ab08e14e5";
|
|
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:ba1a5b846bd8b5352b117601634df3d7fdb0e66782a3bac220b2574254407102";
|
|
7
|
+
export declare const ContractGeneratedTypeScriptDigest: "sha256:68bd763bc5f48338e257c1f48d72542fb73a70f0b26758faaaebb546dc5752e3";
|
|
@@ -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.93.0.0";
|
|
4
|
+
export const ContractPublishVersion = "0.93.0";
|
|
5
|
+
export const ContractPublishTag = "v0.93.0";
|
|
6
|
+
export const ContractSchemasDigest = "sha256:9fe4dd0a739805bd2029674641576a428d728fa4cd17667e1f87538ab08e14e5";
|
|
7
7
|
export const ContractAiFixturesDigest = "sha256:edac31c92e146ca1c40130f2fb5649db82e24b8cd1ac758153b90612052fddb6";
|
|
8
|
-
export const ContractGeneratedGoDigest = "sha256:
|
|
9
|
-
export const ContractGeneratedTypeScriptDigest = "sha256:
|
|
8
|
+
export const ContractGeneratedGoDigest = "sha256:ba1a5b846bd8b5352b117601634df3d7fdb0e66782a3bac220b2574254407102";
|
|
9
|
+
export const ContractGeneratedTypeScriptDigest = "sha256:68bd763bc5f48338e257c1f48d72542fb73a70f0b26758faaaebb546dc5752e3";
|
|
@@ -21,4 +21,24 @@ export type DeploymentAppRegistration = {
|
|
|
21
21
|
* @maxItems 1
|
|
22
22
|
*/
|
|
23
23
|
signInMethods?: ('phone' | 'email')[];
|
|
24
|
+
mailArrivalTarget?: {
|
|
25
|
+
functionArn: string;
|
|
26
|
+
versionId: string;
|
|
27
|
+
/**
|
|
28
|
+
* @minItems 1
|
|
29
|
+
* @maxItems 100
|
|
30
|
+
*/
|
|
31
|
+
jobs: {
|
|
32
|
+
name: string;
|
|
33
|
+
trigger: {
|
|
34
|
+
type: 'email.arrived';
|
|
35
|
+
connection: string;
|
|
36
|
+
resource: 'inbox';
|
|
37
|
+
filter?: {
|
|
38
|
+
from?: string;
|
|
39
|
+
subjectContains?: string;
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
}[];
|
|
43
|
+
};
|
|
24
44
|
};
|
package/dist/gen-ts/index.d.ts
CHANGED
|
@@ -56,6 +56,7 @@ export * from './internal-configuration-request.js';
|
|
|
56
56
|
export * from './kit-bundle-manifest.js';
|
|
57
57
|
export * from './kit-lock.js';
|
|
58
58
|
export * from './kvs-routing-entry.js';
|
|
59
|
+
export * from './mail-arrival-event.js';
|
|
59
60
|
export * from './promotion-request.js';
|
|
60
61
|
export * from './promotion-response.js';
|
|
61
62
|
export * from './resolved-app-serving.js';
|
package/dist/gen-ts/index.js
CHANGED
|
@@ -58,6 +58,7 @@ export * from './internal-configuration-request.js';
|
|
|
58
58
|
export * from './kit-bundle-manifest.js';
|
|
59
59
|
export * from './kit-lock.js';
|
|
60
60
|
export * from './kvs-routing-entry.js';
|
|
61
|
+
export * from './mail-arrival-event.js';
|
|
61
62
|
export * from './promotion-request.js';
|
|
62
63
|
export * from './promotion-response.js';
|
|
63
64
|
export * from './resolved-app-serving.js';
|
|
@@ -2268,6 +2268,13 @@ export declare const IntegrationExecuteInputRules: {
|
|
|
2268
2268
|
readonly minLength: 0;
|
|
2269
2269
|
readonly maxLength: 2000;
|
|
2270
2270
|
};
|
|
2271
|
+
readonly purchaseOrderItemId: {
|
|
2272
|
+
readonly kind: "string";
|
|
2273
|
+
readonly required: false;
|
|
2274
|
+
readonly minLength: 0;
|
|
2275
|
+
readonly maxLength: 32;
|
|
2276
|
+
readonly pattern: "^[0-9]{1,32}$";
|
|
2277
|
+
};
|
|
2271
2278
|
};
|
|
2272
2279
|
};
|
|
2273
2280
|
};
|
|
@@ -701,6 +701,7 @@ export const IntegrationExecuteInputRules = {
|
|
|
701
701
|
rate: { kind: "string", required: true, minLength: 0, maxLength: 17, pattern: "^[0-9]{1,10}(\\.[0-9]{1,6})?$" },
|
|
702
702
|
taxId: { kind: "string", required: false, minLength: 0, maxLength: 32, pattern: "^[0-9]{1,32}$" },
|
|
703
703
|
description: { kind: "string", required: false, minLength: 0, maxLength: 2000 },
|
|
704
|
+
purchaseOrderItemId: { kind: "string", required: false, minLength: 0, maxLength: 32, pattern: "^[0-9]{1,32}$" },
|
|
704
705
|
} },
|
|
705
706
|
},
|
|
706
707
|
},
|
|
@@ -303,6 +303,8 @@ export type IntegrationExecuteResult = {
|
|
|
303
303
|
rate: string;
|
|
304
304
|
total: string;
|
|
305
305
|
description?: string;
|
|
306
|
+
lineItemId?: string;
|
|
307
|
+
purchaseOrderItemId?: string;
|
|
306
308
|
}[];
|
|
307
309
|
};
|
|
308
310
|
/**
|
|
@@ -333,6 +335,8 @@ export type IntegrationExecuteResult = {
|
|
|
333
335
|
rate: string;
|
|
334
336
|
total: string;
|
|
335
337
|
description?: string;
|
|
338
|
+
lineItemId?: string;
|
|
339
|
+
purchaseOrderItemId?: string;
|
|
336
340
|
}[];
|
|
337
341
|
}[];
|
|
338
342
|
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IAM-authorized invocation of a deployed app Event Function. The delivery ID is stable across notification retries; runtime deduplicates before running the declared job. No tokens or message bodies.
|
|
3
|
+
*/
|
|
4
|
+
export interface MailArrivalEvent {
|
|
5
|
+
mailArrival: {
|
|
6
|
+
deliveryId: string;
|
|
7
|
+
job: string;
|
|
8
|
+
owner: string;
|
|
9
|
+
input: {
|
|
10
|
+
provider: 'gmail' | 'outlook';
|
|
11
|
+
sourceId: string;
|
|
12
|
+
messageId: string;
|
|
13
|
+
threadId: string;
|
|
14
|
+
receivedAt: string;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
}
|
|
@@ -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.93.0.0" as const;
|
|
5
|
+
export const ContractPublishVersion = "0.93.0" as const;
|
|
6
|
+
export const ContractPublishTag = "v0.93.0" as const;
|
|
7
|
+
export const ContractSchemasDigest = "sha256:9fe4dd0a739805bd2029674641576a428d728fa4cd17667e1f87538ab08e14e5" 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:ba1a5b846bd8b5352b117601634df3d7fdb0e66782a3bac220b2574254407102" as const;
|
|
10
|
+
export const ContractGeneratedTypeScriptDigest = "sha256:68bd763bc5f48338e257c1f48d72542fb73a70f0b26758faaaebb546dc5752e3" as const;
|
|
@@ -24,4 +24,24 @@ export type DeploymentAppRegistration = {
|
|
|
24
24
|
* @maxItems 1
|
|
25
25
|
*/
|
|
26
26
|
signInMethods?: ('phone' | 'email')[];
|
|
27
|
+
mailArrivalTarget?: {
|
|
28
|
+
functionArn: string;
|
|
29
|
+
versionId: string;
|
|
30
|
+
/**
|
|
31
|
+
* @minItems 1
|
|
32
|
+
* @maxItems 100
|
|
33
|
+
*/
|
|
34
|
+
jobs: {
|
|
35
|
+
name: string;
|
|
36
|
+
trigger: {
|
|
37
|
+
type: 'email.arrived';
|
|
38
|
+
connection: string;
|
|
39
|
+
resource: 'inbox';
|
|
40
|
+
filter?: {
|
|
41
|
+
from?: string;
|
|
42
|
+
subjectContains?: string;
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
}[];
|
|
46
|
+
};
|
|
27
47
|
};
|
package/gen-ts/index.ts
CHANGED
|
@@ -59,6 +59,7 @@ export * from './internal-configuration-request.js';
|
|
|
59
59
|
export * from './kit-bundle-manifest.js';
|
|
60
60
|
export * from './kit-lock.js';
|
|
61
61
|
export * from './kvs-routing-entry.js';
|
|
62
|
+
export * from './mail-arrival-event.js';
|
|
62
63
|
export * from './promotion-request.js';
|
|
63
64
|
export * from './promotion-response.js';
|
|
64
65
|
export * from './resolved-app-serving.js';
|
|
@@ -730,6 +730,7 @@ export const IntegrationExecuteInputRules = {
|
|
|
730
730
|
rate: { kind: "string", required: true, minLength: 0, maxLength: 17, pattern: "^[0-9]{1,10}(\\.[0-9]{1,6})?$" },
|
|
731
731
|
taxId: { kind: "string", required: false, minLength: 0, maxLength: 32, pattern: "^[0-9]{1,32}$" },
|
|
732
732
|
description: { kind: "string", required: false, minLength: 0, maxLength: 2000 },
|
|
733
|
+
purchaseOrderItemId: { kind: "string", required: false, minLength: 0, maxLength: 32, pattern: "^[0-9]{1,32}$" },
|
|
733
734
|
} },
|
|
734
735
|
},
|
|
735
736
|
},
|
|
@@ -306,6 +306,8 @@ export type IntegrationExecuteResult = {
|
|
|
306
306
|
rate: string;
|
|
307
307
|
total: string;
|
|
308
308
|
description?: string;
|
|
309
|
+
lineItemId?: string;
|
|
310
|
+
purchaseOrderItemId?: string;
|
|
309
311
|
}[];
|
|
310
312
|
};
|
|
311
313
|
/**
|
|
@@ -336,6 +338,8 @@ export type IntegrationExecuteResult = {
|
|
|
336
338
|
rate: string;
|
|
337
339
|
total: string;
|
|
338
340
|
description?: string;
|
|
341
|
+
lineItemId?: string;
|
|
342
|
+
purchaseOrderItemId?: string;
|
|
339
343
|
}[];
|
|
340
344
|
}[];
|
|
341
345
|
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
// Code generated by tools/gen/gen.mjs from schema/*.json. DO NOT EDIT.
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* IAM-authorized invocation of a deployed app Event Function. The delivery ID is stable across notification retries; runtime deduplicates before running the declared job. No tokens or message bodies.
|
|
6
|
+
*/
|
|
7
|
+
export interface MailArrivalEvent {
|
|
8
|
+
mailArrival: {
|
|
9
|
+
deliveryId: string;
|
|
10
|
+
job: string;
|
|
11
|
+
owner: string;
|
|
12
|
+
input: {
|
|
13
|
+
provider: 'gmail' | 'outlook';
|
|
14
|
+
sourceId: string;
|
|
15
|
+
messageId: string;
|
|
16
|
+
threadId: string;
|
|
17
|
+
receivedAt: string;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
}
|
package/package.json
CHANGED
|
@@ -5,23 +5,205 @@
|
|
|
5
5
|
"description": "IAM/SigV4 POST /v1/internal/deployment/apps/{appId}/register (Internal API) or POST /v1/deployment/apps/register body. Governance derives tenant identity-provider configuration; no identity secrets are supplied. apiHostnames explicitly identifies API hosts among backendHostnames; runtime validates that subset. Omission preserves legacy .api. inference during the coordinated V2 auth migration.",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"additionalProperties": false,
|
|
8
|
-
"required": [
|
|
8
|
+
"required": [
|
|
9
|
+
"tenantId",
|
|
10
|
+
"appId",
|
|
11
|
+
"origin"
|
|
12
|
+
],
|
|
9
13
|
"properties": {
|
|
10
|
-
"tenantId": {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
"
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
"
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
"
|
|
23
|
-
|
|
24
|
-
|
|
14
|
+
"tenantId": {
|
|
15
|
+
"type": "string",
|
|
16
|
+
"minLength": 1
|
|
17
|
+
},
|
|
18
|
+
"appId": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"minLength": 1
|
|
21
|
+
},
|
|
22
|
+
"origin": {
|
|
23
|
+
"type": "string",
|
|
24
|
+
"format": "uri"
|
|
25
|
+
},
|
|
26
|
+
"publicHostname": {
|
|
27
|
+
"type": "string",
|
|
28
|
+
"format": "hostname"
|
|
29
|
+
},
|
|
30
|
+
"backendHostnames": {
|
|
31
|
+
"type": "array",
|
|
32
|
+
"uniqueItems": true,
|
|
33
|
+
"items": {
|
|
34
|
+
"type": "string",
|
|
35
|
+
"format": "hostname"
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"apiHostnames": {
|
|
39
|
+
"type": "array",
|
|
40
|
+
"uniqueItems": true,
|
|
41
|
+
"items": {
|
|
42
|
+
"type": "string",
|
|
43
|
+
"format": "hostname"
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
"pathPrefix": {
|
|
47
|
+
"type": "string",
|
|
48
|
+
"pattern": "^/"
|
|
49
|
+
},
|
|
50
|
+
"environment": {
|
|
51
|
+
"type": "string",
|
|
52
|
+
"enum": [
|
|
53
|
+
"preview",
|
|
54
|
+
"production"
|
|
55
|
+
]
|
|
56
|
+
},
|
|
57
|
+
"allowedDomains": {
|
|
58
|
+
"type": "array",
|
|
59
|
+
"items": {
|
|
60
|
+
"type": "string"
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"allowedUsers": {
|
|
64
|
+
"type": "array",
|
|
65
|
+
"items": {
|
|
66
|
+
"type": "string"
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
"allowedGroups": {
|
|
70
|
+
"type": "array",
|
|
71
|
+
"items": {
|
|
72
|
+
"type": "string"
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
"enabled": {
|
|
76
|
+
"type": "boolean"
|
|
77
|
+
},
|
|
78
|
+
"workloadPrincipalArn": {
|
|
79
|
+
"type": "string",
|
|
80
|
+
"pattern": "^arn:aws:(iam|sts)::[0-9]+:"
|
|
81
|
+
},
|
|
82
|
+
"signIn": {
|
|
83
|
+
"type": "string",
|
|
84
|
+
"enum": [
|
|
85
|
+
"company",
|
|
86
|
+
"external"
|
|
87
|
+
]
|
|
88
|
+
},
|
|
89
|
+
"signInMethods": {
|
|
90
|
+
"type": "array",
|
|
91
|
+
"items": {
|
|
92
|
+
"type": "string",
|
|
93
|
+
"enum": [
|
|
94
|
+
"phone",
|
|
95
|
+
"email"
|
|
96
|
+
]
|
|
97
|
+
},
|
|
98
|
+
"minItems": 1,
|
|
99
|
+
"maxItems": 1
|
|
100
|
+
},
|
|
101
|
+
"mailArrivalTarget": {
|
|
102
|
+
"type": "object",
|
|
103
|
+
"additionalProperties": false,
|
|
104
|
+
"required": [
|
|
105
|
+
"functionArn",
|
|
106
|
+
"versionId",
|
|
107
|
+
"jobs"
|
|
108
|
+
],
|
|
109
|
+
"properties": {
|
|
110
|
+
"functionArn": {
|
|
111
|
+
"type": "string",
|
|
112
|
+
"pattern": "^arn:aws:lambda:[a-z0-9-]+:[0-9]{12}:function:[A-Za-z0-9-_]+$"
|
|
113
|
+
},
|
|
114
|
+
"versionId": {
|
|
115
|
+
"type": "string",
|
|
116
|
+
"minLength": 1
|
|
117
|
+
},
|
|
118
|
+
"jobs": {
|
|
119
|
+
"type": "array",
|
|
120
|
+
"minItems": 1,
|
|
121
|
+
"maxItems": 100,
|
|
122
|
+
"items": {
|
|
123
|
+
"type": "object",
|
|
124
|
+
"additionalProperties": false,
|
|
125
|
+
"required": [
|
|
126
|
+
"name",
|
|
127
|
+
"trigger"
|
|
128
|
+
],
|
|
129
|
+
"properties": {
|
|
130
|
+
"name": {
|
|
131
|
+
"type": "string",
|
|
132
|
+
"pattern": "^[a-z0-9][a-z0-9_-]{0,63}$"
|
|
133
|
+
},
|
|
134
|
+
"trigger": {
|
|
135
|
+
"type": "object",
|
|
136
|
+
"additionalProperties": false,
|
|
137
|
+
"required": [
|
|
138
|
+
"type",
|
|
139
|
+
"connection",
|
|
140
|
+
"resource"
|
|
141
|
+
],
|
|
142
|
+
"properties": {
|
|
143
|
+
"type": {
|
|
144
|
+
"const": "email.arrived"
|
|
145
|
+
},
|
|
146
|
+
"connection": {
|
|
147
|
+
"type": "string",
|
|
148
|
+
"pattern": "^[a-z0-9][a-z0-9_-]{0,63}$"
|
|
149
|
+
},
|
|
150
|
+
"resource": {
|
|
151
|
+
"const": "inbox"
|
|
152
|
+
},
|
|
153
|
+
"filter": {
|
|
154
|
+
"type": "object",
|
|
155
|
+
"additionalProperties": false,
|
|
156
|
+
"properties": {
|
|
157
|
+
"from": {
|
|
158
|
+
"type": "string",
|
|
159
|
+
"minLength": 1,
|
|
160
|
+
"maxLength": 320
|
|
161
|
+
},
|
|
162
|
+
"subjectContains": {
|
|
163
|
+
"type": "string",
|
|
164
|
+
"minLength": 1,
|
|
165
|
+
"maxLength": 320
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
25
176
|
},
|
|
26
|
-
"allOf": [
|
|
177
|
+
"allOf": [
|
|
178
|
+
{
|
|
179
|
+
"if": {
|
|
180
|
+
"properties": {
|
|
181
|
+
"signIn": {
|
|
182
|
+
"const": "external"
|
|
183
|
+
}
|
|
184
|
+
},
|
|
185
|
+
"required": [
|
|
186
|
+
"signIn"
|
|
187
|
+
]
|
|
188
|
+
},
|
|
189
|
+
"then": {
|
|
190
|
+
"required": [
|
|
191
|
+
"signInMethods"
|
|
192
|
+
]
|
|
193
|
+
}
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
"if": {
|
|
197
|
+
"required": [
|
|
198
|
+
"mailArrivalTarget"
|
|
199
|
+
]
|
|
200
|
+
},
|
|
201
|
+
"then": {
|
|
202
|
+
"required": [
|
|
203
|
+
"environment",
|
|
204
|
+
"workloadPrincipalArn"
|
|
205
|
+
]
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
]
|
|
27
209
|
}
|
|
@@ -638,6 +638,11 @@
|
|
|
638
638
|
"description": {
|
|
639
639
|
"type": "string",
|
|
640
640
|
"maxLength": 2000
|
|
641
|
+
},
|
|
642
|
+
"purchaseOrderItemId": {
|
|
643
|
+
"type": "string",
|
|
644
|
+
"pattern": "^[0-9]{1,32}$",
|
|
645
|
+
"maxLength": 32
|
|
641
646
|
}
|
|
642
647
|
}
|
|
643
648
|
}
|
|
@@ -3561,6 +3566,26 @@
|
|
|
3561
3566
|
"documentNumber",
|
|
3562
3567
|
"documentDate",
|
|
3563
3568
|
"lineItems"
|
|
3569
|
+
],
|
|
3570
|
+
"allOf": [
|
|
3571
|
+
{
|
|
3572
|
+
"if": {
|
|
3573
|
+
"required": [
|
|
3574
|
+
"purchaseOrderId"
|
|
3575
|
+
]
|
|
3576
|
+
},
|
|
3577
|
+
"then": {
|
|
3578
|
+
"properties": {
|
|
3579
|
+
"lineItems": {
|
|
3580
|
+
"items": {
|
|
3581
|
+
"required": [
|
|
3582
|
+
"purchaseOrderItemId"
|
|
3583
|
+
]
|
|
3584
|
+
}
|
|
3585
|
+
}
|
|
3586
|
+
}
|
|
3587
|
+
}
|
|
3588
|
+
}
|
|
3564
3589
|
]
|
|
3565
3590
|
}
|
|
3566
3591
|
},
|
|
@@ -3633,7 +3658,49 @@
|
|
|
3633
3658
|
"customerId",
|
|
3634
3659
|
"documentDate",
|
|
3635
3660
|
"lineItems"
|
|
3636
|
-
]
|
|
3661
|
+
],
|
|
3662
|
+
"properties": {
|
|
3663
|
+
"lineItems": {
|
|
3664
|
+
"type": "array",
|
|
3665
|
+
"minItems": 1,
|
|
3666
|
+
"maxItems": 100,
|
|
3667
|
+
"items": {
|
|
3668
|
+
"type": "object",
|
|
3669
|
+
"additionalProperties": false,
|
|
3670
|
+
"required": [
|
|
3671
|
+
"itemId",
|
|
3672
|
+
"quantity",
|
|
3673
|
+
"rate"
|
|
3674
|
+
],
|
|
3675
|
+
"properties": {
|
|
3676
|
+
"itemId": {
|
|
3677
|
+
"type": "string",
|
|
3678
|
+
"pattern": "^[0-9]{1,32}$",
|
|
3679
|
+
"maxLength": 32
|
|
3680
|
+
},
|
|
3681
|
+
"quantity": {
|
|
3682
|
+
"type": "string",
|
|
3683
|
+
"pattern": "^[0-9]{1,10}(\\.[0-9]{1,6})?$",
|
|
3684
|
+
"maxLength": 17
|
|
3685
|
+
},
|
|
3686
|
+
"rate": {
|
|
3687
|
+
"type": "string",
|
|
3688
|
+
"pattern": "^[0-9]{1,10}(\\.[0-9]{1,6})?$",
|
|
3689
|
+
"maxLength": 17
|
|
3690
|
+
},
|
|
3691
|
+
"taxId": {
|
|
3692
|
+
"type": "string",
|
|
3693
|
+
"pattern": "^[0-9]{1,32}$",
|
|
3694
|
+
"maxLength": 32
|
|
3695
|
+
},
|
|
3696
|
+
"description": {
|
|
3697
|
+
"type": "string",
|
|
3698
|
+
"maxLength": 2000
|
|
3699
|
+
}
|
|
3700
|
+
}
|
|
3701
|
+
}
|
|
3702
|
+
}
|
|
3703
|
+
}
|
|
3637
3704
|
}
|
|
3638
3705
|
},
|
|
3639
3706
|
"required": [
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"$id": "https://schemas.harbour.dev/integration-execute-result.schema.json",
|
|
4
4
|
"title": "IntegrationExecuteResult",
|
|
5
|
-
"description": "The `data` member of a successful execute response `{data, requestId}`; the SDK unwraps `data`. Exactly one of the operation results (eighty-one operations since 0.86.0, ADR 0018, ADR 0022, ADR 0024, ADR 0028, ADR 0029 and ADR 0032): slack.channel.history -> {messages, hasMore, nextCursor?} (plain text/IDs/time, plus the display name and emoji icon a per-app-named app post carries
|
|
5
|
+
"description": "The `data` member of a successful execute response `{data, requestId}`; the SDK unwraps `data`. Exactly one of the operation results (eighty-one operations since 0.86.0, ADR 0018, ADR 0022, ADR 0024, ADR 0028, ADR 0029 and ADR 0032): slack.channel.history -> {messages, hasMore, nextCursor?} (plain text/IDs/time, plus the display name and emoji icon a per-app-named app post carries \u2014 authorName/authorIcon, 0.55.0 \u2014 never the provider payload; `nextCursor` when hasMore, to pass as the next read's `cursor`); slack.message.post, slack.message.update, slack.message.delete -> {messageId} (the Slack ts); slack.dm.send -> {messageId, channelId} (the ts and the DM channel it went to); slack.user.lookup -> {userId, displayName}; gmail.thread.list -> {threads, hasMore, nextPageToken?} (newest matching threads; each `messageId` is the thread's newest message, what gmail.message.read takes; `nextPageToken` when hasMore); gmail.thread.read -> {id, emails} (every message of the thread, oldest first, each shaped like a gmail.message.read result); gmail.message.read -> {id, threadId, subject, from, to, date, text, truncated, attachments?} (headers plus the plain text with html stripped, cut at 16 KiB with `truncated` set; `attachments` lists the files without their bytes, which gmail.attachment.read fetches by id); gmail.attachment.read -> {filename, mimeType, size, dataBase64}; gmail.message.send -> {messageId, threadId} (the Gmail ids of the sent message and its thread); warehouse.view.read -> {rows, truncated} (rows keyed by the selected columns, or for an aggregate read by the groupBy columns then the aggregate aliases; decimal/64-bit values as strings, dates as ISO strings; since 0.70.0 every server sends `truncated`, true when more rows matched than `limit` \u2014 the server reads limit+1 rows to know \u2014 so the rows are incomplete and must not be totalled or averaged; a server before 0.70.0 omitted it). Basecamp (0.76.0, ADR 0022; every id a string of digits, every page at most 100 items, `nextPageToken` only when hasMore, text cut at 16 KiB like Gmail): basecamp.project.list -> {projects, hasMore, nextPageToken?}; basecamp.todolist.list -> {todolists, hasMore, nextPageToken?}; basecamp.todo.list -> {todos, hasMore, nextPageToken?}; basecamp.message.list -> {boardMessages, hasMore, nextPageToken?} (`boardMessages`, not `messages`, which is the Slack history shape); basecamp.comment.list -> {comments, hasMore, nextPageToken?}; basecamp.people.list -> {people, hasMore, nextPageToken?}; basecamp.todo.create, basecamp.message.post, basecamp.comment.post, basecamp.campfire.post -> {id, appUrl} (the new recording and its Basecamp page); basecamp.todo.complete -> {id, completed} with completed always true. SharePoint (0.78.0, ADR 0024; every id a Microsoft Graph id, `nextPageToken` only when hasMore and up to 2048 characters for a Graph `$skiptoken`): sharepoint.list.list -> {lists, hasMore, nextPageToken?} (at most 100, hidden lists dropped); sharepoint.item.list -> {items, hasMore, nextPageToken?} (at most 50; each item's `fields` are the column values as Graph returns them with the system columns dropped, the whole object cut at 16 KiB); sharepoint.drive.list -> {drives, hasMore, nextPageToken?}; sharepoint.file.list and sharepoint.file.search -> {files, hasMore, nextPageToken?} (at most 100 entries, folders included with isFolder); sharepoint.file.read -> {id, filename, mimeType, size, dataBase64} (the Gmail attachment shape plus the file's id; at most 2 MiB of bytes); sharepoint.item.create -> {id, webUrl} (the new item and its SharePoint page); sharepoint.item.update -> {id}; sharepoint.file.upload -> {id, filename, webUrl} (the stored file, under the name `conflict` rename may have given it). Google Workspace and Microsoft 365 (0.86.0, ADR 0032; every page at most 100 items, `nextPageToken` only when hasMore, up to 2048 characters): calendar.calendar.list -> {calendars, hasMore, nextPageToken?}; calendar.event.list and outlook.event.list -> {events, hasMore, nextPageToken?}; calendar.event.read and outlook.event.read -> the event itself, {id, title, start, end, allDay, timeZone?, location?, description?, attendees, organizer?, webUrl, eventStatus} (the CalendarEvent shape spread at the top level, the way gmail.message.read spreads GmailMessage; `eventStatus`, because `status` is the HTTP status of a service.request result); calendar.event.create and outlook.event.create -> {id, webUrl}; calendar.event.update, calendar.event.cancel, outlook.event.update, outlook.event.cancel -> {id}; drive.file.list, drive.file.search, onedrive.file.list, onedrive.file.search -> {files, hasMore, nextPageToken?} (the SharePoint entry shape); drive.file.read and onedrive.file.read -> {id, filename, mimeType, size, dataBase64} (the sharepoint.file.read shape; `filename` and `mimeType` are the stored or exported name and type); drive.file.upload and onedrive.file.upload -> {id, filename, webUrl}; drive.folder.create and onedrive.folder.create -> {id, webUrl}; docs.document.read -> {id, title, text, revisionId, webUrl, truncated} (the body as plain text cut at 64 KiB); docs.document.create -> {id, webUrl}; docs.document.append -> {id, revisionId}; docs.text.replace -> {id, replaced} (how many occurrences changed); sheets.spreadsheet.read -> {id, title, sheets, webUrl}; sheets.values.read -> {range, values} (the range Google answered with and the cells as rows; a trailing empty row or cell is dropped by Google); sheets.values.append -> {range, updatedRows}; sheets.values.update -> {range, updatedCells}; sheets.values.clear -> {range}; sheets.spreadsheet.create -> {id, webUrl}; outlook.message.list -> {mailMessages, hasMore, nextPageToken?} (`mailMessages`, not `messages`, which is the Slack history shape); outlook.message.read -> the gmail.message.read shape {id, threadId, subject, from, to, date, text, truncated, attachments?} with `threadId` the Graph conversationId; outlook.attachment.read -> {id, filename, mimeType, size, dataBase64}; outlook.message.send and outlook.message.reply -> {id} (the sent message's id, which Graph does not return for a send: governance's own internetMessageId); excel.worksheet.list -> {worksheets}; excel.range.read -> {address, values}; excel.range.update -> {address, updatedCells}; excel.table.list -> {tables}; excel.row.add -> {index, updatedRows} (the index of the first added row); excel.worksheet.add -> {id, name}; teams.message.list -> {teamsMessages, hasMore, nextPageToken?} (`teamsMessages`, apart from Slack's `messages`); teams.message.post and teams.reply.post -> {id, webUrl}. An unknown send outcome is never a result; it is an error with details.code SEND_OUTCOME_UNKNOWN. A whole result over 1 MiB is rejected, never cut down to fit \u2014 except a gmail.attachment.read, a sharepoint.file.read, a drive.file.read, an onedrive.file.read or an outlook.attachment.read, whose single file is bounded by its own 2 MiB.",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"additionalProperties": false,
|
|
8
8
|
"properties": {
|
|
@@ -506,6 +506,14 @@
|
|
|
506
506
|
"description": {
|
|
507
507
|
"type": "string",
|
|
508
508
|
"maxLength": 2000
|
|
509
|
+
},
|
|
510
|
+
"lineItemId": {
|
|
511
|
+
"type": "string",
|
|
512
|
+
"maxLength": 32
|
|
513
|
+
},
|
|
514
|
+
"purchaseOrderItemId": {
|
|
515
|
+
"type": "string",
|
|
516
|
+
"maxLength": 32
|
|
509
517
|
}
|
|
510
518
|
}
|
|
511
519
|
}
|
|
@@ -619,6 +627,14 @@
|
|
|
619
627
|
"description": {
|
|
620
628
|
"type": "string",
|
|
621
629
|
"maxLength": 2000
|
|
630
|
+
},
|
|
631
|
+
"lineItemId": {
|
|
632
|
+
"type": "string",
|
|
633
|
+
"maxLength": 32
|
|
634
|
+
},
|
|
635
|
+
"purchaseOrderItemId": {
|
|
636
|
+
"type": "string",
|
|
637
|
+
"maxLength": 32
|
|
622
638
|
}
|
|
623
639
|
}
|
|
624
640
|
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://contracts.harbour.dev/mail-arrival-event.schema.json",
|
|
4
|
+
"title": "MailArrivalEvent",
|
|
5
|
+
"description": "IAM-authorized invocation of a deployed app Event Function. The delivery ID is stable across notification retries; runtime deduplicates before running the declared job. No tokens or message bodies.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"mailArrival"
|
|
10
|
+
],
|
|
11
|
+
"properties": {
|
|
12
|
+
"mailArrival": {
|
|
13
|
+
"type": "object",
|
|
14
|
+
"additionalProperties": false,
|
|
15
|
+
"required": [
|
|
16
|
+
"deliveryId",
|
|
17
|
+
"job",
|
|
18
|
+
"owner",
|
|
19
|
+
"input"
|
|
20
|
+
],
|
|
21
|
+
"properties": {
|
|
22
|
+
"deliveryId": {
|
|
23
|
+
"type": "string",
|
|
24
|
+
"pattern": "^[a-f0-9]{64}$"
|
|
25
|
+
},
|
|
26
|
+
"job": {
|
|
27
|
+
"type": "string",
|
|
28
|
+
"pattern": "^[a-z0-9][a-z0-9_-]{0,63}$"
|
|
29
|
+
},
|
|
30
|
+
"owner": {
|
|
31
|
+
"type": "string",
|
|
32
|
+
"minLength": 1,
|
|
33
|
+
"maxLength": 320
|
|
34
|
+
},
|
|
35
|
+
"input": {
|
|
36
|
+
"type": "object",
|
|
37
|
+
"additionalProperties": false,
|
|
38
|
+
"required": [
|
|
39
|
+
"provider",
|
|
40
|
+
"sourceId",
|
|
41
|
+
"messageId",
|
|
42
|
+
"threadId",
|
|
43
|
+
"receivedAt"
|
|
44
|
+
],
|
|
45
|
+
"properties": {
|
|
46
|
+
"provider": {
|
|
47
|
+
"enum": [
|
|
48
|
+
"gmail",
|
|
49
|
+
"outlook"
|
|
50
|
+
]
|
|
51
|
+
},
|
|
52
|
+
"sourceId": {
|
|
53
|
+
"type": "string",
|
|
54
|
+
"minLength": 1,
|
|
55
|
+
"maxLength": 64
|
|
56
|
+
},
|
|
57
|
+
"messageId": {
|
|
58
|
+
"type": "string",
|
|
59
|
+
"minLength": 1,
|
|
60
|
+
"maxLength": 2048
|
|
61
|
+
},
|
|
62
|
+
"threadId": {
|
|
63
|
+
"type": "string",
|
|
64
|
+
"maxLength": 2048
|
|
65
|
+
},
|
|
66
|
+
"receivedAt": {
|
|
67
|
+
"type": "string",
|
|
68
|
+
"format": "date-time"
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|