@greatwait/contracts 0.1.0-alpha.4 → 0.1.0-alpha.6

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 (190) hide show
  1. package/README.md +1 -1
  2. package/dist/authority.d.ts +4 -1
  3. package/dist/authority.js +1 -0
  4. package/dist/billing.d.ts +231 -1
  5. package/dist/billing.js +150 -1
  6. package/dist/callback-safety.js +13 -3
  7. package/dist/configuration-bounds.d.ts +13 -0
  8. package/dist/configuration-bounds.js +13 -0
  9. package/dist/data-export.d.ts +2 -0
  10. package/dist/delivery.d.ts +26 -0
  11. package/dist/delivery.js +2 -0
  12. package/dist/effective-limits.d.ts +40 -0
  13. package/dist/effective-limits.js +42 -0
  14. package/dist/endpoints.d.ts +173 -5
  15. package/dist/endpoints.js +77 -6
  16. package/dist/first-value-journey.d.ts +1 -1
  17. package/dist/first-value-journey.js +11 -7
  18. package/dist/forecast.d.ts +111 -21
  19. package/dist/forecast.js +87 -24
  20. package/dist/http-request.d.ts +193 -0
  21. package/dist/http-request.js +305 -0
  22. package/dist/identity.d.ts +4 -4
  23. package/dist/index.d.ts +9 -6
  24. package/dist/index.js +8 -5
  25. package/dist/mcp.d.ts +2 -1
  26. package/dist/mcp.js +1 -1
  27. package/dist/members.d.ts +141 -0
  28. package/dist/members.js +223 -0
  29. package/dist/oauth.d.ts +7 -0
  30. package/dist/operation-definitions.d.ts +20 -4
  31. package/dist/operation-definitions.js +9 -1
  32. package/dist/operational-config.d.ts +101 -0
  33. package/dist/operational-config.js +341 -0
  34. package/dist/operations.d.ts +1299 -52
  35. package/dist/operations.js +466 -32
  36. package/dist/organization-lifecycle.d.ts +10 -0
  37. package/dist/partition.d.ts +17 -9
  38. package/dist/partition.js +3 -3
  39. package/dist/policy.js +5 -2
  40. package/dist/problems.d.ts +25 -2
  41. package/dist/problems.js +49 -1
  42. package/dist/protocol.d.ts +5 -5
  43. package/dist/protocol.js +2 -1
  44. package/dist/scheduling-records.d.ts +226 -0
  45. package/dist/scheduling-records.js +5 -0
  46. package/dist/scheduling.d.ts +273 -1
  47. package/dist/scheduling.js +91 -4
  48. package/dist/secrets.d.ts +7 -0
  49. package/dist/tenancy.d.ts +1 -1
  50. package/dist/tenancy.js +1 -1
  51. package/dist/usage.js +6 -21
  52. package/dist/zod-values.d.ts +2 -2
  53. package/dist/zod-values.js +1 -1
  54. package/generated/v1/examples/attempts.list.response.json +2 -0
  55. package/generated/v1/examples/attempts.read.response.json +2 -0
  56. package/generated/v1/examples/billing.fundingconfirm.response.json +120 -0
  57. package/generated/v1/examples/billing.invoicehistory.response.json +6 -0
  58. package/generated/v1/examples/billing.invoices.response.json +15 -0
  59. package/generated/v1/examples/billing.paymenthistory.response.json +6 -0
  60. package/generated/v1/examples/billing.paymentmethod.response.json +16 -0
  61. package/generated/v1/examples/billing.paymentmethodconfirm.request.json +3 -0
  62. package/generated/v1/examples/billing.paymentmethodconfirm.response.json +16 -0
  63. package/generated/v1/examples/billing.paymentmethodremove.request.json +3 -0
  64. package/generated/v1/examples/billing.paymentmethodremove.response.json +4 -0
  65. package/generated/v1/examples/billing.paymentmethodsetup.request.json +1 -0
  66. package/generated/v1/examples/billing.paymentmethodsetup.response.json +3 -0
  67. package/generated/v1/examples/endpoints.ensure.request.json +3 -0
  68. package/generated/v1/examples/endpoints.ensure.response.json +20 -0
  69. package/generated/v1/examples/invitations.create.request.json +5 -0
  70. package/generated/v1/examples/invitations.create.response.json +7 -0
  71. package/generated/v1/examples/invitations.list.response.json +11 -0
  72. package/generated/v1/examples/invitations.resend.request.json +1 -0
  73. package/generated/v1/examples/invitations.resend.response.json +4 -0
  74. package/generated/v1/examples/invitations.revoke.request.json +3 -0
  75. package/generated/v1/examples/invitations.revoke.response.json +4 -0
  76. package/generated/v1/examples/limits.read.response.json +16 -0
  77. package/generated/v1/examples/members.list.response.json +13 -0
  78. package/generated/v1/examples/members.remove.request.json +3 -0
  79. package/generated/v1/examples/members.remove.response.json +4 -0
  80. package/generated/v1/examples/members.role.request.json +3 -0
  81. package/generated/v1/examples/members.role.response.json +4 -0
  82. package/generated/v1/examples/occurrences.redeliver.response.json +2 -0
  83. package/generated/v1/examples/projectmembers.add.request.json +1 -0
  84. package/generated/v1/examples/projectmembers.add.response.json +4 -0
  85. package/generated/v1/examples/projectmembers.remove.request.json +3 -0
  86. package/generated/v1/examples/projectmembers.remove.response.json +4 -0
  87. package/generated/v1/first-value-journey.json +24 -8
  88. package/generated/v1/manifest.json +627 -10
  89. package/generated/v1/openapi.json +29081 -15663
  90. package/generated/v1/policy-matrix.json +137 -2
  91. package/generated/v1/schemas/attempts.list.response.json +15 -0
  92. package/generated/v1/schemas/attempts.read.response.json +15 -0
  93. package/generated/v1/schemas/billing.fundingconfirm.response.json +552 -0
  94. package/generated/v1/schemas/billing.invoicehistory.query.json +16 -0
  95. package/generated/v1/schemas/billing.invoicehistory.response.json +88 -0
  96. package/generated/v1/schemas/billing.invoices.response.json +51 -0
  97. package/generated/v1/schemas/billing.ledger.response.json +5 -0
  98. package/generated/v1/schemas/billing.notificationsettingsupdate.request.json +24 -17
  99. package/generated/v1/schemas/billing.paymenthistory.query.json +16 -0
  100. package/generated/v1/schemas/billing.paymenthistory.response.json +182 -0
  101. package/generated/v1/schemas/billing.paymentmethod.response.json +137 -0
  102. package/generated/v1/schemas/billing.paymentmethodconfirm.request.json +14 -0
  103. package/generated/v1/schemas/billing.paymentmethodconfirm.response.json +137 -0
  104. package/generated/v1/schemas/billing.paymentmethodremove.request.json +12 -0
  105. package/generated/v1/schemas/billing.paymentmethodremove.response.json +137 -0
  106. package/generated/v1/schemas/billing.paymentmethodsetup.request.json +12 -0
  107. package/generated/v1/schemas/billing.paymentmethodsetup.response.json +11 -0
  108. package/generated/v1/schemas/billing.purchase.request.json +4 -0
  109. package/generated/v1/schemas/context.read.response.json +1 -0
  110. package/generated/v1/schemas/credentials.connection.response.json +1 -0
  111. package/generated/v1/schemas/credentials.create.request.json +1 -0
  112. package/generated/v1/schemas/credentials.create.response.json +1 -0
  113. package/generated/v1/schemas/credentials.list.response.json +1 -0
  114. package/generated/v1/schemas/credentials.revoke.response.json +1 -0
  115. package/generated/v1/schemas/credentials.rotate.response.json +2 -0
  116. package/generated/v1/schemas/endpoints.acknowledgeSigningKeyRotation.response.json +59 -0
  117. package/generated/v1/schemas/endpoints.create.request.json +74 -0
  118. package/generated/v1/schemas/endpoints.create.response.json +59 -0
  119. package/generated/v1/schemas/endpoints.disable.response.json +59 -0
  120. package/generated/v1/schemas/endpoints.enable.response.json +59 -0
  121. package/generated/v1/schemas/endpoints.ensure.request.json +91 -0
  122. package/generated/v1/schemas/endpoints.ensure.response.json +169 -0
  123. package/generated/v1/schemas/endpoints.list.response.json +59 -0
  124. package/generated/v1/schemas/endpoints.read.response.json +59 -0
  125. package/generated/v1/schemas/endpoints.rotateSigningKey.response.json +59 -0
  126. package/generated/v1/schemas/endpoints.update.request.json +74 -0
  127. package/generated/v1/schemas/endpoints.update.response.json +59 -0
  128. package/generated/v1/schemas/forecast.read.request-headers.json +10 -0
  129. package/generated/v1/schemas/forecast.read.response.json +148 -0
  130. package/generated/v1/schemas/grants.list.response.json +1 -0
  131. package/generated/v1/schemas/grants.revoke.response.json +1 -0
  132. package/generated/v1/schemas/invitations.create.request-headers.json +13 -0
  133. package/generated/v1/schemas/invitations.create.request.json +24 -0
  134. package/generated/v1/schemas/invitations.create.response.json +31 -0
  135. package/generated/v1/schemas/invitations.list.response.json +40 -0
  136. package/generated/v1/schemas/invitations.resend.request-headers.json +13 -0
  137. package/generated/v1/schemas/invitations.resend.request.json +6 -0
  138. package/generated/v1/schemas/invitations.resend.response.json +27 -0
  139. package/generated/v1/schemas/invitations.revoke.request-headers.json +13 -0
  140. package/generated/v1/schemas/invitations.revoke.request.json +12 -0
  141. package/generated/v1/schemas/invitations.revoke.response.json +27 -0
  142. package/generated/v1/schemas/limits.read.response.json +79 -0
  143. package/generated/v1/schemas/members.list.response.json +53 -0
  144. package/generated/v1/schemas/members.remove.request-headers.json +13 -0
  145. package/generated/v1/schemas/members.remove.request.json +12 -0
  146. package/generated/v1/schemas/members.remove.response.json +27 -0
  147. package/generated/v1/schemas/members.role.request-headers.json +13 -0
  148. package/generated/v1/schemas/members.role.request.json +12 -0
  149. package/generated/v1/schemas/members.role.response.json +27 -0
  150. package/generated/v1/schemas/occurrences.redeliver.response.json +15 -0
  151. package/generated/v1/schemas/projectmembers.add.request-headers.json +13 -0
  152. package/generated/v1/schemas/projectmembers.add.request.json +6 -0
  153. package/generated/v1/schemas/projectmembers.add.response.json +27 -0
  154. package/generated/v1/schemas/projectmembers.remove.request-headers.json +13 -0
  155. package/generated/v1/schemas/projectmembers.remove.request.json +12 -0
  156. package/generated/v1/schemas/projectmembers.remove.response.json +27 -0
  157. package/generated/v1/schemas/schedules.archive.response.json +138 -1
  158. package/generated/v1/schemas/schedules.cancel.response.json +138 -1
  159. package/generated/v1/schemas/schedules.create.request.json +150 -1
  160. package/generated/v1/schemas/schedules.create.response.json +156 -1
  161. package/generated/v1/schemas/schedules.list.response.json +138 -1
  162. package/generated/v1/schemas/schedules.pause.response.json +138 -1
  163. package/generated/v1/schemas/schedules.read.response.json +138 -1
  164. package/generated/v1/schemas/schedules.replace.request.json +150 -1
  165. package/generated/v1/schemas/schedules.replace.response.json +156 -1
  166. package/generated/v1/schemas/schedules.resume.response.json +138 -1
  167. package/generated/v1/snippets/billing.fundingconfirm.json +6 -0
  168. package/generated/v1/snippets/billing.invoicehistory.json +6 -0
  169. package/generated/v1/snippets/billing.invoices.json +6 -0
  170. package/generated/v1/snippets/billing.notificationsettingsupdate.json +1 -1
  171. package/generated/v1/snippets/billing.paymenthistory.json +6 -0
  172. package/generated/v1/snippets/billing.paymentmethod.json +6 -0
  173. package/generated/v1/snippets/billing.paymentmethodconfirm.json +6 -0
  174. package/generated/v1/snippets/billing.paymentmethodremove.json +6 -0
  175. package/generated/v1/snippets/billing.paymentmethodsetup.json +6 -0
  176. package/generated/v1/snippets/endpoints.create.json +1 -1
  177. package/generated/v1/snippets/endpoints.ensure.json +6 -0
  178. package/generated/v1/snippets/forecast.windows.json +1 -1
  179. package/generated/v1/snippets/invitations.create.json +6 -0
  180. package/generated/v1/snippets/invitations.list.json +6 -0
  181. package/generated/v1/snippets/invitations.resend.json +6 -0
  182. package/generated/v1/snippets/invitations.revoke.json +6 -0
  183. package/generated/v1/snippets/journey/create-destination.json +1 -1
  184. package/generated/v1/snippets/limits.read.json +6 -0
  185. package/generated/v1/snippets/members.list.json +6 -0
  186. package/generated/v1/snippets/members.remove.json +6 -0
  187. package/generated/v1/snippets/members.role.json +6 -0
  188. package/generated/v1/snippets/projectmembers.add.json +6 -0
  189. package/generated/v1/snippets/projectmembers.remove.json +6 -0
  190. package/package.json +7 -2
