@greatwait/contracts 0.1.0-alpha.7 → 0.1.0-alpha.8

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.
Files changed (36) hide show
  1. package/dist/billing.d.ts +2 -1
  2. package/dist/billing.js +8 -1
  3. package/dist/index.d.ts +1 -0
  4. package/dist/index.js +1 -0
  5. package/dist/operations.d.ts +42 -5
  6. package/dist/operations.js +3 -1
  7. package/dist/policy.d.ts +5 -4
  8. package/dist/policy.js +5 -4
  9. package/dist/project-notifications.d.ts +238 -0
  10. package/dist/project-notifications.js +236 -0
  11. package/dist/scheduling.js +5 -4
  12. package/dist/workspace.d.ts +4 -4
  13. package/generated/v1/examples/projectnotifications.read.response.json +12 -0
  14. package/generated/v1/examples/projectnotifications.rotateSigningKey.request.json +3 -0
  15. package/generated/v1/examples/projectnotifications.rotateSigningKey.response.json +25 -0
  16. package/generated/v1/examples/projectnotifications.update.request.json +10 -0
  17. package/generated/v1/examples/projectnotifications.update.response.json +12 -0
  18. package/generated/v1/examples/statusdeliveries.list.response.json +3 -0
  19. package/generated/v1/manifest.json +110 -0
  20. package/generated/v1/openapi.json +2525 -3
  21. package/generated/v1/policy-matrix.json +28 -0
  22. package/generated/v1/schemas/billing.notices.response.json +3 -2
  23. package/generated/v1/schemas/billing.purchase.request.json +4 -0
  24. package/generated/v1/schemas/projectnotifications.read.response.json +101 -0
  25. package/generated/v1/schemas/projectnotifications.rotateSigningKey.request.json +13 -0
  26. package/generated/v1/schemas/projectnotifications.rotateSigningKey.response.json +119 -0
  27. package/generated/v1/schemas/projectnotifications.update.request-headers.json +13 -0
  28. package/generated/v1/schemas/projectnotifications.update.request.json +90 -0
  29. package/generated/v1/schemas/projectnotifications.update.response.json +101 -0
  30. package/generated/v1/schemas/statusdeliveries.list.query.json +16 -0
  31. package/generated/v1/schemas/statusdeliveries.list.response.json +82 -0
  32. package/generated/v1/snippets/projectnotifications.read.json +6 -0
  33. package/generated/v1/snippets/projectnotifications.rotateSigningKey.json +6 -0
  34. package/generated/v1/snippets/projectnotifications.update.json +6 -0
  35. package/generated/v1/snippets/statusdeliveries.list.json +6 -0
  36. package/package.json +1 -1
@@ -8083,6 +8083,2523 @@
8083
8083
  }
8084
8084
  }
8085
8085
  },
