@whooshbang/contracts 3.0.0 → 3.2.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 +13 -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/validators-standalone.d.ts +582 -491
- package/dist/generated/validators-standalone.js +10298 -5133
- package/dist/generated/validators-standalone.js.map +1 -1
- package/dist/generated/validators.d.ts +8 -1
- package/dist/generated/validators.js +8 -1
- package/dist/generated/validators.js.map +1 -1
- package/dist/generated/whooshbang-v1.d.ts +426 -3
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/input-defaults.d.ts +1 -1
- package/dist/input-defaults.js.map +1 -1
- 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 +599 -16
- package/openapi/whooshbang-v1.yaml +286 -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 +1 -1
- 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 +294 -9
|
@@ -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": "3.
|
|
4
|
+
"x-contract-version": "3.2.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": [
|
|
@@ -110,6 +110,27 @@
|
|
|
110
110
|
{
|
|
111
111
|
"$ref": "#/$defs/CreateMessageRequest"
|
|
112
112
|
},
|
|
113
|
+
{
|
|
114
|
+
"$ref": "#/$defs/MessageCategory"
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"$ref": "#/$defs/MessageCategoryCollection"
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"$ref": "#/$defs/CreateMessageCategoryRequest"
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"$ref": "#/$defs/UpdateMessageCategoryRequest"
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"$ref": "#/$defs/SubscriberCategoryPreference"
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"$ref": "#/$defs/SubscriberCategoryPreferenceCollection"
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"$ref": "#/$defs/SetSubscriberCategoryPreferenceRequest"
|
|
133
|
+
},
|
|
113
134
|
{
|
|
114
135
|
"$ref": "#/$defs/Message"
|
|
115
136
|
},
|
|
@@ -3764,6 +3785,11 @@
|
|
|
3764
3785
|
"maxLength": 254,
|
|
3765
3786
|
"description": "What to call this subscriber: `display_name` when your application sent one, otherwise the name their channel gave when they connected (a Telegram username, a Slack display name, an email address), which is kept only on the standard privacy setting. Absent when there is neither; show `subscriber_id` then."
|
|
3766
3787
|
},
|
|
3788
|
+
"team_member": {
|
|
3789
|
+
"type": "boolean",
|
|
3790
|
+
"const": true,
|
|
3791
|
+
"description": "Present when this subscriber is someone on your WhooshBang team, messaged through the operators group. `name` is then their WhooshBang account name. They manage their own channels in notification preferences, so the subscriber can be read but not renamed, paused or erased."
|
|
3792
|
+
},
|
|
3767
3793
|
"locale": {
|
|
3768
3794
|
"$ref": "#/$defs/RecipientLanguage"
|
|
3769
3795
|
},
|
|
@@ -4395,6 +4421,10 @@
|
|
|
4395
4421
|
"enum": ["service", "marketing"],
|
|
4396
4422
|
"default": "service",
|
|
4397
4423
|
"description": "Omitted means service. Marketing refuses service-only bindings before charging and at every delayed dispatch."
|
|
4424
|
+
},
|
|
4425
|
+
"category_key": {
|
|
4426
|
+
"$ref": "#/$defs/MessageCategoryKey",
|
|
4427
|
+
"description": "Optional project category. Omitted service sends use Updates; omitted marketing sends use Marketing."
|
|
4398
4428
|
}
|
|
4399
4429
|
},
|
|
4400
4430
|
"additionalProperties": false,
|
|
@@ -5410,6 +5440,136 @@
|
|
|
5410
5440
|
"additionalProperties": false,
|
|
5411
5441
|
"description": "Exact signed request bytes. A verifier echoes these exact bytes with valid webhook headers to prove it possesses the endpoint secret."
|
|
5412
5442
|
},
|
|
5443
|
+
"MessageCategoryKey": {
|
|
5444
|
+
"type": "string",
|
|
5445
|
+
"pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$",
|
|
5446
|
+
"minLength": 1,
|
|
5447
|
+
"maxLength": 63
|
|
5448
|
+
},
|
|
5449
|
+
"MessageCategorySnapshot": {
|
|
5450
|
+
"type": "object",
|
|
5451
|
+
"description": "The category settings recorded when the message was accepted.",
|
|
5452
|
+
"required": ["key", "name", "purpose", "level", "can_turn_off"],
|
|
5453
|
+
"properties": {
|
|
5454
|
+
"key": { "$ref": "#/$defs/MessageCategoryKey" },
|
|
5455
|
+
"name": { "type": "string", "minLength": 1, "maxLength": 100 },
|
|
5456
|
+
"purpose": { "enum": ["service", "marketing"] },
|
|
5457
|
+
"level": { "enum": ["low", "normal", "high", "critical"] },
|
|
5458
|
+
"can_turn_off": { "type": "boolean" }
|
|
5459
|
+
},
|
|
5460
|
+
"additionalProperties": false
|
|
5461
|
+
},
|
|
5462
|
+
"MessageCategory": {
|
|
5463
|
+
"type": "object",
|
|
5464
|
+
"description": "One project-owned category. Its key stays stable when settings change.",
|
|
5465
|
+
"required": [
|
|
5466
|
+
"key",
|
|
5467
|
+
"name",
|
|
5468
|
+
"description",
|
|
5469
|
+
"purpose",
|
|
5470
|
+
"level",
|
|
5471
|
+
"can_turn_off",
|
|
5472
|
+
"is_default"
|
|
5473
|
+
],
|
|
5474
|
+
"properties": {
|
|
5475
|
+
"key": { "$ref": "#/$defs/MessageCategoryKey" },
|
|
5476
|
+
"name": { "type": "string", "minLength": 1, "maxLength": 100 },
|
|
5477
|
+
"description": { "type": "string", "minLength": 1, "maxLength": 160 },
|
|
5478
|
+
"purpose": { "enum": ["service", "marketing"] },
|
|
5479
|
+
"level": { "enum": ["low", "normal", "high", "critical"] },
|
|
5480
|
+
"can_turn_off": { "type": "boolean" },
|
|
5481
|
+
"is_default": { "type": "boolean" }
|
|
5482
|
+
},
|
|
5483
|
+
"additionalProperties": false
|
|
5484
|
+
},
|
|
5485
|
+
"MessageCategoryCollection": {
|
|
5486
|
+
"type": "object",
|
|
5487
|
+
"required": ["items", "total"],
|
|
5488
|
+
"properties": {
|
|
5489
|
+
"items": {
|
|
5490
|
+
"type": "array",
|
|
5491
|
+
"maxItems": 100,
|
|
5492
|
+
"items": { "$ref": "#/$defs/MessageCategory" }
|
|
5493
|
+
},
|
|
5494
|
+
"total": { "$ref": "#/$defs/ListTotal" }
|
|
5495
|
+
},
|
|
5496
|
+
"additionalProperties": false
|
|
5497
|
+
},
|
|
5498
|
+
"CreateMessageCategoryRequest": {
|
|
5499
|
+
"type": "object",
|
|
5500
|
+
"required": [
|
|
5501
|
+
"key",
|
|
5502
|
+
"name",
|
|
5503
|
+
"description",
|
|
5504
|
+
"purpose",
|
|
5505
|
+
"level",
|
|
5506
|
+
"can_turn_off"
|
|
5507
|
+
],
|
|
5508
|
+
"properties": {
|
|
5509
|
+
"key": { "$ref": "#/$defs/MessageCategoryKey" },
|
|
5510
|
+
"name": { "type": "string", "minLength": 1, "maxLength": 100 },
|
|
5511
|
+
"description": { "type": "string", "minLength": 1, "maxLength": 160 },
|
|
5512
|
+
"purpose": { "enum": ["service", "marketing"] },
|
|
5513
|
+
"level": { "enum": ["low", "normal", "high", "critical"] },
|
|
5514
|
+
"can_turn_off": { "type": "boolean" }
|
|
5515
|
+
},
|
|
5516
|
+
"additionalProperties": false
|
|
5517
|
+
},
|
|
5518
|
+
"UpdateMessageCategoryRequest": {
|
|
5519
|
+
"type": "object",
|
|
5520
|
+
"minProperties": 1,
|
|
5521
|
+
"properties": {
|
|
5522
|
+
"name": { "type": "string", "minLength": 1, "maxLength": 100 },
|
|
5523
|
+
"description": { "type": "string", "minLength": 1, "maxLength": 160 },
|
|
5524
|
+
"purpose": { "enum": ["service", "marketing"] },
|
|
5525
|
+
"level": { "enum": ["low", "normal", "high", "critical"] },
|
|
5526
|
+
"can_turn_off": { "type": "boolean" }
|
|
5527
|
+
},
|
|
5528
|
+
"additionalProperties": false
|
|
5529
|
+
},
|
|
5530
|
+
"SubscriberCategoryPreference": {
|
|
5531
|
+
"type": "object",
|
|
5532
|
+
"required": [
|
|
5533
|
+
"key",
|
|
5534
|
+
"name",
|
|
5535
|
+
"description",
|
|
5536
|
+
"purpose",
|
|
5537
|
+
"level",
|
|
5538
|
+
"can_turn_off",
|
|
5539
|
+
"is_default",
|
|
5540
|
+
"enabled"
|
|
5541
|
+
],
|
|
5542
|
+
"properties": {
|
|
5543
|
+
"key": { "$ref": "#/$defs/MessageCategoryKey" },
|
|
5544
|
+
"name": { "type": "string", "minLength": 1, "maxLength": 100 },
|
|
5545
|
+
"description": { "type": "string", "minLength": 1, "maxLength": 160 },
|
|
5546
|
+
"purpose": { "enum": ["service", "marketing"] },
|
|
5547
|
+
"level": { "enum": ["low", "normal", "high", "critical"] },
|
|
5548
|
+
"can_turn_off": { "type": "boolean" },
|
|
5549
|
+
"is_default": { "type": "boolean" },
|
|
5550
|
+
"enabled": { "type": "boolean" }
|
|
5551
|
+
},
|
|
5552
|
+
"additionalProperties": false
|
|
5553
|
+
},
|
|
5554
|
+
"SubscriberCategoryPreferenceCollection": {
|
|
5555
|
+
"type": "object",
|
|
5556
|
+
"required": ["items", "total"],
|
|
5557
|
+
"properties": {
|
|
5558
|
+
"items": {
|
|
5559
|
+
"type": "array",
|
|
5560
|
+
"maxItems": 100,
|
|
5561
|
+
"items": { "$ref": "#/$defs/SubscriberCategoryPreference" }
|
|
5562
|
+
},
|
|
5563
|
+
"total": { "$ref": "#/$defs/ListTotal" }
|
|
5564
|
+
},
|
|
5565
|
+
"additionalProperties": false
|
|
5566
|
+
},
|
|
5567
|
+
"SetSubscriberCategoryPreferenceRequest": {
|
|
5568
|
+
"type": "object",
|
|
5569
|
+
"required": ["enabled"],
|
|
5570
|
+
"properties": { "enabled": { "type": "boolean" } },
|
|
5571
|
+
"additionalProperties": false
|
|
5572
|
+
},
|
|
5413
5573
|
"CreateMessageRequest": {
|
|
5414
5574
|
"type": "object",
|
|
5415
5575
|
"description": "Creates one logical message for one subscriber and one resolved channel binding.",
|
|
@@ -5467,6 +5627,10 @@
|
|
|
5467
5627
|
"enum": ["service", "marketing"],
|
|
5468
5628
|
"default": "service",
|
|
5469
5629
|
"description": "Omitted means service. Marketing refuses service-only bindings before charging and at every delayed dispatch."
|
|
5630
|
+
},
|
|
5631
|
+
"category_key": {
|
|
5632
|
+
"$ref": "#/$defs/MessageCategoryKey",
|
|
5633
|
+
"description": "Optional project category. Omitted service sends use Updates; omitted marketing sends use Marketing."
|
|
5470
5634
|
}
|
|
5471
5635
|
},
|
|
5472
5636
|
"allOf": [
|
|
@@ -5659,6 +5823,10 @@
|
|
|
5659
5823
|
"notifier_id": {
|
|
5660
5824
|
"$ref": "#/$defs/OpaqueIdentifier"
|
|
5661
5825
|
},
|
|
5826
|
+
"category": {
|
|
5827
|
+
"$ref": "#/$defs/MessageCategorySnapshot",
|
|
5828
|
+
"description": "Category as accepted. Absent on messages accepted before categories existed."
|
|
5829
|
+
},
|
|
5662
5830
|
"binding": {
|
|
5663
5831
|
"$ref": "#/$defs/BindingSummary"
|
|
5664
5832
|
},
|
|
@@ -5994,10 +6162,6 @@
|
|
|
5994
6162
|
"type": "object",
|
|
5995
6163
|
"required": ["classified_error"],
|
|
5996
6164
|
"properties": {
|
|
5997
|
-
"attempt_count": {
|
|
5998
|
-
"type": "integer",
|
|
5999
|
-
"minimum": 1
|
|
6000
|
-
},
|
|
6001
6165
|
"classified_error": {
|
|
6002
6166
|
"allOf": [
|
|
6003
6167
|
{
|
|
@@ -6009,7 +6173,8 @@
|
|
|
6009
6173
|
"code": {
|
|
6010
6174
|
"enum": [
|
|
6011
6175
|
"provider_terminal",
|
|
6012
|
-
"not_consented_for_marketing"
|
|
6176
|
+
"not_consented_for_marketing",
|
|
6177
|
+
"category_turned_off"
|
|
6013
6178
|
]
|
|
6014
6179
|
},
|
|
6015
6180
|
"retryable": {
|
|
@@ -6019,7 +6184,29 @@
|
|
|
6019
6184
|
}
|
|
6020
6185
|
]
|
|
6021
6186
|
}
|
|
6022
|
-
}
|
|
6187
|
+
},
|
|
6188
|
+
"allOf": [
|
|
6189
|
+
{
|
|
6190
|
+
"if": {
|
|
6191
|
+
"type": "object",
|
|
6192
|
+
"properties": {
|
|
6193
|
+
"classified_error": {
|
|
6194
|
+
"type": "object",
|
|
6195
|
+
"properties": {
|
|
6196
|
+
"code": { "const": "provider_terminal" }
|
|
6197
|
+
},
|
|
6198
|
+
"required": ["code"]
|
|
6199
|
+
}
|
|
6200
|
+
},
|
|
6201
|
+
"required": ["classified_error"]
|
|
6202
|
+
},
|
|
6203
|
+
"then": {
|
|
6204
|
+
"properties": {
|
|
6205
|
+
"attempt_count": { "type": "integer", "minimum": 1 }
|
|
6206
|
+
}
|
|
6207
|
+
}
|
|
6208
|
+
}
|
|
6209
|
+
]
|
|
6023
6210
|
}
|
|
6024
6211
|
]
|
|
6025
6212
|
}
|
|
@@ -6118,7 +6305,11 @@
|
|
|
6118
6305
|
"provider_terminal",
|
|
6119
6306
|
"provider_outcome_unknown",
|
|
6120
6307
|
"internal_error",
|
|
6121
|
-
"not_consented_for_marketing"
|
|
6308
|
+
"not_consented_for_marketing",
|
|
6309
|
+
"category_purpose_mismatch",
|
|
6310
|
+
"category_turned_off",
|
|
6311
|
+
"category_conflict",
|
|
6312
|
+
"category_not_found"
|
|
6122
6313
|
]
|
|
6123
6314
|
},
|
|
6124
6315
|
"ProblemFieldError": {
|
|
@@ -7098,6 +7289,54 @@
|
|
|
7098
7289
|
"const": false
|
|
7099
7290
|
}
|
|
7100
7291
|
}
|
|
7292
|
+
},
|
|
7293
|
+
{
|
|
7294
|
+
"type": "object",
|
|
7295
|
+
"properties": {
|
|
7296
|
+
"type": {
|
|
7297
|
+
"const": "https://whooshbang.flowxo.com/problems/category_not_found"
|
|
7298
|
+
},
|
|
7299
|
+
"title": { "const": "Message category not found" },
|
|
7300
|
+
"status": { "const": 404 },
|
|
7301
|
+
"code": { "const": "category_not_found" },
|
|
7302
|
+
"retryable": { "const": false }
|
|
7303
|
+
}
|
|
7304
|
+
},
|
|
7305
|
+
{
|
|
7306
|
+
"type": "object",
|
|
7307
|
+
"properties": {
|
|
7308
|
+
"type": {
|
|
7309
|
+
"const": "https://whooshbang.flowxo.com/problems/category_purpose_mismatch"
|
|
7310
|
+
},
|
|
7311
|
+
"title": { "const": "Purpose and category do not match" },
|
|
7312
|
+
"status": { "const": 422 },
|
|
7313
|
+
"code": { "const": "category_purpose_mismatch" },
|
|
7314
|
+
"retryable": { "const": false }
|
|
7315
|
+
}
|
|
7316
|
+
},
|
|
7317
|
+
{
|
|
7318
|
+
"type": "object",
|
|
7319
|
+
"properties": {
|
|
7320
|
+
"type": {
|
|
7321
|
+
"const": "https://whooshbang.flowxo.com/problems/category_turned_off"
|
|
7322
|
+
},
|
|
7323
|
+
"title": { "const": "Message category turned off" },
|
|
7324
|
+
"status": { "const": 422 },
|
|
7325
|
+
"code": { "const": "category_turned_off" },
|
|
7326
|
+
"retryable": { "const": false }
|
|
7327
|
+
}
|
|
7328
|
+
},
|
|
7329
|
+
{
|
|
7330
|
+
"type": "object",
|
|
7331
|
+
"properties": {
|
|
7332
|
+
"type": {
|
|
7333
|
+
"const": "https://whooshbang.flowxo.com/problems/category_conflict"
|
|
7334
|
+
},
|
|
7335
|
+
"title": { "const": "Message category conflict" },
|
|
7336
|
+
"status": { "const": 409 },
|
|
7337
|
+
"code": { "const": "category_conflict" },
|
|
7338
|
+
"retryable": { "const": false }
|
|
7339
|
+
}
|
|
7101
7340
|
}
|
|
7102
7341
|
],
|
|
7103
7342
|
"additionalProperties": false
|
|
@@ -9984,7 +10223,7 @@
|
|
|
9984
10223
|
},
|
|
9985
10224
|
"MessageListEntry": {
|
|
9986
10225
|
"type": "object",
|
|
9987
|
-
"description": "
|
|
10226
|
+
"description": "Accepted-message summary: a one-line snippet of what the message said, and no interaction answer.",
|
|
9988
10227
|
"required": [
|
|
9989
10228
|
"accepted_at",
|
|
9990
10229
|
"diagnostic_id",
|
|
@@ -10026,6 +10265,10 @@
|
|
|
10026
10265
|
"notifier_id": {
|
|
10027
10266
|
"$ref": "#/$defs/OpaqueIdentifier"
|
|
10028
10267
|
},
|
|
10268
|
+
"category": {
|
|
10269
|
+
"$ref": "#/$defs/MessageCategorySnapshot",
|
|
10270
|
+
"description": "Category as accepted. Absent on messages accepted before categories existed."
|
|
10271
|
+
},
|
|
10029
10272
|
"state": {
|
|
10030
10273
|
"$ref": "#/$defs/MessageState"
|
|
10031
10274
|
},
|
|
@@ -10055,6 +10298,16 @@
|
|
|
10055
10298
|
"classified_error": {
|
|
10056
10299
|
"$ref": "#/$defs/ClassifiedError"
|
|
10057
10300
|
},
|
|
10301
|
+
"content_snippet": {
|
|
10302
|
+
"type": "string",
|
|
10303
|
+
"minLength": 1,
|
|
10304
|
+
"maxLength": 121,
|
|
10305
|
+
"description": "The start of what the message said, on one line: its text, or the title of block content, cut to 120 characters with an ellipsis. Absent when `content_retained` is false."
|
|
10306
|
+
},
|
|
10307
|
+
"content_retained": {
|
|
10308
|
+
"type": "boolean",
|
|
10309
|
+
"description": "False once the message's content has been deleted at the end of its retention period (7 days, or 90 on paid plans, after it finished). The rest of the entry is kept."
|
|
10310
|
+
},
|
|
10058
10311
|
"channel": {
|
|
10059
10312
|
"$ref": "#/$defs/Channel"
|
|
10060
10313
|
}
|
|
@@ -11834,6 +12087,10 @@
|
|
|
11834
12087
|
"enum": ["service", "marketing"],
|
|
11835
12088
|
"default": "service",
|
|
11836
12089
|
"description": "Omitted means service. Marketing refuses service-only bindings before charging and at every delayed dispatch."
|
|
12090
|
+
},
|
|
12091
|
+
"category_key": {
|
|
12092
|
+
"$ref": "#/$defs/MessageCategoryKey",
|
|
12093
|
+
"description": "Optional project category. Omitted service sends use Updates; omitted marketing sends use Marketing."
|
|
11837
12094
|
}
|
|
11838
12095
|
},
|
|
11839
12096
|
"additionalProperties": false,
|
|
@@ -11952,6 +12209,25 @@
|
|
|
11952
12209
|
"settings": {
|
|
11953
12210
|
"$ref": "#/$defs/SubscriberChannelSettings"
|
|
11954
12211
|
},
|
|
12212
|
+
"accounts": {
|
|
12213
|
+
"type": "array",
|
|
12214
|
+
"maxItems": 10,
|
|
12215
|
+
"description": "Who each of your connected channels reaches, as the channel named you when you connected: a Telegram or Slack name and username, by binding. Kept only on the Standard privacy setting, so it is empty otherwise.",
|
|
12216
|
+
"items": {
|
|
12217
|
+
"type": "object",
|
|
12218
|
+
"required": ["binding_id"],
|
|
12219
|
+
"properties": {
|
|
12220
|
+
"binding_id": {
|
|
12221
|
+
"type": "string",
|
|
12222
|
+
"minLength": 1,
|
|
12223
|
+
"maxLength": 128
|
|
12224
|
+
},
|
|
12225
|
+
"name": { "type": "string", "minLength": 1, "maxLength": 254 },
|
|
12226
|
+
"username": { "type": "string", "minLength": 1, "maxLength": 80 }
|
|
12227
|
+
},
|
|
12228
|
+
"additionalProperties": false
|
|
12229
|
+
}
|
|
12230
|
+
},
|
|
11955
12231
|
"connections": {
|
|
11956
12232
|
"type": "array",
|
|
11957
12233
|
"items": {
|
|
@@ -12400,6 +12676,9 @@
|
|
|
12400
12676
|
"enum": ["service", "marketing"],
|
|
12401
12677
|
"default": "service",
|
|
12402
12678
|
"description": "Omitted means service. Marketing refuses service-only bindings before charging and at every delayed dispatch."
|
|
12679
|
+
},
|
|
12680
|
+
"category_key": {
|
|
12681
|
+
"$ref": "#/$defs/MessageCategoryKey"
|
|
12403
12682
|
}
|
|
12404
12683
|
},
|
|
12405
12684
|
"allOf": [
|
|
@@ -12455,6 +12734,9 @@
|
|
|
12455
12734
|
"enum": ["service", "marketing"],
|
|
12456
12735
|
"default": "service",
|
|
12457
12736
|
"description": "Omitted means service. Marketing refuses service-only bindings before charging and at every delayed dispatch."
|
|
12737
|
+
},
|
|
12738
|
+
"category_key": {
|
|
12739
|
+
"$ref": "#/$defs/MessageCategoryKey"
|
|
12458
12740
|
}
|
|
12459
12741
|
},
|
|
12460
12742
|
"additionalProperties": false
|
|
@@ -12491,6 +12773,9 @@
|
|
|
12491
12773
|
"enum": ["service", "marketing"],
|
|
12492
12774
|
"default": "service",
|
|
12493
12775
|
"description": "Omitted means service. Marketing refuses service-only bindings before charging and at every delayed dispatch."
|
|
12776
|
+
},
|
|
12777
|
+
"category_key": {
|
|
12778
|
+
"$ref": "#/$defs/MessageCategoryKey"
|
|
12494
12779
|
}
|
|
12495
12780
|
},
|
|
12496
12781
|
"additionalProperties": false
|