@whooshbang/contracts 2.5.0 → 2.6.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/README.md +21 -21
- 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 +77 -4
- package/dist/generated/validators-standalone.d.ts +492 -492
- package/dist/generated/validators-standalone.js +6110 -4475
- package/dist/generated/validators-standalone.js.map +1 -1
- package/dist/generated/validators.d.ts +2 -2
- package/dist/generated/whooshbang-v1.d.ts +523 -116
- package/dist/index.d.ts +3 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/input-defaults.d.ts +7 -0
- package/dist/input-defaults.js +59 -0
- package/dist/input-defaults.js.map +1 -0
- package/dist/interaction-expiry.js +2 -1
- package/dist/interaction-expiry.js.map +1 -1
- package/fixtures/core-v1/fixture-index.json +1 -1
- package/fixtures/core-v1/problems/idempotency-key-required.json +2 -2
- 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 +998 -297
- package/openapi/whooshbang-v1.yaml +454 -73
- 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 +192 -5
- 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 +400 -63
|
@@ -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: 2.
|
|
4
|
+
x-contract-version: 2.6.0
|
|
5
5
|
info:
|
|
6
6
|
title: WhooshBang API
|
|
7
|
-
version: 2.
|
|
7
|
+
version: 2.6.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
|
|
@@ -2130,7 +2130,7 @@ paths:
|
|
|
2130
2130
|
- projects:write
|
|
2131
2131
|
x-organization-membership: required
|
|
2132
2132
|
x-idempotency:
|
|
2133
|
-
required:
|
|
2133
|
+
required: false
|
|
2134
2134
|
retention_seconds: 604800
|
|
2135
2135
|
scope:
|
|
2136
2136
|
- authenticated_organization
|
|
@@ -2616,7 +2616,7 @@ paths:
|
|
|
2616
2616
|
x-required-scopes:
|
|
2617
2617
|
- subscriptions:write
|
|
2618
2618
|
x-idempotency:
|
|
2619
|
-
required:
|
|
2619
|
+
required: false
|
|
2620
2620
|
retention_seconds: 604800
|
|
2621
2621
|
scope:
|
|
2622
2622
|
- authenticated_environment
|
|
@@ -2711,7 +2711,7 @@ paths:
|
|
|
2711
2711
|
x-required-scopes:
|
|
2712
2712
|
- subscriptions:write
|
|
2713
2713
|
x-idempotency:
|
|
2714
|
-
required:
|
|
2714
|
+
required: false
|
|
2715
2715
|
retention_seconds: 604800
|
|
2716
2716
|
scope:
|
|
2717
2717
|
- authenticated_environment
|
|
@@ -2772,7 +2772,7 @@ paths:
|
|
|
2772
2772
|
x-required-scopes:
|
|
2773
2773
|
- messages:write
|
|
2774
2774
|
x-idempotency:
|
|
2775
|
-
required:
|
|
2775
|
+
required: false
|
|
2776
2776
|
retention_seconds: 604800
|
|
2777
2777
|
scope:
|
|
2778
2778
|
- authenticated_environment
|
|
@@ -2899,7 +2899,7 @@ paths:
|
|
|
2899
2899
|
- bound_notifier
|
|
2900
2900
|
- bound_subscriber
|
|
2901
2901
|
x-idempotency:
|
|
2902
|
-
required:
|
|
2902
|
+
required: false
|
|
2903
2903
|
retention_seconds: 604800
|
|
2904
2904
|
scope:
|
|
2905
2905
|
- authenticated_environment
|
|
@@ -3089,7 +3089,7 @@ paths:
|
|
|
3089
3089
|
x-required-scopes:
|
|
3090
3090
|
- messages:write
|
|
3091
3091
|
x-idempotency:
|
|
3092
|
-
required:
|
|
3092
|
+
required: false
|
|
3093
3093
|
retention_seconds: 604800
|
|
3094
3094
|
scope:
|
|
3095
3095
|
- authenticated_environment
|
|
@@ -3148,7 +3148,7 @@ paths:
|
|
|
3148
3148
|
x-required-scopes:
|
|
3149
3149
|
- machine-clients:write
|
|
3150
3150
|
x-idempotency:
|
|
3151
|
-
required:
|
|
3151
|
+
required: false
|
|
3152
3152
|
retention_seconds: 604800
|
|
3153
3153
|
scope:
|
|
3154
3154
|
- authenticated_environment
|
|
@@ -3245,7 +3245,7 @@ paths:
|
|
|
3245
3245
|
x-required-scopes:
|
|
3246
3246
|
- machine-clients:write
|
|
3247
3247
|
x-idempotency:
|
|
3248
|
-
required:
|
|
3248
|
+
required: false
|
|
3249
3249
|
retention_seconds: 604800
|
|
3250
3250
|
scope:
|
|
3251
3251
|
- authenticated_environment
|
|
@@ -3318,7 +3318,7 @@ paths:
|
|
|
3318
3318
|
x-required-scopes:
|
|
3319
3319
|
- machine-clients:write
|
|
3320
3320
|
x-idempotency:
|
|
3321
|
-
required:
|
|
3321
|
+
required: false
|
|
3322
3322
|
retention_seconds: 604800
|
|
3323
3323
|
scope:
|
|
3324
3324
|
- authenticated_environment
|
|
@@ -3369,7 +3369,7 @@ paths:
|
|
|
3369
3369
|
x-required-scopes:
|
|
3370
3370
|
- machine-clients:write
|
|
3371
3371
|
x-idempotency:
|
|
3372
|
-
required:
|
|
3372
|
+
required: false
|
|
3373
3373
|
retention_seconds: 604800
|
|
3374
3374
|
scope:
|
|
3375
3375
|
- authenticated_environment
|
|
@@ -3471,7 +3471,7 @@ paths:
|
|
|
3471
3471
|
x-required-scopes:
|
|
3472
3472
|
- machine-events:ack
|
|
3473
3473
|
x-idempotency:
|
|
3474
|
-
required:
|
|
3474
|
+
required: false
|
|
3475
3475
|
retention_seconds: 604800
|
|
3476
3476
|
scope:
|
|
3477
3477
|
- authenticated_environment
|
|
@@ -3562,7 +3562,7 @@ paths:
|
|
|
3562
3562
|
$ref: "#/components/responses/NotFound"
|
|
3563
3563
|
post:
|
|
3564
3564
|
operationId: createCustomerEndpoint
|
|
3565
|
-
summary: Create an
|
|
3565
|
+
summary: Create an active customer endpoint and reveal its signing secret once
|
|
3566
3566
|
description: |
|
|
3567
3567
|
Validates the final normalized public HTTPS destination before storing it.
|
|
3568
3568
|
The initial response includes the new signing secret. An equivalent
|
|
@@ -3578,7 +3578,7 @@ paths:
|
|
|
3578
3578
|
x-required-scopes:
|
|
3579
3579
|
- messages:write
|
|
3580
3580
|
x-idempotency:
|
|
3581
|
-
required:
|
|
3581
|
+
required: false
|
|
3582
3582
|
retention_seconds: 604800
|
|
3583
3583
|
scope:
|
|
3584
3584
|
- authenticated_environment
|
|
@@ -3603,7 +3603,7 @@ paths:
|
|
|
3603
3603
|
externalValue: ../fixtures/core-v1/requests/create-customer-endpoint.json
|
|
3604
3604
|
responses:
|
|
3605
3605
|
"201":
|
|
3606
|
-
description: Newly
|
|
3606
|
+
description: Newly active endpoint, recorded signed ping result, and its one-time signing secret.
|
|
3607
3607
|
headers:
|
|
3608
3608
|
WhooshBang-Diagnostic-Id:
|
|
3609
3609
|
$ref: "#/components/headers/DiagnosticId"
|
|
@@ -3672,7 +3672,7 @@ paths:
|
|
|
3672
3672
|
- $ref: "#/components/parameters/CustomerEndpointId"
|
|
3673
3673
|
post:
|
|
3674
3674
|
operationId: verifyCustomerEndpoint
|
|
3675
|
-
summary: Send a signed
|
|
3675
|
+
summary: Send a signed test ping and record whether the receiver returns 2xx
|
|
3676
3676
|
tags:
|
|
3677
3677
|
- Customer endpoints
|
|
3678
3678
|
security:
|
|
@@ -3717,7 +3717,7 @@ paths:
|
|
|
3717
3717
|
x-required-scopes:
|
|
3718
3718
|
- messages:write
|
|
3719
3719
|
x-idempotency:
|
|
3720
|
-
required:
|
|
3720
|
+
required: false
|
|
3721
3721
|
retention_seconds: 604800
|
|
3722
3722
|
scope:
|
|
3723
3723
|
- authenticated_environment
|
|
@@ -3995,7 +3995,7 @@ paths:
|
|
|
3995
3995
|
x-required-scopes:
|
|
3996
3996
|
- connections:write
|
|
3997
3997
|
x-idempotency:
|
|
3998
|
-
required:
|
|
3998
|
+
required: false
|
|
3999
3999
|
retention_seconds: 604800
|
|
4000
4000
|
scope:
|
|
4001
4001
|
- authenticated_environment
|
|
@@ -4312,7 +4312,7 @@ paths:
|
|
|
4312
4312
|
x-required-scopes:
|
|
4313
4313
|
- connections:write
|
|
4314
4314
|
x-idempotency:
|
|
4315
|
-
required:
|
|
4315
|
+
required: false
|
|
4316
4316
|
retention_seconds: 604800
|
|
4317
4317
|
scope:
|
|
4318
4318
|
- authenticated_environment
|
|
@@ -4874,7 +4874,7 @@ paths:
|
|
|
4874
4874
|
x-required-scopes:
|
|
4875
4875
|
- connections:write
|
|
4876
4876
|
x-idempotency:
|
|
4877
|
-
required:
|
|
4877
|
+
required: false
|
|
4878
4878
|
retention_seconds: 604800
|
|
4879
4879
|
scope:
|
|
4880
4880
|
- authenticated_environment
|
|
@@ -5516,7 +5516,7 @@ paths:
|
|
|
5516
5516
|
x-required-scopes:
|
|
5517
5517
|
- subscriptions:write
|
|
5518
5518
|
x-idempotency:
|
|
5519
|
-
required:
|
|
5519
|
+
required: false
|
|
5520
5520
|
retention_seconds: 604800
|
|
5521
5521
|
scope:
|
|
5522
5522
|
- authenticated_project_environment
|
|
@@ -5822,7 +5822,7 @@ paths:
|
|
|
5822
5822
|
x-required-scopes:
|
|
5823
5823
|
- subscriptions:write
|
|
5824
5824
|
x-idempotency:
|
|
5825
|
-
required:
|
|
5825
|
+
required: false
|
|
5826
5826
|
retention_seconds: 604800
|
|
5827
5827
|
scope:
|
|
5828
5828
|
- authenticated_project_environment
|
|
@@ -5927,7 +5927,7 @@ paths:
|
|
|
5927
5927
|
environment asked about. Combines with every other filter, so `q`
|
|
5928
5928
|
searches within the group.
|
|
5929
5929
|
schema:
|
|
5930
|
-
$ref: "../schemas/whooshbang-v1.schema.json#/$defs/
|
|
5930
|
+
$ref: "../schemas/whooshbang-v1.schema.json#/$defs/GroupKey"
|
|
5931
5931
|
- name: created_after
|
|
5932
5932
|
in: query
|
|
5933
5933
|
required: false
|
|
@@ -5982,7 +5982,7 @@ paths:
|
|
|
5982
5982
|
x-required-scopes:
|
|
5983
5983
|
- subscriptions:write
|
|
5984
5984
|
x-idempotency:
|
|
5985
|
-
required:
|
|
5985
|
+
required: false
|
|
5986
5986
|
retention_seconds: 604800
|
|
5987
5987
|
scope:
|
|
5988
5988
|
- authenticated_project_environment
|
|
@@ -6143,7 +6143,7 @@ paths:
|
|
|
6143
6143
|
x-required-scopes:
|
|
6144
6144
|
- subscriptions:write
|
|
6145
6145
|
x-idempotency:
|
|
6146
|
-
required:
|
|
6146
|
+
required: false
|
|
6147
6147
|
retention_seconds: 604800
|
|
6148
6148
|
scope:
|
|
6149
6149
|
- authenticated_project_environment
|
|
@@ -6186,10 +6186,7 @@ paths:
|
|
|
6186
6186
|
in: path
|
|
6187
6187
|
required: true
|
|
6188
6188
|
schema:
|
|
6189
|
-
|
|
6190
|
-
minLength: 1
|
|
6191
|
-
maxLength: 63
|
|
6192
|
-
pattern: "^[a-z0-9]+(?:-[a-z0-9]+)*$"
|
|
6189
|
+
$ref: "../schemas/whooshbang-v1.schema.json#/$defs/GroupKey"
|
|
6193
6190
|
get:
|
|
6194
6191
|
operationId: getSubscriberGroup
|
|
6195
6192
|
summary: Read one static subscriber group
|
|
@@ -6281,10 +6278,7 @@ paths:
|
|
|
6281
6278
|
in: path
|
|
6282
6279
|
required: true
|
|
6283
6280
|
schema:
|
|
6284
|
-
|
|
6285
|
-
minLength: 1
|
|
6286
|
-
maxLength: 63
|
|
6287
|
-
pattern: "^[a-z0-9]+(?:-[a-z0-9]+)*$"
|
|
6281
|
+
$ref: "../schemas/whooshbang-v1.schema.json#/$defs/GroupKey"
|
|
6288
6282
|
get:
|
|
6289
6283
|
operationId: listSubscriberGroupMembers
|
|
6290
6284
|
summary: List active membership generations with bounded pagination
|
|
@@ -6335,10 +6329,7 @@ paths:
|
|
|
6335
6329
|
in: path
|
|
6336
6330
|
required: true
|
|
6337
6331
|
schema:
|
|
6338
|
-
|
|
6339
|
-
minLength: 1
|
|
6340
|
-
maxLength: 63
|
|
6341
|
-
pattern: "^[a-z0-9]+(?:-[a-z0-9]+)*$"
|
|
6332
|
+
$ref: "../schemas/whooshbang-v1.schema.json#/$defs/GroupKey"
|
|
6342
6333
|
- name: subscriber_id
|
|
6343
6334
|
in: path
|
|
6344
6335
|
required: true
|
|
@@ -6397,10 +6388,7 @@ paths:
|
|
|
6397
6388
|
in: path
|
|
6398
6389
|
required: true
|
|
6399
6390
|
schema:
|
|
6400
|
-
|
|
6401
|
-
minLength: 1
|
|
6402
|
-
maxLength: 63
|
|
6403
|
-
pattern: "^[a-z0-9]+(?:-[a-z0-9]+)*$"
|
|
6391
|
+
$ref: "../schemas/whooshbang-v1.schema.json#/$defs/GroupKey"
|
|
6404
6392
|
post:
|
|
6405
6393
|
operationId: createGroupBroadcast
|
|
6406
6394
|
summary: Accept one durable broadcast at the group's current membership revision
|
|
@@ -6416,7 +6404,7 @@ paths:
|
|
|
6416
6404
|
x-required-scopes:
|
|
6417
6405
|
- messages:write
|
|
6418
6406
|
x-idempotency:
|
|
6419
|
-
required:
|
|
6407
|
+
required: false
|
|
6420
6408
|
retention_seconds: 604800
|
|
6421
6409
|
scope:
|
|
6422
6410
|
- authenticated_project_environment
|
|
@@ -6538,7 +6526,7 @@ paths:
|
|
|
6538
6526
|
x-required-scopes:
|
|
6539
6527
|
- subscriptions:write
|
|
6540
6528
|
x-idempotency:
|
|
6541
|
-
required:
|
|
6529
|
+
required: false
|
|
6542
6530
|
retention_seconds: 604800
|
|
6543
6531
|
scope:
|
|
6544
6532
|
- authenticated_organization
|
|
@@ -6720,7 +6708,7 @@ paths:
|
|
|
6720
6708
|
x-required-scopes:
|
|
6721
6709
|
- messages:write
|
|
6722
6710
|
x-idempotency:
|
|
6723
|
-
required:
|
|
6711
|
+
required: false
|
|
6724
6712
|
retention_seconds: 604800
|
|
6725
6713
|
scope:
|
|
6726
6714
|
- authenticated_organization
|
|
@@ -6770,18 +6758,25 @@ paths:
|
|
|
6770
6758
|
- $ref: "#/components/parameters/MessageId"
|
|
6771
6759
|
get:
|
|
6772
6760
|
operationId: getMessageInEnvironment
|
|
6761
|
+
x-notification-scopes: [notifications:self, notifications:team]
|
|
6773
6762
|
summary: Inspect a message in a named project environment
|
|
6774
6763
|
description: |
|
|
6775
6764
|
The environment-scoped form of `getMessage`, including the same bounded
|
|
6776
6765
|
long poll. Inspection acknowledges, consumes, retries, and replays
|
|
6777
6766
|
nothing.
|
|
6767
|
+
Notification grants can read only current operator recipients in their
|
|
6768
|
+
audience: self means the signed-in person; team includes current
|
|
6769
|
+
teammates with access to this project. Customer subscribers and retired
|
|
6770
|
+
memberships are hidden with 404, including during a held poll.
|
|
6778
6771
|
parameters:
|
|
6779
6772
|
- $ref: "#/components/parameters/ResponseInspectionWait"
|
|
6780
6773
|
tags:
|
|
6781
6774
|
- Messages
|
|
6782
6775
|
security:
|
|
6783
6776
|
- clerkSession: []
|
|
6784
|
-
- bearerGrant: []
|
|
6777
|
+
- bearerGrant: [messages:read]
|
|
6778
|
+
- bearerGrant: [notifications:self]
|
|
6779
|
+
- bearerGrant: [notifications:team]
|
|
6785
6780
|
- bearerOrganizationCredential: []
|
|
6786
6781
|
x-required-scopes:
|
|
6787
6782
|
- messages:read
|
|
@@ -6815,16 +6810,23 @@ paths:
|
|
|
6815
6810
|
- $ref: "#/components/parameters/InteractionId"
|
|
6816
6811
|
get:
|
|
6817
6812
|
operationId: getInteractionInEnvironment
|
|
6813
|
+
x-notification-scopes: [notifications:self, notifications:team]
|
|
6818
6814
|
summary: Inspect an interaction response in a named project environment
|
|
6819
6815
|
description: |
|
|
6820
6816
|
The environment-scoped form of `getInteraction`, including the same
|
|
6821
6817
|
bounded long poll and the same retained-answer semantics.
|
|
6818
|
+
Notification grants can read only current operator recipients in their
|
|
6819
|
+
audience: self means the signed-in person; team includes current
|
|
6820
|
+
teammates with access to this project. Customer subscribers and retired
|
|
6821
|
+
memberships are hidden with 404, including during a held poll.
|
|
6822
6822
|
parameters:
|
|
6823
6823
|
- $ref: "#/components/parameters/ResponseInspectionWait"
|
|
6824
6824
|
tags:
|
|
6825
6825
|
- Messages
|
|
6826
6826
|
security:
|
|
6827
|
-
- bearerGrant: []
|
|
6827
|
+
- bearerGrant: [messages:read]
|
|
6828
|
+
- bearerGrant: [notifications:self]
|
|
6829
|
+
- bearerGrant: [notifications:team]
|
|
6828
6830
|
- bearerOrganizationCredential: []
|
|
6829
6831
|
x-required-scopes:
|
|
6830
6832
|
- messages:read
|
|
@@ -6970,7 +6972,7 @@ paths:
|
|
|
6970
6972
|
x-required-scopes:
|
|
6971
6973
|
- machine-clients:write
|
|
6972
6974
|
x-idempotency:
|
|
6973
|
-
required:
|
|
6975
|
+
required: false
|
|
6974
6976
|
retention_seconds: 604800
|
|
6975
6977
|
scope:
|
|
6976
6978
|
- authenticated_organization
|
|
@@ -7034,7 +7036,7 @@ paths:
|
|
|
7034
7036
|
x-required-scopes:
|
|
7035
7037
|
- machine-clients:write
|
|
7036
7038
|
x-idempotency:
|
|
7037
|
-
required:
|
|
7039
|
+
required: false
|
|
7038
7040
|
retention_seconds: 604800
|
|
7039
7041
|
scope:
|
|
7040
7042
|
- authenticated_environment
|
|
@@ -7144,7 +7146,7 @@ paths:
|
|
|
7144
7146
|
x-required-scopes:
|
|
7145
7147
|
- subscriptions:write
|
|
7146
7148
|
x-idempotency:
|
|
7147
|
-
required:
|
|
7149
|
+
required: false
|
|
7148
7150
|
retention_seconds: 604800
|
|
7149
7151
|
scope:
|
|
7150
7152
|
- authenticated_project_environment
|
|
@@ -7252,7 +7254,7 @@ paths:
|
|
|
7252
7254
|
environment asked about. Combines with every other filter, so `q`
|
|
7253
7255
|
searches within the group.
|
|
7254
7256
|
schema:
|
|
7255
|
-
$ref: "../schemas/whooshbang-v1.schema.json#/$defs/
|
|
7257
|
+
$ref: "../schemas/whooshbang-v1.schema.json#/$defs/GroupKey"
|
|
7256
7258
|
- name: created_after
|
|
7257
7259
|
in: query
|
|
7258
7260
|
required: false
|
|
@@ -7312,7 +7314,7 @@ paths:
|
|
|
7312
7314
|
x-required-scopes:
|
|
7313
7315
|
- subscriptions:write
|
|
7314
7316
|
x-idempotency:
|
|
7315
|
-
required:
|
|
7317
|
+
required: false
|
|
7316
7318
|
retention_seconds: 604800
|
|
7317
7319
|
scope:
|
|
7318
7320
|
- authenticated_project_environment
|
|
@@ -7595,7 +7597,7 @@ paths:
|
|
|
7595
7597
|
x-required-scopes:
|
|
7596
7598
|
- subscriptions:write
|
|
7597
7599
|
x-idempotency:
|
|
7598
|
-
required:
|
|
7600
|
+
required: false
|
|
7599
7601
|
retention_seconds: 604800
|
|
7600
7602
|
scope:
|
|
7601
7603
|
- authenticated_project_environment
|
|
@@ -7640,10 +7642,7 @@ paths:
|
|
|
7640
7642
|
in: path
|
|
7641
7643
|
required: true
|
|
7642
7644
|
schema:
|
|
7643
|
-
|
|
7644
|
-
minLength: 1
|
|
7645
|
-
maxLength: 63
|
|
7646
|
-
pattern: "^[a-z0-9]+(?:-[a-z0-9]+)*$"
|
|
7645
|
+
$ref: "../schemas/whooshbang-v1.schema.json#/$defs/GroupKey"
|
|
7647
7646
|
get:
|
|
7648
7647
|
operationId: getSubscriberGroupInEnvironment
|
|
7649
7648
|
summary: Read one static subscriber group in a named project environment
|
|
@@ -7756,10 +7755,7 @@ paths:
|
|
|
7756
7755
|
in: path
|
|
7757
7756
|
required: true
|
|
7758
7757
|
schema:
|
|
7759
|
-
|
|
7760
|
-
minLength: 1
|
|
7761
|
-
maxLength: 63
|
|
7762
|
-
pattern: "^[a-z0-9]+(?:-[a-z0-9]+)*$"
|
|
7758
|
+
$ref: "../schemas/whooshbang-v1.schema.json#/$defs/GroupKey"
|
|
7763
7759
|
get:
|
|
7764
7760
|
operationId: listSubscriberGroupMembersInEnvironment
|
|
7765
7761
|
summary: List active membership generations in a named project environment
|
|
@@ -7819,10 +7815,7 @@ paths:
|
|
|
7819
7815
|
in: path
|
|
7820
7816
|
required: true
|
|
7821
7817
|
schema:
|
|
7822
|
-
|
|
7823
|
-
minLength: 1
|
|
7824
|
-
maxLength: 63
|
|
7825
|
-
pattern: "^[a-z0-9]+(?:-[a-z0-9]+)*$"
|
|
7818
|
+
$ref: "../schemas/whooshbang-v1.schema.json#/$defs/GroupKey"
|
|
7826
7819
|
- name: subscriber_id
|
|
7827
7820
|
in: path
|
|
7828
7821
|
required: true
|
|
@@ -7897,10 +7890,7 @@ paths:
|
|
|
7897
7890
|
in: path
|
|
7898
7891
|
required: true
|
|
7899
7892
|
schema:
|
|
7900
|
-
|
|
7901
|
-
minLength: 1
|
|
7902
|
-
maxLength: 63
|
|
7903
|
-
pattern: "^[a-z0-9]+(?:-[a-z0-9]+)*$"
|
|
7893
|
+
$ref: "../schemas/whooshbang-v1.schema.json#/$defs/GroupKey"
|
|
7904
7894
|
post:
|
|
7905
7895
|
operationId: createGroupBroadcastInEnvironment
|
|
7906
7896
|
summary: Accept one durable broadcast in a named project environment
|
|
@@ -7919,7 +7909,7 @@ paths:
|
|
|
7919
7909
|
x-required-scopes:
|
|
7920
7910
|
- messages:write
|
|
7921
7911
|
x-idempotency:
|
|
7922
|
-
required:
|
|
7912
|
+
required: false
|
|
7923
7913
|
retention_seconds: 604800
|
|
7924
7914
|
scope:
|
|
7925
7915
|
- authenticated_project_environment
|
|
@@ -8334,7 +8324,7 @@ paths:
|
|
|
8334
8324
|
- bearerOrganizationCredential: []
|
|
8335
8325
|
x-required-scopes: [machine-clients:write]
|
|
8336
8326
|
x-idempotency:
|
|
8337
|
-
required:
|
|
8327
|
+
required: false
|
|
8338
8328
|
retention_seconds: 604800
|
|
8339
8329
|
scope: [authenticated_environment, operation_id, key]
|
|
8340
8330
|
equivalence: validated_request_after_documented_defaults
|
|
@@ -8402,6 +8392,395 @@ paths:
|
|
|
8402
8392
|
$ref: "#/components/responses/Conflict"
|
|
8403
8393
|
"429":
|
|
8404
8394
|
$ref: "#/components/responses/RateLimited"
|
|
8395
|
+
/v1/operator-messages:
|
|
8396
|
+
post:
|
|
8397
|
+
operationId: sendOperatorMessageWithCredential
|
|
8398
|
+
summary: sendOperatorMessage
|
|
8399
|
+
description: >-
|
|
8400
|
+
Message a current teammate by name or operator ID. Personal callers may omit recipient or use
|
|
8401
|
+
me. Shared credentials must name a recipient. Runtime machine credentials report
|
|
8402
|
+
recipient_required for omitted or me; named operator sends are forbidden because runtime
|
|
8403
|
+
authority remains subscriber-bound.
|
|
8404
|
+
tags:
|
|
8405
|
+
- Operators
|
|
8406
|
+
security:
|
|
8407
|
+
- bearerCredential: []
|
|
8408
|
+
x-required-scopes:
|
|
8409
|
+
- messages:write
|
|
8410
|
+
parameters:
|
|
8411
|
+
- $ref: "#/components/parameters/IdempotencyKey"
|
|
8412
|
+
requestBody:
|
|
8413
|
+
required: true
|
|
8414
|
+
content:
|
|
8415
|
+
application/json:
|
|
8416
|
+
schema:
|
|
8417
|
+
$ref: "#/components/schemas/CreateOperatorMessageRequest"
|
|
8418
|
+
responses:
|
|
8419
|
+
"200":
|
|
8420
|
+
description: Authorized result.
|
|
8421
|
+
content:
|
|
8422
|
+
application/json:
|
|
8423
|
+
schema:
|
|
8424
|
+
$ref: "#/components/schemas/OperatorMessageResult"
|
|
8425
|
+
"401":
|
|
8426
|
+
$ref: "#/components/responses/Unauthorized"
|
|
8427
|
+
"403":
|
|
8428
|
+
$ref: "#/components/responses/Forbidden"
|
|
8429
|
+
/v1/operators/broadcasts:
|
|
8430
|
+
post:
|
|
8431
|
+
operationId: broadcastOperatorsWithCredential
|
|
8432
|
+
summary: broadcastOperators
|
|
8433
|
+
description: >-
|
|
8434
|
+
Membership-derived operator messaging. Only the authenticated human can manage personal
|
|
8435
|
+
preferences.
|
|
8436
|
+
tags:
|
|
8437
|
+
- Operators
|
|
8438
|
+
security:
|
|
8439
|
+
- bearerCredential: []
|
|
8440
|
+
x-required-scopes:
|
|
8441
|
+
- messages:write
|
|
8442
|
+
parameters:
|
|
8443
|
+
- $ref: "#/components/parameters/IdempotencyKey"
|
|
8444
|
+
requestBody:
|
|
8445
|
+
required: true
|
|
8446
|
+
content:
|
|
8447
|
+
application/json:
|
|
8448
|
+
schema:
|
|
8449
|
+
$ref: "#/components/schemas/CreateGroupBroadcastRequest"
|
|
8450
|
+
responses:
|
|
8451
|
+
"200":
|
|
8452
|
+
description: Authorized result.
|
|
8453
|
+
content:
|
|
8454
|
+
application/json:
|
|
8455
|
+
schema:
|
|
8456
|
+
$ref: "#/components/schemas/OperatorBroadcast"
|
|
8457
|
+
"401":
|
|
8458
|
+
$ref: "#/components/responses/Unauthorized"
|
|
8459
|
+
"403":
|
|
8460
|
+
$ref: "#/components/responses/Forbidden"
|
|
8461
|
+
/v1/operators/broadcasts/{broadcast_id}:
|
|
8462
|
+
get:
|
|
8463
|
+
operationId: getOperatorBroadcastWithCredential
|
|
8464
|
+
summary: getOperatorBroadcast
|
|
8465
|
+
description: >-
|
|
8466
|
+
Membership-derived operator messaging. Only the authenticated human can manage personal
|
|
8467
|
+
preferences.
|
|
8468
|
+
tags:
|
|
8469
|
+
- Operators
|
|
8470
|
+
security:
|
|
8471
|
+
- bearerCredential: []
|
|
8472
|
+
x-required-scopes:
|
|
8473
|
+
- messages:read
|
|
8474
|
+
parameters:
|
|
8475
|
+
- name: broadcast_id
|
|
8476
|
+
in: path
|
|
8477
|
+
required: true
|
|
8478
|
+
schema:
|
|
8479
|
+
type: string
|
|
8480
|
+
responses:
|
|
8481
|
+
"200":
|
|
8482
|
+
description: Authorized result.
|
|
8483
|
+
content:
|
|
8484
|
+
application/json:
|
|
8485
|
+
schema:
|
|
8486
|
+
$ref: "#/components/schemas/OperatorBroadcast"
|
|
8487
|
+
"401":
|
|
8488
|
+
$ref: "#/components/responses/Unauthorized"
|
|
8489
|
+
"403":
|
|
8490
|
+
$ref: "#/components/responses/Forbidden"
|
|
8491
|
+
/v1/customer-endpoints:
|
|
8492
|
+
get:
|
|
8493
|
+
operationId: listCustomerEndpointsWithCredential
|
|
8494
|
+
summary: List safe customer-endpoint health metadata
|
|
8495
|
+
tags:
|
|
8496
|
+
- Customer endpoints
|
|
8497
|
+
security:
|
|
8498
|
+
- bearerCredential: []
|
|
8499
|
+
x-required-scopes:
|
|
8500
|
+
- messages:read
|
|
8501
|
+
parameters:
|
|
8502
|
+
- $ref: "#/components/parameters/ListAfterCursor"
|
|
8503
|
+
- $ref: "#/components/parameters/ListPageLimit"
|
|
8504
|
+
- $ref: "#/components/parameters/PageNumber"
|
|
8505
|
+
responses:
|
|
8506
|
+
"200":
|
|
8507
|
+
description: Safe endpoint lifecycle and health metadata without URLs or protected content.
|
|
8508
|
+
headers:
|
|
8509
|
+
WhooshBang-Diagnostic-Id:
|
|
8510
|
+
$ref: "#/components/headers/DiagnosticId"
|
|
8511
|
+
content:
|
|
8512
|
+
application/json:
|
|
8513
|
+
schema:
|
|
8514
|
+
$ref: "#/components/schemas/CustomerEndpointCollection"
|
|
8515
|
+
examples:
|
|
8516
|
+
endpoints:
|
|
8517
|
+
externalValue: ../fixtures/core-v1/success/customer-endpoint-collection.json
|
|
8518
|
+
"401":
|
|
8519
|
+
$ref: "#/components/responses/Unauthorized"
|
|
8520
|
+
"403":
|
|
8521
|
+
$ref: "#/components/responses/Forbidden"
|
|
8522
|
+
"404":
|
|
8523
|
+
$ref: "#/components/responses/NotFound"
|
|
8524
|
+
post:
|
|
8525
|
+
operationId: createCustomerEndpointWithCredential
|
|
8526
|
+
summary: Create an active customer endpoint and reveal its signing secret once
|
|
8527
|
+
description: >-
|
|
8528
|
+
Creates an active endpoint and sends a signed diagnostic ping. A 2xx acknowledges the ping; no
|
|
8529
|
+
echo handshake is required. SSRF destination validation applies.
|
|
8530
|
+
tags:
|
|
8531
|
+
- Customer endpoints
|
|
8532
|
+
security:
|
|
8533
|
+
- bearerCredential: []
|
|
8534
|
+
x-required-scopes:
|
|
8535
|
+
- messages:write
|
|
8536
|
+
x-idempotency:
|
|
8537
|
+
required: false
|
|
8538
|
+
retention_seconds: 604800
|
|
8539
|
+
scope:
|
|
8540
|
+
- authenticated_environment
|
|
8541
|
+
- operation_id
|
|
8542
|
+
- key
|
|
8543
|
+
equivalence: final_normalized_url_and_validated_request
|
|
8544
|
+
replay_retention_extends: false
|
|
8545
|
+
x-secret-reveal:
|
|
8546
|
+
responses: 1
|
|
8547
|
+
replayable: false
|
|
8548
|
+
later_reads: metadata_only
|
|
8549
|
+
parameters:
|
|
8550
|
+
- $ref: "#/components/parameters/IdempotencyKey"
|
|
8551
|
+
requestBody:
|
|
8552
|
+
required: true
|
|
8553
|
+
content:
|
|
8554
|
+
application/json:
|
|
8555
|
+
schema:
|
|
8556
|
+
$ref: "#/components/schemas/CreateCustomerEndpointRequest"
|
|
8557
|
+
examples:
|
|
8558
|
+
createEndpoint:
|
|
8559
|
+
externalValue: ../fixtures/core-v1/requests/create-customer-endpoint.json
|
|
8560
|
+
responses:
|
|
8561
|
+
"200":
|
|
8562
|
+
description: Equivalent replay returning safe endpoint metadata without the secret.
|
|
8563
|
+
content:
|
|
8564
|
+
application/json:
|
|
8565
|
+
schema:
|
|
8566
|
+
$ref: "#/components/schemas/CustomerEndpointMutationResult"
|
|
8567
|
+
examples:
|
|
8568
|
+
replayed:
|
|
8569
|
+
externalValue: ../fixtures/core-v1/success/customer-endpoint-create-replayed.json
|
|
8570
|
+
"201":
|
|
8571
|
+
description: Newly active endpoint, recorded signed ping result, and its one-time signing secret.
|
|
8572
|
+
headers:
|
|
8573
|
+
WhooshBang-Diagnostic-Id:
|
|
8574
|
+
$ref: "#/components/headers/DiagnosticId"
|
|
8575
|
+
content:
|
|
8576
|
+
application/json:
|
|
8577
|
+
schema:
|
|
8578
|
+
$ref: "#/components/schemas/CustomerEndpointMutationResult"
|
|
8579
|
+
examples:
|
|
8580
|
+
created:
|
|
8581
|
+
externalValue: ../fixtures/core-v1/success/customer-endpoint-created.json
|
|
8582
|
+
"400":
|
|
8583
|
+
$ref: "#/components/responses/BadRequest"
|
|
8584
|
+
"401":
|
|
8585
|
+
$ref: "#/components/responses/Unauthorized"
|
|
8586
|
+
"403":
|
|
8587
|
+
$ref: "#/components/responses/Forbidden"
|
|
8588
|
+
"404":
|
|
8589
|
+
$ref: "#/components/responses/NotFound"
|
|
8590
|
+
"409":
|
|
8591
|
+
$ref: "#/components/responses/Conflict"
|
|
8592
|
+
"503":
|
|
8593
|
+
$ref: "#/components/responses/ProviderRetryable"
|
|
8594
|
+
/v1/customer-endpoints/{endpoint_id}:
|
|
8595
|
+
parameters:
|
|
8596
|
+
- $ref: "#/components/parameters/CustomerEndpointId"
|
|
8597
|
+
get:
|
|
8598
|
+
operationId: getCustomerEndpointWithCredential
|
|
8599
|
+
summary: Read safe lifecycle and health metadata for one endpoint
|
|
8600
|
+
tags:
|
|
8601
|
+
- Customer endpoints
|
|
8602
|
+
security:
|
|
8603
|
+
- bearerCredential: []
|
|
8604
|
+
x-required-scopes:
|
|
8605
|
+
- messages:read
|
|
8606
|
+
responses:
|
|
8607
|
+
"200":
|
|
8608
|
+
description: Safe endpoint metadata.
|
|
8609
|
+
content:
|
|
8610
|
+
application/json:
|
|
8611
|
+
schema:
|
|
8612
|
+
$ref: "#/components/schemas/CustomerEndpoint"
|
|
8613
|
+
"401":
|
|
8614
|
+
$ref: "#/components/responses/Unauthorized"
|
|
8615
|
+
"403":
|
|
8616
|
+
$ref: "#/components/responses/Forbidden"
|
|
8617
|
+
"404":
|
|
8618
|
+
$ref: "#/components/responses/NotFound"
|
|
8619
|
+
/v1/customer-endpoints/{endpoint_id}/verify:
|
|
8620
|
+
parameters:
|
|
8621
|
+
- $ref: "#/components/parameters/CustomerEndpointId"
|
|
8622
|
+
post:
|
|
8623
|
+
operationId: verifyCustomerEndpointWithCredential
|
|
8624
|
+
summary: Send a signed test ping and record whether the receiver returns 2xx
|
|
8625
|
+
tags:
|
|
8626
|
+
- Customer endpoints
|
|
8627
|
+
security:
|
|
8628
|
+
- bearerCredential: []
|
|
8629
|
+
x-required-scopes:
|
|
8630
|
+
- messages:write
|
|
8631
|
+
responses:
|
|
8632
|
+
"200":
|
|
8633
|
+
description: Verified active endpoint metadata.
|
|
8634
|
+
content:
|
|
8635
|
+
application/json:
|
|
8636
|
+
schema:
|
|
8637
|
+
$ref: "#/components/schemas/CustomerEndpoint"
|
|
8638
|
+
"401":
|
|
8639
|
+
$ref: "#/components/responses/Unauthorized"
|
|
8640
|
+
"403":
|
|
8641
|
+
$ref: "#/components/responses/Forbidden"
|
|
8642
|
+
"404":
|
|
8643
|
+
$ref: "#/components/responses/NotFound"
|
|
8644
|
+
"502":
|
|
8645
|
+
$ref: "#/components/responses/ProviderTerminal"
|
|
8646
|
+
"503":
|
|
8647
|
+
$ref: "#/components/responses/ProviderRetryable"
|
|
8648
|
+
/v1/customer-endpoints/{endpoint_id}/rotate:
|
|
8649
|
+
parameters:
|
|
8650
|
+
- $ref: "#/components/parameters/CustomerEndpointId"
|
|
8651
|
+
post:
|
|
8652
|
+
operationId: rotateCustomerEndpointWithCredential
|
|
8653
|
+
summary: Create a new signing version with bounded old/new overlap
|
|
8654
|
+
tags:
|
|
8655
|
+
- Customer endpoints
|
|
8656
|
+
security:
|
|
8657
|
+
- bearerCredential: []
|
|
8658
|
+
x-required-scopes:
|
|
8659
|
+
- messages:write
|
|
8660
|
+
x-idempotency:
|
|
8661
|
+
required: false
|
|
8662
|
+
retention_seconds: 604800
|
|
8663
|
+
scope:
|
|
8664
|
+
- authenticated_environment
|
|
8665
|
+
- operation_id
|
|
8666
|
+
- key
|
|
8667
|
+
equivalence: endpoint_and_validated_request
|
|
8668
|
+
replay_retention_extends: false
|
|
8669
|
+
x-secret-reveal:
|
|
8670
|
+
responses: 1
|
|
8671
|
+
replayable: false
|
|
8672
|
+
later_reads: metadata_only
|
|
8673
|
+
parameters:
|
|
8674
|
+
- $ref: "#/components/parameters/IdempotencyKey"
|
|
8675
|
+
requestBody:
|
|
8676
|
+
required: true
|
|
8677
|
+
content:
|
|
8678
|
+
application/json:
|
|
8679
|
+
schema:
|
|
8680
|
+
$ref: "#/components/schemas/RotateCustomerEndpointRequest"
|
|
8681
|
+
examples:
|
|
8682
|
+
rotate:
|
|
8683
|
+
externalValue: ../fixtures/core-v1/requests/rotate-customer-endpoint.json
|
|
8684
|
+
responses:
|
|
8685
|
+
"200":
|
|
8686
|
+
description: Equivalent replay without another secret reveal.
|
|
8687
|
+
content:
|
|
8688
|
+
application/json:
|
|
8689
|
+
schema:
|
|
8690
|
+
$ref: "#/components/schemas/CustomerEndpointMutationResult"
|
|
8691
|
+
"201":
|
|
8692
|
+
description: Rotated endpoint and one-time new secret.
|
|
8693
|
+
content:
|
|
8694
|
+
application/json:
|
|
8695
|
+
schema:
|
|
8696
|
+
$ref: "#/components/schemas/CustomerEndpointMutationResult"
|
|
8697
|
+
examples:
|
|
8698
|
+
rotated:
|
|
8699
|
+
externalValue: ../fixtures/core-v1/success/customer-endpoint-rotated.json
|
|
8700
|
+
"400":
|
|
8701
|
+
$ref: "#/components/responses/BadRequest"
|
|
8702
|
+
"401":
|
|
8703
|
+
$ref: "#/components/responses/Unauthorized"
|
|
8704
|
+
"403":
|
|
8705
|
+
$ref: "#/components/responses/Forbidden"
|
|
8706
|
+
"404":
|
|
8707
|
+
$ref: "#/components/responses/NotFound"
|
|
8708
|
+
"409":
|
|
8709
|
+
$ref: "#/components/responses/EndpointRotationConflict"
|
|
8710
|
+
/v1/customer-endpoints/{endpoint_id}/{action}:
|
|
8711
|
+
parameters:
|
|
8712
|
+
- $ref: "#/components/parameters/CustomerEndpointId"
|
|
8713
|
+
- name: action
|
|
8714
|
+
in: path
|
|
8715
|
+
required: true
|
|
8716
|
+
schema:
|
|
8717
|
+
type: string
|
|
8718
|
+
enum:
|
|
8719
|
+
- pause
|
|
8720
|
+
- resume
|
|
8721
|
+
- disable
|
|
8722
|
+
post:
|
|
8723
|
+
operationId: transitionCustomerEndpointWithCredential
|
|
8724
|
+
summary: Pause, resume, or terminally disable an endpoint
|
|
8725
|
+
tags:
|
|
8726
|
+
- Customer endpoints
|
|
8727
|
+
security:
|
|
8728
|
+
- bearerCredential: []
|
|
8729
|
+
x-required-scopes:
|
|
8730
|
+
- messages:write
|
|
8731
|
+
x-repeat-semantics:
|
|
8732
|
+
same_target: idempotent
|
|
8733
|
+
secret_returned: false
|
|
8734
|
+
responses:
|
|
8735
|
+
"200":
|
|
8736
|
+
description: Updated safe endpoint metadata.
|
|
8737
|
+
content:
|
|
8738
|
+
application/json:
|
|
8739
|
+
schema:
|
|
8740
|
+
$ref: "#/components/schemas/CustomerEndpoint"
|
|
8741
|
+
"400":
|
|
8742
|
+
$ref: "#/components/responses/BadRequest"
|
|
8743
|
+
"401":
|
|
8744
|
+
$ref: "#/components/responses/Unauthorized"
|
|
8745
|
+
"403":
|
|
8746
|
+
$ref: "#/components/responses/Forbidden"
|
|
8747
|
+
"404":
|
|
8748
|
+
$ref: "#/components/responses/NotFound"
|
|
8749
|
+
description: >-
|
|
8750
|
+
Creates an active endpoint and sends a signed diagnostic ping. A 2xx acknowledges the ping; no
|
|
8751
|
+
echo handshake is required. SSRF destination validation applies.
|
|
8752
|
+
/v1/customer-endpoints/{endpoint_id}/attempts:
|
|
8753
|
+
parameters:
|
|
8754
|
+
- $ref: "#/components/parameters/CustomerEndpointId"
|
|
8755
|
+
get:
|
|
8756
|
+
operationId: listCustomerEndpointAttemptsWithCredential
|
|
8757
|
+
summary: Inspect protected content-free delivery diagnostics
|
|
8758
|
+
tags:
|
|
8759
|
+
- Customer endpoints
|
|
8760
|
+
security:
|
|
8761
|
+
- bearerCredential: []
|
|
8762
|
+
x-required-scopes:
|
|
8763
|
+
- messages:read
|
|
8764
|
+
parameters:
|
|
8765
|
+
- $ref: "#/components/parameters/ListAfterCursor"
|
|
8766
|
+
- $ref: "#/components/parameters/ListPageLimit"
|
|
8767
|
+
- $ref: "#/components/parameters/PageNumber"
|
|
8768
|
+
responses:
|
|
8769
|
+
"200":
|
|
8770
|
+
description: Safe status, timing, and failure categories only.
|
|
8771
|
+
content:
|
|
8772
|
+
application/json:
|
|
8773
|
+
schema:
|
|
8774
|
+
$ref: "#/components/schemas/CustomerEndpointAttemptCollection"
|
|
8775
|
+
examples:
|
|
8776
|
+
attempts:
|
|
8777
|
+
externalValue: ../fixtures/core-v1/success/customer-endpoint-attempts.json
|
|
8778
|
+
"401":
|
|
8779
|
+
$ref: "#/components/responses/Unauthorized"
|
|
8780
|
+
"403":
|
|
8781
|
+
$ref: "#/components/responses/Forbidden"
|
|
8782
|
+
"404":
|
|
8783
|
+
$ref: "#/components/responses/NotFound"
|
|
8405
8784
|
components:
|
|
8406
8785
|
securitySchemes:
|
|
8407
8786
|
clerkSession:
|
|
@@ -8477,9 +8856,11 @@ components:
|
|
|
8477
8856
|
IdempotencyKey:
|
|
8478
8857
|
name: Idempotency-Key
|
|
8479
8858
|
in: header
|
|
8480
|
-
required:
|
|
8859
|
+
required: false
|
|
8481
8860
|
description: |
|
|
8482
|
-
|
|
8861
|
+
Optional visible ASCII key retained for seven days from first acceptance.
|
|
8862
|
+
A retry with the same key returns the original result and never acts twice.
|
|
8863
|
+
Without a key each request is new.
|
|
8483
8864
|
Equivalent replay returns the original status and logical resource;
|
|
8484
8865
|
materially different validated input returns `idempotency_conflict`.
|
|
8485
8866
|
schema:
|