8086
+ "/v1/projects/{projectId}/notification-settings": {
8087
+ "get": {
8088
+ "description": "Read the verified project and environment's email failure alerts and failure webhook preferences. Defaults are email on to current organization admins and both one-shot and recurring schedules. Every terminal failed occurrence creates a separate email for each eligible recipient. Signing secrets are absent. Manual redelivery does not repeat occurrence lifecycle events.",
8089
+ "operationId": "projectnotifications.read",
8090
+ "parameters": [
8091
+ {
8092
+ "in": "path",
8093
+ "name": "projectId",
8094
+ "required": true,
8095
+ "schema": {
8096
+ "type": "string"
8097
+ }
8098
+ }
8099
+ ],
8100
+ "responses": {
8101
+ "200": {
8102
+ "content": {
8103
+ "application/json": {
8104
+ "example": {
8105
+ "project": "proj_01h8xyz9k2m4n6p8r0t2v4w6y8",
8106
+ "environmentKind": "live",
8107
+ "revision": 1,
8108
+ "email": {
8109
+ "enabled": true,
8110
+ "recipients": {
8111
+ "kind": "admins"
8112
+ },
8113
+ "scheduleKinds": "both"
8114
+ }
8115
+ },
8116
+ "schema": {
8117
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
8118
+ "type": "object",
8119
+ "properties": {
8120
+ "project": {
8121
+ "type": "string",
8122
+ "pattern": "^proj_[0-9abcdefghjkmnpqrstvwxyz]{26}$"
8123
+ },
8124
+ "environmentKind": {
8125
+ "type": "string",
8126
+ "enum": ["test", "live"]
8127
+ },
8128
+ "revision": {
8129
+ "type": "integer",
8130
+ "exclusiveMinimum": 0,
8131
+ "maximum": 9007199254740991
8132
+ },
8133
+ "email": {
8134
+ "type": "object",
8135
+ "properties": {
8136
+ "enabled": {
8137
+ "type": "boolean"
8138
+ },
8139
+ "recipients": {
8140
+ "oneOf": [
8141
+ {
8142
+ "type": "object",
8143
+ "properties": {
8144
+ "kind": {
8145
+ "type": "string",
8146
+ "const": "admins"
8147
+ }
8148
+ },
8149
+ "required": ["kind"]
8150
+ },
8151
+ {
8152
+ "type": "object",
8153
+ "properties": {
8154
+ "kind": {
8155
+ "type": "string",
8156
+ "const": "members"
8157
+ },
8158
+ "memberIds": {
8159
+ "minItems": 1,
8160
+ "maxItems": 100,
8161
+ "type": "array",
8162
+ "items": {
8163
+ "type": "string",
8164
+ "pattern": "^mem_[0-9a-f]{26}$"
8165
+ }
8166
+ }
8167
+ },
8168
+ "required": ["kind", "memberIds"]
8169
+ }
8170
+ ]
8171
+ },
8172
+ "scheduleKinds": {
8173
+ "type": "string",
8174
+ "enum": ["both", "one-shot", "recurring"]
8175
+ }
8176
+ },
8177
+ "required": ["enabled", "recipients", "scheduleKinds"]
8178
+ },
8179
+ "statusWebhook": {
8180
+ "type": "object",
8181
+ "properties": {
8182
+ "url": {
8183
+ "type": "string",
8184
+ "maxLength": 2048,
8185
+ "format": "uri"
8186
+ },
8187
+ "events": {
8188
+ "minItems": 1,
8189
+ "maxItems": 1,
8190
+ "type": "array",
8191
+ "items": {
8192
+ "type": "string",
8193
+ "enum": ["failed"]
8194
+ }
8195
+ },
8196
+ "signingKey": {
8197
+ "type": "object",
8198
+ "properties": {
8199
+ "id": {
8200
+ "type": "string",
8201
+ "pattern": "^csk_[0-9abcdefghjkmnpqrstvwxyz]{26}$"
8202
+ }
8203
+ },
8204
+ "required": ["id"]
8205
+ },
8206
+ "revision": {
8207
+ "type": "integer",
8208
+ "exclusiveMinimum": 0,
8209
+ "maximum": 9007199254740991
8210
+ }
8211
+ },
8212
+ "required": ["url", "events", "revision"]
8213
+ }
8214
+ },
8215
+ "required": [
8216
+ "project",
8217
+ "environmentKind",
8218
+ "revision",
8219
+ "email"
8220
+ ]
8221
+ }
8222
+ }
8223
+ },
8224
+ "description": "Read delivery notification settings"
8225
+ },
8226
+ "400": {
8227
+ "content": {
8228
+ "application/problem+json": {
8229
+ "schema": {
8230
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
8231
+ "type": "object",
8232
+ "properties": {
8233
+ "code": {
8234
+ "type": "string",
8235
+ "x-problem-codes": ["invalid_request"]
8236
+ },
8237
+ "detail": {
8238
+ "type": "string",
8239
+ "minLength": 1
8240
+ },
8241
+ "errors": {
8242
+ "type": "array",
8243
+ "items": {
8244
+ "type": "object",
8245
+ "properties": {
8246
+ "pointer": {
8247
+ "type": "string",
8248
+ "pattern": "^\\/.*"
8249
+ },
8250
+ "reason": {
8251
+ "type": "string",
8252
+ "minLength": 1
8253
+ }
8254
+ },
8255
+ "required": ["pointer", "reason"]
8256
+ }
8257
+ },
8258
+ "retryAfterSeconds": {
8259
+ "type": "integer",
8260
+ "exclusiveMinimum": 0,
8261
+ "maximum": 9007199254740991
8262
+ },
8263
+ "status": {
8264
+ "type": "integer",
8265
+ "minimum": 400,
8266
+ "maximum": 599
8267
+ },
8268
+ "title": {
8269
+ "type": "string",
8270
+ "minLength": 1
8271
+ },
8272
+ "traceId": {
8273
+ "type": "string",
8274
+ "minLength": 1
8275
+ },
8276
+ "type": {
8277
+ "type": "string",
8278
+ "const": "about:blank"
8279
+ }
8280
+ },
8281
+ "required": ["code", "status", "title", "type"]
8282
+ }
8283
+ }
8284
+ },
8285
+ "description": "Problem document. Possible codes at this status: invalid_request."
8286
+ },
8287
+ "401": {
8288
+ "content": {
8289
+ "application/problem+json": {
8290
+ "schema": {
8291
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
8292
+ "type": "object",
8293
+ "properties": {
8294
+ "code": {
8295
+ "type": "string",
8296
+ "x-problem-codes": [
8297
+ "authentication_required",
8298
+ "credential_expired",
8299
+ "credential_revoked"
8300
+ ]
8301
+ },
8302
+ "detail": {
8303
+ "type": "string",
8304
+ "minLength": 1
8305
+ },
8306
+ "errors": {
8307
+ "type": "array",
8308
+ "items": {
8309
+ "type": "object",
8310
+ "properties": {
8311
+ "pointer": {
8312
+ "type": "string",
8313
+ "pattern": "^\\/.*"
8314
+ },
8315
+ "reason": {
8316
+ "type": "string",
8317
+ "minLength": 1
8318
+ }
8319
+ },
8320
+ "required": ["pointer", "reason"]
8321
+ }
8322
+ },
8323
+ "retryAfterSeconds": {
8324
+ "type": "integer",
8325
+ "exclusiveMinimum": 0,
8326
+ "maximum": 9007199254740991
8327
+ },
8328
+ "status": {
8329
+ "type": "integer",
8330
+ "minimum": 400,
8331
+ "maximum": 599
8332
+ },
8333
+ "title": {
8334
+ "type": "string",
8335
+ "minLength": 1
8336
+ },
8337
+ "traceId": {
8338
+ "type": "string",
8339
+ "minLength": 1
8340
+ },
8341
+ "type": {
8342
+ "type": "string",
8343
+ "const": "about:blank"
8344
+ }
8345
+ },
8346
+ "required": ["code", "status", "title", "type"]
8347
+ }
8348
+ }
8349
+ },
8350
+ "description": "Problem document. Possible codes at this status: authentication_required, credential_expired, credential_revoked."
8351
+ },
8352
+ "403": {
8353
+ "content": {
8354
+ "application/problem+json": {
8355
+ "schema": {
8356
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
8357
+ "type": "object",
8358
+ "properties": {
8359
+ "code": {
8360
+ "type": "string",
8361
+ "x-problem-codes": ["scope_missing"]
8362
+ },
8363
+ "detail": {
8364
+ "type": "string",
8365
+ "minLength": 1
8366
+ },
8367
+ "errors": {
8368
+ "type": "array",
8369
+ "items": {
8370
+ "type": "object",
8371
+ "properties": {
8372
+ "pointer": {
8373
+ "type": "string",
8374
+ "pattern": "^\\/.*"
8375
+ },
8376
+ "reason": {
8377
+ "type": "string",
8378
+ "minLength": 1
8379
+ }
8380
+ },
8381
+ "required": ["pointer", "reason"]
8382
+ }
8383
+ },
8384
+ "retryAfterSeconds": {
8385
+ "type": "integer",
8386
+ "exclusiveMinimum": 0,
8387
+ "maximum": 9007199254740991
8388
+ },
8389
+ "status": {
8390
+ "type": "integer",
8391
+ "minimum": 400,
8392
+ "maximum": 599
8393
+ },
8394
+ "title": {
8395
+ "type": "string",
8396
+ "minLength": 1
8397
+ },
8398
+ "traceId": {
8399
+ "type": "string",
8400
+ "minLength": 1
8401
+ },
8402
+ "type": {
8403
+ "type": "string",
8404
+ "const": "about:blank"
8405
+ }
8406
+ },
8407
+ "required": ["code", "status", "title", "type"]
8408
+ }
8409
+ }
8410
+ },
8411
+ "description": "Problem document. Possible codes at this status: scope_missing."
8412
+ },
8413
+ "404": {
8414
+ "content": {
8415
+ "application/problem+json": {
8416
+ "schema": {
8417
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
8418
+ "type": "object",
8419
+ "properties": {
8420
+ "code": {
8421
+ "type": "string",
8422
+ "x-problem-codes": ["not_found"]
8423
+ },
8424
+ "detail": {
8425
+ "type": "string",
8426
+ "minLength": 1
8427
+ },
8428
+ "errors": {
8429
+ "type": "array",
8430
+ "items": {
8431
+ "type": "object",
8432
+ "properties": {
8433
+ "pointer": {
8434
+ "type": "string",
8435
+ "pattern": "^\\/.*"
8436
+ },
8437
+ "reason": {
8438
+ "type": "string",
8439
+ "minLength": 1
8440
+ }
8441
+ },
8442
+ "required": ["pointer", "reason"]
8443
+ }
8444
+ },
8445
+ "retryAfterSeconds": {
8446
+ "type": "integer",
8447
+ "exclusiveMinimum": 0,
8448
+ "maximum": 9007199254740991
8449
+ },
8450
+ "status": {
8451
+ "type": "integer",
8452
+ "minimum": 400,
8453
+ "maximum": 599
8454
+ },
8455
+ "title": {
8456
+ "type": "string",
8457
+ "minLength": 1
8458
+ },
8459
+ "traceId": {
8460
+ "type": "string",
8461
+ "minLength": 1
8462
+ },
8463
+ "type": {
8464
+ "type": "string",
8465
+ "const": "about:blank"
8466
+ }
8467
+ },
8468
+ "required": ["code", "status", "title", "type"]
8469
+ }
8470
+ }
8471
+ },
8472
+ "description": "Problem document. Possible codes at this status: not_found."
8473
+ },
8474
+ "409": {
8475
+ "content": {
8476
+ "application/problem+json": {
8477
+ "schema": {
8478
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
8479
+ "type": "object",
8480
+ "properties": {
8481
+ "code": {
8482
+ "type": "string",
8483
+ "x-problem-codes": ["project_archived"]
8484
+ },
8485
+ "detail": {
8486
+ "type": "string",
8487
+ "minLength": 1
8488
+ },
8489
+ "errors": {
8490
+ "type": "array",
8491
+ "items": {
8492
+ "type": "object",
8493
+ "properties": {
8494
+ "pointer": {
8495
+ "type": "string",
8496
+ "pattern": "^\\/.*"
8497
+ },
8498
+ "reason": {
8499
+ "type": "string",
8500
+ "minLength": 1
8501
+ }
8502
+ },
8503
+ "required": ["pointer", "reason"]
8504
+ }
8505
+ },
8506
+ "retryAfterSeconds": {
8507
+ "type": "integer",
8508
+ "exclusiveMinimum": 0,
8509
+ "maximum": 9007199254740991
8510
+ },
8511
+ "status": {
8512
+ "type": "integer",
8513
+ "minimum": 400,
8514
+ "maximum": 599
8515
+ },
8516
+ "title": {
8517
+ "type": "string",
8518
+ "minLength": 1
8519
+ },
8520
+ "traceId": {
8521
+ "type": "string",
8522
+ "minLength": 1
8523
+ },
8524
+ "type": {
8525
+ "type": "string",
8526
+ "const": "about:blank"
8527
+ }
8528
+ },
8529
+ "required": ["code", "status", "title", "type"]
8530
+ }
8531
+ }
8532
+ },
8533
+ "description": "Problem document. Possible codes at this status: project_archived."
8534
+ },
8535
+ "429": {
8536
+ "content": {
8537
+ "application/problem+json": {
8538
+ "schema": {
8539
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
8540
+ "type": "object",
8541
+ "properties": {
8542
+ "code": {
8543
+ "type": "string",
8544
+ "x-problem-codes": ["rate_limited"]
8545
+ },
8546
+ "detail": {
8547
+ "type": "string",
8548
+ "minLength": 1
8549
+ },
8550
+ "errors": {
8551
+ "type": "array",
8552
+ "items": {
8553
+ "type": "object",
8554
+ "properties": {
8555
+ "pointer": {
8556
+ "type": "string",
8557
+ "pattern": "^\\/.*"
8558
+ },
8559
+ "reason": {
8560
+ "type": "string",
8561
+ "minLength": 1
8562
+ }
8563
+ },
8564
+ "required": ["pointer", "reason"]
8565
+ }
8566
+ },
8567
+ "retryAfterSeconds": {
8568
+ "type": "integer",
8569
+ "exclusiveMinimum": 0,
8570
+ "maximum": 9007199254740991
8571
+ },
8572
+ "status": {
8573
+ "type": "integer",
8574
+ "minimum": 400,
8575
+ "maximum": 599
8576
+ },
8577
+ "title": {
8578
+ "type": "string",
8579
+ "minLength": 1
8580
+ },
8581
+ "traceId": {
8582
+ "type": "string",
8583
+ "minLength": 1
8584
+ },
8585
+ "type": {
8586
+ "type": "string",
8587
+ "const": "about:blank"
8588
+ }
8589
+ },
8590
+ "required": ["code", "status", "title", "type"]
8591
+ }
8592
+ }
8593
+ },
8594
+ "description": "Problem document. Possible codes at this status: rate_limited."
8595
+ },
8596
+ "503": {
8597
+ "content": {
8598
+ "application/problem+json": {
8599
+ "schema": {
8600
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
8601
+ "type": "object",
8602
+ "properties": {
8603
+ "code": {
8604
+ "type": "string",
8605
+ "x-problem-codes": [
8606
+ "capability_not_configured",
8607
+ "service_unavailable"
8608
+ ]
8609
+ },
8610
+ "detail": {
8611
+ "type": "string",
8612
+ "minLength": 1
8613
+ },
8614
+ "errors": {
8615
+ "type": "array",
8616
+ "items": {
8617
+ "type": "object",
8618
+ "properties": {
8619
+ "pointer": {
8620
+ "type": "string",
8621
+ "pattern": "^\\/.*"
8622
+ },
8623
+ "reason": {
8624
+ "type": "string",
8625
+ "minLength": 1
8626
+ }
8627
+ },
8628
+ "required": ["pointer", "reason"]
8629
+ }
8630
+ },
8631
+ "retryAfterSeconds": {
8632
+ "type": "integer",
8633
+ "exclusiveMinimum": 0,
8634
+ "maximum": 9007199254740991
8635
+ },
8636
+ "status": {
8637
+ "type": "integer",
8638
+ "minimum": 400,
8639
+ "maximum": 599
8640
+ },
8641
+ "title": {
8642
+ "type": "string",
8643
+ "minLength": 1
8644
+ },
8645
+ "traceId": {
8646
+ "type": "string",
8647
+ "minLength": 1
8648
+ },
8649
+ "type": {
8650
+ "type": "string",
8651
+ "const": "about:blank"
8652
+ }
8653
+ },
8654
+ "required": ["code", "status", "title", "type"]
8655
+ }
8656
+ }
8657
+ },
8658
+ "description": "Problem document. Possible codes at this status: capability_not_configured, service_unavailable."
8659
+ }
8660
+ },
8661
+ "summary": "Read delivery notification settings",
8662
+ "security": [
8663
+ {
8664
+ "apiCredential": ["projects:read"]
8665
+ },
8666
+ {
8667
+ "memberSession": ["projects:read"],
8668
+ "memberSessionEnvironment": [],
8669
+ "memberSessionProject": []
8670
+ }
8671
+ ]
8672
+ },
8673
+ "patch": {
8674
+ "description": "An admin updates this project's environment preferences at an expected revision. Selected recipients must be current organization members; arbitrary email addresses are not accepted. Null disables the status webhook. Changing URL or filters never reveals a signing secret. Mint the first key through the secure signing-key operation before webhook delivery starts. Failed means final unsuccessful settlement. Redelivery never repeats it. Failed-event webhook calls and their retries are free. Every failed occurrence is emailed separately; no summary window suppresses failures.",
8675
+ "operationId": "projectnotifications.update",
8676
+ "parameters": [
8677
+ {
8678
+ "in": "path",
8679
+ "name": "projectId",
8680
+ "required": true,
8681
+ "schema": {
8682
+ "type": "string"
8683
+ }
8684
+ },
8685
+ {
8686
+ "in": "header",
8687
+ "name": "Idempotency-Key",
8688
+ "required": true,
8689
+ "schema": {
8690
+ "type": "string",
8691
+ "minLength": 16,
8692
+ "maxLength": 255,
8693
+ "pattern": "^[\\x20-\\x7e]+$"
8694
+ }
8695
+ }
8696
+ ],
8697
+ "responses": {
8698
+ "200": {
8699
+ "content": {
8700
+ "application/json": {
8701
+ "example": {
8702
+ "project": "proj_01h8xyz9k2m4n6p8r0t2v4w6y8",
8703
+ "environmentKind": "live",
8704
+ "revision": 2,
8705
+ "email": {
8706
+ "enabled": true,
8707
+ "recipients": {
8708
+ "kind": "admins"
8709
+ },
8710
+ "scheduleKinds": "both"
8711
+ }
8712
+ },
8713
+ "schema": {
8714
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
8715
+ "type": "object",
8716
+ "properties": {
8717
+ "project": {
8718
+ "type": "string",
8719
+ "pattern": "^proj_[0-9abcdefghjkmnpqrstvwxyz]{26}$"
8720
+ },
8721
+ "environmentKind": {
8722
+ "type": "string",
8723
+ "enum": ["test", "live"]
8724
+ },
8725
+ "revision": {
8726
+ "type": "integer",
8727
+ "exclusiveMinimum": 0,
8728
+ "maximum": 9007199254740991
8729
+ },
8730
+ "email": {
8731
+ "type": "object",
8732
+ "properties": {
8733
+ "enabled": {
8734
+ "type": "boolean"
8735
+ },
8736
+ "recipients": {
8737
+ "oneOf": [
8738
+ {
8739
+ "type": "object",
8740
+ "properties": {
8741
+ "kind": {
8742
+ "type": "string",
8743
+ "const": "admins"
8744
+ }
8745
+ },
8746
+ "required": ["kind"]
8747
+ },
8748
+ {
8749
+ "type": "object",
8750
+ "properties": {
8751
+ "kind": {
8752
+ "type": "string",
8753
+ "const": "members"
8754
+ },
8755
+ "memberIds": {
8756
+ "minItems": 1,
8757
+ "maxItems": 100,
8758
+ "type": "array",
8759
+ "items": {
8760
+ "type": "string",
8761
+ "pattern": "^mem_[0-9a-f]{26}$"
8762
+ }
8763
+ }
8764
+ },
8765
+ "required": ["kind", "memberIds"]
8766
+ }
8767
+ ]
8768
+ },
8769
+ "scheduleKinds": {
8770
+ "type": "string",
8771
+ "enum": ["both", "one-shot", "recurring"]
8772
+ }
8773
+ },
8774
+ "required": ["enabled", "recipients", "scheduleKinds"]
8775
+ },
8776
+ "statusWebhook": {
8777
+ "type": "object",
8778
+ "properties": {
8779
+ "url": {
8780
+ "type": "string",
8781
+ "maxLength": 2048,
8782
+ "format": "uri"
8783
+ },
8784
+ "events": {
8785
+ "minItems": 1,
8786
+ "maxItems": 1,
8787
+ "type": "array",
8788
+ "items": {
8789
+ "type": "string",
8790
+ "enum": ["failed"]
8791
+ }
8792
+ },
8793
+ "signingKey": {
8794
+ "type": "object",
8795
+ "properties": {
8796
+ "id": {
8797
+ "type": "string",
8798
+ "pattern": "^csk_[0-9abcdefghjkmnpqrstvwxyz]{26}$"
8799
+ }
8800
+ },
8801
+ "required": ["id"]
8802
+ },
8803
+ "revision": {
8804
+ "type": "integer",
8805
+ "exclusiveMinimum": 0,
8806
+ "maximum": 9007199254740991
8807
+ }
8808
+ },
8809
+ "required": ["url", "events", "revision"]
8810
+ }
8811
+ },
8812
+ "required": [
8813
+ "project",
8814
+ "environmentKind",
8815
+ "revision",
8816
+ "email"
8817
+ ]
8818
+ }
8819
+ }
8820
+ },
8821
+ "description": "Update delivery notification settings"
8822
+ },
8823
+ "400": {
8824
+ "content": {
8825
+ "application/problem+json": {
8826
+ "schema": {
8827
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
8828
+ "type": "object",
8829
+ "properties": {
8830
+ "code": {
8831
+ "type": "string",
8832
+ "x-problem-codes": ["invalid_request"]
8833
+ },
8834
+ "detail": {
8835
+ "type": "string",
8836
+ "minLength": 1
8837
+ },
8838
+ "errors": {
8839
+ "type": "array",
8840
+ "items": {
8841
+ "type": "object",
8842
+ "properties": {
8843
+ "pointer": {
8844
+ "type": "string",
8845
+ "pattern": "^\\/.*"
8846
+ },
8847
+ "reason": {
8848
+ "type": "string",
8849
+ "minLength": 1
8850
+ }
8851
+ },
8852
+ "required": ["pointer", "reason"]
8853
+ }
8854
+ },
8855
+ "retryAfterSeconds": {
8856
+ "type": "integer",
8857
+ "exclusiveMinimum": 0,
8858
+ "maximum": 9007199254740991
8859
+ },
8860
+ "status": {
8861
+ "type": "integer",
8862
+ "minimum": 400,
8863
+ "maximum": 599
8864
+ },
8865
+ "title": {
8866
+ "type": "string",
8867
+ "minLength": 1
8868
+ },
8869
+ "traceId": {
8870
+ "type": "string",
8871
+ "minLength": 1
8872
+ },
8873
+ "type": {
8874
+ "type": "string",
8875
+ "const": "about:blank"
8876
+ }
8877
+ },
8878
+ "required": ["code", "status", "title", "type"]
8879
+ }
8880
+ }
8881
+ },
8882
+ "description": "Problem document. Possible codes at this status: invalid_request."
8883
+ },
8884
+ "401": {
8885
+ "content": {
8886
+ "application/problem+json": {
8887
+ "schema": {
8888
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
8889
+ "type": "object",
8890
+ "properties": {
8891
+ "code": {
8892
+ "type": "string",
8893
+ "x-problem-codes": [
8894
+ "authentication_required",
8895
+ "credential_expired",
8896
+ "credential_revoked"
8897
+ ]
8898
+ },
8899
+ "detail": {
8900
+ "type": "string",
8901
+ "minLength": 1
8902
+ },
8903
+ "errors": {
8904
+ "type": "array",
8905
+ "items": {
8906
+ "type": "object",
8907
+ "properties": {
8908
+ "pointer": {
8909
+ "type": "string",
8910
+ "pattern": "^\\/.*"
8911
+ },
8912
+ "reason": {
8913
+ "type": "string",
8914
+ "minLength": 1
8915
+ }
8916
+ },
8917
+ "required": ["pointer", "reason"]
8918
+ }
8919
+ },
8920
+ "retryAfterSeconds": {
8921
+ "type": "integer",
8922
+ "exclusiveMinimum": 0,
8923
+ "maximum": 9007199254740991
8924
+ },
8925
+ "status": {
8926
+ "type": "integer",
8927
+ "minimum": 400,
8928
+ "maximum": 599
8929
+ },
8930
+ "title": {
8931
+ "type": "string",
8932
+ "minLength": 1
8933
+ },
8934
+ "traceId": {
8935
+ "type": "string",
8936
+ "minLength": 1
8937
+ },
8938
+ "type": {
8939
+ "type": "string",
8940
+ "const": "about:blank"
8941
+ }
8942
+ },
8943
+ "required": ["code", "status", "title", "type"]
8944
+ }
8945
+ }
8946
+ },
8947
+ "description": "Problem document. Possible codes at this status: authentication_required, credential_expired, credential_revoked."
8948
+ },
8949
+ "403": {
8950
+ "content": {
8951
+ "application/problem+json": {
8952
+ "schema": {
8953
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
8954
+ "type": "object",
8955
+ "properties": {
8956
+ "code": {
8957
+ "type": "string",
8958
+ "x-problem-codes": ["scope_missing"]
8959
+ },
8960
+ "detail": {
8961
+ "type": "string",
8962
+ "minLength": 1
8963
+ },
8964
+ "errors": {
8965
+ "type": "array",
8966
+ "items": {
8967
+ "type": "object",
8968
+ "properties": {
8969
+ "pointer": {
8970
+ "type": "string",
8971
+ "pattern": "^\\/.*"
8972
+ },
8973
+ "reason": {
8974
+ "type": "string",
8975
+ "minLength": 1
8976
+ }
8977
+ },
8978
+ "required": ["pointer", "reason"]
8979
+ }
8980
+ },
8981
+ "retryAfterSeconds": {
8982
+ "type": "integer",
8983
+ "exclusiveMinimum": 0,
8984
+ "maximum": 9007199254740991
8985
+ },
8986
+ "status": {
8987
+ "type": "integer",
8988
+ "minimum": 400,
8989
+ "maximum": 599
8990
+ },
8991
+ "title": {
8992
+ "type": "string",
8993
+ "minLength": 1
8994
+ },
8995
+ "traceId": {
8996
+ "type": "string",
8997
+ "minLength": 1
8998
+ },
8999
+ "type": {
9000
+ "type": "string",
9001
+ "const": "about:blank"
9002
+ }
9003
+ },
9004
+ "required": ["code", "status", "title", "type"]
9005
+ }
9006
+ }
9007
+ },
9008
+ "description": "Problem document. Possible codes at this status: scope_missing."
9009
+ },
9010
+ "404": {
9011
+ "content": {
9012
+ "application/problem+json": {
9013
+ "schema": {
9014
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
9015
+ "type": "object",
9016
+ "properties": {
9017
+ "code": {
9018
+ "type": "string",
9019
+ "x-problem-codes": ["not_found"]
9020
+ },
9021
+ "detail": {
9022
+ "type": "string",
9023
+ "minLength": 1
9024
+ },
9025
+ "errors": {
9026
+ "type": "array",
9027
+ "items": {
9028
+ "type": "object",
9029
+ "properties": {
9030
+ "pointer": {
9031
+ "type": "string",
9032
+ "pattern": "^\\/.*"
9033
+ },
9034
+ "reason": {
9035
+ "type": "string",
9036
+ "minLength": 1
9037
+ }
9038
+ },
9039
+ "required": ["pointer", "reason"]
9040
+ }
9041
+ },
9042
+ "retryAfterSeconds": {
9043
+ "type": "integer",
9044
+ "exclusiveMinimum": 0,
9045
+ "maximum": 9007199254740991
9046
+ },
9047
+ "status": {
9048
+ "type": "integer",
9049
+ "minimum": 400,
9050
+ "maximum": 599
9051
+ },
9052
+ "title": {
9053
+ "type": "string",
9054
+ "minLength": 1
9055
+ },
9056
+ "traceId": {
9057
+ "type": "string",
9058
+ "minLength": 1
9059
+ },
9060
+ "type": {
9061
+ "type": "string",
9062
+ "const": "about:blank"
9063
+ }
9064
+ },
9065
+ "required": ["code", "status", "title", "type"]
9066
+ }
9067
+ }
9068
+ },
9069
+ "description": "Problem document. Possible codes at this status: not_found."
9070
+ },
9071
+ "409": {
9072
+ "content": {
9073
+ "application/problem+json": {
9074
+ "schema": {
9075
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
9076
+ "type": "object",
9077
+ "properties": {
9078
+ "code": {
9079
+ "type": "string",
9080
+ "x-problem-codes": [
9081
+ "idempotency_key_reused",
9082
+ "project_archived",
9083
+ "revision_conflict"
9084
+ ]
9085
+ },
9086
+ "detail": {
9087
+ "type": "string",
9088
+ "minLength": 1
9089
+ },
9090
+ "errors": {
9091
+ "type": "array",
9092
+ "items": {
9093
+ "type": "object",
9094
+ "properties": {
9095
+ "pointer": {
9096
+ "type": "string",
9097
+ "pattern": "^\\/.*"
9098
+ },
9099
+ "reason": {
9100
+ "type": "string",
9101
+ "minLength": 1
9102
+ }
9103
+ },
9104
+ "required": ["pointer", "reason"]
9105
+ }
9106
+ },
9107
+ "retryAfterSeconds": {
9108
+ "type": "integer",
9109
+ "exclusiveMinimum": 0,
9110
+ "maximum": 9007199254740991
9111
+ },
9112
+ "status": {
9113
+ "type": "integer",
9114
+ "minimum": 400,
9115
+ "maximum": 599
9116
+ },
9117
+ "title": {
9118
+ "type": "string",
9119
+ "minLength": 1
9120
+ },
9121
+ "traceId": {
9122
+ "type": "string",
9123
+ "minLength": 1
9124
+ },
9125
+ "type": {
9126
+ "type": "string",
9127
+ "const": "about:blank"
9128
+ }
9129
+ },
9130
+ "required": ["code", "status", "title", "type"]
9131
+ }
9132
+ }
9133
+ },
9134
+ "description": "Problem document. Possible codes at this status: idempotency_key_reused, project_archived, revision_conflict."
9135
+ },
9136
+ "429": {
9137
+ "content": {
9138
+ "application/problem+json": {
9139
+ "schema": {
9140
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
9141
+ "type": "object",
9142
+ "properties": {
9143
+ "code": {
9144
+ "type": "string",
9145
+ "x-problem-codes": ["rate_limited"]
9146
+ },
9147
+ "detail": {
9148
+ "type": "string",
9149
+ "minLength": 1
9150
+ },
9151
+ "errors": {
9152
+ "type": "array",
9153
+ "items": {
9154
+ "type": "object",
9155
+ "properties": {
9156
+ "pointer": {
9157
+ "type": "string",
9158
+ "pattern": "^\\/.*"
9159
+ },
9160
+ "reason": {
9161
+ "type": "string",
9162
+ "minLength": 1
9163
+ }
9164
+ },
9165
+ "required": ["pointer", "reason"]
9166
+ }
9167
+ },
9168
+ "retryAfterSeconds": {
9169
+ "type": "integer",
9170
+ "exclusiveMinimum": 0,
9171
+ "maximum": 9007199254740991
9172
+ },
9173
+ "status": {
9174
+ "type": "integer",
9175
+ "minimum": 400,
9176
+ "maximum": 599
9177
+ },
9178
+ "title": {
9179
+ "type": "string",
9180
+ "minLength": 1
9181
+ },
9182
+ "traceId": {
9183
+ "type": "string",
9184
+ "minLength": 1
9185
+ },
9186
+ "type": {
9187
+ "type": "string",
9188
+ "const": "about:blank"
9189
+ }
9190
+ },
9191
+ "required": ["code", "status", "title", "type"]
9192
+ }
9193
+ }
9194
+ },
9195
+ "description": "Problem document. Possible codes at this status: rate_limited."
9196
+ },
9197
+ "503": {
9198
+ "content": {
9199
+ "application/problem+json": {
9200
+ "schema": {
9201
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
9202
+ "type": "object",
9203
+ "properties": {
9204
+ "code": {
9205
+ "type": "string",
9206
+ "x-problem-codes": [
9207
+ "capability_not_configured",
9208
+ "service_unavailable"
9209
+ ]
9210
+ },
9211
+ "detail": {
9212
+ "type": "string",
9213
+ "minLength": 1
9214
+ },
9215
+ "errors": {
9216
+ "type": "array",
9217
+ "items": {
9218
+ "type": "object",
9219
+ "properties": {
9220
+ "pointer": {
9221
+ "type": "string",
9222
+ "pattern": "^\\/.*"
9223
+ },
9224
+ "reason": {
9225
+ "type": "string",
9226
+ "minLength": 1
9227
+ }
9228
+ },
9229
+ "required": ["pointer", "reason"]
9230
+ }
9231
+ },
9232
+ "retryAfterSeconds": {
9233
+ "type": "integer",
9234
+ "exclusiveMinimum": 0,
9235
+ "maximum": 9007199254740991
9236
+ },
9237
+ "status": {
9238
+ "type": "integer",
9239
+ "minimum": 400,
9240
+ "maximum": 599
9241
+ },
9242
+ "title": {
9243
+ "type": "string",
9244
+ "minLength": 1
9245
+ },
9246
+ "traceId": {
9247
+ "type": "string",
9248
+ "minLength": 1
9249
+ },
9250
+ "type": {
9251
+ "type": "string",
9252
+ "const": "about:blank"
9253
+ }
9254
+ },
9255
+ "required": ["code", "status", "title", "type"]
9256
+ }
9257
+ }
9258
+ },
9259
+ "description": "Problem document. Possible codes at this status: capability_not_configured, service_unavailable."
9260
+ }
9261
+ },
9262
+ "summary": "Update delivery notification settings",
9263
+ "security": [
9264
+ {
9265
+ "apiCredential": ["projects:administer"]
9266
+ },
9267
+ {
9268
+ "memberSession": ["projects:administer"],
9269
+ "memberSessionEnvironment": [],
9270
+ "memberSessionProject": []
9271
+ }
9272
+ ],
9273
+ "requestBody": {
9274
+ "content": {
9275
+ "application/json": {
9276
+ "example": {
9277
+ "expectedRevision": 1,
9278
+ "email": {
9279
+ "enabled": true,
9280
+ "recipients": {
9281
+ "kind": "admins"
9282
+ },
9283
+ "scheduleKinds": "both"
9284
+ }
9285
+ },
9286
+ "schema": {
9287
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
9288
+ "type": "object",
9289
+ "properties": {
9290
+ "expectedRevision": {
9291
+ "type": "integer",
9292
+ "exclusiveMinimum": 0,
9293
+ "maximum": 9007199254740991
9294
+ },
9295
+ "email": {
9296
+ "type": "object",
9297
+ "properties": {
9298
+ "enabled": {
9299
+ "type": "boolean"
9300
+ },
9301
+ "recipients": {
9302
+ "oneOf": [
9303
+ {
9304
+ "type": "object",
9305
+ "properties": {
9306
+ "kind": {
9307
+ "type": "string",
9308
+ "const": "admins"
9309
+ }
9310
+ },
9311
+ "required": ["kind"],
9312
+ "additionalProperties": false
9313
+ },
9314
+ {
9315
+ "type": "object",
9316
+ "properties": {
9317
+ "kind": {
9318
+ "type": "string",
9319
+ "const": "members"
9320
+ },
9321
+ "memberIds": {
9322
+ "minItems": 1,
9323
+ "maxItems": 100,
9324
+ "type": "array",
9325
+ "items": {
9326
+ "type": "string",
9327
+ "pattern": "^mem_[0-9a-f]{26}$"
9328
+ }
9329
+ }
9330
+ },
9331
+ "required": ["kind", "memberIds"],
9332
+ "additionalProperties": false
9333
+ }
9334
+ ]
9335
+ },
9336
+ "scheduleKinds": {
9337
+ "type": "string",
9338
+ "enum": ["both", "one-shot", "recurring"]
9339
+ }
9340
+ },
9341
+ "required": ["enabled", "recipients", "scheduleKinds"],
9342
+ "additionalProperties": false
9343
+ },
9344
+ "statusWebhook": {
9345
+ "anyOf": [
9346
+ {
9347
+ "type": "object",
9348
+ "properties": {
9349
+ "url": {
9350
+ "type": "string",
9351
+ "maxLength": 2048,
9352
+ "format": "uri"
9353
+ },
9354
+ "events": {
9355
+ "minItems": 1,
9356
+ "maxItems": 1,
9357
+ "type": "array",
9358
+ "items": {
9359
+ "type": "string",
9360
+ "enum": ["failed"]
9361
+ }
9362
+ }
9363
+ },
9364
+ "required": ["url", "events"],
9365
+ "additionalProperties": false
9366
+ },
9367
+ {
9368
+ "type": "null"
9369
+ }
9370
+ ]
9371
+ }
9372
+ },
9373
+ "required": ["expectedRevision"],
9374
+ "additionalProperties": false
9375
+ }
9376
+ }
9377
+ },
9378
+ "required": true
9379
+ }
9380
+ }
9381
+ },
9382
+ "/v1/projects/{projectId}/notification-settings/status-signing-key": {
9383
+ "post": {
9384
+ "description": "An admin mints the first key or replaces the current key for an already configured status webhook at an expected revision. The secret appears only in this successful response and cannot be read back. A lost response requires a fresh revision read and another rotation. Queued deliveries using the replaced signing key are suppressed. The request is not automatically replayable; stale retries are refused. The signature covers the exact emitted body bytes.",
9385
+ "operationId": "projectnotifications.rotateSigningKey",
9386
+ "parameters": [
9387
+ {
9388
+ "in": "path",
9389
+ "name": "projectId",
9390
+ "required": true,
9391
+ "schema": {
9392
+ "type": "string"
9393
+ }
9394
+ }
9395
+ ],
9396
+ "responses": {
9397
+ "200": {
9398
+ "content": {
9399
+ "application/json": {
9400
+ "example": {
9401
+ "settings": {
9402
+ "project": "proj_01h8xyz9k2m4n6p8r0t2v4w6y8",
9403
+ "environmentKind": "live",
9404
+ "revision": 2,
9405
+ "email": {
9406
+ "enabled": true,
9407
+ "recipients": {
9408
+ "kind": "admins"
9409
+ },
9410
+ "scheduleKinds": "both"
9411
+ },
9412
+ "statusWebhook": {
9413
+ "url": "https://hooks.example.com/status",
9414
+ "events": ["failed"],
9415
+ "signingKey": {
9416
+ "id": "csk_01h8xyz9k2m4n6p8r0t2v4w6y8"
9417
+ },
9418
+ "revision": 2
9419
+ }
9420
+ },
9421
+ "keyId": "csk_01h8xyz9k2m4n6p8r0t2v4w6y8",
9422
+ "secret": "ptsk_live_<the-one-time-status-secret>",
9423
+ "shownOnce": true
9424
+ },
9425
+ "schema": {
9426
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
9427
+ "type": "object",
9428
+ "properties": {
9429
+ "settings": {
9430
+ "type": "object",
9431
+ "properties": {
9432
+ "project": {
9433
+ "type": "string",
9434
+ "pattern": "^proj_[0-9abcdefghjkmnpqrstvwxyz]{26}$"
9435
+ },
9436
+ "environmentKind": {
9437
+ "type": "string",
9438
+ "enum": ["test", "live"]
9439
+ },
9440
+ "revision": {
9441
+ "type": "integer",
9442
+ "exclusiveMinimum": 0,
9443
+ "maximum": 9007199254740991
9444
+ },
9445
+ "email": {
9446
+ "type": "object",
9447
+ "properties": {
9448
+ "enabled": {
9449
+ "type": "boolean"
9450
+ },
9451
+ "recipients": {
9452
+ "oneOf": [
9453
+ {
9454
+ "type": "object",
9455
+ "properties": {
9456
+ "kind": {
9457
+ "type": "string",
9458
+ "const": "admins"
9459
+ }
9460
+ },
9461
+ "required": ["kind"]
9462
+ },
9463
+ {
9464
+ "type": "object",
9465
+ "properties": {
9466
+ "kind": {
9467
+ "type": "string",
9468
+ "const": "members"
9469
+ },
9470
+ "memberIds": {
9471
+ "minItems": 1,
9472
+ "maxItems": 100,
9473
+ "type": "array",
9474
+ "items": {
9475
+ "type": "string",
9476
+ "pattern": "^mem_[0-9a-f]{26}$"
9477
+ }
9478
+ }
9479
+ },
9480
+ "required": ["kind", "memberIds"]
9481
+ }
9482
+ ]
9483
+ },
9484
+ "scheduleKinds": {
9485
+ "type": "string",
9486
+ "enum": ["both", "one-shot", "recurring"]
9487
+ }
9488
+ },
9489
+ "required": ["enabled", "recipients", "scheduleKinds"]
9490
+ },
9491
+ "statusWebhook": {
9492
+ "type": "object",
9493
+ "properties": {
9494
+ "url": {
9495
+ "type": "string",
9496
+ "maxLength": 2048,
9497
+ "format": "uri"
9498
+ },
9499
+ "events": {
9500
+ "minItems": 1,
9501
+ "maxItems": 1,
9502
+ "type": "array",
9503
+ "items": {
9504
+ "type": "string",
9505
+ "enum": ["failed"]
9506
+ }
9507
+ },
9508
+ "signingKey": {
9509
+ "type": "object",
9510
+ "properties": {
9511
+ "id": {
9512
+ "type": "string",
9513
+ "pattern": "^csk_[0-9abcdefghjkmnpqrstvwxyz]{26}$"
9514
+ }
9515
+ },
9516
+ "required": ["id"]
9517
+ },
9518
+ "revision": {
9519
+ "type": "integer",
9520
+ "exclusiveMinimum": 0,
9521
+ "maximum": 9007199254740991
9522
+ }
9523
+ },
9524
+ "required": ["url", "events", "revision"]
9525
+ }
9526
+ },
9527
+ "required": [
9528
+ "project",
9529
+ "environmentKind",
9530
+ "revision",
9531
+ "email"
9532
+ ]
9533
+ },
9534
+ "keyId": {
9535
+ "type": "string",
9536
+ "pattern": "^csk_[0-9abcdefghjkmnpqrstvwxyz]{26}$"
9537
+ },
9538
+ "secret": {
9539
+ "type": "string",
9540
+ "minLength": 1
9541
+ },
9542
+ "shownOnce": {
9543
+ "type": "boolean",
9544
+ "const": true
9545
+ }
9546
+ },
9547
+ "required": ["settings", "keyId", "secret", "shownOnce"]
9548
+ }
9549
+ }
9550
+ },
9551
+ "description": "Mint or rotate the status webhook signing key"
9552
+ },
9553
+ "400": {
9554
+ "content": {
9555
+ "application/problem+json": {
9556
+ "schema": {
9557
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
9558
+ "type": "object",
9559
+ "properties": {
9560
+ "code": {
9561
+ "type": "string",
9562
+ "x-problem-codes": ["invalid_request"]
9563
+ },
9564
+ "detail": {
9565
+ "type": "string",
9566
+ "minLength": 1
9567
+ },
9568
+ "errors": {
9569
+ "type": "array",
9570
+ "items": {
9571
+ "type": "object",
9572
+ "properties": {
9573
+ "pointer": {
9574
+ "type": "string",
9575
+ "pattern": "^\\/.*"
9576
+ },
9577
+ "reason": {
9578
+ "type": "string",
9579
+ "minLength": 1
9580
+ }
9581
+ },
9582
+ "required": ["pointer", "reason"]
9583
+ }
9584
+ },
9585
+ "retryAfterSeconds": {
9586
+ "type": "integer",
9587
+ "exclusiveMinimum": 0,
9588
+ "maximum": 9007199254740991
9589
+ },
9590
+ "status": {
9591
+ "type": "integer",
9592
+ "minimum": 400,
9593
+ "maximum": 599
9594
+ },
9595
+ "title": {
9596
+ "type": "string",
9597
+ "minLength": 1
9598
+ },
9599
+ "traceId": {
9600
+ "type": "string",
9601
+ "minLength": 1
9602
+ },
9603
+ "type": {
9604
+ "type": "string",
9605
+ "const": "about:blank"
9606
+ }
9607
+ },
9608
+ "required": ["code", "status", "title", "type"]
9609
+ }
9610
+ }
9611
+ },
9612
+ "description": "Problem document. Possible codes at this status: invalid_request."
9613
+ },
9614
+ "401": {
9615
+ "content": {
9616
+ "application/problem+json": {
9617
+ "schema": {
9618
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
9619
+ "type": "object",
9620
+ "properties": {
9621
+ "code": {
9622
+ "type": "string",
9623
+ "x-problem-codes": [
9624
+ "authentication_required",
9625
+ "credential_expired",
9626
+ "credential_revoked"
9627
+ ]
9628
+ },
9629
+ "detail": {
9630
+ "type": "string",
9631
+ "minLength": 1
9632
+ },
9633
+ "errors": {
9634
+ "type": "array",
9635
+ "items": {
9636
+ "type": "object",
9637
+ "properties": {
9638
+ "pointer": {
9639
+ "type": "string",
9640
+ "pattern": "^\\/.*"
9641
+ },
9642
+ "reason": {
9643
+ "type": "string",
9644
+ "minLength": 1
9645
+ }
9646
+ },
9647
+ "required": ["pointer", "reason"]
9648
+ }
9649
+ },
9650
+ "retryAfterSeconds": {
9651
+ "type": "integer",
9652
+ "exclusiveMinimum": 0,
9653
+ "maximum": 9007199254740991
9654
+ },
9655
+ "status": {
9656
+ "type": "integer",
9657
+ "minimum": 400,
9658
+ "maximum": 599
9659
+ },
9660
+ "title": {
9661
+ "type": "string",
9662
+ "minLength": 1
9663
+ },
9664
+ "traceId": {
9665
+ "type": "string",
9666
+ "minLength": 1
9667
+ },
9668
+ "type": {
9669
+ "type": "string",
9670
+ "const": "about:blank"
9671
+ }
9672
+ },
9673
+ "required": ["code", "status", "title", "type"]
9674
+ }
9675
+ }
9676
+ },
9677
+ "description": "Problem document. Possible codes at this status: authentication_required, credential_expired, credential_revoked."
9678
+ },
9679
+ "403": {
9680
+ "content": {
9681
+ "application/problem+json": {
9682
+ "schema": {
9683
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
9684
+ "type": "object",
9685
+ "properties": {
9686
+ "code": {
9687
+ "type": "string",
9688
+ "x-problem-codes": ["scope_missing"]
9689
+ },
9690
+ "detail": {
9691
+ "type": "string",
9692
+ "minLength": 1
9693
+ },
9694
+ "errors": {
9695
+ "type": "array",
9696
+ "items": {
9697
+ "type": "object",
9698
+ "properties": {
9699
+ "pointer": {
9700
+ "type": "string",
9701
+ "pattern": "^\\/.*"
9702
+ },
9703
+ "reason": {
9704
+ "type": "string",
9705
+ "minLength": 1
9706
+ }
9707
+ },
9708
+ "required": ["pointer", "reason"]
9709
+ }
9710
+ },
9711
+ "retryAfterSeconds": {
9712
+ "type": "integer",
9713
+ "exclusiveMinimum": 0,
9714
+ "maximum": 9007199254740991
9715
+ },
9716
+ "status": {
9717
+ "type": "integer",
9718
+ "minimum": 400,
9719
+ "maximum": 599
9720
+ },
9721
+ "title": {
9722
+ "type": "string",
9723
+ "minLength": 1
9724
+ },
9725
+ "traceId": {
9726
+ "type": "string",
9727
+ "minLength": 1
9728
+ },
9729
+ "type": {
9730
+ "type": "string",
9731
+ "const": "about:blank"
9732
+ }
9733
+ },
9734
+ "required": ["code", "status", "title", "type"]
9735
+ }
9736
+ }
9737
+ },
9738
+ "description": "Problem document. Possible codes at this status: scope_missing."
9739
+ },
9740
+ "404": {
9741
+ "content": {
9742
+ "application/problem+json": {
9743
+ "schema": {
9744
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
9745
+ "type": "object",
9746
+ "properties": {
9747
+ "code": {
9748
+ "type": "string",
9749
+ "x-problem-codes": ["not_found"]
9750
+ },
9751
+ "detail": {
9752
+ "type": "string",
9753
+ "minLength": 1
9754
+ },
9755
+ "errors": {
9756
+ "type": "array",
9757
+ "items": {
9758
+ "type": "object",
9759
+ "properties": {
9760
+ "pointer": {
9761
+ "type": "string",
9762
+ "pattern": "^\\/.*"
9763
+ },
9764
+ "reason": {
9765
+ "type": "string",
9766
+ "minLength": 1
9767
+ }
9768
+ },
9769
+ "required": ["pointer", "reason"]
9770
+ }
9771
+ },
9772
+ "retryAfterSeconds": {
9773
+ "type": "integer",
9774
+ "exclusiveMinimum": 0,
9775
+ "maximum": 9007199254740991
9776
+ },
9777
+ "status": {
9778
+ "type": "integer",
9779
+ "minimum": 400,
9780
+ "maximum": 599
9781
+ },
9782
+ "title": {
9783
+ "type": "string",
9784
+ "minLength": 1
9785
+ },
9786
+ "traceId": {
9787
+ "type": "string",
9788
+ "minLength": 1
9789
+ },
9790
+ "type": {
9791
+ "type": "string",
9792
+ "const": "about:blank"
9793
+ }
9794
+ },
9795
+ "required": ["code", "status", "title", "type"]
9796
+ }
9797
+ }
9798
+ },
9799
+ "description": "Problem document. Possible codes at this status: not_found."
9800
+ },
9801
+ "409": {
9802
+ "content": {
9803
+ "application/problem+json": {
9804
+ "schema": {
9805
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
9806
+ "type": "object",
9807
+ "properties": {
9808
+ "code": {
9809
+ "type": "string",
9810
+ "x-problem-codes": [
9811
+ "project_archived",
9812
+ "revision_conflict",
9813
+ "state_conflict"
9814
+ ]
9815
+ },
9816
+ "detail": {
9817
+ "type": "string",
9818
+ "minLength": 1
9819
+ },
9820
+ "errors": {
9821
+ "type": "array",
9822
+ "items": {
9823
+ "type": "object",
9824
+ "properties": {
9825
+ "pointer": {
9826
+ "type": "string",
9827
+ "pattern": "^\\/.*"
9828
+ },
9829
+ "reason": {
9830
+ "type": "string",
9831
+ "minLength": 1
9832
+ }
9833
+ },
9834
+ "required": ["pointer", "reason"]
9835
+ }
9836
+ },
9837
+ "retryAfterSeconds": {
9838
+ "type": "integer",
9839
+ "exclusiveMinimum": 0,
9840
+ "maximum": 9007199254740991
9841
+ },
9842
+ "status": {
9843
+ "type": "integer",
9844
+ "minimum": 400,
9845
+ "maximum": 599
9846
+ },
9847
+ "title": {
9848
+ "type": "string",
9849
+ "minLength": 1
9850
+ },
9851
+ "traceId": {
9852
+ "type": "string",
9853
+ "minLength": 1
9854
+ },
9855
+ "type": {
9856
+ "type": "string",
9857
+ "const": "about:blank"
9858
+ }
9859
+ },
9860
+ "required": ["code", "status", "title", "type"]
9861
+ }
9862
+ }
9863
+ },
9864
+ "description": "Problem document. Possible codes at this status: project_archived, revision_conflict, state_conflict."
9865
+ },
9866
+ "429": {
9867
+ "content": {
9868
+ "application/problem+json": {
9869
+ "schema": {
9870
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
9871
+ "type": "object",
9872
+ "properties": {
9873
+ "code": {
9874
+ "type": "string",
9875
+ "x-problem-codes": ["rate_limited"]
9876
+ },
9877
+ "detail": {
9878
+ "type": "string",
9879
+ "minLength": 1
9880
+ },
9881
+ "errors": {
9882
+ "type": "array",
9883
+ "items": {
9884
+ "type": "object",
9885
+ "properties": {
9886
+ "pointer": {
9887
+ "type": "string",
9888
+ "pattern": "^\\/.*"
9889
+ },
9890
+ "reason": {
9891
+ "type": "string",
9892
+ "minLength": 1
9893
+ }
9894
+ },
9895
+ "required": ["pointer", "reason"]
9896
+ }
9897
+ },
9898
+ "retryAfterSeconds": {
9899
+ "type": "integer",
9900
+ "exclusiveMinimum": 0,
9901
+ "maximum": 9007199254740991
9902
+ },
9903
+ "status": {
9904
+ "type": "integer",
9905
+ "minimum": 400,
9906
+ "maximum": 599
9907
+ },
9908
+ "title": {
9909
+ "type": "string",
9910
+ "minLength": 1
9911
+ },
9912
+ "traceId": {
9913
+ "type": "string",
9914
+ "minLength": 1
9915
+ },
9916
+ "type": {
9917
+ "type": "string",
9918
+ "const": "about:blank"
9919
+ }
9920
+ },
9921
+ "required": ["code", "status", "title", "type"]
9922
+ }
9923
+ }
9924
+ },
9925
+ "description": "Problem document. Possible codes at this status: rate_limited."
9926
+ },
9927
+ "503": {
9928
+ "content": {
9929
+ "application/problem+json": {
9930
+ "schema": {
9931
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
9932
+ "type": "object",
9933
+ "properties": {
9934
+ "code": {
9935
+ "type": "string",
9936
+ "x-problem-codes": [
9937
+ "capability_not_configured",
9938
+ "service_unavailable"
9939
+ ]
9940
+ },
9941
+ "detail": {
9942
+ "type": "string",
9943
+ "minLength": 1
9944
+ },
9945
+ "errors": {
9946
+ "type": "array",
9947
+ "items": {
9948
+ "type": "object",
9949
+ "properties": {
9950
+ "pointer": {
9951
+ "type": "string",
9952
+ "pattern": "^\\/.*"
9953
+ },
9954
+ "reason": {
9955
+ "type": "string",
9956
+ "minLength": 1
9957
+ }
9958
+ },
9959
+ "required": ["pointer", "reason"]
9960
+ }
9961
+ },
9962
+ "retryAfterSeconds": {
9963
+ "type": "integer",
9964
+ "exclusiveMinimum": 0,
9965
+ "maximum": 9007199254740991
9966
+ },
9967
+ "status": {
9968
+ "type": "integer",
9969
+ "minimum": 400,
9970
+ "maximum": 599
9971
+ },
9972
+ "title": {
9973
+ "type": "string",
9974
+ "minLength": 1
9975
+ },
9976
+ "traceId": {
9977
+ "type": "string",
9978
+ "minLength": 1
9979
+ },
9980
+ "type": {
9981
+ "type": "string",
9982
+ "const": "about:blank"
9983
+ }
9984
+ },
9985
+ "required": ["code", "status", "title", "type"]
9986
+ }
9987
+ }
9988
+ },
9989
+ "description": "Problem document. Possible codes at this status: capability_not_configured, service_unavailable."
9990
+ }
9991
+ },
9992
+ "summary": "Mint or rotate the status webhook signing key",
9993
+ "security": [
9994
+ {
9995
+ "apiCredential": ["projects:administer"]
9996
+ },
9997
+ {
9998
+ "memberSession": ["projects:administer"],
9999
+ "memberSessionEnvironment": [],
10000
+ "memberSessionProject": []
10001
+ }
10002
+ ],
10003
+ "requestBody": {
10004
+ "content": {
10005
+ "application/json": {
10006
+ "example": {
10007
+ "expectedRevision": 1
10008
+ },
10009
+ "schema": {
10010
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
10011
+ "type": "object",
10012
+ "properties": {
10013
+ "expectedRevision": {
10014
+ "type": "integer",
10015
+ "exclusiveMinimum": 0,
10016
+ "maximum": 9007199254740991
10017
+ }
10018
+ },
10019
+ "required": ["expectedRevision"],
10020
+ "additionalProperties": false
10021
+ }
10022
+ }
10023
+ },
10024
+ "required": true
10025
+ }
10026
+ }
10027
+ },
10028
+ "/v1/projects/{projectId}/status-deliveries": {
10029
+ "get": {
10030
+ "description": "Read the verified project and environment's failure delivery trail, including retry state and actual outbound calls. Failed events and every retry are free. Status delivery failures never create another notification or change the customer's schedule outcome. Customer callback contents and signing secrets are absent.",
10031
+ "operationId": "statusdeliveries.list",
10032
+ "parameters": [
10033
+ {
10034
+ "in": "path",
10035
+ "name": "projectId",
10036
+ "required": true,
10037
+ "schema": {
10038
+ "type": "string"
10039
+ }
10040
+ },
10041
+ {
10042
+ "in": "query",
10043
+ "name": "cursor",
10044
+ "required": false,
10045
+ "schema": {
10046
+ "type": "string",
10047
+ "minLength": 1
10048
+ }
10049
+ },
10050
+ {
10051
+ "in": "query",
10052
+ "name": "limit",
10053
+ "required": false,
10054
+ "schema": {
10055
+ "default": 25,
10056
+ "type": "integer",
10057
+ "minimum": 1,
10058
+ "maximum": 100
10059
+ }
10060
+ }
10061
+ ],
10062
+ "responses": {
10063
+ "200": {
10064
+ "content": {
10065
+ "application/json": {
10066
+ "example": {
10067
+ "data": []
10068
+ },
10069
+ "schema": {
10070
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
10071
+ "type": "object",
10072
+ "properties": {
10073
+ "data": {
10074
+ "type": "array",
10075
+ "items": {
10076
+ "type": "object",
10077
+ "properties": {
10078
+ "id": {
10079
+ "type": "string",
10080
+ "minLength": 1,
10081
+ "maxLength": 255
10082
+ },
10083
+ "event": {
10084
+ "type": "string",
10085
+ "enum": ["failed"]
10086
+ },
10087
+ "schedule": {
10088
+ "type": "string",
10089
+ "pattern": "^sch_[0-9abcdefghjkmnpqrstvwxyz]{26}$"
10090
+ },
10091
+ "occurrence": {
10092
+ "type": "string",
10093
+ "pattern": "^occ_[0-9abcdefghjkmnpqrstvwxyz]{26}$"
10094
+ },
10095
+ "occurredAt": {
10096
+ "type": "string",
10097
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
10098
+ },
10099
+ "url": {
10100
+ "type": "string",
10101
+ "format": "uri"
10102
+ },
10103
+ "state": {
10104
+ "type": "string",
10105
+ "enum": [
10106
+ "pending",
10107
+ "delivering",
10108
+ "delivered",
10109
+ "failed",
10110
+ "suppressed"
10111
+ ]
10112
+ },
10113
+ "attempts": {
10114
+ "type": "integer",
10115
+ "minimum": 0,
10116
+ "maximum": 9007199254740991
10117
+ },
10118
+ "nextAttemptAt": {
10119
+ "type": "string",
10120
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
10121
+ },
10122
+ "lastStatus": {
10123
+ "type": "integer",
10124
+ "minimum": 100,
10125
+ "maximum": 599
10126
+ },
10127
+ "lastError": {
10128
+ "type": "string",
10129
+ "maxLength": 128
10130
+ }
10131
+ },
10132
+ "required": [
10133
+ "id",
10134
+ "event",
10135
+ "schedule",
10136
+ "occurrence",
10137
+ "occurredAt",
10138
+ "url",
10139
+ "state",
10140
+ "attempts"
10141
+ ]
10142
+ }
10143
+ },
10144
+ "nextCursor": {
10145
+ "type": "string",
10146
+ "minLength": 1
10147
+ }
10148
+ },
10149
+ "required": ["data"]
10150
+ }
10151
+ }
10152
+ },
10153
+ "description": "List failure webhook deliveries"
10154
+ },
10155
+ "400": {
10156
+ "content": {
10157
+ "application/problem+json": {
10158
+ "schema": {
10159
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
10160
+ "type": "object",
10161
+ "properties": {
10162
+ "code": {
10163
+ "type": "string",
10164
+ "x-problem-codes": ["invalid_request"]
10165
+ },
10166
+ "detail": {
10167
+ "type": "string",
10168
+ "minLength": 1
10169
+ },
10170
+ "errors": {
10171
+ "type": "array",
10172
+ "items": {
10173
+ "type": "object",
10174
+ "properties": {
10175
+ "pointer": {
10176
+ "type": "string",
10177
+ "pattern": "^\\/.*"
10178
+ },
10179
+ "reason": {
10180
+ "type": "string",
10181
+ "minLength": 1
10182
+ }
10183
+ },
10184
+ "required": ["pointer", "reason"]
10185
+ }
10186
+ },
10187
+ "retryAfterSeconds": {
10188
+ "type": "integer",
10189
+ "exclusiveMinimum": 0,
10190
+ "maximum": 9007199254740991
10191
+ },
10192
+ "status": {
10193
+ "type": "integer",
10194
+ "minimum": 400,
10195
+ "maximum": 599
10196
+ },
10197
+ "title": {
10198
+ "type": "string",
10199
+ "minLength": 1
10200
+ },
10201
+ "traceId": {
10202
+ "type": "string",
10203
+ "minLength": 1
10204
+ },
10205
+ "type": {
10206
+ "type": "string",
10207
+ "const": "about:blank"
10208
+ }
10209
+ },
10210
+ "required": ["code", "status", "title", "type"]
10211
+ }
10212
+ }
10213
+ },
10214
+ "description": "Problem document. Possible codes at this status: invalid_request."
10215
+ },
10216
+ "401": {
10217
+ "content": {
10218
+ "application/problem+json": {
10219
+ "schema": {
10220
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
10221
+ "type": "object",
10222
+ "properties": {
10223
+ "code": {
10224
+ "type": "string",
10225
+ "x-problem-codes": [
10226
+ "authentication_required",
10227
+ "credential_expired",
10228
+ "credential_revoked"
10229
+ ]
10230
+ },
10231
+ "detail": {
10232
+ "type": "string",
10233
+ "minLength": 1
10234
+ },
10235
+ "errors": {
10236
+ "type": "array",
10237
+ "items": {
10238
+ "type": "object",
10239
+ "properties": {
10240
+ "pointer": {
10241
+ "type": "string",
10242
+ "pattern": "^\\/.*"
10243
+ },
10244
+ "reason": {
10245
+ "type": "string",
10246
+ "minLength": 1
10247
+ }
10248
+ },
10249
+ "required": ["pointer", "reason"]
10250
+ }
10251
+ },
10252
+ "retryAfterSeconds": {
10253
+ "type": "integer",
10254
+ "exclusiveMinimum": 0,
10255
+ "maximum": 9007199254740991
10256
+ },
10257
+ "status": {
10258
+ "type": "integer",
10259
+ "minimum": 400,
10260
+ "maximum": 599
10261
+ },
10262
+ "title": {
10263
+ "type": "string",
10264
+ "minLength": 1
10265
+ },
10266
+ "traceId": {
10267
+ "type": "string",
10268
+ "minLength": 1
10269
+ },
10270
+ "type": {
10271
+ "type": "string",
10272
+ "const": "about:blank"
10273
+ }
10274
+ },
10275
+ "required": ["code", "status", "title", "type"]
10276
+ }
10277
+ }
10278
+ },
10279
+ "description": "Problem document. Possible codes at this status: authentication_required, credential_expired, credential_revoked."
10280
+ },
10281
+ "403": {
10282
+ "content": {
10283
+ "application/problem+json": {
10284
+ "schema": {
10285
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
10286
+ "type": "object",
10287
+ "properties": {
10288
+ "code": {
10289
+ "type": "string",
10290
+ "x-problem-codes": ["scope_missing"]
10291
+ },
10292
+ "detail": {
10293
+ "type": "string",
10294
+ "minLength": 1
10295
+ },
10296
+ "errors": {
10297
+ "type": "array",
10298
+ "items": {
10299
+ "type": "object",
10300
+ "properties": {
10301
+ "pointer": {
10302
+ "type": "string",
10303
+ "pattern": "^\\/.*"
10304
+ },
10305
+ "reason": {
10306
+ "type": "string",
10307
+ "minLength": 1
10308
+ }
10309
+ },
10310
+ "required": ["pointer", "reason"]
10311
+ }
10312
+ },
10313
+ "retryAfterSeconds": {
10314
+ "type": "integer",
10315
+ "exclusiveMinimum": 0,
10316
+ "maximum": 9007199254740991
10317
+ },
10318
+ "status": {
10319
+ "type": "integer",
10320
+ "minimum": 400,
10321
+ "maximum": 599
10322
+ },
10323
+ "title": {
10324
+ "type": "string",
10325
+ "minLength": 1
10326
+ },
10327
+ "traceId": {
10328
+ "type": "string",
10329
+ "minLength": 1
10330
+ },
10331
+ "type": {
10332
+ "type": "string",
10333
+ "const": "about:blank"
10334
+ }
10335
+ },
10336
+ "required": ["code", "status", "title", "type"]
10337
+ }
10338
+ }
10339
+ },
10340
+ "description": "Problem document. Possible codes at this status: scope_missing."
10341
+ },
10342
+ "404": {
10343
+ "content": {
10344
+ "application/problem+json": {
10345
+ "schema": {
10346
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
10347
+ "type": "object",
10348
+ "properties": {
10349
+ "code": {
10350
+ "type": "string",
10351
+ "x-problem-codes": ["not_found"]
10352
+ },
10353
+ "detail": {
10354
+ "type": "string",
10355
+ "minLength": 1
10356
+ },
10357
+ "errors": {
10358
+ "type": "array",
10359
+ "items": {
10360
+ "type": "object",
10361
+ "properties": {
10362
+ "pointer": {
10363
+ "type": "string",
10364
+ "pattern": "^\\/.*"
10365
+ },
10366
+ "reason": {
10367
+ "type": "string",
10368
+ "minLength": 1
10369
+ }
10370
+ },
10371
+ "required": ["pointer", "reason"]
10372
+ }
10373
+ },
10374
+ "retryAfterSeconds": {
10375
+ "type": "integer",
10376
+ "exclusiveMinimum": 0,
10377
+ "maximum": 9007199254740991
10378
+ },
10379
+ "status": {
10380
+ "type": "integer",
10381
+ "minimum": 400,
10382
+ "maximum": 599
10383
+ },
10384
+ "title": {
10385
+ "type": "string",
10386
+ "minLength": 1
10387
+ },
10388
+ "traceId": {
10389
+ "type": "string",
10390
+ "minLength": 1
10391
+ },
10392
+ "type": {
10393
+ "type": "string",
10394
+ "const": "about:blank"
10395
+ }
10396
+ },
10397
+ "required": ["code", "status", "title", "type"]
10398
+ }
10399
+ }
10400
+ },
10401
+ "description": "Problem document. Possible codes at this status: not_found."
10402
+ },
10403
+ "409": {
10404
+ "content": {
10405
+ "application/problem+json": {
10406
+ "schema": {
10407
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
10408
+ "type": "object",
10409
+ "properties": {
10410
+ "code": {
10411
+ "type": "string",
10412
+ "x-problem-codes": ["project_archived"]
10413
+ },
10414
+ "detail": {
10415
+ "type": "string",
10416
+ "minLength": 1
10417
+ },
10418
+ "errors": {
10419
+ "type": "array",
10420
+ "items": {
10421
+ "type": "object",
10422
+ "properties": {
10423
+ "pointer": {
10424
+ "type": "string",
10425
+ "pattern": "^\\/.*"
10426
+ },
10427
+ "reason": {
10428
+ "type": "string",
10429
+ "minLength": 1
10430
+ }
10431
+ },
10432
+ "required": ["pointer", "reason"]
10433
+ }
10434
+ },
10435
+ "retryAfterSeconds": {
10436
+ "type": "integer",
10437
+ "exclusiveMinimum": 0,
10438
+ "maximum": 9007199254740991
10439
+ },
10440
+ "status": {
10441
+ "type": "integer",
10442
+ "minimum": 400,
10443
+ "maximum": 599
10444
+ },
10445
+ "title": {
10446
+ "type": "string",
10447
+ "minLength": 1
10448
+ },
10449
+ "traceId": {
10450
+ "type": "string",
10451
+ "minLength": 1
10452
+ },
10453
+ "type": {
10454
+ "type": "string",
10455
+ "const": "about:blank"
10456
+ }
10457
+ },
10458
+ "required": ["code", "status", "title", "type"]
10459
+ }
10460
+ }
10461
+ },
10462
+ "description": "Problem document. Possible codes at this status: project_archived."
10463
+ },
10464
+ "429": {
10465
+ "content": {
10466
+ "application/problem+json": {
10467
+ "schema": {
10468
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
10469
+ "type": "object",
10470
+ "properties": {
10471
+ "code": {
10472
+ "type": "string",
10473
+ "x-problem-codes": ["rate_limited"]
10474
+ },
10475
+ "detail": {
10476
+ "type": "string",
10477
+ "minLength": 1
10478
+ },
10479
+ "errors": {
10480
+ "type": "array",
10481
+ "items": {
10482
+ "type": "object",
10483
+ "properties": {
10484
+ "pointer": {
10485
+ "type": "string",
10486
+ "pattern": "^\\/.*"
10487
+ },
10488
+ "reason": {
10489
+ "type": "string",
10490
+ "minLength": 1
10491
+ }
10492
+ },
10493
+ "required": ["pointer", "reason"]
10494
+ }
10495
+ },
10496
+ "retryAfterSeconds": {
10497
+ "type": "integer",
10498
+ "exclusiveMinimum": 0,
10499
+ "maximum": 9007199254740991
10500
+ },
10501
+ "status": {
10502
+ "type": "integer",
10503
+ "minimum": 400,
10504
+ "maximum": 599
10505
+ },
10506
+ "title": {
10507
+ "type": "string",
10508
+ "minLength": 1
10509
+ },
10510
+ "traceId": {
10511
+ "type": "string",
10512
+ "minLength": 1
10513
+ },
10514
+ "type": {
10515
+ "type": "string",
10516
+ "const": "about:blank"
10517
+ }
10518
+ },
10519
+ "required": ["code", "status", "title", "type"]
10520
+ }
10521
+ }
10522
+ },
10523
+ "description": "Problem document. Possible codes at this status: rate_limited."
10524
+ },
10525
+ "503": {
10526
+ "content": {
10527
+ "application/problem+json": {
10528
+ "schema": {
10529
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
10530
+ "type": "object",
10531
+ "properties": {
10532
+ "code": {
10533
+ "type": "string",
10534
+ "x-problem-codes": [
10535
+ "capability_not_configured",
10536
+ "service_unavailable"
10537
+ ]
10538
+ },
10539
+ "detail": {
10540
+ "type": "string",
10541
+ "minLength": 1
10542
+ },
10543
+ "errors": {
10544
+ "type": "array",
10545
+ "items": {
10546
+ "type": "object",
10547
+ "properties": {
10548
+ "pointer": {
10549
+ "type": "string",
10550
+ "pattern": "^\\/.*"
10551
+ },
10552
+ "reason": {
10553
+ "type": "string",
10554
+ "minLength": 1
10555
+ }
10556
+ },
10557
+ "required": ["pointer", "reason"]
10558
+ }
10559
+ },
10560
+ "retryAfterSeconds": {
10561
+ "type": "integer",
10562
+ "exclusiveMinimum": 0,
10563
+ "maximum": 9007199254740991
10564
+ },
10565
+ "status": {
10566
+ "type": "integer",
10567
+ "minimum": 400,
10568
+ "maximum": 599
10569
+ },
10570
+ "title": {
10571
+ "type": "string",
10572
+ "minLength": 1
10573
+ },
10574
+ "traceId": {
10575
+ "type": "string",
10576
+ "minLength": 1
10577
+ },
10578
+ "type": {
10579
+ "type": "string",
10580
+ "const": "about:blank"
10581
+ }
10582
+ },
10583
+ "required": ["code", "status", "title", "type"]
10584
+ }
10585
+ }
10586
+ },
10587
+ "description": "Problem document. Possible codes at this status: capability_not_configured, service_unavailable."
10588
+ }
10589
+ },
10590
+ "summary": "List failure webhook deliveries",
10591
+ "security": [
10592
+ {
10593
+ "apiCredential": ["occurrences:read"]
10594
+ },
10595
+ {
10596
+ "memberSession": ["occurrences:read"],
10597
+ "memberSessionEnvironment": [],
10598
+ "memberSessionProject": []
10599
+ }
10600
+ ]
10601
+ }
10602
+ },
8086
10603
  "/v1/organization/lifecycle": {
8087
10604
  "get": {
8088
10605
  "description": "Reads the signed-in administrator's organization closure generation and progress, including the reversible window. It remains available during closure so the administrator can request recovery.",
@@ -34973,7 +37490,8 @@
34973
37490
  "payment-authentication-required",
34974
37491
  "payment-outcome-unresolved",
34975
37492
  "service-restored",
34976
- "schedule-auto-paused"
37493
+ "schedule-auto-paused",
37494
+ "delivery-failed"
34977
37495
  ]
34978
37496
  },