@@ -0,0 +1,223 @@
1
+ import { z } from "./zod.js";
2
+ import { projectIdSchema } from "./identifiers.js";
3
+ import { API_UNUSED_RESPONSE_SCHEMA, defineOperations, } from "./operation-definitions.js";
4
+ import { requiredIdempotencyRequestHeaderSchema } from "./protocol.js";
5
+ const requestOnly = globalThis
6
+ .GREATWAIT_API_REQUEST_REGISTRY;
7
+ const withoutExamples = globalThis
8
+ .GREATWAIT_RUNTIME_WITHOUT_EXAMPLES;
9
+ const contractsOnly = globalThis
10
+ .GREATWAIT_RUNTIME_CONTRACTS_ONLY;
11
+ /** Assignable roles on the included Clerk plan. Billing is not offered. */
12
+ export const managedMemberRoleSchema = z.enum(["admin", "member"]);
13
+ export const memberIdSchema = z.string().regex(/^mem_[0-9a-f]{26}$/u);
14
+ export const invitationIdSchema = z.string().regex(/^inv_[0-9a-f]{26}$/u);
15
+ export const memberViewSchema = z.strictObject({
16
+ id: memberIdSchema,
17
+ email: z.string().email(),
18
+ name: z.string(),
19
+ role: managedMemberRoleSchema,
20
+ projects: z.array(projectIdSchema),
21
+ allProjects: z.boolean(),
22
+ self: z.boolean(),
23
+ });
24
+ export const memberListSchema = z.strictObject({
25
+ data: z.array(memberViewSchema),
26
+ });
27
+ export const invitationViewSchema = z.strictObject({
28
+ id: invitationIdSchema,
29
+ email: z.string().email(),
30
+ role: managedMemberRoleSchema,
31
+ projects: z.array(projectIdSchema),
32
+ status: z.enum(["pending", "accepted", "revoked", "expired"]),
33
+ });
34
+ export const invitationListSchema = z.strictObject({
35
+ data: z.array(invitationViewSchema),
36
+ });
37
+ export const memberInviteRequestSchema = z.strictObject({
38
+ email: z.string().email(),
39
+ role: managedMemberRoleSchema,
40
+ projects: z.array(projectIdSchema),
41
+ });
42
+ export const memberRoleRequestSchema = z.strictObject({
43
+ role: managedMemberRoleSchema,
44
+ });
45
+ export const memberRemovalRequestSchema = z.strictObject({
46
+ confirmed: z.literal(true),
47
+ });
48
+ export const memberActionSchema = z.strictObject({
49
+ completed: z.literal(true),
50
+ id: z.union([memberIdSchema, invitationIdSchema]),
51
+ project: projectIdSchema.optional(),
52
+ });
53
+ const member = {
54
+ id: "mem_0123456789abcdef0123456789",
55
+ email: "teammate@example.com",
56
+ name: "Teammate",
57
+ role: "member",
58
+ projects: ["proj_01h8xyz9k2m4n6p8r0t2v4w6y8"],
59
+ allProjects: false,
60
+ self: false,
61
+ };
62
+ const invitation = {
63
+ id: "inv_0123456789abcdef0123456789",
64
+ email: "teammate@example.com",
65
+ role: "member",
66
+ projects: member.projects,
67
+ status: "pending",
68
+ };
69
+ const common = {
70
+ creates: false,
71
+ idempotent: true,
72
+ principals: ["session", "oauth"],
73
+ scopes: ["members:manage"],
74
+ surfaces: ["api", "mock"],
75
+ problems: [
76
+ "invalid_request",
77
+ "not_found",
78
+ "state_conflict",
79
+ "service_unavailable",
80
+ "capability_not_configured",
81
+ ],
82
+ sessionAuthority: "organization",
83
+ };
84
+ const write = {
85
+ ...common,
86
+ mutates: true,
87
+ problems: [...common.problems, "idempotency_key_reused"],
88
+ requestHeaders: requiredIdempotencyRequestHeaderSchema,
89
+ response: requestOnly ? API_UNUSED_RESPONSE_SCHEMA : memberActionSchema,
90
+ example: withoutExamples ? {} : { completed: true, id: member.id },
91
+ mcp: { kind: "tool", destructive: false, openWorld: true },
92
+ };
93
+ export const MEMBER_OPERATIONS = defineOperations([
94
+ {
95
+ ...common,
96
+ id: "members.list",
97
+ method: "GET",
98
+ path: "/v1/organization/members",
99
+ mutates: false,
100
+ response: requestOnly ? API_UNUSED_RESPONSE_SCHEMA : memberListSchema,
101
+ example: withoutExamples ? {} : { data: [member] },
102
+ mcp: { kind: "tool", destructive: false, openWorld: false },
103
+ summary: requestOnly ? "" : "List organization members and project access",
104
+ description: contractsOnly
105
+ ? ""
106
+ : "An administrator lists current members. Members cannot enumerate or manage their colleagues. OAuth requires current administrator membership and explicit members:manage consent; API keys cannot manage people.",
107
+ },
108
+ {
109
+ ...common,
110
+ id: "invitations.list",
111
+ method: "GET",
112
+ path: "/v1/organization/invitations",
113
+ mutates: false,
114
+ response: requestOnly ? API_UNUSED_RESPONSE_SCHEMA : invitationListSchema,
115
+ example: withoutExamples ? {} : { data: [invitation] },
116
+ mcp: { kind: "tool", destructive: false, openWorld: false },
117
+ summary: requestOnly ? "" : "List organization invitations",
118
+ description: contractsOnly
119
+ ? ""
120
+ : "Lists invitations with current pending, accepted, revoked or expired status. No invitation ticket is returned.",
121
+ },
122
+ {
123
+ ...write,
124
+ id: "invitations.create",
125
+ creates: true,
126
+ method: "POST",
127
+ path: "/v1/organization/invitations",
128
+ request: memberInviteRequestSchema,
129
+ response: requestOnly ? API_UNUSED_RESPONSE_SCHEMA : invitationViewSchema,
130
+ example: withoutExamples ? {} : invitation,
131
+ requestExample: withoutExamples
132
+ ? {}
133
+ : {
134
+ email: invitation.email,
135
+ role: invitation.role,
136
+ projects: invitation.projects,
137
+ },
138
+ summary: requestOnly ? "" : "Invite a teammate to selected projects",
139
+ description: contractsOnly
140
+ ? ""
141
+ : "Sends a Clerk organization invitation as admin or member, with the selected project access. No seat pricing or product member limit applies. Admins have access to every project.",
142
+ },
143
+ {
144
+ ...write,
145
+ id: "invitations.resend",
146
+ example: withoutExamples ? {} : { completed: true, id: invitation.id },
147
+ method: "POST",
148
+ path: "/v1/organization/invitations/{invitationId}/resend",
149
+ request: z.strictObject({}),
150
+ requestExample: withoutExamples ? {} : {},
151
+ summary: requestOnly ? "" : "Resend a pending invitation",
152
+ description: contractsOnly
153
+ ? ""
154
+ : "Revokes the previous ticket before sending a replacement for the same role and selected projects. Accepted, revoked or expired invitations cannot be resent.",
155
+ },
156
+ {
157
+ ...write,
158
+ id: "invitations.revoke",
159
+ example: withoutExamples ? {} : { completed: true, id: invitation.id },
160
+ method: "POST",
161
+ path: "/v1/organization/invitations/{invitationId}/revoke",
162
+ request: memberRemovalRequestSchema,
163
+ requestExample: withoutExamples ? {} : { confirmed: true },
164
+ mcp: { kind: "tool", destructive: true, openWorld: true },
165
+ summary: requestOnly ? "" : "Revoke a pending invitation",
166
+ description: contractsOnly
167
+ ? ""
168
+ : "Requires explicit confirmation. The outstanding ticket no longer grants organization or project access.",
169
+ },
170
+ {
171
+ ...write,
172
+ id: "members.role",
173
+ method: "PATCH",
174
+ path: "/v1/organization/members/{memberId}",
175
+ request: memberRoleRequestSchema,
176
+ requestExample: withoutExamples ? {} : { role: "member" },
177
+ mcp: { kind: "tool", destructive: true, openWorld: true },
178
+ summary: requestOnly ? "" : "Change a member's role",
179
+ description: contractsOnly
180
+ ? ""
181
+ : "An administrator changes another person's role. Self role changes and demoting the last administrator are refused, including concurrent requests. Existing sessions and grants are narrowed on their next request.",
182
+ },
183
+ {
184
+ ...write,
185
+ id: "members.remove",
186
+ method: "POST",
187
+ path: "/v1/organization/members/{memberId}/remove",
188
+ request: memberRemovalRequestSchema,
189
+ requestExample: withoutExamples ? {} : { confirmed: true },
190
+ mcp: { kind: "tool", destructive: true, openWorld: true },
191
+ summary: requestOnly ? "" : "Remove an organization member",
192
+ description: contractsOnly
193
+ ? ""
194
+ : "Requires explicit confirmation. Removing the last administrator or oneself is refused. Subsequent sessions and grants lose access; organization-owned API keys remain valid and may be revoked separately.",
195
+ },
196
+ {
197
+ ...write,
198
+ id: "projectmembers.add",
199
+ method: "PUT",
200
+ path: "/v1/projects/{projectId}/members/{memberId}",
201
+ sessionAuthority: "headers",
202
+ request: z.strictObject({}),
203
+ requestExample: withoutExamples ? {} : {},
204
+ summary: requestOnly ? "" : "Add a member to a project",
205
+ description: contractsOnly
206
+ ? ""
207
+ : "A current administrator adds another organization member to an owned project. Foreign members and projects are indistinguishable from missing ones. No self addition.",
208
+ },
209
+ {
210
+ ...write,
211
+ id: "projectmembers.remove",
212
+ method: "POST",
213
+ path: "/v1/projects/{projectId}/members/{memberId}/remove",
214
+ sessionAuthority: "headers",
215
+ request: memberRemovalRequestSchema,
216
+ requestExample: withoutExamples ? {} : { confirmed: true },
217
+ mcp: { kind: "tool", destructive: true, openWorld: false },
218
+ summary: requestOnly ? "" : "Remove a member's project access",
219
+ description: contractsOnly
220
+ ? ""
221
+ : "Requires explicit confirmation. The member's existing sessions and OAuth grants lose access on the next request. Administrators retain access to every project; organization-owned API keys keep their single-project authority.",
222
+ },
223
+ ]);
package/dist/oauth.d.ts CHANGED
@@ -414,6 +414,7 @@ export declare const consentPromptSchema: import("zod").ZodObject<{
414
414
  name: import("zod").ZodString;
415
415
  }, import("zod/v4/core").$strip>>;
