@whooshbang/contracts 1.0.0-rc.13
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/CHANGELOG.md +198 -0
- package/LICENSE +21 -0
- package/README.md +120 -0
- package/contract-manifest.json +390 -0
- package/dist/base64url.d.ts +2 -0
- package/dist/base64url.js +51 -0
- package/dist/base64url.js.map +1 -0
- package/dist/generated/artifact-index.d.ts +205 -0
- package/dist/generated/artifact-index.js +396 -0
- package/dist/generated/artifact-index.js.map +1 -0
- package/dist/generated/contract-manifest.d.ts +66 -0
- package/dist/generated/contract-manifest.js +6 -0
- package/dist/generated/contract-manifest.js.map +1 -0
- package/dist/generated/core-scenario.d.ts +18 -0
- package/dist/generated/core-scenario.js +6 -0
- package/dist/generated/core-scenario.js.map +1 -0
- package/dist/generated/fixture-index.d.ts +33 -0
- package/dist/generated/fixture-index.js +6 -0
- package/dist/generated/fixture-index.js.map +1 -0
- package/dist/generated/interaction-machine-scenario.d.ts +263 -0
- package/dist/generated/interaction-machine-scenario.js +6 -0
- package/dist/generated/interaction-machine-scenario.js.map +1 -0
- package/dist/generated/interaction-v1.d.ts +152 -0
- package/dist/generated/interaction-v1.js +6 -0
- package/dist/generated/interaction-v1.js.map +1 -0
- package/dist/generated/machine-v1.d.ts +169 -0
- package/dist/generated/machine-v1.js +6 -0
- package/dist/generated/machine-v1.js.map +1 -0
- package/dist/generated/provider-capabilities-v1.d.ts +78 -0
- package/dist/generated/provider-capabilities-v1.js +6 -0
- package/dist/generated/provider-capabilities-v1.js.map +1 -0
- package/dist/generated/validators-standalone.d.ts +659 -0
- package/dist/generated/validators-standalone.js +47800 -0
- package/dist/generated/validators-standalone.js.map +1 -0
- package/dist/generated/validators.d.ts +74 -0
- package/dist/generated/validators.js +493 -0
- package/dist/generated/validators.js.map +1 -0
- package/dist/generated/webhook-delivery-case-v1.d.ts +91 -0
- package/dist/generated/webhook-delivery-case-v1.js +6 -0
- package/dist/generated/webhook-delivery-case-v1.js.map +1 -0
- package/dist/generated/webhook-signing-vector-v1.d.ts +88 -0
- package/dist/generated/webhook-signing-vector-v1.js +6 -0
- package/dist/generated/webhook-signing-vector-v1.js.map +1 -0
- package/dist/generated/whooshbang-event-v1.d.ts +191 -0
- package/dist/generated/whooshbang-event-v1.js +6 -0
- package/dist/generated/whooshbang-event-v1.js.map +1 -0
- package/dist/generated/whooshbang-v1.d.ts +1162 -0
- package/dist/generated/whooshbang-v1.js +6 -0
- package/dist/generated/whooshbang-v1.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/machine-credential.d.ts +31 -0
- package/dist/machine-credential.js +78 -0
- package/dist/machine-credential.js.map +1 -0
- package/dist/webhook-consumer.d.ts +50 -0
- package/dist/webhook-consumer.js +71 -0
- package/dist/webhook-consumer.js.map +1 -0
- package/dist/webhook-delivery.d.ts +46 -0
- package/dist/webhook-delivery.js +126 -0
- package/dist/webhook-delivery.js.map +1 -0
- package/dist/webhook-signature.d.ts +36 -0
- package/dist/webhook-signature.js +255 -0
- package/dist/webhook-signature.js.map +1 -0
- package/examples/python/verify_webhook.py +283 -0
- package/fixtures/.gitkeep +1 -0
- package/fixtures/core-v1/fixture-index.json +963 -0
- package/fixtures/core-v1/problems/auth-invalid.json +9 -0
- package/fixtures/core-v1/problems/authentication-required.json +9 -0
- package/fixtures/core-v1/problems/cancellation-too-late.json +9 -0
- package/fixtures/core-v1/problems/endpoint-rotation-conflict.json +10 -0
- package/fixtures/core-v1/problems/environment-mismatch.json +9 -0
- package/fixtures/core-v1/problems/idempotency-conflict.json +9 -0
- package/fixtures/core-v1/problems/idempotency-key-required.json +9 -0
- package/fixtures/core-v1/problems/project-slug-conflict.json +16 -0
- package/fixtures/core-v1/problems/provider-outcome-unknown.json +9 -0
- package/fixtures/core-v1/problems/provider-retryable.json +10 -0
- package/fixtures/core-v1/problems/provider-terminal.json +9 -0
- package/fixtures/core-v1/problems/rate-limited.json +10 -0
- package/fixtures/core-v1/problems/replay-unavailable-not-terminal.json +16 -0
- package/fixtures/core-v1/problems/replay-unavailable-payload.json +16 -0
- package/fixtures/core-v1/problems/replay-unavailable-rollout.json +16 -0
- package/fixtures/core-v1/problems/request-invalid.json +16 -0
- package/fixtures/core-v1/problems/resource-expired.json +9 -0
- package/fixtures/core-v1/problems/resource-not-found.json +9 -0
- package/fixtures/core-v1/problems/scope-forbidden.json +9 -0
- package/fixtures/core-v1/problems/subscriber-unbound.json +9 -0
- package/fixtures/core-v1/requests/create-api-credential.json +9 -0
- package/fixtures/core-v1/requests/create-customer-endpoint.json +5 -0
- package/fixtures/core-v1/requests/create-message.json +15 -0
- package/fixtures/core-v1/requests/create-project.json +4 -0
- package/fixtures/core-v1/requests/create-subscription-link.json +5 -0
- package/fixtures/core-v1/requests/rotate-api-credential.json +3 -0
- package/fixtures/core-v1/requests/rotate-customer-endpoint.json +3 -0
- package/fixtures/core-v1/scenarios/api-credential-invalid-indistinguishable.json +14 -0
- package/fixtures/core-v1/scenarios/api-credential-one-time-reveal.json +21 -0
- package/fixtures/core-v1/scenarios/api-credential-revocation-replay.json +17 -0
- package/fixtures/core-v1/scenarios/api-credential-rotation-overlap.json +18 -0
- package/fixtures/core-v1/scenarios/cancellation-too-late.json +15 -0
- package/fixtures/core-v1/scenarios/cross-account-project.json +14 -0
- package/fixtures/core-v1/scenarios/cross-project-resource.json +17 -0
- package/fixtures/core-v1/scenarios/environment-mismatch.json +17 -0
- package/fixtures/core-v1/scenarios/idempotency-conflict.json +35 -0
- package/fixtures/core-v1/scenarios/idempotency-equivalent-replay.json +27 -0
- package/fixtures/core-v1/scenarios/malformed-bearer.json +14 -0
- package/fixtures/core-v1/scenarios/metadata-overrun.json +14 -0
- package/fixtures/core-v1/scenarios/missing-scope.json +15 -0
- package/fixtures/core-v1/scenarios/project-create-equivalent-replay.json +26 -0
- package/fixtures/core-v1/scenarios/project-slug-conflict.json +21 -0
- package/fixtures/core-v1/scenarios/provider-outcome-unknown.json +15 -0
- package/fixtures/core-v1/scenarios/subscription-activation-replay.json +18 -0
- package/fixtures/core-v1/scenarios/subscription-expired-replay.json +16 -0
- package/fixtures/core-v1/success/account-projection.json +11 -0
- package/fixtures/core-v1/success/api-credential-collection.json +22 -0
- package/fixtures/core-v1/success/api-credential-created.json +20 -0
- package/fixtures/core-v1/success/api-credential-revoked.json +19 -0
- package/fixtures/core-v1/success/api-credential-rotated.json +41 -0
- package/fixtures/core-v1/success/customer-endpoint-attempts.json +15 -0
- package/fixtures/core-v1/success/customer-endpoint-collection.json +26 -0
- package/fixtures/core-v1/success/customer-endpoint-create-replayed.json +16 -0
- package/fixtures/core-v1/success/customer-endpoint-created.json +17 -0
- package/fixtures/core-v1/success/customer-endpoint-rotated.json +21 -0
- package/fixtures/core-v1/success/message-accepted.json +30 -0
- package/fixtures/core-v1/success/message-cancellation-too-late.json +27 -0
- package/fixtures/core-v1/success/message-cancelled.json +27 -0
- package/fixtures/core-v1/success/message-outcome-unknown.json +33 -0
- package/fixtures/core-v1/success/message-provider-accepted.json +30 -0
- package/fixtures/core-v1/success/project-collection.json +42 -0
- package/fixtures/core-v1/success/project-created.json +38 -0
- package/fixtures/core-v1/success/subscription-link-activated.json +22 -0
- package/fixtures/core-v1/success/subscription-link-cancelled.json +14 -0
- package/fixtures/core-v1/success/subscription-link-paused.json +22 -0
- package/fixtures/core-v1/success/subscription-link-pending.json +14 -0
- package/fixtures/core-v1/success/subscription-link-revoked.json +22 -0
- package/fixtures/interaction-machine-v1/capabilities/providers.json +57 -0
- package/fixtures/interaction-machine-v1/capabilities/telegram.json +52 -0
- package/fixtures/interaction-machine-v1/events/confirm-answered.json +22 -0
- package/fixtures/interaction-machine-v1/events/input-answered.json +22 -0
- package/fixtures/interaction-machine-v1/events/input-redacted.json +18 -0
- package/fixtures/interaction-machine-v1/events/select-answered.json +22 -0
- package/fixtures/interaction-machine-v1/requests/ack-processed.json +5 -0
- package/fixtures/interaction-machine-v1/requests/ack-quarantined.json +5 -0
- package/fixtures/interaction-machine-v1/requests/create-machine-client.json +6 -0
- package/fixtures/interaction-machine-v1/requests/create-message-confirm.json +18 -0
- package/fixtures/interaction-machine-v1/requests/create-message-input.json +16 -0
- package/fixtures/interaction-machine-v1/requests/create-message-select.json +26 -0
- package/fixtures/interaction-machine-v1/requests/register-machine-credential.json +4 -0
- package/fixtures/interaction-machine-v1/scenarios/ack-conflict.json +14 -0
- package/fixtures/interaction-machine-v1/scenarios/ack-cross-machine.json +15 -0
- package/fixtures/interaction-machine-v1/scenarios/ack-out-of-order.json +15 -0
- package/fixtures/interaction-machine-v1/scenarios/ack-replay.json +17 -0
- package/fixtures/interaction-machine-v1/scenarios/ambiguous-free-text.json +15 -0
- package/fixtures/interaction-machine-v1/scenarios/callback-token-opacity.json +16 -0
- package/fixtures/interaction-machine-v1/scenarios/credential-registration-conflict.json +16 -0
- package/fixtures/interaction-machine-v1/scenarios/credential-registration-replay.json +15 -0
- package/fixtures/interaction-machine-v1/scenarios/credential-revocation-replay.json +14 -0
- package/fixtures/interaction-machine-v1/scenarios/credential-rotation.json +16 -0
- package/fixtures/interaction-machine-v1/scenarios/first-credential-activates.json +15 -0
- package/fixtures/interaction-machine-v1/scenarios/interaction-duplicate.json +16 -0
- package/fixtures/interaction-machine-v1/scenarios/interaction-expired.json +17 -0
- package/fixtures/interaction-machine-v1/scenarios/interaction-mismatch.json +16 -0
- package/fixtures/interaction-machine-v1/scenarios/interaction-retired.json +16 -0
- package/fixtures/interaction-machine-v1/scenarios/interaction-stale.json +16 -0
- package/fixtures/interaction-machine-v1/scenarios/machine-admin-denied.json +14 -0
- package/fixtures/interaction-machine-v1/scenarios/machine-bound-message-create.json +22 -0
- package/fixtures/interaction-machine-v1/scenarios/machine-cancel-denied.json +14 -0
- package/fixtures/interaction-machine-v1/scenarios/machine-crash-before-ack.json +16 -0
- package/fixtures/interaction-machine-v1/scenarios/machine-notifier-mismatch.json +14 -0
- package/fixtures/interaction-machine-v1/scenarios/machine-other-message-read.json +14 -0
- package/fixtures/interaction-machine-v1/scenarios/machine-owned-message-read.json +22 -0
- package/fixtures/interaction-machine-v1/scenarios/machine-subscriber-mismatch.json +14 -0
- package/fixtures/interaction-machine-v1/scenarios/poll-uncommitted-cursor-rejected.json +17 -0
- package/fixtures/interaction-machine-v1/scenarios/project-credential-machine-endpoint-denied.json +14 -0
- package/fixtures/interaction-machine-v1/scenarios/quarantine-integrity-rejected.json +15 -0
- package/fixtures/interaction-machine-v1/scenarios/quarantine-signature-rejected.json +16 -0
- package/fixtures/interaction-machine-v1/scenarios/quarantine-valid.json +15 -0
- package/fixtures/interaction-machine-v1/scenarios/revoked-machine-credential.json +15 -0
- package/fixtures/interaction-machine-v1/success/ack-out-of-order.json +8 -0
- package/fixtures/interaction-machine-v1/success/ack-processed.json +8 -0
- package/fixtures/interaction-machine-v1/success/ack-quarantined.json +9 -0
- package/fixtures/interaction-machine-v1/success/interaction-answered-confirm.json +10 -0
- package/fixtures/interaction-machine-v1/success/interaction-answered-input.json +10 -0
- package/fixtures/interaction-machine-v1/success/interaction-answered-redacted.json +8 -0
- package/fixtures/interaction-machine-v1/success/interaction-answered-select.json +10 -0
- package/fixtures/interaction-machine-v1/success/interaction-open.json +7 -0
- package/fixtures/interaction-machine-v1/success/machine-client-active.json +20 -0
- package/fixtures/interaction-machine-v1/success/machine-client-provisioning.json +19 -0
- package/fixtures/interaction-machine-v1/success/machine-client-revoked.json +21 -0
- package/fixtures/interaction-machine-v1/success/machine-credential-active.json +13 -0
- package/fixtures/interaction-machine-v1/success/machine-credential-revoked.json +14 -0
- package/fixtures/interaction-machine-v1/success/message-interaction-open.json +33 -0
- package/fixtures/interaction-machine-v1/success/poll-empty.json +6 -0
- package/fixtures/interaction-machine-v1/success/poll-events.json +51 -0
- package/fixtures/interaction-machine-v1/tokens/callback-token.json +1 -0
- package/fixtures/whooshbang-events-v1/delivery/cases.json +418 -0
- package/fixtures/whooshbang-events-v1/events/agent-binding-degraded.json +17 -0
- package/fixtures/whooshbang-events-v1/events/interaction-expired.json +16 -0
- package/fixtures/whooshbang-events-v1/events/interaction-received.json +23 -0
- package/fixtures/whooshbang-events-v1/events/message-delivered.json +16 -0
- package/fixtures/whooshbang-events-v1/events/message-expired.json +15 -0
- package/fixtures/whooshbang-events-v1/events/message-failed.json +17 -0
- package/fixtures/whooshbang-events-v1/events/message-provider-accepted.json +15 -0
- package/fixtures/whooshbang-events-v1/events/subscription-activated.json +18 -0
- package/fixtures/whooshbang-events-v1/events/subscription-revoked.json +18 -0
- package/fixtures/whooshbang-events-v1/signing/vectors.json +852 -0
- package/openapi/.gitkeep +1 -0
- package/openapi/generated/whooshbang-v1.bundle.json +5913 -0
- package/openapi/whooshbang-v1.yaml +2334 -0
- package/package.json +63 -0
- package/schemas/contract-manifest.schema.json +140 -0
- package/schemas/core-scenario.schema.json +38 -0
- package/schemas/events/agent-binding-degraded-v1.schema.json +8 -0
- package/schemas/events/interaction-expired-v1.schema.json +8 -0
- package/schemas/events/interaction-received-v1.schema.json +8 -0
- package/schemas/events/message-delivered-v1.schema.json +8 -0
- package/schemas/events/message-expired-v1.schema.json +8 -0
- package/schemas/events/message-failed-v1.schema.json +8 -0
- package/schemas/events/message-provider-accepted-v1.schema.json +8 -0
- package/schemas/events/subscription-activated-v1.schema.json +8 -0
- package/schemas/events/subscription-revoked-v1.schema.json +8 -0
- package/schemas/events/whooshbang-event-v1.schema.json +689 -0
- package/schemas/fixture-index.schema.json +67 -0
- package/schemas/interaction-machine-scenario.schema.json +700 -0
- package/schemas/interaction-v1.schema.json +483 -0
- package/schemas/machine-v1.schema.json +430 -0
- package/schemas/provider-capabilities-v1.schema.json +263 -0
- package/schemas/webhooks/webhook-delivery-case-v1.schema.json +167 -0
- package/schemas/webhooks/webhook-signing-vector-v1.schema.json +197 -0
- package/schemas/whooshbang-v1.schema.json +2173 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by `npm run contracts:generate`.
|
|
3
|
+
* Do not edit this file directly.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Deterministic customer webhook response classification, Retry-After, and delivery-bound cases.
|
|
7
|
+
*/
|
|
8
|
+
export interface WebhookDeliveryCaseSetV1 {
|
|
9
|
+
schema: "whooshbang.webhook-delivery-cases.v1";
|
|
10
|
+
/**
|
|
11
|
+
* @minItems 20
|
|
12
|
+
* @maxItems 64
|
|
13
|
+
*/
|
|
14
|
+
cases: [
|
|
15
|
+
DeliveryCase,
|
|
16
|
+
DeliveryCase,
|
|
17
|
+
DeliveryCase,
|
|
18
|
+
DeliveryCase,
|
|
19
|
+
DeliveryCase,
|
|
20
|
+
DeliveryCase,
|
|
21
|
+
DeliveryCase,
|
|
22
|
+
DeliveryCase,
|
|
23
|
+
DeliveryCase,
|
|
24
|
+
DeliveryCase,
|
|
25
|
+
DeliveryCase,
|
|
26
|
+
DeliveryCase,
|
|
27
|
+
DeliveryCase,
|
|
28
|
+
DeliveryCase,
|
|
29
|
+
DeliveryCase,
|
|
30
|
+
DeliveryCase,
|
|
31
|
+
DeliveryCase,
|
|
32
|
+
DeliveryCase,
|
|
33
|
+
DeliveryCase,
|
|
34
|
+
DeliveryCase,
|
|
35
|
+
...DeliveryCase[]
|
|
36
|
+
];
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* This interface was referenced by `WebhookDeliveryCaseSetV1`'s JSON-Schema
|
|
40
|
+
* via the `definition` "DeliveryCase".
|
|
41
|
+
*/
|
|
42
|
+
export interface DeliveryCase {
|
|
43
|
+
id: string;
|
|
44
|
+
attempt: number;
|
|
45
|
+
first_attempt_at_epoch_seconds: number;
|
|
46
|
+
now_epoch_seconds: number;
|
|
47
|
+
outcome: NetworkFailure | HttpOutcome;
|
|
48
|
+
expected: AcceptedExpectation | TerminalExpectation | RetryExpectation;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* This interface was referenced by `WebhookDeliveryCaseSetV1`'s JSON-Schema
|
|
52
|
+
* via the `definition` "NetworkFailure".
|
|
53
|
+
*/
|
|
54
|
+
export interface NetworkFailure {
|
|
55
|
+
kind: "network_failure";
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* This interface was referenced by `WebhookDeliveryCaseSetV1`'s JSON-Schema
|
|
59
|
+
* via the `definition` "HttpOutcome".
|
|
60
|
+
*/
|
|
61
|
+
export interface HttpOutcome {
|
|
62
|
+
kind: "http";
|
|
63
|
+
status: number;
|
|
64
|
+
retry_after?: string;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* This interface was referenced by `WebhookDeliveryCaseSetV1`'s JSON-Schema
|
|
68
|
+
* via the `definition` "AcceptedExpectation".
|
|
69
|
+
*/
|
|
70
|
+
export interface AcceptedExpectation {
|
|
71
|
+
action: "accepted";
|
|
72
|
+
reason: "http_2xx";
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* This interface was referenced by `WebhookDeliveryCaseSetV1`'s JSON-Schema
|
|
76
|
+
* via the `definition` "TerminalExpectation".
|
|
77
|
+
*/
|
|
78
|
+
export interface TerminalExpectation {
|
|
79
|
+
action: "terminal";
|
|
80
|
+
reason: "attempt_limit_exhausted" | "delivery_window_exhausted" | "http_terminal" | "redirect_not_followed" | "unexpected_http_status";
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* This interface was referenced by `WebhookDeliveryCaseSetV1`'s JSON-Schema
|
|
84
|
+
* via the `definition` "RetryExpectation".
|
|
85
|
+
*/
|
|
86
|
+
export interface RetryExpectation {
|
|
87
|
+
action: "retry";
|
|
88
|
+
reason: "network_failure" | "retryable_http_status";
|
|
89
|
+
latest_retry_at_epoch_seconds: number;
|
|
90
|
+
retry_after_seconds?: number;
|
|
91
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook-delivery-case-v1.js","sourceRoot":"","sources":["../../src/generated/webhook-delivery-case-v1.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by `npm run contracts:generate`.
|
|
3
|
+
* Do not edit this file directly.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Language-neutral deterministic Standard Webhooks V1 verification vectors. All key material is public synthetic test data and must never be used outside fixtures.
|
|
7
|
+
*/
|
|
8
|
+
export interface WebhookSigningVectorSetV1 {
|
|
9
|
+
schema: "whooshbang.webhook-signing-vectors.v1";
|
|
10
|
+
synthetic_verification_keys: {
|
|
11
|
+
[k: string]: string;
|
|
12
|
+
};
|
|
13
|
+
raw_bodies: {
|
|
14
|
+
[k: string]: string;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* @minItems 16
|
|
18
|
+
* @maxItems 64
|
|
19
|
+
*/
|
|
20
|
+
cases: [
|
|
21
|
+
VerificationCase,
|
|
22
|
+
VerificationCase,
|
|
23
|
+
VerificationCase,
|
|
24
|
+
VerificationCase,
|
|
25
|
+
VerificationCase,
|
|
26
|
+
VerificationCase,
|
|
27
|
+
VerificationCase,
|
|
28
|
+
VerificationCase,
|
|
29
|
+
VerificationCase,
|
|
30
|
+
VerificationCase,
|
|
31
|
+
VerificationCase,
|
|
32
|
+
VerificationCase,
|
|
33
|
+
VerificationCase,
|
|
34
|
+
VerificationCase,
|
|
35
|
+
VerificationCase,
|
|
36
|
+
VerificationCase,
|
|
37
|
+
...VerificationCase[]
|
|
38
|
+
];
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* This interface was referenced by `WebhookSigningVectorSetV1`'s JSON-Schema
|
|
42
|
+
* via the `definition` "VerificationCase".
|
|
43
|
+
*/
|
|
44
|
+
export interface VerificationCase {
|
|
45
|
+
id: string;
|
|
46
|
+
description?: string;
|
|
47
|
+
raw_body: string;
|
|
48
|
+
/**
|
|
49
|
+
* @minItems 0
|
|
50
|
+
* @maxItems 8
|
|
51
|
+
*/
|
|
52
|
+
headers: [] | [Header] | [Header, Header] | [Header, Header, Header] | [Header, Header, Header, Header] | [Header, Header, Header, Header, Header] | [Header, Header, Header, Header, Header, Header] | [Header, Header, Header, Header, Header, Header, Header] | [Header, Header, Header, Header, Header, Header, Header, Header];
|
|
53
|
+
/**
|
|
54
|
+
* @minItems 0
|
|
55
|
+
* @maxItems 3
|
|
56
|
+
*/
|
|
57
|
+
trusted_keys: [] | [string] | [string, string] | [string, string, string];
|
|
58
|
+
now_seconds: number;
|
|
59
|
+
tolerance_seconds: number;
|
|
60
|
+
duplicate_of?: string;
|
|
61
|
+
expected: VerifiedExpectation | RejectedExpectation;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* This interface was referenced by `WebhookSigningVectorSetV1`'s JSON-Schema
|
|
65
|
+
* via the `definition` "Header".
|
|
66
|
+
*/
|
|
67
|
+
export interface Header {
|
|
68
|
+
name: string;
|
|
69
|
+
value: string;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* This interface was referenced by `WebhookSigningVectorSetV1`'s JSON-Schema
|
|
73
|
+
* via the `definition` "VerifiedExpectation".
|
|
74
|
+
*/
|
|
75
|
+
export interface VerifiedExpectation {
|
|
76
|
+
verified: true;
|
|
77
|
+
event_id: string;
|
|
78
|
+
timestamp: number;
|
|
79
|
+
attempt: number;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* This interface was referenced by `WebhookSigningVectorSetV1`'s JSON-Schema
|
|
83
|
+
* via the `definition` "RejectedExpectation".
|
|
84
|
+
*/
|
|
85
|
+
export interface RejectedExpectation {
|
|
86
|
+
verified: false;
|
|
87
|
+
reason: "crypto_unavailable" | "duplicate_header" | "duplicate_secret" | "duplicate_signature" | "invalid_body" | "invalid_clock" | "invalid_secret" | "invalid_tolerance" | "malformed_attempt" | "malformed_header" | "malformed_signature" | "malformed_timestamp" | "malformed_webhook_id" | "missing_header" | "signature_mismatch" | "timestamp_outside_tolerance" | "too_many_secrets" | "too_many_signatures" | "unsupported_signature_version";
|
|
88
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook-signing-vector-v1.js","sourceRoot":"","sources":["../../src/generated/webhook-signing-vector-v1.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by `npm run contracts:generate`.
|
|
3
|
+
* Do not edit this file directly.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Strict public customer-event envelope and initial WhooshBang event union.
|
|
7
|
+
*/
|
|
8
|
+
export type WhooshBangEventV1ContractDocument = SubscriptionActivatedEvent | SubscriptionRevokedEvent | MessageProviderAcceptedEvent | MessageDeliveredEvent | MessageFailedEvent | MessageExpiredEvent | InteractionReceivedEvent | InteractionExpiredEvent | AgentBindingDegradedEvent;
|
|
9
|
+
export type SubscriptionActivatedEvent = BaseEvent & {
|
|
10
|
+
type?: "subscription.activated";
|
|
11
|
+
data?: SubscriptionActivatedData;
|
|
12
|
+
[k: string]: unknown;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* The stable logical event identifier. Dots and control characters are excluded so it is safe in the Standard Webhooks signing input.
|
|
16
|
+
*/
|
|
17
|
+
export type EventIdentifier = string;
|
|
18
|
+
/**
|
|
19
|
+
* An RFC 3339 timestamp with an explicit UTC offset.
|
|
20
|
+
*/
|
|
21
|
+
export type Timestamp = string;
|
|
22
|
+
/**
|
|
23
|
+
* A stable public resource identifier whose internal encoding is not a public promise.
|
|
24
|
+
*/
|
|
25
|
+
export type OpaqueIdentifier = string;
|
|
26
|
+
/**
|
|
27
|
+
* The environment in which the immutable event occurred.
|
|
28
|
+
*/
|
|
29
|
+
export type Environment = "test" | "live";
|
|
30
|
+
/**
|
|
31
|
+
* The initial provider-neutral channel vocabulary.
|
|
32
|
+
*/
|
|
33
|
+
export type Channel = "telegram";
|
|
34
|
+
export type SubscriptionRevokedEvent = BaseEvent & {
|
|
35
|
+
type?: "subscription.revoked";
|
|
36
|
+
data?: SubscriptionRevokedData;
|
|
37
|
+
[k: string]: unknown;
|
|
38
|
+
};
|
|
39
|
+
export type MessageProviderAcceptedEvent = BaseEvent & {
|
|
40
|
+
type?: "message.provider_accepted";
|
|
41
|
+
data?: MessageProviderAcceptedData;
|
|
42
|
+
[k: string]: unknown;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Opaque customer correlation returned as data and never interpreted as authority or an executable command.
|
|
46
|
+
*/
|
|
47
|
+
export type CorrelationId = string;
|
|
48
|
+
export type MessageDeliveredEvent = BaseEvent & {
|
|
49
|
+
type?: "message.delivered";
|
|
50
|
+
data?: MessageDeliveredData;
|
|
51
|
+
[k: string]: unknown;
|
|
52
|
+
};
|
|
53
|
+
export type MessageFailedEvent = BaseEvent & {
|
|
54
|
+
type?: "message.failed";
|
|
55
|
+
data?: MessageFailedData;
|
|
56
|
+
[k: string]: unknown;
|
|
57
|
+
};
|
|
58
|
+
export type MessageExpiredEvent = BaseEvent & {
|
|
59
|
+
type?: "message.expired";
|
|
60
|
+
data?: MessageExpiredData;
|
|
61
|
+
[k: string]: unknown;
|
|
62
|
+
};
|
|
63
|
+
export type InteractionReceivedEvent = BaseEvent & {
|
|
64
|
+
type?: "interaction.received";
|
|
65
|
+
data?: InteractionReceivedData;
|
|
66
|
+
[k: string]: unknown;
|
|
67
|
+
};
|
|
68
|
+
export type InteractionReceivedData = {
|
|
69
|
+
[k: string]: unknown;
|
|
70
|
+
} & {
|
|
71
|
+
interaction_id: OpaqueIdentifier;
|
|
72
|
+
message_id: OpaqueIdentifier;
|
|
73
|
+
binding_id: OpaqueIdentifier;
|
|
74
|
+
channel: Channel;
|
|
75
|
+
correlation_id?: InteractionCorrelationId;
|
|
76
|
+
interaction_type: "confirm" | "select" | "input";
|
|
77
|
+
response: InteractionResponse;
|
|
78
|
+
occurred_at: Timestamp;
|
|
79
|
+
expires_at: Timestamp;
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* The C0-03 bounded opaque interaction correlation returned as data and never interpreted as authority.
|
|
83
|
+
*/
|
|
84
|
+
export type InteractionCorrelationId = string;
|
|
85
|
+
export type InteractionResponse = ConfirmInteractionResponse | SelectInteractionResponse | InputInteractionResponse;
|
|
86
|
+
export type InteractionExpiredEvent = BaseEvent & {
|
|
87
|
+
type?: "interaction.expired";
|
|
88
|
+
data?: InteractionExpiredData;
|
|
89
|
+
[k: string]: unknown;
|
|
90
|
+
};
|
|
91
|
+
export type AgentBindingDegradedEvent = BaseEvent & {
|
|
92
|
+
type?: "agent_binding.degraded";
|
|
93
|
+
data?: AgentBindingDegradedData;
|
|
94
|
+
[k: string]: unknown;
|
|
95
|
+
};
|
|
96
|
+
export interface BaseEvent {
|
|
97
|
+
schema: "whooshbang.event.v1";
|
|
98
|
+
id: EventIdentifier;
|
|
99
|
+
type: "subscription.activated" | "subscription.revoked" | "message.provider_accepted" | "message.delivered" | "message.failed" | "message.expired" | "interaction.received" | "interaction.expired" | "agent_binding.degraded";
|
|
100
|
+
created_at: Timestamp;
|
|
101
|
+
account_id: OpaqueIdentifier;
|
|
102
|
+
project_id: OpaqueIdentifier;
|
|
103
|
+
environment: Environment;
|
|
104
|
+
data: {
|
|
105
|
+
[k: string]: unknown;
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
export interface SubscriptionActivatedData {
|
|
109
|
+
subscription_link_id: OpaqueIdentifier;
|
|
110
|
+
binding_id: OpaqueIdentifier;
|
|
111
|
+
subscriber_id: OpaqueIdentifier;
|
|
112
|
+
notifier_id: OpaqueIdentifier;
|
|
113
|
+
channel: Channel;
|
|
114
|
+
state: "activated";
|
|
115
|
+
activated_at: Timestamp;
|
|
116
|
+
}
|
|
117
|
+
export interface SubscriptionRevokedData {
|
|
118
|
+
subscription_link_id: OpaqueIdentifier;
|
|
119
|
+
binding_id: OpaqueIdentifier;
|
|
120
|
+
subscriber_id: OpaqueIdentifier;
|
|
121
|
+
notifier_id: OpaqueIdentifier;
|
|
122
|
+
channel: Channel;
|
|
123
|
+
state: "revoked";
|
|
124
|
+
revoked_at: Timestamp;
|
|
125
|
+
}
|
|
126
|
+
export interface MessageProviderAcceptedData {
|
|
127
|
+
message_id: OpaqueIdentifier;
|
|
128
|
+
correlation_id?: CorrelationId;
|
|
129
|
+
state: "provider_accepted";
|
|
130
|
+
accepted_at: Timestamp;
|
|
131
|
+
}
|
|
132
|
+
export interface MessageDeliveredData {
|
|
133
|
+
message_id: OpaqueIdentifier;
|
|
134
|
+
correlation_id?: CorrelationId;
|
|
135
|
+
state: "delivered";
|
|
136
|
+
/**
|
|
137
|
+
* Delivery is claimed only when the provider supplied trustworthy delivery evidence.
|
|
138
|
+
*/
|
|
139
|
+
evidence: "provider_delivery_receipt";
|
|
140
|
+
delivered_at: Timestamp;
|
|
141
|
+
}
|
|
142
|
+
export interface MessageFailedData {
|
|
143
|
+
message_id: OpaqueIdentifier;
|
|
144
|
+
correlation_id?: CorrelationId;
|
|
145
|
+
state: "terminal_failed";
|
|
146
|
+
/**
|
|
147
|
+
* A provider-neutral, safe public failure classification.
|
|
148
|
+
*/
|
|
149
|
+
failure_code: string;
|
|
150
|
+
retryable: false;
|
|
151
|
+
failed_at: Timestamp;
|
|
152
|
+
}
|
|
153
|
+
export interface MessageExpiredData {
|
|
154
|
+
message_id: OpaqueIdentifier;
|
|
155
|
+
correlation_id?: CorrelationId;
|
|
156
|
+
state: "expired";
|
|
157
|
+
expired_at: Timestamp;
|
|
158
|
+
}
|
|
159
|
+
export interface ConfirmInteractionResponse {
|
|
160
|
+
type: "confirm";
|
|
161
|
+
value: boolean;
|
|
162
|
+
}
|
|
163
|
+
export interface SelectInteractionResponse {
|
|
164
|
+
type: "select";
|
|
165
|
+
/**
|
|
166
|
+
* Opaque customer data and never an executable command.
|
|
167
|
+
*/
|
|
168
|
+
value: string;
|
|
169
|
+
}
|
|
170
|
+
export interface InputInteractionResponse {
|
|
171
|
+
type: "input";
|
|
172
|
+
value: string;
|
|
173
|
+
}
|
|
174
|
+
export interface InteractionExpiredData {
|
|
175
|
+
interaction_id: OpaqueIdentifier;
|
|
176
|
+
message_id: OpaqueIdentifier;
|
|
177
|
+
correlation_id?: InteractionCorrelationId;
|
|
178
|
+
interaction_type: "confirm" | "select" | "input";
|
|
179
|
+
expired_at: Timestamp;
|
|
180
|
+
}
|
|
181
|
+
export interface AgentBindingDegradedData {
|
|
182
|
+
agent_binding_id: OpaqueIdentifier;
|
|
183
|
+
binding_id: OpaqueIdentifier;
|
|
184
|
+
notifier_id: OpaqueIdentifier;
|
|
185
|
+
state: "degraded";
|
|
186
|
+
/**
|
|
187
|
+
* A safe public classification without provider identity or credentials.
|
|
188
|
+
*/
|
|
189
|
+
degradation_code: string;
|
|
190
|
+
degraded_at: Timestamp;
|
|
191
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whooshbang-event-v1.js","sourceRoot":"","sources":["../../src/generated/whooshbang-event-v1.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|