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

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 (135) hide show
  1. package/README.md +1 -1
  2. package/dist/attempt-diagnostics.d.ts +8 -0
  3. package/dist/attempt-diagnostics.js +68 -0
  4. package/dist/authority.d.ts +4 -1
  5. package/dist/authority.js +1 -0
  6. package/dist/billing.d.ts +11 -10
  7. package/dist/billing.js +7 -4
  8. package/dist/data-export.d.ts +2 -0
  9. package/dist/delivery.d.ts +43 -40
  10. package/dist/delivery.js +14 -37
  11. package/dist/effective-limits.d.ts +4 -4
  12. package/dist/endpoints.d.ts +173 -5
  13. package/dist/endpoints.js +72 -1
  14. package/dist/first-value-journey.js +4 -4
  15. package/dist/http-request.d.ts +193 -0
  16. package/dist/http-request.js +305 -0
  17. package/dist/identity.d.ts +7 -7
  18. package/dist/index.d.ts +6 -3
  19. package/dist/index.js +5 -2
  20. package/dist/mcp.d.ts +2 -1
  21. package/dist/members.d.ts +141 -0
  22. package/dist/members.js +223 -0
  23. package/dist/oauth.d.ts +7 -0
  24. package/dist/operation-definitions.d.ts +20 -4
  25. package/dist/operation-definitions.js +9 -1
  26. package/dist/operations.d.ts +999 -135
  27. package/dist/operations.js +83 -10
  28. package/dist/organization-lifecycle.d.ts +10 -0
  29. package/dist/policy.js +5 -2
  30. package/dist/scheduling-records.d.ts +332 -8
  31. package/dist/scheduling-records.js +5 -0
  32. package/dist/scheduling.d.ts +485 -18
  33. package/dist/scheduling.js +77 -5
  34. package/dist/secrets.d.ts +7 -0
  35. package/dist/signatures.d.ts +1 -1
  36. package/dist/tenancy.d.ts +1 -1
  37. package/dist/tenancy.js +1 -1
  38. package/dist/test-sink.d.ts +27 -41
  39. package/dist/test-sink.js +12 -31
  40. package/dist/zod-values.d.ts +2 -2
  41. package/dist/zod-values.js +1 -1
  42. package/generated/v1/callback-receiver.json +4 -4
  43. package/generated/v1/examples/endpoints.ensure.request.json +3 -0
  44. package/generated/v1/examples/endpoints.ensure.response.json +20 -0
  45. package/generated/v1/examples/invitations.create.request.json +5 -0
  46. package/generated/v1/examples/invitations.create.response.json +7 -0
  47. package/generated/v1/examples/invitations.list.response.json +11 -0
  48. package/generated/v1/examples/invitations.resend.request.json +1 -0
  49. package/generated/v1/examples/invitations.resend.response.json +4 -0
  50. package/generated/v1/examples/invitations.revoke.request.json +3 -0
  51. package/generated/v1/examples/invitations.revoke.response.json +4 -0
  52. package/generated/v1/examples/members.list.response.json +13 -0
  53. package/generated/v1/examples/members.remove.request.json +3 -0
  54. package/generated/v1/examples/members.remove.response.json +4 -0
  55. package/generated/v1/examples/members.role.request.json +3 -0
  56. package/generated/v1/examples/members.role.response.json +4 -0
  57. package/generated/v1/examples/projectmembers.add.request.json +1 -0
  58. package/generated/v1/examples/projectmembers.add.response.json +4 -0
  59. package/generated/v1/examples/projectmembers.remove.request.json +3 -0
  60. package/generated/v1/examples/projectmembers.remove.response.json +4 -0
  61. package/generated/v1/first-value-journey.json +4 -4
  62. package/generated/v1/manifest.json +284 -0
  63. package/generated/v1/openapi.json +9387 -1021
  64. package/generated/v1/policy-matrix.json +72 -0
  65. package/generated/v1/schemas/attempts.list.response.json +105 -0
  66. package/generated/v1/schemas/attempts.read.response.json +105 -0
  67. package/generated/v1/schemas/billing.notices.response.json +16 -6
  68. package/generated/v1/schemas/context.read.response.json +1 -0
  69. package/generated/v1/schemas/credentials.connection.response.json +1 -0
  70. package/generated/v1/schemas/credentials.create.request.json +1 -0
  71. package/generated/v1/schemas/credentials.create.response.json +1 -0
  72. package/generated/v1/schemas/credentials.list.response.json +1 -0
  73. package/generated/v1/schemas/credentials.revoke.response.json +1 -0
  74. package/generated/v1/schemas/credentials.rotate.response.json +2 -0
  75. package/generated/v1/schemas/endpoints.acknowledgeSigningKeyRotation.response.json +59 -0
  76. package/generated/v1/schemas/endpoints.create.request.json +74 -0
  77. package/generated/v1/schemas/endpoints.create.response.json +59 -0
  78. package/generated/v1/schemas/endpoints.disable.response.json +59 -0
  79. package/generated/v1/schemas/endpoints.enable.response.json +59 -0
  80. package/generated/v1/schemas/endpoints.ensure.request.json +91 -0
  81. package/generated/v1/schemas/endpoints.ensure.response.json +169 -0
  82. package/generated/v1/schemas/endpoints.list.response.json +59 -0
  83. package/generated/v1/schemas/endpoints.read.response.json +59 -0
  84. package/generated/v1/schemas/endpoints.rotateSigningKey.response.json +59 -0
  85. package/generated/v1/schemas/endpoints.update.request.json +74 -0
  86. package/generated/v1/schemas/endpoints.update.response.json +59 -0
  87. package/generated/v1/schemas/grants.list.response.json +1 -0
  88. package/generated/v1/schemas/grants.revoke.response.json +1 -0
  89. package/generated/v1/schemas/invitations.create.request-headers.json +13 -0
  90. package/generated/v1/schemas/invitations.create.request.json +24 -0
  91. package/generated/v1/schemas/invitations.create.response.json +31 -0
  92. package/generated/v1/schemas/invitations.list.response.json +40 -0
  93. package/generated/v1/schemas/invitations.resend.request-headers.json +13 -0
  94. package/generated/v1/schemas/invitations.resend.request.json +6 -0
  95. package/generated/v1/schemas/invitations.resend.response.json +27 -0
  96. package/generated/v1/schemas/invitations.revoke.request-headers.json +13 -0
  97. package/generated/v1/schemas/invitations.revoke.request.json +12 -0
  98. package/generated/v1/schemas/invitations.revoke.response.json +27 -0
  99. package/generated/v1/schemas/members.list.response.json +53 -0
  100. package/generated/v1/schemas/members.remove.request-headers.json +13 -0
  101. package/generated/v1/schemas/members.remove.request.json +12 -0
  102. package/generated/v1/schemas/members.remove.response.json +27 -0
  103. package/generated/v1/schemas/members.role.request-headers.json +13 -0
  104. package/generated/v1/schemas/members.role.request.json +12 -0
  105. package/generated/v1/schemas/members.role.response.json +27 -0
  106. package/generated/v1/schemas/occurrences.redeliver.response.json +105 -0
  107. package/generated/v1/schemas/projectmembers.add.request-headers.json +13 -0
  108. package/generated/v1/schemas/projectmembers.add.request.json +6 -0
  109. package/generated/v1/schemas/projectmembers.add.response.json +27 -0
  110. package/generated/v1/schemas/projectmembers.remove.request-headers.json +13 -0
  111. package/generated/v1/schemas/projectmembers.remove.request.json +12 -0
  112. package/generated/v1/schemas/projectmembers.remove.response.json +27 -0
  113. package/generated/v1/schemas/schedules.archive.response.json +188 -1
  114. package/generated/v1/schemas/schedules.cancel.response.json +188 -1
  115. package/generated/v1/schemas/schedules.create.request.json +164 -1
  116. package/generated/v1/schemas/schedules.create.response.json +206 -1
  117. package/generated/v1/schemas/schedules.list.response.json +188 -1
  118. package/generated/v1/schemas/schedules.pause.response.json +188 -1
  119. package/generated/v1/schemas/schedules.read.response.json +188 -1
  120. package/generated/v1/schemas/schedules.replace.request.json +164 -1
  121. package/generated/v1/schemas/schedules.replace.response.json +206 -1
  122. package/generated/v1/schemas/schedules.resume.response.json +188 -1
  123. package/generated/v1/snippets/endpoints.create.json +1 -1
  124. package/generated/v1/snippets/endpoints.ensure.json +6 -0
  125. package/generated/v1/snippets/invitations.create.json +6 -0
  126. package/generated/v1/snippets/invitations.list.json +6 -0
  127. package/generated/v1/snippets/invitations.resend.json +6 -0
  128. package/generated/v1/snippets/invitations.revoke.json +6 -0
  129. package/generated/v1/snippets/journey/create-destination.json +1 -1
  130. package/generated/v1/snippets/members.list.json +6 -0
  131. package/generated/v1/snippets/members.remove.json +6 -0
  132. package/generated/v1/snippets/members.role.json +6 -0
  133. package/generated/v1/snippets/projectmembers.add.json +6 -0
  134. package/generated/v1/snippets/projectmembers.remove.json +6 -0
  135. package/package.json +1 -1
