@whooshbang/contracts 3.1.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 +6 -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 +9022 -4354
- 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 +122 -2
- 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 +520 -15
- package/openapi/whooshbang-v1.yaml +251 -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 +259 -8
|
@@ -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
|
},
|
|
@@ -4400,6 +4421,10 @@
|
|
|
4400
4421
|
"enum": ["service", "marketing"],
|
|
4401
4422
|
"default": "service",
|
|
4402
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."
|
|
4403
4428
|
}
|
|
4404
4429
|
},
|
|
4405
4430
|
"additionalProperties": false,
|
|
@@ -5415,6 +5440,136 @@
|
|
|
5415
5440
|
"additionalProperties": false,
|
|
5416
5441
|
"description": "Exact signed request bytes. A verifier echoes these exact bytes with valid webhook headers to prove it possesses the endpoint secret."
|
|
5417
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
|
+
},
|
|
5418
5573
|
"CreateMessageRequest": {
|
|
5419
5574
|
"type": "object",
|
|
5420
5575
|
"description": "Creates one logical message for one subscriber and one resolved channel binding.",
|
|
@@ -5472,6 +5627,10 @@
|
|
|
5472
5627
|
"enum": ["service", "marketing"],
|
|
5473
5628
|
"default": "service",
|
|
5474
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."
|
|
5475
5634
|
}
|
|
5476
5635
|
},
|
|
5477
5636
|
"allOf": [
|
|
@@ -5664,6 +5823,10 @@
|
|
|
5664
5823
|
"notifier_id": {
|
|
5665
5824
|
"$ref": "#/$defs/OpaqueIdentifier"
|
|
5666
5825
|
},
|
|
5826
|
+
"category": {
|
|
5827
|
+
"$ref": "#/$defs/MessageCategorySnapshot",
|
|
5828
|
+
"description": "Category as accepted. Absent on messages accepted before categories existed."
|
|
5829
|
+
},
|
|
5667
5830
|
"binding": {
|
|
5668
5831
|
"$ref": "#/$defs/BindingSummary"
|
|
5669
5832
|
},
|
|
@@ -5999,10 +6162,6 @@
|
|
|
5999
6162
|
"type": "object",
|
|
6000
6163
|
"required": ["classified_error"],
|
|
6001
6164
|
"properties": {
|
|
6002
|
-
"attempt_count": {
|
|
6003
|
-
"type": "integer",
|
|
6004
|
-
"minimum": 1
|
|
6005
|
-
},
|
|
6006
6165
|
"classified_error": {
|
|
6007
6166
|
"allOf": [
|
|
6008
6167
|
{
|
|
@@ -6014,7 +6173,8 @@
|
|
|
6014
6173
|
"code": {
|
|
6015
6174
|
"enum": [
|
|
6016
6175
|
"provider_terminal",
|
|
6017
|
-
"not_consented_for_marketing"
|
|
6176
|
+
"not_consented_for_marketing",
|
|
6177
|
+
"category_turned_off"
|
|
6018
6178
|
]
|
|
6019
6179
|
},
|
|
6020
6180
|
"retryable": {
|
|
@@ -6024,7 +6184,29 @@
|
|
|
6024
6184
|
}
|
|
6025
6185
|
]
|
|
6026
6186
|
}
|
|
6027
|
-
}
|
|
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
|
+
]
|
|
6028
6210
|
}
|
|
6029
6211
|
]
|
|
6030
6212
|
}
|
|
@@ -6123,7 +6305,11 @@
|
|
|
6123
6305
|
"provider_terminal",
|
|
6124
6306
|
"provider_outcome_unknown",
|
|
6125
6307
|
"internal_error",
|
|
6126
|
-
"not_consented_for_marketing"
|
|
6308
|
+
"not_consented_for_marketing",
|
|
6309
|
+
"category_purpose_mismatch",
|
|
6310
|
+
"category_turned_off",
|
|
6311
|
+
"category_conflict",
|
|
6312
|
+
"category_not_found"
|
|
6127
6313
|
]
|
|
6128
6314
|
},
|
|
6129
6315
|
"ProblemFieldError": {
|
|
@@ -7103,6 +7289,54 @@
|
|
|
7103
7289
|
"const": false
|
|
7104
7290
|
}
|
|
7105
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
|
+
}
|
|
7106
7340
|
}
|
|
7107
7341
|
],
|
|
7108
7342
|
"additionalProperties": false
|
|
@@ -10031,6 +10265,10 @@
|
|
|
10031
10265
|
"notifier_id": {
|
|
10032
10266
|
"$ref": "#/$defs/OpaqueIdentifier"
|
|
10033
10267
|
},
|
|
10268
|
+
"category": {
|
|
10269
|
+
"$ref": "#/$defs/MessageCategorySnapshot",
|
|
10270
|
+
"description": "Category as accepted. Absent on messages accepted before categories existed."
|
|
10271
|
+
},
|
|
10034
10272
|
"state": {
|
|
10035
10273
|
"$ref": "#/$defs/MessageState"
|
|
10036
10274
|
},
|
|
@@ -11849,6 +12087,10 @@
|
|
|
11849
12087
|
"enum": ["service", "marketing"],
|
|
11850
12088
|
"default": "service",
|
|
11851
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."
|
|
11852
12094
|
}
|
|
11853
12095
|
},
|
|
11854
12096
|
"additionalProperties": false,
|
|
@@ -12434,6 +12676,9 @@
|
|
|
12434
12676
|
"enum": ["service", "marketing"],
|
|
12435
12677
|
"default": "service",
|
|
12436
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"
|
|
12437
12682
|
}
|
|
12438
12683
|
},
|
|
12439
12684
|
"allOf": [
|
|
@@ -12489,6 +12734,9 @@
|
|
|
12489
12734
|
"enum": ["service", "marketing"],
|
|
12490
12735
|
"default": "service",
|
|
12491
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"
|
|
12492
12740
|
}
|
|
12493
12741
|
},
|
|
12494
12742
|
"additionalProperties": false
|
|
@@ -12525,6 +12773,9 @@
|
|
|
12525
12773
|
"enum": ["service", "marketing"],
|
|
12526
12774
|
"default": "service",
|
|
12527
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"
|
|
12528
12779
|
}
|
|
12529
12780
|
},
|
|
12530
12781
|
"additionalProperties": false
|