@whooshbang/contracts 3.3.0 → 4.0.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/CHANGELOG.md +5 -0
- package/contract-manifest.json +32 -32
- package/dist/generated/artifact-index.d.ts +33 -33
- package/dist/generated/artifact-index.js +32 -32
- package/dist/generated/interaction-v1.d.ts +1 -1
- package/dist/generated/machine-v1.d.ts +1 -1
- package/dist/generated/validators-standalone.d.ts +377 -378
- package/dist/generated/validators-standalone.js +4354 -3598
- package/dist/generated/validators-standalone.js.map +1 -1
- package/dist/generated/whooshbang-v1.d.ts +19 -11
- package/fixtures/core-v1/fixture-index.json +1 -1
- package/fixtures/core-v1/scenarios/api-credential-invalid-indistinguishable.json +1 -1
- package/fixtures/core-v1/scenarios/api-credential-one-time-reveal.json +1 -1
- package/fixtures/core-v1/scenarios/api-credential-revocation-replay.json +1 -1
- package/fixtures/core-v1/scenarios/api-credential-rotation-overlap.json +1 -1
- package/fixtures/core-v1/scenarios/cancellation-too-late.json +1 -1
- package/fixtures/core-v1/scenarios/cross-organization-project.json +1 -1
- package/fixtures/core-v1/scenarios/cross-project-resource.json +1 -1
- package/fixtures/core-v1/scenarios/environment-mismatch.json +1 -1
- package/fixtures/core-v1/scenarios/idempotency-conflict.json +1 -1
- package/fixtures/core-v1/scenarios/idempotency-equivalent-replay.json +1 -1
- package/fixtures/core-v1/scenarios/malformed-bearer.json +1 -1
- package/fixtures/core-v1/scenarios/metadata-overrun.json +1 -1
- package/fixtures/core-v1/scenarios/missing-scope.json +1 -1
- package/fixtures/core-v1/scenarios/project-create-equivalent-replay.json +1 -1
- package/fixtures/core-v1/scenarios/project-slug-conflict.json +1 -1
- package/fixtures/core-v1/scenarios/provider-outcome-unknown.json +1 -1
- package/fixtures/core-v1/scenarios/subscription-activation-replay.json +1 -1
- package/fixtures/core-v1/scenarios/subscription-authorization-capability-opacity.json +1 -1
- package/fixtures/core-v1/scenarios/subscription-cross-connection-callback-rejected.json +1 -1
- package/fixtures/core-v1/scenarios/subscription-expired-replay.json +1 -1
- package/fixtures/core-v1/scenarios/subscription-selected-connection-replay.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/ack-conflict.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/ack-cross-machine.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/ack-out-of-order.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/ack-replay.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/ambiguous-free-text.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/callback-token-opacity.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/credential-registration-conflict.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/credential-registration-replay.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/credential-revocation-replay.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/credential-rotation.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/first-credential-activates.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/interaction-duplicate.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/interaction-expired.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/interaction-mismatch.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/interaction-retired.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/interaction-stale.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/machine-admin-denied.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/machine-bound-message-create.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/machine-cancel-denied.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/machine-crash-before-ack.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/machine-notifier-mismatch.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/machine-other-message-read.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/machine-owned-message-read.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/machine-subscriber-mismatch.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/poll-uncommitted-cursor-rejected.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/project-credential-machine-endpoint-denied.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/quarantine-integrity-rejected.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/quarantine-signature-rejected.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/quarantine-valid.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/revoked-machine-credential.json +1 -1
- package/fixtures/recipient-experience-v1/scenarios/membership-broadcast-snapshot.json +1 -1
- package/fixtures/recipient-experience-v1/scenarios/preferred-binding-resolution.json +1 -1
- package/fixtures/recipient-experience-v1/scenarios/recipient-session-security.json +1 -1
- package/fixtures/recipient-experience-v1/scenarios/subscriber-initial-groups-transaction.json +1 -1
- package/openapi/generated/whooshbang-v1.bundle.json +73 -18
- package/openapi/whooshbang-v1.yaml +2 -2
- package/package.json +1 -1
- package/schemas/core-scenario.schema.json +1 -1
- package/schemas/events/agent-binding-degraded-v1.schema.json +1 -1
- package/schemas/events/interaction-expired-v1.schema.json +1 -1
- package/schemas/events/interaction-received-v1.schema.json +1 -1
- package/schemas/events/message-delivered-v1.schema.json +1 -1
- package/schemas/events/message-expired-v1.schema.json +1 -1
- package/schemas/events/message-failed-v1.schema.json +1 -1
- package/schemas/events/message-provider-accepted-v1.schema.json +1 -1
- package/schemas/events/subscription-activated-v1.schema.json +1 -1
- package/schemas/events/subscription-revoked-v1.schema.json +1 -1
- package/schemas/events/whooshbang-event-v1.schema.json +1 -1
- package/schemas/fixture-index.schema.json +1 -1
- package/schemas/interaction-machine-scenario.schema.json +1 -1
- package/schemas/interaction-v1.schema.json +2 -2
- package/schemas/machine-v1.schema.json +1 -1
- package/schemas/provider-capabilities-v1.schema.json +1 -1
- package/schemas/webhooks/webhook-delivery-case-v1.schema.json +1 -1
- package/schemas/webhooks/webhook-signing-vector-v1.schema.json +1 -1
- package/schemas/whooshbang-v1.schema.json +78 -17
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"openapi": "3.1.1",
|
|
3
3
|
"info": {
|
|
4
4
|
"title": "WhooshBang API",
|
|
5
|
-
"version": "
|
|
5
|
+
"version": "4.0.0",
|
|
6
6
|
"description": "The V1 contract for human organization/project administration, project-scoped\nsubscription links, and asynchronous text messages. A Clerk session selects\none organization for administration. A project credential selects one organization,\nproject, and `test` or `live` environment for product operations; request\nbodies cannot override either authenticated scope.\n\nA person's OAuth grant selects one organization and carries scopes, but no\nproject. It names the project and environment it acts in through the URL\npath, on the environment-scoped form of each operation; the service checks\nthat path against the granting person's membership on every call. The flat\nforms remain credential-only and are unchanged.\n\nResource identifiers are opaque and are not authorization. Reads outside the\ncredential scope return the same `404` shape as absent resources. Provider\ncredentials, raw Telegram identity, and protected provider responses are\nnever part of this API.\n",
|
|
7
7
|
"termsOfService": "https://flowxo.com/terms",
|
|
8
8
|
"contact": {
|
|
@@ -12443,6 +12443,7 @@
|
|
|
12443
12443
|
"dispatch_pending",
|
|
12444
12444
|
"queued",
|
|
12445
12445
|
"sending",
|
|
12446
|
+
"intake_pending",
|
|
12446
12447
|
"provider_accepted",
|
|
12447
12448
|
"retry_wait",
|
|
12448
12449
|
"terminal_failed",
|
|
@@ -12556,6 +12557,7 @@
|
|
|
12556
12557
|
"accepted",
|
|
12557
12558
|
"queued",
|
|
12558
12559
|
"attempt_started",
|
|
12560
|
+
"attempt_intake_pending",
|
|
12559
12561
|
"attempt_sent",
|
|
12560
12562
|
"attempt_retry_scheduled",
|
|
12561
12563
|
"attempt_could_not_send",
|
|
@@ -17165,6 +17167,7 @@
|
|
|
17165
17167
|
"dispatch_pending",
|
|
17166
17168
|
"queued",
|
|
17167
17169
|
"sending",
|
|
17170
|
+
"intake_pending",
|
|
17168
17171
|
"provider_accepted",
|
|
17169
17172
|
"cancelled",
|
|
17170
17173
|
"expired"
|
|
@@ -17234,6 +17237,32 @@
|
|
|
17234
17237
|
}
|
|
17235
17238
|
}
|
|
17236
17239
|
},
|
|
17240
|
+
{
|
|
17241
|
+
"if": {
|
|
17242
|
+
"type": "object",
|
|
17243
|
+
"properties": { "state": { "const": "intake_pending" } },
|
|
17244
|
+
"required": ["state"]
|
|
17245
|
+
},
|
|
17246
|
+
"then": {
|
|
17247
|
+
"type": "object",
|
|
17248
|
+
"properties": {
|
|
17249
|
+
"delivery": {
|
|
17250
|
+
"allOf": [
|
|
17251
|
+
{ "$ref": "#/components/schemas/DeliveryAttemptSummary" },
|
|
17252
|
+
{
|
|
17253
|
+
"type": "object",
|
|
17254
|
+
"properties": {
|
|
17255
|
+
"attempt_count": { "type": "integer", "minimum": 1 },
|
|
17256
|
+
"highest_proven_provider_state": { "const": "none" },
|
|
17257
|
+
"retry_scheduled": { "const": false },
|
|
17258
|
+
"classified_error": false
|
|
17259
|
+
}
|
|
17260
|
+
}
|
|
17261
|
+
]
|
|
17262
|
+
}
|
|
17263
|
+
}
|
|
17264
|
+
}
|
|
17265
|
+
},
|
|
17237
17266
|
{
|
|
17238
17267
|
"if": {
|
|
17239
17268
|
"type": "object",
|
|
@@ -17391,7 +17420,12 @@
|
|
|
17391
17420
|
"type": "object",
|
|
17392
17421
|
"properties": {
|
|
17393
17422
|
"state": {
|
|
17394
|
-
"enum": [
|
|
17423
|
+
"enum": [
|
|
17424
|
+
"sending",
|
|
17425
|
+
"intake_pending",
|
|
17426
|
+
"provider_accepted",
|
|
17427
|
+
"outcome_unknown"
|
|
17428
|
+
]
|
|
17395
17429
|
},
|
|
17396
17430
|
"cancellation_effective": { "type": "boolean" }
|
|
17397
17431
|
},
|
|
@@ -18419,6 +18453,10 @@
|
|
|
18419
18453
|
"type": "object",
|
|
18420
18454
|
"required": ["items", "total"],
|
|
18421
18455
|
"properties": {
|
|
18456
|
+
"managed_domain_available": {
|
|
18457
|
+
"type": "boolean",
|
|
18458
|
+
"description": "Whether this deployment is configured to offer service-managed custom-domain setup. False is a deployment capability, not a domain readiness verdict."
|
|
18459
|
+
},
|
|
18422
18460
|
"items": {
|
|
18423
18461
|
"type": "array",
|
|
18424
18462
|
"maxItems": 100,
|
|
@@ -18486,20 +18524,37 @@
|
|
|
18486
18524
|
"additionalProperties": false
|
|
18487
18525
|
},
|
|
18488
18526
|
"CreateEmailDomainRequest": {
|
|
18489
|
-
"
|
|
18490
|
-
"
|
|
18491
|
-
|
|
18492
|
-
|
|
18493
|
-
|
|
18494
|
-
"
|
|
18527
|
+
"description": "Creates or safely adopts an account-owned domain. Omit backend and installation_id for the default FlowXO Mail service. An existing legacy OAuth installation may still be selected by id.",
|
|
18528
|
+
"oneOf": [
|
|
18529
|
+
{
|
|
18530
|
+
"type": "object",
|
|
18531
|
+
"required": ["installation_id", "domain"],
|
|
18532
|
+
"properties": {
|
|
18533
|
+
"installation_id": {
|
|
18534
|
+
"$ref": "#/components/schemas/OpaqueIdentifier"
|
|
18535
|
+
},
|
|
18536
|
+
"domain": { "$ref": "#/components/schemas/EmailDomainName" },
|
|
18537
|
+
"tls": {
|
|
18538
|
+
"enum": ["opportunistic", "enforced"],
|
|
18539
|
+
"default": "opportunistic"
|
|
18540
|
+
}
|
|
18541
|
+
},
|
|
18542
|
+
"additionalProperties": false
|
|
18495
18543
|
},
|
|
18496
|
-
|
|
18497
|
-
|
|
18498
|
-
"
|
|
18499
|
-
"
|
|
18544
|
+
{
|
|
18545
|
+
"type": "object",
|
|
18546
|
+
"required": ["domain"],
|
|
18547
|
+
"properties": {
|
|
18548
|
+
"backend": { "const": "flowxo_mail" },
|
|
18549
|
+
"domain": { "$ref": "#/components/schemas/EmailDomainName" },
|
|
18550
|
+
"tls": {
|
|
18551
|
+
"enum": ["opportunistic", "enforced"],
|
|
18552
|
+
"default": "opportunistic"
|
|
18553
|
+
}
|
|
18554
|
+
},
|
|
18555
|
+
"additionalProperties": false
|
|
18500
18556
|
}
|
|
18501
|
-
|
|
18502
|
-
"additionalProperties": false
|
|
18557
|
+
]
|
|
18503
18558
|
},
|
|
18504
18559
|
"CreateEmailBindingImportRequest": {
|
|
18505
18560
|
"type": "object",
|
|
@@ -20902,7 +20957,7 @@
|
|
|
20902
20957
|
"additionalProperties": false
|
|
20903
20958
|
},
|
|
20904
20959
|
"EmailDnsRecord": {
|
|
20905
|
-
"description": "One exact neutral DNS record. `name`
|
|
20960
|
+
"description": "One exact neutral DNS record. `name` and `value` are preserved exactly as supplied; a record name may be relative to the registrable domain or a full hostname. DNS consoles differ in whether they append the zone automatically.",
|
|
20906
20961
|
"oneOf": [
|
|
20907
20962
|
{
|
|
20908
20963
|
"type": "object",
|
|
@@ -21202,7 +21257,7 @@
|
|
|
21202
21257
|
"binding_id": { "$ref": "#/components/schemas/OpaqueIdentifier-2" },
|
|
21203
21258
|
"channel": {
|
|
21204
21259
|
"type": "string",
|
|
21205
|
-
"enum": ["telegram"],
|
|
21260
|
+
"enum": ["telegram", "email"],
|
|
21206
21261
|
"description": "Which channel the person answered on. An enum rather than a fixed value, so that a second channel adds a member instead of changing the type every generated client holds. The vocabulary grows additively; a consumer that meets a member it does not know should treat the answer as valid and the channel as unfamiliar rather than refusing it."
|
|
21207
21262
|
},
|
|
21208
21263
|
"conversation_kind": {
|
|
@@ -22126,7 +22181,7 @@
|
|
|
22126
22181
|
"provider-capabilities-v1.schema": {
|
|
22127
22182
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
22128
22183
|
"$id": "https://whooshbang.flowxo.com/schemas/provider-capabilities-v1.schema.json",
|
|
22129
|
-
"x-contract-version": "
|
|
22184
|
+
"x-contract-version": "4.0.0",
|
|
22130
22185
|
"title": "ProviderCapabilitiesV1",
|
|
22131
22186
|
"description": "Provider-neutral, renderer-facing delivery and interaction capabilities with explicit degradation.",
|
|
22132
22187
|
"type": "object",
|
|
@@ -22928,5 +22983,5 @@
|
|
|
22928
22983
|
}
|
|
22929
22984
|
}
|
|
22930
22985
|
},
|
|
22931
|
-
"x-contract-version": "
|
|
22986
|
+
"x-contract-version": "4.0.0"
|
|
22932
22987
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
openapi: 3.1.1
|
|
2
2
|
jsonSchemaDialect: https://json-schema.org/draft/2020-12/schema
|
|
3
3
|
# whooshbang:public-origin production api https://api.whooshbang.com
|
|
4
|
-
x-contract-version:
|
|
4
|
+
x-contract-version: 4.0.0
|
|
5
5
|
info:
|
|
6
6
|
title: WhooshBang API
|
|
7
|
-
version:
|
|
7
|
+
version: 4.0.0
|
|
8
8
|
description: |
|
|
9
9
|
The V1 contract for human organization/project administration, project-scoped
|
|
10
10
|
subscription links, and asynchronous text messages. A Clerk session selects
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://whooshbang.flowxo.com/schemas/core-scenario.schema.json",
|
|
4
|
-
"x-contract-version": "
|
|
4
|
+
"x-contract-version": "4.0.0",
|
|
5
5
|
"title": "CoreContractScenario",
|
|
6
6
|
"description": "A deterministic C0-02 semantic, state, idempotency, or isolation scenario.",
|
|
7
7
|
"type": "object",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://whooshbang.flowxo.com/schemas/events/agent-binding-degraded-v1.schema.json",
|
|
4
|
-
"x-contract-version": "
|
|
4
|
+
"x-contract-version": "4.0.0",
|
|
5
5
|
"title": "AgentBindingDegradedEventV1",
|
|
6
6
|
"description": "An agent binding entered a provider-neutral degraded state.",
|
|
7
7
|
"$ref": "whooshbang-event-v1.schema.json#/$defs/AgentBindingDegradedEvent"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://whooshbang.flowxo.com/schemas/events/interaction-expired-v1.schema.json",
|
|
4
|
-
"x-contract-version": "
|
|
4
|
+
"x-contract-version": "4.0.0",
|
|
5
5
|
"title": "InteractionExpiredEventV1",
|
|
6
6
|
"description": "An interaction reached its terminal expiry without a valid answer.",
|
|
7
7
|
"$ref": "whooshbang-event-v1.schema.json#/$defs/InteractionExpiredEvent"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://whooshbang.flowxo.com/schemas/events/interaction-received-v1.schema.json",
|
|
4
|
-
"x-contract-version": "
|
|
4
|
+
"x-contract-version": "4.0.0",
|
|
5
5
|
"title": "InteractionReceivedEventV1",
|
|
6
6
|
"description": "One authenticated, provider-neutral interaction answer was received.",
|
|
7
7
|
"$ref": "whooshbang-event-v1.schema.json#/$defs/InteractionReceivedEvent"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://whooshbang.flowxo.com/schemas/events/message-delivered-v1.schema.json",
|
|
4
|
-
"x-contract-version": "
|
|
4
|
+
"x-contract-version": "4.0.0",
|
|
5
5
|
"title": "MessageDeliveredEventV1",
|
|
6
6
|
"description": "A provider supplied trustworthy evidence that a message was delivered.",
|
|
7
7
|
"$ref": "whooshbang-event-v1.schema.json#/$defs/MessageDeliveredEvent"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://whooshbang.flowxo.com/schemas/events/message-expired-v1.schema.json",
|
|
4
|
-
"x-contract-version": "
|
|
4
|
+
"x-contract-version": "4.0.0",
|
|
5
5
|
"title": "MessageExpiredEventV1",
|
|
6
6
|
"description": "A message expired before reaching a later delivery state.",
|
|
7
7
|
"$ref": "whooshbang-event-v1.schema.json#/$defs/MessageExpiredEvent"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://whooshbang.flowxo.com/schemas/events/message-failed-v1.schema.json",
|
|
4
|
-
"x-contract-version": "
|
|
4
|
+
"x-contract-version": "4.0.0",
|
|
5
5
|
"title": "MessageFailedEventV1",
|
|
6
6
|
"description": "A message reached a classified terminal failure.",
|
|
7
7
|
"$ref": "whooshbang-event-v1.schema.json#/$defs/MessageFailedEvent"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://whooshbang.flowxo.com/schemas/events/message-provider-accepted-v1.schema.json",
|
|
4
|
-
"x-contract-version": "
|
|
4
|
+
"x-contract-version": "4.0.0",
|
|
5
5
|
"title": "MessageProviderAcceptedEventV1",
|
|
6
6
|
"description": "The provider accepted a message without implying delivery.",
|
|
7
7
|
"$ref": "whooshbang-event-v1.schema.json#/$defs/MessageProviderAcceptedEvent"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://whooshbang.flowxo.com/schemas/events/subscription-activated-v1.schema.json",
|
|
4
|
-
"x-contract-version": "
|
|
4
|
+
"x-contract-version": "4.0.0",
|
|
5
5
|
"title": "SubscriptionActivatedEventV1",
|
|
6
6
|
"description": "A subscription became active with a safe public channel binding.",
|
|
7
7
|
"$ref": "whooshbang-event-v1.schema.json#/$defs/SubscriptionActivatedEvent"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://whooshbang.flowxo.com/schemas/events/subscription-revoked-v1.schema.json",
|
|
4
|
-
"x-contract-version": "
|
|
4
|
+
"x-contract-version": "4.0.0",
|
|
5
5
|
"title": "SubscriptionRevokedEventV1",
|
|
6
6
|
"description": "A subscription and its safe public channel binding were revoked.",
|
|
7
7
|
"$ref": "whooshbang-event-v1.schema.json#/$defs/SubscriptionRevokedEvent"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://whooshbang.flowxo.com/schemas/events/whooshbang-event-v1.schema.json",
|
|
4
|
-
"x-contract-version": "
|
|
4
|
+
"x-contract-version": "4.0.0",
|
|
5
5
|
"title": "WhooshBangEventV1ContractDocument",
|
|
6
6
|
"description": "Strict public customer-event envelope and initial WhooshBang event union.",
|
|
7
7
|
"oneOf": [
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://whooshbang.flowxo.com/schemas/fixture-index.schema.json",
|
|
4
|
-
"x-contract-version": "
|
|
4
|
+
"x-contract-version": "4.0.0",
|
|
5
5
|
"title": "CoreFixtureIndex",
|
|
6
6
|
"description": "The machine-readable index of deterministic C0-02 through C0-04 golden fixtures.",
|
|
7
7
|
"type": "object",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://whooshbang.flowxo.com/schemas/interaction-machine-scenario.schema.json",
|
|
4
|
-
"x-contract-version": "
|
|
4
|
+
"x-contract-version": "4.0.0",
|
|
5
5
|
"title": "InteractionMachineScenario",
|
|
6
6
|
"description": "A deterministic C0-03 interaction, credential, authorization, polling, acknowledgement, or quarantine scenario.",
|
|
7
7
|
"type": "object",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://whooshbang.flowxo.com/schemas/interaction-v1.schema.json",
|
|
4
|
-
"x-contract-version": "
|
|
4
|
+
"x-contract-version": "4.0.0",
|
|
5
5
|
"title": "InteractionV1ContractDocument",
|
|
6
6
|
"description": "Provider-neutral confirm, single-select, input, lifecycle, callback-token, and authenticated answer-event contracts.",
|
|
7
7
|
"$defs": {
|
|
@@ -369,7 +369,7 @@
|
|
|
369
369
|
},
|
|
370
370
|
"channel": {
|
|
371
371
|
"type": "string",
|
|
372
|
-
"enum": ["telegram"],
|
|
372
|
+
"enum": ["telegram", "email"],
|
|
373
373
|
"description": "Which channel the person answered on. An enum rather than a fixed value, so that a second channel adds a member instead of changing the type every generated client holds. The vocabulary grows additively; a consumer that meets a member it does not know should treat the answer as valid and the channel as unfamiliar rather than refusing it."
|
|
374
374
|
},
|
|
375
375
|
"conversation_kind": {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://whooshbang.flowxo.com/schemas/machine-v1.schema.json",
|
|
4
|
-
"x-contract-version": "
|
|
4
|
+
"x-contract-version": "4.0.0",
|
|
5
5
|
"title": "MachineV1ContractDocument",
|
|
6
6
|
"description": "Machine-client administration, locally generated credential metadata, durable long-poll, and contiguous acknowledgement contracts.",
|
|
7
7
|
"oneOf": [
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://whooshbang.flowxo.com/schemas/provider-capabilities-v1.schema.json",
|
|
4
|
-
"x-contract-version": "
|
|
4
|
+
"x-contract-version": "4.0.0",
|
|
5
5
|
"title": "ProviderCapabilitiesV1",
|
|
6
6
|
"description": "Provider-neutral, renderer-facing delivery and interaction capabilities with explicit degradation.",
|
|
7
7
|
"type": "object",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://whooshbang.flowxo.com/schemas/webhooks/webhook-delivery-case-v1.schema.json",
|
|
4
|
-
"x-contract-version": "
|
|
4
|
+
"x-contract-version": "4.0.0",
|
|
5
5
|
"title": "WebhookDeliveryCaseSetV1",
|
|
6
6
|
"description": "Deterministic customer webhook response classification, Retry-After, and delivery-bound cases.",
|
|
7
7
|
"type": "object",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://whooshbang.flowxo.com/schemas/webhooks/webhook-signing-vector-v1.schema.json",
|
|
4
|
-
"x-contract-version": "
|
|
4
|
+
"x-contract-version": "4.0.0",
|
|
5
5
|
"title": "WebhookSigningVectorSetV1",
|
|
6
6
|
"description": "Language-neutral deterministic Standard Webhooks V1 verification vectors. All key material is public synthetic test data and must never be used outside fixtures.",
|
|
7
7
|
"type": "object",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://whooshbang.flowxo.com/schemas/whooshbang-v1.schema.json",
|
|
4
|
-
"x-contract-version": "
|
|
4
|
+
"x-contract-version": "4.0.0",
|
|
5
5
|
"title": "WhooshBangV1ContractDocument",
|
|
6
6
|
"description": "Public request, resource, summary, and Problem Details models for the WhooshBang V1 REST API.",
|
|
7
7
|
"anyOf": [
|
|
@@ -5783,6 +5783,7 @@
|
|
|
5783
5783
|
"dispatch_pending",
|
|
5784
5784
|
"queued",
|
|
5785
5785
|
"sending",
|
|
5786
|
+
"intake_pending",
|
|
5786
5787
|
"provider_accepted",
|
|
5787
5788
|
"retry_wait",
|
|
5788
5789
|
"terminal_failed",
|
|
@@ -5984,6 +5985,7 @@
|
|
|
5984
5985
|
"dispatch_pending",
|
|
5985
5986
|
"queued",
|
|
5986
5987
|
"sending",
|
|
5988
|
+
"intake_pending",
|
|
5987
5989
|
"provider_accepted",
|
|
5988
5990
|
"cancelled",
|
|
5989
5991
|
"expired"
|
|
@@ -6077,6 +6079,36 @@
|
|
|
6077
6079
|
}
|
|
6078
6080
|
}
|
|
6079
6081
|
},
|
|
6082
|
+
{
|
|
6083
|
+
"if": {
|
|
6084
|
+
"type": "object",
|
|
6085
|
+
"properties": {
|
|
6086
|
+
"state": {
|
|
6087
|
+
"const": "intake_pending"
|
|
6088
|
+
}
|
|
6089
|
+
},
|
|
6090
|
+
"required": ["state"]
|
|
6091
|
+
},
|
|
6092
|
+
"then": {
|
|
6093
|
+
"type": "object",
|
|
6094
|
+
"properties": {
|
|
6095
|
+
"delivery": {
|
|
6096
|
+
"allOf": [
|
|
6097
|
+
{ "$ref": "#/$defs/DeliveryAttemptSummary" },
|
|
6098
|
+
{
|
|
6099
|
+
"type": "object",
|
|
6100
|
+
"properties": {
|
|
6101
|
+
"attempt_count": { "type": "integer", "minimum": 1 },
|
|
6102
|
+
"highest_proven_provider_state": { "const": "none" },
|
|
6103
|
+
"retry_scheduled": { "const": false },
|
|
6104
|
+
"classified_error": false
|
|
6105
|
+
}
|
|
6106
|
+
}
|
|
6107
|
+
]
|
|
6108
|
+
}
|
|
6109
|
+
}
|
|
6110
|
+
}
|
|
6111
|
+
},
|
|
6080
6112
|
{
|
|
6081
6113
|
"if": {
|
|
6082
6114
|
"type": "object",
|
|
@@ -6276,7 +6308,12 @@
|
|
|
6276
6308
|
"type": "object",
|
|
6277
6309
|
"properties": {
|
|
6278
6310
|
"state": {
|
|
6279
|
-
"enum": [
|
|
6311
|
+
"enum": [
|
|
6312
|
+
"sending",
|
|
6313
|
+
"intake_pending",
|
|
6314
|
+
"provider_accepted",
|
|
6315
|
+
"outcome_unknown"
|
|
6316
|
+
]
|
|
6280
6317
|
},
|
|
6281
6318
|
"cancellation_effective": {
|
|
6282
6319
|
"type": "boolean"
|
|
@@ -8016,7 +8053,7 @@
|
|
|
8016
8053
|
"additionalProperties": false
|
|
8017
8054
|
},
|
|
8018
8055
|
"EmailDnsRecord": {
|
|
8019
|
-
"description": "One exact neutral DNS record. `name`
|
|
8056
|
+
"description": "One exact neutral DNS record. `name` and `value` are preserved exactly as supplied; a record name may be relative to the registrable domain or a full hostname. DNS consoles differ in whether they append the zone automatically.",
|
|
8020
8057
|
"oneOf": [
|
|
8021
8058
|
{
|
|
8022
8059
|
"type": "object",
|
|
@@ -8304,6 +8341,10 @@
|
|
|
8304
8341
|
"type": "object",
|
|
8305
8342
|
"required": ["items", "total"],
|
|
8306
8343
|
"properties": {
|
|
8344
|
+
"managed_domain_available": {
|
|
8345
|
+
"type": "boolean",
|
|
8346
|
+
"description": "Whether this deployment is configured to offer service-managed custom-domain setup. False is a deployment capability, not a domain readiness verdict."
|
|
8347
|
+
},
|
|
8307
8348
|
"items": {
|
|
8308
8349
|
"type": "array",
|
|
8309
8350
|
"maxItems": 100,
|
|
@@ -8330,22 +8371,41 @@
|
|
|
8330
8371
|
"additionalProperties": false
|
|
8331
8372
|
},
|
|
8332
8373
|
"CreateEmailDomainRequest": {
|
|
8333
|
-
"
|
|
8334
|
-
"
|
|
8335
|
-
|
|
8336
|
-
|
|
8337
|
-
|
|
8338
|
-
"
|
|
8339
|
-
|
|
8340
|
-
|
|
8341
|
-
|
|
8374
|
+
"description": "Creates or safely adopts an account-owned domain. Omit backend and installation_id for the default FlowXO Mail service. An existing legacy OAuth installation may still be selected by id.",
|
|
8375
|
+
"oneOf": [
|
|
8376
|
+
{
|
|
8377
|
+
"type": "object",
|
|
8378
|
+
"required": ["installation_id", "domain"],
|
|
8379
|
+
"properties": {
|
|
8380
|
+
"installation_id": {
|
|
8381
|
+
"$ref": "#/$defs/OpaqueIdentifier"
|
|
8382
|
+
},
|
|
8383
|
+
"domain": {
|
|
8384
|
+
"$ref": "#/$defs/EmailDomainName"
|
|
8385
|
+
},
|
|
8386
|
+
"tls": {
|
|
8387
|
+
"enum": ["opportunistic", "enforced"],
|
|
8388
|
+
"default": "opportunistic"
|
|
8389
|
+
}
|
|
8390
|
+
},
|
|
8391
|
+
"additionalProperties": false
|
|
8342
8392
|
},
|
|
8343
|
-
|
|
8344
|
-
"
|
|
8345
|
-
"
|
|
8393
|
+
{
|
|
8394
|
+
"type": "object",
|
|
8395
|
+
"required": ["domain"],
|
|
8396
|
+
"properties": {
|
|
8397
|
+
"backend": { "const": "flowxo_mail" },
|
|
8398
|
+
"domain": {
|
|
8399
|
+
"$ref": "#/$defs/EmailDomainName"
|
|
8400
|
+
},
|
|
8401
|
+
"tls": {
|
|
8402
|
+
"enum": ["opportunistic", "enforced"],
|
|
8403
|
+
"default": "opportunistic"
|
|
8404
|
+
}
|
|
8405
|
+
},
|
|
8406
|
+
"additionalProperties": false
|
|
8346
8407
|
}
|
|
8347
|
-
|
|
8348
|
-
"additionalProperties": false
|
|
8408
|
+
]
|
|
8349
8409
|
},
|
|
8350
8410
|
"EmailBindingImportRow": {
|
|
8351
8411
|
"type": "object",
|
|
@@ -10386,6 +10446,7 @@
|
|
|
10386
10446
|
"accepted",
|
|
10387
10447
|
"queued",
|
|
10388
10448
|
"attempt_started",
|
|
10449
|
+
"attempt_intake_pending",
|
|
10389
10450
|
"attempt_sent",
|
|
10390
10451
|
"attempt_retry_scheduled",
|
|
10391
10452
|
"attempt_could_not_send",
|