@@ -0,0 +1,4 @@
1
+ {
2
+ "completed": true,
3
+ "id": "inv_0123456789abcdef0123456789"
4
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "confirmed": true
3
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "completed": true,
3
+ "id": "inv_0123456789abcdef0123456789"
4
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "data": [
3
+ {
4
+ "id": "mem_0123456789abcdef0123456789",
5
+ "email": "teammate@example.com",
6
+ "name": "Teammate",
7
+ "role": "member",
8
+ "projects": ["proj_01h8xyz9k2m4n6p8r0t2v4w6y8"],
9
+ "allProjects": false,
10
+ "self": false
11
+ }
12
+ ]
13
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "confirmed": true
3
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "completed": true,
3
+ "id": "mem_0123456789abcdef0123456789"
4
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "role": "member"
3
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "completed": true,
3
+ "id": "mem_0123456789abcdef0123456789"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "completed": true,
3
+ "id": "mem_0123456789abcdef0123456789"
4
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "confirmed": true
3
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "completed": true,
3
+ "id": "mem_0123456789abcdef0123456789"
4
+ }
@@ -2,7 +2,7 @@
2
2
  "contractVersion": "2026-08-22",
3
3
  "prerequisites": [
4
4
  {
5
- "action": "Accept your GreatWait invitation, sign in, and create a project in the dashboard.",
5
+ "action": "Sign up at https://app.greatwait.dev/sign-up and name your organization, or sign in. Then create a project in the dashboard, or pick an existing one.",
6
6
  "because": "projects.create accepts only a signed-in member, so a project is created by a person rather than by an API credential.",
7
7
  "id": "project",
8
8
  "title": "A project"
@@ -14,10 +14,10 @@
14
14
  "title": "An API credential"
15
15
  },
16
16
  {
17
- "action": "Have an HTTPS URL of your own that answers POST with a 2xx status, and can be reached from the public internet.",
18
- "because": "GreatWait delivers your callback to an address you control. It does not offer a shared receiver to try, and it will not send your payload to a third-party inspection service on your behalf.",
17
+ "action": "Get a test URL from webhook.site, which shows every request it receives, or use your own app's HTTPS URL. It must answer with a 2xx status and be reachable from the public internet.",
18
+ "because": "GreatWait calls the URL you give it. Don't send real data to a public tester.",
19
19
  "id": "receiver",
20
- "title": "An HTTPS receiver you control"
20
+ "title": "A URL to call"
21
21
  }
22
22
  ],