416
416
  scopes: import("zod").ZodArray<import("zod").ZodEnum<{
417
+ "members:manage": "members:manage";
417
418
  "credentials:administer": "credentials:administer";
418
419
  "billing:write": "billing:write";
419
420
  "credentials:read": "credentials:read";
@@ -455,6 +456,7 @@ export declare const consentDecisionSchema: import("zod").ZodDiscriminatedUnion<
455
456
  }>;
456
457
  project: import("zod").ZodString;
457
458
  scopes: import("zod").ZodArray<import("zod").ZodEnum<{
459
+ "members:manage": "members:manage";
458
460
  "credentials:administer": "credentials:administer";
459
461
  "billing:write": "billing:write";
460
462
  "credentials:read": "credentials:read";
@@ -591,6 +593,7 @@ export declare const oauthGrantSchema: import("zod").ZodObject<{
591
593
  }>>;
592
594
  revokedAt: import("zod").ZodOptional<import("zod").ZodString>;
593
595
  scopes: import("zod").ZodArray<import("zod").ZodEnum<{
596
+ "members:manage": "members:manage";
594
597
  "credentials:administer": "credentials:administer";
595
598
  "billing:write": "billing:write";
596
599
  "credentials:read": "credentials:read";
@@ -637,6 +640,7 @@ export declare const oauthGrantListSchema: import("zod").ZodObject<{
637
640
  }>>;
638
641
  revokedAt: import("zod").ZodOptional<import("zod").ZodString>;
639
642
  scopes: import("zod").ZodArray<import("zod").ZodEnum<{
643
+ "members:manage": "members:manage";
640
644
  "credentials:administer": "credentials:administer";
641
645
  "billing:write": "billing:write";
642
646
  "credentials:read": "credentials:read";
@@ -691,6 +695,7 @@ export declare const oauthGrantRevokedSchema: import("zod").ZodObject<{
691
695
  }>>;
692
696
  revokedAt: import("zod").ZodOptional<import("zod").ZodString>;
693
697
  scopes: import("zod").ZodArray<import("zod").ZodEnum<{
698
+ "members:manage": "members:manage";
694
699
  "credentials:administer": "credentials:administer";
695
700
  "billing:write": "billing:write";
696
701
  "credentials:read": "credentials:read";
@@ -742,6 +747,7 @@ export declare const authorizationServerMetadataSchema: import("zod").ZodObject<
742
747
  }>>;
743
748
  revocation_endpoint: import("zod").ZodURL;
744
749
  scopes_supported: import("zod").ZodArray<import("zod").ZodEnum<{
750
+ "members:manage": "members:manage";
745
751
  "credentials:administer": "credentials:administer";
746
752
  "billing:write": "billing:write";
747
753
  "credentials:read": "credentials:read";
@@ -780,6 +786,7 @@ export declare const protectedResourceMetadataSchema: import("zod").ZodObject<{
780
786
  bearer_methods_supported: import("zod").ZodArray<import("zod").ZodLiteral<"header">>;
781
787
  resource: import("zod").ZodURL;
782
788
  scopes_supported: import("zod").ZodArray<import("zod").ZodEnum<{
789
+ "members:manage": "members:manage";
783
790
  "credentials:administer": "credentials:administer";
784
791
  "billing:write": "billing:write";
785
792
  "credentials:read": "credentials:read";
@@ -1,9 +1,25 @@
1
1
  import type { OperationDefinition } from "./operations.js";
2
2
  /** Fail-closed response placeholder used by the hosted API's request-only registry. */
3
3
  export declare const API_UNUSED_RESPONSE_SCHEMA: import("zod").ZodNever;
4
- /** Keep registry ids precise without duplicating inferred Zod internals in every consumer declaration. */
4
+ /**
5
+ * Keep registry ids precise without duplicating inferred Zod internals in every
6
+ * consumer declaration.
7
+ *
8
+ * The request schema is kept as well (W9-46): the generated client types each
9
+ * builder's body from it, and an entry declared here with only its id kept
10
+ * would leave that body `unknown` — the member and invitation commands took
11
+ * any object at all until this carried it.
12
+ */
5
13
  export declare function defineOperations<const T extends readonly OperationDefinition[]>(definitions: T): {
6
- readonly [K in keyof T]: OperationDefinition & {
7
- readonly id: T[K]["id"];
8
- };
14
+ readonly [K in keyof T]: DefinedOperation<T[K]>;
9
15
  };
16
+ type DefinedOperation<TEntry> = OperationDefinition & {
17
+ readonly id: TEntry extends {
18
+ readonly id: infer TId;
19
+ } ? TId : never;
20
+ } & (TEntry extends {
21
+ readonly request: infer TRequest;
22
+ } ? {
23
+ readonly request: TRequest;
24
+ } : unknown);
25
+ export {};
@@ -1,7 +1,15 @@
1
1
  import { never as neverSchema } from "zod";
2
2
  /** Fail-closed response placeholder used by the hosted API's request-only registry. */
3
3
  export const API_UNUSED_RESPONSE_SCHEMA = neverSchema();
4
- /** Keep registry ids precise without duplicating inferred Zod internals in every consumer declaration. */
4
+ /**
5
+ * Keep registry ids precise without duplicating inferred Zod internals in every
6
+ * consumer declaration.
7
+ *
8
+ * The request schema is kept as well (W9-46): the generated client types each
9
+ * builder's body from it, and an entry declared here with only its id kept
10
+ * would leave that body `unknown` — the member and invitation commands took
11
+ * any object at all until this carried it.
12
+ */
5
13
  export function defineOperations(definitions) {
6
14
  return definitions;
7
15
  }
@@ -0,0 +1,101 @@
1
+ /**
2
+ * The single numeric owner for deployment-governed timer, timeout and retry
3
+ * configuration. Values preserve the accepted policy and measured W9 timing
4
+ * budgets; this leaf imports no schemas, application code or database runtime.
5
+ * Change through a reviewed deployment. Retrying a callback, funding operation
6
+ * or idempotency receipt is a public correctness promise, so organizations may
7
+ * not override these values. Original owner modules keep compatible exports.
8
+ */
9
+ export declare const OPERATIONAL_TIMING: Readonly<{
10
+ projectBillingConflictRetryCount: 4;
11
+ projectBillingConflictRetryBaseMs: 250;
12
+ billingNoticeBackoffBaseMs: 60000;
13
+ automaticFundingBackoffBaseMs: 60000;
14
+ controlPlaneBackoffBaseMs: 10;
15
+ postgresConnectionAcquisitionMs: 2900;
16
+ postgresLockMs: 2000;
17
+ postgresStatementMs: 2900;
18
+ postgresTransactionBudgetMs: 2900;
19
+ postgresTransactionMaximumMs: 2999;
20
+ apiMutationStatementMs: 5000;
21
+ apiMutationBudgetMs: 5000;
22
+ apiMutationMaximumMs: 5000;
23
+ controlPlaneWriteStatementMs: 5000;
24
+ controlPlaneWriteBudgetMs: 5000;
25
+ dispatchHedgeAfterMs: 400;
26
+ dispatchHedgeThirdLegMs: 1200;
27
+ apiHedgeAfterMs: 300;
28
+ authorizationReplayDelaysMs: readonly [500, 1500, 4000];
29
+ claimProbeCount: 3;
30
+ claimReclaimCount: 3;
31
+ claimReclaimWindowMs: 1200;
32
+ controlPlaneBackoffCeilingMs: 200;
33
+ controlPlaneConnectMs: 5000;
34
+ conclusionReplayDelaysMs: readonly [250, 1000, 2000, 4000];
35
+ hostFullRetryMs: 1000;
36
+ deliveryRetryBaseMs: readonly [2000, 5000, 15000, 60000];
37
+ deliveryRetryAfterMaximumMs: 3600000;
38
+ wakeReceiptRetryMs: 5000;
39
+ wakeReceiptRecoveryLifetimeMs: number;
40
+ repairOverdueGraceSeconds: 10;
41
+ admissionWindowMs: 1000;
42
+ admissionLookaheadMs: 60000;
43
+ admissionHedgeAfterMs: 250;
44
+ admissionRpcBudgetMs: 2999;
45
+ unreachableRetryMs: 5000;
46
+ heldResponseStepMarginMs: 20000;
47
+ sendLeaseMarginSeconds: 12;
48
+ sendSettlementReserveMs: 7000;
49
+ exhaustedClaimRetryMs: 250;
50
+ retentionCadenceMs: number;
51
+ retentionBacklogCadenceMs: number;
52
+ retentionRetryHandoffCount: 5;
53
+ timerSignalRetryDelaysMs: readonly number[];
54
+ dispatchWarmHorizonMs: 10000;
55
+ sdkAutoRetryCount: 3;
56
+ sdkAutoRetryBaseMs: 250;
57
+ sdkAutoRetryMaximumWaitMs: 30000;
58
+ callbackMiddlewareLeaseMs: 30000;
59
+ automaticFundingSuccessCooldownMs: number;
60
+ automaticFundingClaimLeaseMs: number;
61
+ automaticFundingBackoffMaximumMs: number;
62
+ providerCreateFenceMs: number;
63
+ fundingUnresolvedAfterMs: number;
64
+ fundingRepairMs: number;
65
+ fundingActionRequiredRepairMs: number;
66
+ fundingDisputeRepairMs: number;
67
+ billingNoticeBackoffMaximumMs: 86400000;
68
+ billingNoticeClaimMaximumMs: number;
69
+ billingNoticeRetryMaximumMs: number;
70
+ billingNoticeCatchUpRetryCount: 5;
71
+ billingNoticeClaimSeconds: number;
72
+ fundingDiscoveryClaimMs: number;
73
+ fundingDiscoveryRetryMaximumMs: number;
74
+ fundingDiscoveryClaimMaximumMs: number;
75
+ fundingAbandonedAfterMs: number;
76
+ checkoutDiscoverySkewSeconds: 60;
77
+ checkoutDiscoveryWindowSeconds: number;
78
+ fundingQuoteLifetimeMs: number;
79
+ automaticFundingPreviewLifetimeMs: number;
80
+ testSinkRefreshMs: 3000;
81
+ payloadLintDelayMs: 250;
82
+ payloadParseBudgetMs: 50;
83
+ dashboardQueryStaleMs: 30000;
84
+ forecastRefreshFloorMs: 30000;
85
+ forecastRefreshMaximumMs: 300000;
86
+ forecastCoverageSlackMs: 120000;
87
+ }>;
88
+ export type OperationalTimingKey = keyof typeof OPERATIONAL_TIMING;
89
+ export declare const OPERATIONAL_TIMING_ENFORCEMENT: Readonly<Record<OperationalTimingKey, readonly string[]>>;
90
+ /** Catalog metadata derives its defaults from the numeric owner above. */
91
+ export declare const OPERATIONAL_TIMING_CATALOG: readonly Readonly<{
92
+ key: "operational.projectBillingConflictRetryCount" | "operational.projectBillingConflictRetryBaseMs" | "operational.billingNoticeBackoffBaseMs" | "operational.automaticFundingBackoffBaseMs" | "operational.controlPlaneBackoffBaseMs" | "operational.postgresConnectionAcquisitionMs" | "operational.postgresLockMs" | "operational.postgresStatementMs" | "operational.postgresTransactionBudgetMs" | "operational.postgresTransactionMaximumMs" | "operational.apiMutationStatementMs" | "operational.apiMutationBudgetMs" | "operational.apiMutationMaximumMs" | "operational.controlPlaneWriteStatementMs" | "operational.controlPlaneWriteBudgetMs" | "operational.dispatchHedgeAfterMs" | "operational.dispatchHedgeThirdLegMs" | "operational.apiHedgeAfterMs" | "operational.authorizationReplayDelaysMs" | "operational.claimProbeCount" | "operational.claimReclaimCount" | "operational.claimReclaimWindowMs" | "operational.controlPlaneBackoffCeilingMs" | "operational.controlPlaneConnectMs" | "operational.conclusionReplayDelaysMs" | "operational.hostFullRetryMs" | "operational.deliveryRetryBaseMs" | "operational.deliveryRetryAfterMaximumMs" | "operational.wakeReceiptRetryMs" | "operational.wakeReceiptRecoveryLifetimeMs" | "operational.repairOverdueGraceSeconds" | "operational.admissionWindowMs" | "operational.admissionLookaheadMs" | "operational.admissionHedgeAfterMs" | "operational.admissionRpcBudgetMs" | "operational.unreachableRetryMs" | "operational.heldResponseStepMarginMs" | "operational.sendLeaseMarginSeconds" | "operational.sendSettlementReserveMs" | "operational.exhaustedClaimRetryMs" | "operational.retentionCadenceMs" | "operational.retentionBacklogCadenceMs" | "operational.retentionRetryHandoffCount" | "operational.timerSignalRetryDelaysMs" | "operational.dispatchWarmHorizonMs" | "operational.sdkAutoRetryCount" | "operational.sdkAutoRetryBaseMs" | "operational.sdkAutoRetryMaximumWaitMs" | "operational.callbackMiddlewareLeaseMs" | "operational.automaticFundingSuccessCooldownMs" | "operational.automaticFundingClaimLeaseMs" | "operational.automaticFundingBackoffMaximumMs" | "operational.providerCreateFenceMs" | "operational.fundingUnresolvedAfterMs" | "operational.fundingRepairMs" | "operational.fundingActionRequiredRepairMs" | "operational.fundingDisputeRepairMs" | "operational.billingNoticeBackoffMaximumMs" | "operational.billingNoticeClaimMaximumMs" | "operational.billingNoticeRetryMaximumMs" | "operational.billingNoticeCatchUpRetryCount" | "operational.billingNoticeClaimSeconds" | "operational.fundingDiscoveryClaimMs" | "operational.fundingDiscoveryRetryMaximumMs" | "operational.fundingDiscoveryClaimMaximumMs" | "operational.fundingAbandonedAfterMs" | "operational.checkoutDiscoverySkewSeconds" | "operational.checkoutDiscoveryWindowSeconds" | "operational.fundingQuoteLifetimeMs" | "operational.automaticFundingPreviewLifetimeMs" | "operational.testSinkRefreshMs" | "operational.payloadLintDelayMs" | "operational.payloadParseBudgetMs" | "operational.dashboardQueryStaleMs" | "operational.forecastRefreshFloorMs" | "operational.forecastRefreshMaximumMs" | "operational.forecastCoverageSlackMs";
93
+ default: number | readonly number[] | readonly [500, 1500, 4000] | readonly [250, 1000, 2000, 4000] | readonly [2000, 5000, 15000, 60000];
94
+ unit: "count" | "seconds" | "milliseconds";
95
+ scope: "deployment";
96
+ permittedLayers: readonly ["deployment"];
97
+ visibility: "operator";
98
+ changeProcedure: "Reviewed deployment; preserve callback, retry, funding and receipt compatibility";
99
+ rationale: "Retain the existing measured or copied operating policy; the enforcement owner documents its evidence";
100
+ enforcement: readonly string[];
101
+ }>[];