34979
37497
  "occurredAt": {
@@ -35025,7 +37543,7 @@
35025
37543
  {
35026
37544
  "type": "string",
35027
37545
  "maxLength": 1024,
35028
- "pattern": "^\\/o\\/[A-Za-z0-9_%.-]+\\/p\\/proj_[0-9abcdefghjkmnpqrstvwxyz]{26}\\/(?:live|test)\\/schedules\\/sch_[0-9abcdefghjkmnpqrstvwxyz]{26}$"
37546
+ "pattern": "^\\/o\\/[A-Za-z0-9_%.-]+\\/p\\/proj_[0-9abcdefghjkmnpqrstvwxyz]{26}\\/(?:live|test)\\/schedules(?:\\/sch_[0-9abcdefghjkmnpqrstvwxyz]{26}(?:\\/occurrences\\/occ_[0-9abcdefghjkmnpqrstvwxyz]{26})?)?$"
35029
37547
  }
35030
37548
  ]
35031
37549
  },
@@ -38108,7 +40626,7 @@
38108
40626
  },
38109
40627
  "/v1/billing/funding/purchase": {
38110
40628
  "post": {
38111
- "description": "Confirms one exact manual execution-credit quote and creates or replays its durable payment operation. Billing-owner authority and explicit agent approval apply; the Idempotency-Key preserves one payment identity across retries. Manual funding stays outside the automatic-charge ceiling. A browser redirect never grants credit: only authenticated provider reconciliation can move the operation to paid and grant its exact execution credit once, while the operation reports provider-confirmed tax and gross when known.",
40629
+ "description": "Confirms one exact manual execution-credit quote and creates or replays its durable payment operation. Billing-owner authority and explicit agent approval apply; the Idempotency-Key preserves one payment identity across retries. Manual funding stays outside the automatic-charge ceiling. A browser redirect never grants credit: only authenticated provider reconciliation can move the operation to paid and grant its exact execution credit once, while the operation reports provider-confirmed tax and gross when known. With savePaymentMethod, the payment method used becomes the organization's saved payment method once the payment is confirmed, unless one is already saved.",
38112
40630
  "operationId": "billing.purchase",
38113
40631
  "parameters": [
38114
40632
  {
@@ -39357,6 +41875,10 @@
39357
41875
  "type": "string",
39358
41876
  "minLength": 1,
39359
41877
  "maxLength": 128
41878
+ },
41879
+ "savePaymentMethod": {
41880
+ "type": "boolean",
41881
+ "description": "true: the customer also asks to keep the payment method they pay with, for automatic top-up and for projects past the free one. The hosted payment then saves it for later charges made without the customer present (it offers every method the account enables except Klarna, which cannot be charged that way), and once the provider confirms this payment paid, that method becomes the organization's saved payment method if it has none. An existing saved payment method is never replaced, and saving one never turns automatic top-up on. Omitted or false: the purchase does exactly what it always did."
39360
41882
  }
39361
41883
  },
39362
41884
  "required": ["confirmed", "expectedRevision", "quote"],