23
23
  "steps": [
@@ -7,6 +7,7 @@
7
7
  "docs/quickstarts/curl.md",
8
8
  "docs/quickstarts/first-value.mjs",
9
9
  "docs/quickstarts/first-value.sh",
10
+ "docs/quickstarts/http-calls.md",
10
11
  "docs/quickstarts/javascript.md",
11
12
  "docs/quickstarts/mcp-reference.md",
12
13
  "docs/quickstarts/mcp.md",
@@ -73,6 +74,8 @@
73
74
  "examples/endpoints.create.response.json",
74
75
  "examples/endpoints.disable.response.json",
75
76
  "examples/endpoints.enable.response.json",
77
+ "examples/endpoints.ensure.request.json",
78
+ "examples/endpoints.ensure.response.json",
76
79
  "examples/endpoints.list.response.json",
77
80
  "examples/endpoints.read.response.json",
78
81
  "examples/endpoints.revealSigningSecret.response.json",
@@ -90,7 +93,19 @@
90
93
  "examples/forecast.windows.response.json",
91
94
  "examples/grants.list.response.json",
92
95
  "examples/grants.revoke.response.json",
96
+ "examples/invitations.create.request.json",
97
+ "examples/invitations.create.response.json",
98
+ "examples/invitations.list.response.json",
99
+ "examples/invitations.resend.request.json",
100
+ "examples/invitations.resend.response.json",
101
+ "examples/invitations.revoke.request.json",
102
+ "examples/invitations.revoke.response.json",
93
103
  "examples/limits.read.response.json",
104
+ "examples/members.list.response.json",
105
+ "examples/members.remove.request.json",
106
+ "examples/members.remove.response.json",
107
+ "examples/members.role.request.json",
108
+ "examples/members.role.response.json",
94
109
  "examples/meta.scaffold.response.json",
95
110
  "examples/meta.version.response.json",
96
111
  "examples/mock/mock.getFixture.response.json",
@@ -105,6 +120,10 @@
105
120
  "examples/organizations.lifecycle.response.json",
106
121
  "examples/organizations.restore.request.json",
107
122
  "examples/organizations.restore.response.json",
123
+ "examples/projectmembers.add.request.json",
124
+ "examples/projectmembers.add.response.json",
125
+ "examples/projectmembers.remove.request.json",
126
+ "examples/projectmembers.remove.response.json",
108
127
  "examples/projects.archive.request.json",
109
128
  "examples/projects.archive.response.json",
110
129
  "examples/projects.create.request.json",
@@ -220,6 +239,8 @@
220
239
  "schemas/endpoints.disable.response.json",
221
240
  "schemas/endpoints.enable.response-headers.json",
222
241
  "schemas/endpoints.enable.response.json",
242
+ "schemas/endpoints.ensure.request.json",
243
+ "schemas/endpoints.ensure.response.json",
223
244
  "schemas/endpoints.list.query.json",
224
245
  "schemas/endpoints.list.response.json",
225
246
  "schemas/endpoints.read.response-headers.json",
@@ -248,7 +269,24 @@
248
269
  "schemas/forecast.windows.response.json",
249
270
  "schemas/grants.list.response.json",
250
271
  "schemas/grants.revoke.response.json",
272
+ "schemas/invitations.create.request-headers.json",
273
+ "schemas/invitations.create.request.json",
274
+ "schemas/invitations.create.response.json",
275
+ "schemas/invitations.list.response.json",
276
+ "schemas/invitations.resend.request-headers.json",
277
+ "schemas/invitations.resend.request.json",
278
+ "schemas/invitations.resend.response.json",
279
+ "schemas/invitations.revoke.request-headers.json",
280
+ "schemas/invitations.revoke.request.json",
281
+ "schemas/invitations.revoke.response.json",
251
282
  "schemas/limits.read.response.json",
283
+ "schemas/members.list.response.json",
284
+ "schemas/members.remove.request-headers.json",
285
+ "schemas/members.remove.request.json",
286
+ "schemas/members.remove.response.json",
287
+ "schemas/members.role.request-headers.json",
288
+ "schemas/members.role.request.json",
289
+ "schemas/members.role.response.json",
252
290
  "schemas/meta.scaffold.response.json",
253
291
  "schemas/meta.version.response.json",
254
292
  "schemas/mock/mock.getFixture.response.json",
@@ -266,6 +304,12 @@
266
304
  "schemas/organizations.lifecycle.response.json",
267
305
  "schemas/organizations.restore.request.json",
268
306
  "schemas/organizations.restore.response.json",
307
+ "schemas/projectmembers.add.request-headers.json",
308
+ "schemas/projectmembers.add.request.json",
309
+ "schemas/projectmembers.add.response.json",
310
+ "schemas/projectmembers.remove.request-headers.json",
311
+ "schemas/projectmembers.remove.request.json",
312
+ "schemas/projectmembers.remove.response.json",
269
313
  "schemas/projects.archive.request-headers.json",
270
314
  "schemas/projects.archive.request.json",
271
315
  "schemas/projects.archive.response-headers.json",
@@ -356,6 +400,7 @@
356
400
  "snippets/endpoints.create.json",
357
401
  "snippets/endpoints.disable.json",
358
402
  "snippets/endpoints.enable.json",
403
+ "snippets/endpoints.ensure.json",
359
404
  "snippets/endpoints.list.json",
360
405
  "snippets/endpoints.read.json",
361
406
  "snippets/endpoints.revealSigningSecret.json",
@@ -370,6 +415,10 @@
370
415
  "snippets/forecast.windows.json",
371
416
  "snippets/grants.list.json",
372
417
  "snippets/grants.revoke.json",
418
+ "snippets/invitations.create.json",
419
+ "snippets/invitations.list.json",
420
+ "snippets/invitations.resend.json",
421
+ "snippets/invitations.revoke.json",
373
422
  "snippets/journey/await-occurrence.json",
374
423
  "snippets/journey/check-credential.json",
375
424
  "snippets/journey/check-service.json",
@@ -380,6 +429,9 @@
380
429
  "snippets/journey/read-schedule.json",
381
430
  "snippets/journey/replay-one-shot.json",
382
431
  "snippets/limits.read.json",
432
+ "snippets/members.list.json",
433
+ "snippets/members.remove.json",
434
+ "snippets/members.role.json",
383
435
  "snippets/meta.scaffold.json",
384
436
  "snippets/meta.version.json",
385
437
  "snippets/mock/mock.getFixture.json",
@@ -391,6 +443,8 @@
391
443
  "snippets/organizations.close.json",
392
444
  "snippets/organizations.lifecycle.json",
393
445
  "snippets/organizations.restore.json",
446
+ "snippets/projectmembers.add.json",
447
+ "snippets/projectmembers.remove.json",
394
448
  "snippets/projects.archive.json",
395
449
  "snippets/projects.create.json",
396
450
  "snippets/projects.delete.json",
@@ -547,6 +601,213 @@
547
601
  "sessionAuthority": "headers",
548
602
  "surfaces": ["api", "mock"]
549
603
  },
604
+ {
605
+ "id": "members.list",
606
+ "method": "GET",
607
+ "mutates": false,
608
+ "path": "/v1/organization/members",
609
+ "principals": ["session", "oauth"],
610
+ "problems": [
611
+ "authentication_required",
612
+ "capability_not_configured",
613
+ "credential_expired",
614
+ "credential_revoked",
615
+ "invalid_request",
616
+ "not_found",
617
+ "rate_limited",
618
+ "scope_missing",
619
+ "service_unavailable",
620
+ "state_conflict"
621
+ ],
622
+ "scopes": ["members:manage"],
623
+ "sessionAuthority": "organization",
624
+ "surfaces": ["api", "mock"]
625
+ },
626
+ {
627
+ "id": "invitations.list",
628
+ "method": "GET",
629
+ "mutates": false,
630
+ "path": "/v1/organization/invitations",
631
+ "principals": ["session", "oauth"],
632
+ "problems": [
633
+ "authentication_required",
634
+ "capability_not_configured",
635
+ "credential_expired",
636
+ "credential_revoked",
637
+ "invalid_request",
638
+ "not_found",
639
+ "rate_limited",
640
+ "scope_missing",
641
+ "service_unavailable",
642
+ "state_conflict"
643
+ ],
644
+ "scopes": ["members:manage"],
645
+ "sessionAuthority": "organization",
646
+ "surfaces": ["api", "mock"]
647
+ },
648
+ {
649
+ "id": "invitations.create",
650
+ "method": "POST",
651
+ "mutates": true,
652
+ "path": "/v1/organization/invitations",
653
+ "principals": ["session", "oauth"],
654
+ "problems": [
655
+ "authentication_required",
656
+ "capability_not_configured",
657
+ "credential_expired",
658
+ "credential_revoked",
659
+ "idempotency_key_reused",
660
+ "invalid_request",
661
+ "not_found",
662
+ "rate_limited",
663
+ "scope_missing",
664
+ "service_unavailable",
665
+ "state_conflict"
666
+ ],
667
+ "scopes": ["members:manage"],
668
+ "sessionAuthority": "organization",
669
+ "surfaces": ["api", "mock"]
670
+ },
671
+ {
672
+ "id": "invitations.resend",
673
+ "method": "POST",
674
+ "mutates": true,
675
+ "path": "/v1/organization/invitations/{invitationId}/resend",
676
+ "principals": ["session", "oauth"],
677
+ "problems": [
678
+ "authentication_required",
679
+ "capability_not_configured",
680
+ "credential_expired",
681
+ "credential_revoked",
682
+ "idempotency_key_reused",
683
+ "invalid_request",
684
+ "not_found",
685
+ "rate_limited",
686
+ "scope_missing",
687
+ "service_unavailable",
688
+ "state_conflict"
689
+ ],
690
+ "scopes": ["members:manage"],
691
+ "sessionAuthority": "organization",
692
+ "surfaces": ["api", "mock"]
693
+ },
694
+ {
695
+ "id": "invitations.revoke",
696
+ "method": "POST",
697
+ "mutates": true,
698
+ "path": "/v1/organization/invitations/{invitationId}/revoke",
699
+ "principals": ["session", "oauth"],
700
+ "problems": [
701
+ "authentication_required",
702
+ "capability_not_configured",
703
+ "credential_expired",
704
+ "credential_revoked",
705
+ "idempotency_key_reused",
706
+ "invalid_request",
707
+ "not_found",
708
+ "rate_limited",
709
+ "scope_missing",
710
+ "service_unavailable",
711
+ "state_conflict"
712
+ ],
713
+ "scopes": ["members:manage"],
714
+ "sessionAuthority": "organization",
715
+ "surfaces": ["api", "mock"]
716
+ },
717
+ {
718
+ "id": "members.role",
719
+ "method": "PATCH",
720
+ "mutates": true,
721
+ "path": "/v1/organization/members/{memberId}",
722
+ "principals": ["session", "oauth"],
723
+ "problems": [
724
+ "authentication_required",
725
+ "capability_not_configured",
726
+ "credential_expired",
727
+ "credential_revoked",
728
+ "idempotency_key_reused",
729
+ "invalid_request",
730
+ "not_found",
731
+ "rate_limited",
732
+ "scope_missing",
733
+ "service_unavailable",
734
+ "state_conflict"
735
+ ],
736
+ "scopes": ["members:manage"],
737
+ "sessionAuthority": "organization",
738
+ "surfaces": ["api", "mock"]
739
+ },
740
+ {
741
+ "id": "members.remove",
742
+ "method": "POST",
743
+ "mutates": true,
744
+ "path": "/v1/organization/members/{memberId}/remove",
745
+ "principals": ["session", "oauth"],
746
+ "problems": [
747
+ "authentication_required",
748
+ "capability_not_configured",
749
+ "credential_expired",
750
+ "credential_revoked",
751
+ "idempotency_key_reused",
752
+ "invalid_request",
753
+ "not_found",
754
+ "rate_limited",
755
+ "scope_missing",
756
+ "service_unavailable",
757
+ "state_conflict"
758
+ ],
759
+ "scopes": ["members:manage"],
760
+ "sessionAuthority": "organization",
761
+ "surfaces": ["api", "mock"]
762
+ },
763
+ {
764
+ "id": "projectmembers.add",
765
+ "method": "PUT",
766
+ "mutates": true,
767
+ "path": "/v1/projects/{projectId}/members/{memberId}",
768
+ "principals": ["session", "oauth"],
769
+ "problems": [
770
+ "authentication_required",
771
+ "capability_not_configured",
772
+ "credential_expired",
773
+ "credential_revoked",
774
+ "idempotency_key_reused",
775
+ "invalid_request",
776
+ "not_found",
777
+ "project_archived",
778
+ "rate_limited",
779
+ "scope_missing",
780
+ "service_unavailable",
781
+ "state_conflict"
782
+ ],
783
+ "scopes": ["members:manage"],
784
+ "sessionAuthority": "headers",
785
+ "surfaces": ["api", "mock"]
786
+ },
787
+ {
788
+ "id": "projectmembers.remove",
789
+ "method": "POST",
790
+ "mutates": true,
791
+ "path": "/v1/projects/{projectId}/members/{memberId}/remove",
792
+ "principals": ["session", "oauth"],
793
+ "problems": [
794
+ "authentication_required",
795
+ "capability_not_configured",
796
+ "credential_expired",
797
+ "credential_revoked",
798
+ "idempotency_key_reused",
799
+ "invalid_request",
800
+ "not_found",
801
+ "project_archived",
802
+ "rate_limited",
803
+ "scope_missing",
804
+ "service_unavailable",
805
+ "state_conflict"
806
+ ],
807
+ "scopes": ["members:manage"],
808
+ "sessionAuthority": "headers",
809
+ "surfaces": ["api", "mock"]
810
+ },
550
811
  {
551
812
  "id": "organizations.lifecycle",
552
813
  "method": "GET",
@@ -693,6 +954,29 @@
693
954
  "sessionAuthority": "headers",
694
955
  "surfaces": ["api", "mock"]
695
956
  },
957
+ {
958
+ "id": "endpoints.ensure",
959
+ "method": "POST",
960
+ "mutates": true,
961
+ "path": "/v1/endpoints/ensure",
962
+ "principals": ["api-credential", "oauth", "session"],
963
+ "problems": [
964
+ "authentication_required",
965
+ "capability_not_configured",
966
+ "credential_expired",
967
+ "credential_revoked",
968
+ "invalid_request",
969
+ "plan_limit_reached",
970
+ "project_archived",
971
+ "rate_limited",
972
+ "scope_missing",
973
+ "service_unavailable",
974
+ "state_conflict"
975
+ ],
976
+ "scopes": ["endpoints:write"],
977
+ "sessionAuthority": "headers",
978
+ "surfaces": ["api", "mock"]
979
+ },
696
980
  {
697
981
  "id": "endpoints.list",
698
982
  "method": "GET",