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

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 (299) hide show
  1. package/README.md +11 -9
  2. package/dist/authority.d.ts +33 -27
  3. package/dist/authority.js +12 -2
  4. package/dist/billing.d.ts +1001 -0
  5. package/dist/billing.js +684 -0
  6. package/dist/callback-safety.d.ts +2 -2
  7. package/dist/callback-safety.js +2 -2
  8. package/dist/compatibility.d.ts +3 -3
  9. package/dist/compatibility.js +1 -1
  10. package/dist/data-export.d.ts +67 -0
  11. package/dist/data-export.js +182 -0
  12. package/dist/endpoints.d.ts +181 -240
  13. package/dist/endpoints.js +77 -81
  14. package/dist/events.d.ts +17 -17
  15. package/dist/events.js +1 -1
  16. package/dist/first-value-journey.d.ts +49 -55
  17. package/dist/first-value-journey.js +6 -13
  18. package/dist/forecast.d.ts +71 -71
  19. package/dist/forecast.js +1 -1
  20. package/dist/identifiers.d.ts +20 -20
  21. package/dist/identifiers.js +1 -1
  22. package/dist/identity.d.ts +41 -37
  23. package/dist/identity.js +5 -4
  24. package/dist/index.d.ts +10 -5
  25. package/dist/index.js +10 -5
  26. package/dist/mcp.d.ts +21 -19
  27. package/dist/mcp.js +1 -1
  28. package/dist/naming.d.ts +45 -0
  29. package/dist/naming.js +159 -0
  30. package/dist/oauth.d.ts +186 -172
  31. package/dist/oauth.js +1 -1
  32. package/dist/operation-definitions.d.ts +9 -0
  33. package/dist/operation-definitions.js +7 -0
  34. package/dist/operations.d.ts +4162 -2171
  35. package/dist/operations.js +2679 -908
  36. package/dist/organization-lifecycle.d.ts +34 -0
  37. package/dist/organization-lifecycle.js +122 -0
  38. package/dist/partition.d.ts +26 -0
  39. package/dist/policy.d.ts +4 -4
  40. package/dist/policy.js +9 -5
  41. package/dist/problems.d.ts +32 -26
  42. package/dist/problems.js +6 -2
  43. package/dist/protocol.d.ts +204 -75
  44. package/dist/protocol.js +108 -36
  45. package/dist/scheduling-records.d.ts +343 -285
  46. package/dist/scheduling-records.js +1 -1
  47. package/dist/scheduling.d.ts +670 -360
  48. package/dist/scheduling.js +382 -56
  49. package/dist/secrets.d.ts +119 -105
  50. package/dist/secrets.js +1 -1
  51. package/dist/signatures.d.ts +74 -74
  52. package/dist/signatures.js +1 -1
  53. package/dist/tenancy.d.ts +142 -68
  54. package/dist/tenancy.js +70 -17
  55. package/dist/test-sink.d.ts +127 -127
  56. package/dist/test-sink.js +1 -1
  57. package/dist/time.d.ts +4 -4
  58. package/dist/time.js +1 -1
  59. package/dist/timing.d.ts +65 -0
  60. package/dist/timing.js +82 -0
  61. package/dist/usage.d.ts +103 -47
  62. package/dist/usage.js +197 -31
  63. package/dist/workspace.d.ts +34 -34
  64. package/dist/workspace.js +1 -1
  65. package/dist/zod-values.d.ts +3 -0
  66. package/dist/zod-values.js +2 -0
  67. package/dist/zod.d.ts +2 -0
  68. package/dist/zod.js +2 -0
  69. package/generated/v1/examples/attempts.list.response.json +4 -0
  70. package/generated/v1/examples/attempts.read.response.json +4 -0
  71. package/generated/v1/examples/billing.autotopup.request.json +5 -0
  72. package/generated/v1/examples/billing.autotopup.response.json +120 -0
  73. package/generated/v1/examples/billing.autotopuppreview.request.json +19 -0
  74. package/generated/v1/examples/billing.autotopuppreview.response.json +45 -0
  75. package/generated/v1/examples/billing.budgets.request.json +13 -0
  76. package/generated/v1/examples/billing.budgets.response.json +22 -0
  77. package/generated/v1/examples/billing.ceiling.request.json +8 -0
  78. package/generated/v1/examples/billing.ceiling.response.json +120 -0
  79. package/generated/v1/examples/billing.change.request.json +5 -0
  80. package/generated/v1/examples/billing.change.response.json +12 -0
  81. package/generated/v1/examples/billing.funding.response.json +120 -0
  82. package/generated/v1/examples/billing.fundingquote.request.json +7 -0
  83. package/generated/v1/examples/billing.fundingquote.response.json +13 -0
  84. package/generated/v1/examples/billing.ledger.response.json +23 -0
  85. package/generated/v1/examples/billing.notices.response.json +41 -0
  86. package/generated/v1/examples/billing.notificationsettings.response.json +17 -0
  87. package/generated/v1/examples/billing.notificationsettingsupdate.request.json +9 -0
  88. package/generated/v1/examples/billing.notificationsettingsupdate.response.json +17 -0
  89. package/generated/v1/examples/billing.portal.response.json +3 -0
  90. package/generated/v1/examples/billing.projects.response.json +12 -0
  91. package/generated/v1/examples/billing.purchase.request.json +5 -0
  92. package/generated/v1/examples/billing.purchase.response.json +120 -0
  93. package/generated/v1/examples/billing.quote.request.json +4 -0
  94. package/generated/v1/examples/billing.quote.response.json +19 -0
  95. package/generated/v1/examples/billing.reconcile.response.json +73 -0
  96. package/generated/v1/examples/billing.refundrequest.request.json +10 -0
  97. package/generated/v1/examples/billing.refundrequest.response.json +11 -0
  98. package/generated/v1/examples/billing.refundresolution.request.json +4 -0
  99. package/generated/v1/examples/billing.refundresolution.response.json +120 -0
  100. package/generated/v1/examples/billing.summary.response.json +73 -0
  101. package/generated/v1/examples/endpoints.acknowledgeSigningKeyRotation.response.json +18 -0
  102. package/generated/v1/examples/endpoints.create.response.json +1 -1
  103. package/generated/v1/examples/endpoints.disable.response.json +0 -1
  104. package/generated/v1/examples/{endpoints.verify.response.json → endpoints.enable.response.json} +4 -5
  105. package/generated/v1/examples/endpoints.list.response.json +1 -2
  106. package/generated/v1/examples/endpoints.read.response.json +2 -2
  107. package/generated/v1/examples/endpoints.revealSigningSecret.response.json +7 -0
  108. package/generated/v1/examples/endpoints.rotateSigningKey.response.json +1 -2
  109. package/generated/v1/examples/endpoints.update.response.json +1 -1
  110. package/generated/v1/examples/executions.list.response.json +20 -0
  111. package/generated/v1/examples/exports.cancel.response.json +11 -0
  112. package/generated/v1/examples/exports.create.request.json +1 -0
  113. package/generated/v1/examples/exports.create.response.json +8 -0
  114. package/generated/v1/examples/exports.part.response.json +5 -0
  115. package/generated/v1/examples/exports.read.response.json +8 -0
  116. package/generated/v1/examples/occurrences.read.response.json +4 -0
  117. package/generated/v1/examples/organizations.close.request.json +5 -0
  118. package/generated/v1/examples/organizations.close.response.json +10 -0
  119. package/generated/v1/examples/organizations.lifecycle.response.json +10 -0
  120. package/generated/v1/examples/organizations.restore.request.json +3 -0
  121. package/generated/v1/examples/organizations.restore.response.json +10 -0
  122. package/generated/v1/examples/projects.archive.request.json +3 -0
  123. package/generated/v1/examples/projects.archive.response.json +14 -0
  124. package/generated/v1/examples/projects.create.response.json +10 -1
  125. package/generated/v1/examples/projects.delete.response.json +9 -0
  126. package/generated/v1/examples/projects.list.response.json +12 -2
  127. package/generated/v1/examples/projects.rename.request.json +3 -0
  128. package/generated/v1/examples/projects.rename.response.json +14 -0
  129. package/generated/v1/examples/schedules.archive.response.json +3 -0
  130. package/generated/v1/examples/schedules.cancel.response.json +3 -0
  131. package/generated/v1/examples/schedules.create.request.json +4 -0
  132. package/generated/v1/examples/schedules.create.response.json +3 -0
  133. package/generated/v1/examples/schedules.list.response.json +3 -0
  134. package/generated/v1/examples/schedules.pause.response.json +3 -0
  135. package/generated/v1/examples/schedules.read.response.json +6 -0
  136. package/generated/v1/examples/schedules.replace.request.json +4 -0
  137. package/generated/v1/examples/schedules.replace.response.json +3 -0
  138. package/generated/v1/examples/schedules.resume.response.json +3 -0
  139. package/generated/v1/examples/timing.summary.response.json +35 -0
  140. package/generated/v1/examples/usage.read.response.json +1 -0
  141. package/generated/v1/first-value-journey.json +19 -10
  142. package/generated/v1/manifest.json +936 -23
  143. package/generated/v1/openapi.json +29983 -5784
  144. package/generated/v1/policy-matrix.json +278 -47
  145. package/generated/v1/schemas/attempts.list.response.json +24 -1
  146. package/generated/v1/schemas/attempts.read.response.json +24 -1
  147. package/generated/v1/schemas/billing.autotopup.request-headers.json +13 -0
  148. package/generated/v1/schemas/billing.autotopup.request.json +22 -0
  149. package/generated/v1/schemas/billing.autotopup.response-headers.json +10 -0
  150. package/generated/v1/schemas/billing.autotopup.response.json +552 -0
  151. package/generated/v1/schemas/billing.autotopuppreview.request.json +77 -0
  152. package/generated/v1/schemas/billing.autotopuppreview.response.json +277 -0
  153. package/generated/v1/schemas/billing.budgets.request-headers.json +13 -0
  154. package/generated/v1/schemas/billing.budgets.request.json +66 -0
  155. package/generated/v1/schemas/billing.budgets.response-headers.json +10 -0
  156. package/generated/v1/schemas/billing.budgets.response.json +92 -0
  157. package/generated/v1/schemas/billing.ceiling.request-headers.json +13 -0
  158. package/generated/v1/schemas/billing.ceiling.request.json +40 -0
  159. package/generated/v1/schemas/billing.ceiling.response-headers.json +10 -0
  160. package/generated/v1/schemas/billing.ceiling.response.json +552 -0
  161. package/generated/v1/schemas/billing.change.request-headers.json +13 -0
  162. package/generated/v1/schemas/billing.change.request.json +22 -0
  163. package/generated/v1/schemas/billing.change.response.json +119 -0
  164. package/generated/v1/schemas/billing.funding.response.json +552 -0
  165. package/generated/v1/schemas/billing.fundingquote.request.json +28 -0
  166. package/generated/v1/schemas/billing.fundingquote.response.json +61 -0
  167. package/generated/v1/schemas/billing.ledger.query.json +16 -0
  168. package/generated/v1/schemas/billing.ledger.response.json +125 -0
  169. package/generated/v1/schemas/billing.notices.query.json +16 -0
  170. package/generated/v1/schemas/billing.notices.response.json +278 -0
  171. package/generated/v1/schemas/billing.notificationsettings.response.json +70 -0
  172. package/generated/v1/schemas/billing.notificationsettingsupdate.request-headers.json +13 -0
  173. package/generated/v1/schemas/billing.notificationsettingsupdate.request.json +36 -0
  174. package/generated/v1/schemas/billing.notificationsettingsupdate.response-headers.json +10 -0
  175. package/generated/v1/schemas/billing.notificationsettingsupdate.response.json +70 -0
  176. package/generated/v1/schemas/billing.portal.response.json +11 -0
  177. package/generated/v1/schemas/billing.projects.response.json +119 -0
  178. package/generated/v1/schemas/billing.purchase.request-headers.json +13 -0
  179. package/generated/v1/schemas/billing.purchase.request.json +22 -0
  180. package/generated/v1/schemas/billing.purchase.response-headers.json +10 -0
  181. package/generated/v1/schemas/billing.purchase.response.json +552 -0
  182. package/generated/v1/schemas/billing.quote.request.json +20 -0
  183. package/generated/v1/schemas/billing.quote.response.json +86 -0
  184. package/generated/v1/schemas/billing.reconcile.response.json +468 -0
  185. package/generated/v1/schemas/billing.refundrequest.request-headers.json +13 -0
  186. package/generated/v1/schemas/billing.refundrequest.request.json +42 -0
  187. package/generated/v1/schemas/billing.refundrequest.response-headers.json +10 -0
  188. package/generated/v1/schemas/billing.refundrequest.response.json +45 -0
  189. package/generated/v1/schemas/billing.refundresolution.request-headers.json +13 -0
  190. package/generated/v1/schemas/billing.refundresolution.request.json +61 -0
  191. package/generated/v1/schemas/billing.refundresolution.response-headers.json +10 -0
  192. package/generated/v1/schemas/billing.refundresolution.response.json +552 -0
  193. package/generated/v1/schemas/billing.summary.response.json +468 -0
  194. package/generated/v1/schemas/context.read.response.json +2 -0
  195. package/generated/v1/schemas/credentials.connection.response.json +2 -0
  196. package/generated/v1/schemas/credentials.create.request.json +2 -0
  197. package/generated/v1/schemas/credentials.create.response.json +2 -0
  198. package/generated/v1/schemas/credentials.list.response.json +2 -0
  199. package/generated/v1/schemas/credentials.revoke.response.json +2 -0
  200. package/generated/v1/schemas/credentials.rotate.response.json +4 -0
  201. package/generated/v1/schemas/{endpoints.verify.request-headers.json → endpoints.acknowledgeSigningKeyRotation.request-headers.json} +2 -1
  202. package/generated/v1/schemas/{endpoints.verify.response.json → endpoints.acknowledgeSigningKeyRotation.response.json} +8 -21
  203. package/generated/v1/schemas/endpoints.create.request.json +5 -0
  204. package/generated/v1/schemas/endpoints.create.response.json +8 -21
  205. package/generated/v1/schemas/endpoints.disable.response.json +8 -21
  206. package/generated/v1/schemas/endpoints.enable.response-headers.json +11 -0
  207. package/generated/v1/schemas/endpoints.enable.response.json +87 -0
  208. package/generated/v1/schemas/endpoints.list.response.json +8 -21
  209. package/generated/v1/schemas/endpoints.read.response.json +8 -21
  210. package/generated/v1/schemas/endpoints.revealSigningSecret.response.json +43 -0
  211. package/generated/v1/schemas/endpoints.rotateSigningKey.response.json +8 -21
  212. package/generated/v1/schemas/endpoints.update.request.json +5 -0
  213. package/generated/v1/schemas/endpoints.update.response.json +8 -21
  214. package/generated/v1/schemas/executions.list.query.json +46 -0
  215. package/generated/v1/schemas/executions.list.response.json +116 -0
  216. package/generated/v1/schemas/exports.cancel.response.json +48 -0
  217. package/generated/v1/schemas/exports.create.request.json +6 -0
  218. package/generated/v1/schemas/exports.create.response.json +38 -0
  219. package/generated/v1/schemas/exports.part.query.json +11 -0
  220. package/generated/v1/schemas/exports.part.response.json +22 -0
  221. package/generated/v1/schemas/exports.read.response.json +38 -0
  222. package/generated/v1/schemas/grants.list.response.json +2 -0
  223. package/generated/v1/schemas/grants.revoke.response.json +2 -0
  224. package/generated/v1/schemas/occurrences.list.query.json +5 -0
  225. package/generated/v1/schemas/occurrences.list.response.json +23 -0
  226. package/generated/v1/schemas/occurrences.read.response.json +23 -0
  227. package/generated/v1/schemas/occurrences.redeliver.response.json +24 -1
  228. package/generated/v1/schemas/organizations.close.request.json +20 -0
  229. package/generated/v1/schemas/organizations.close.response.json +68 -0
  230. package/generated/v1/schemas/organizations.lifecycle.response.json +68 -0
  231. package/generated/v1/schemas/organizations.restore.request.json +13 -0
  232. package/generated/v1/schemas/organizations.restore.response.json +68 -0
  233. package/generated/v1/schemas/projects.archive.request-headers.json +11 -0
  234. package/generated/v1/schemas/projects.archive.request.json +10 -0
  235. package/generated/v1/schemas/projects.archive.response-headers.json +11 -0
  236. package/generated/v1/schemas/projects.archive.response.json +79 -0
  237. package/generated/v1/schemas/projects.create.response.json +55 -1
  238. package/generated/v1/schemas/projects.delete.request-headers.json +11 -0
  239. package/generated/v1/schemas/projects.delete.response.json +37 -0
  240. package/generated/v1/schemas/projects.list.response.json +61 -2
  241. package/generated/v1/schemas/projects.rename.request-headers.json +11 -0
  242. package/generated/v1/schemas/projects.rename.request.json +12 -0
  243. package/generated/v1/schemas/projects.rename.response-headers.json +11 -0
  244. package/generated/v1/schemas/projects.rename.response.json +79 -0
  245. package/generated/v1/schemas/schedules.archive.response.json +90 -2
  246. package/generated/v1/schemas/schedules.cancel.response.json +90 -2
  247. package/generated/v1/schemas/schedules.create.request.json +24 -3
  248. package/generated/v1/schemas/schedules.create.response.json +90 -2
  249. package/generated/v1/schemas/schedules.list.query.json +13 -0
  250. package/generated/v1/schemas/schedules.list.response.json +67 -2
  251. package/generated/v1/schemas/schedules.pause.response.json +90 -2
  252. package/generated/v1/schemas/schedules.read.response.json +90 -2
  253. package/generated/v1/schemas/schedules.replace.request.json +24 -3
  254. package/generated/v1/schemas/schedules.replace.response.json +90 -2
  255. package/generated/v1/schemas/schedules.resume.response.json +90 -2
  256. package/generated/v1/schemas/timing.summary.response.json +191 -0
  257. package/generated/v1/schemas/usage.read.query.json +7 -0
  258. package/generated/v1/schemas/usage.read.response.json +36 -1
  259. package/generated/v1/snippets/billing.autotopup.json +6 -0
  260. package/generated/v1/snippets/billing.autotopuppreview.json +6 -0
  261. package/generated/v1/snippets/billing.budgets.json +6 -0
  262. package/generated/v1/snippets/billing.ceiling.json +6 -0
  263. package/generated/v1/snippets/billing.change.json +6 -0
  264. package/generated/v1/snippets/billing.funding.json +6 -0
  265. package/generated/v1/snippets/billing.fundingquote.json +6 -0
  266. package/generated/v1/snippets/billing.ledger.json +6 -0
  267. package/generated/v1/snippets/billing.notices.json +6 -0
  268. package/generated/v1/snippets/billing.notificationsettings.json +6 -0
  269. package/generated/v1/snippets/billing.notificationsettingsupdate.json +6 -0
  270. package/generated/v1/snippets/billing.portal.json +6 -0
  271. package/generated/v1/snippets/billing.projects.json +6 -0
  272. package/generated/v1/snippets/billing.purchase.json +6 -0
  273. package/generated/v1/snippets/billing.quote.json +6 -0
  274. package/generated/v1/snippets/billing.reconcile.json +6 -0
  275. package/generated/v1/snippets/billing.refundrequest.json +6 -0
  276. package/generated/v1/snippets/billing.refundresolution.json +6 -0
  277. package/generated/v1/snippets/billing.summary.json +6 -0
  278. package/generated/v1/snippets/endpoints.acknowledgeSigningKeyRotation.json +6 -0
  279. package/generated/v1/snippets/{endpoints.verify.json → endpoints.enable.json} +3 -3
  280. package/generated/v1/snippets/endpoints.revealSigningSecret.json +6 -0
  281. package/generated/v1/snippets/executions.list.json +6 -0
  282. package/generated/v1/snippets/exports.cancel.json +6 -0
  283. package/generated/v1/snippets/exports.create.json +6 -0
  284. package/generated/v1/snippets/exports.part.json +6 -0
  285. package/generated/v1/snippets/exports.read.json +6 -0
  286. package/generated/v1/snippets/organizations.close.json +6 -0
  287. package/generated/v1/snippets/organizations.lifecycle.json +6 -0
  288. package/generated/v1/snippets/organizations.restore.json +6 -0
  289. package/generated/v1/snippets/projects.archive.json +6 -0
  290. package/generated/v1/snippets/projects.delete.json +6 -0
  291. package/generated/v1/snippets/projects.rename.json +6 -0
  292. package/generated/v1/snippets/schedules.create.json +3 -3
  293. package/generated/v1/snippets/schedules.replace.json +3 -3
  294. package/generated/v1/snippets/timing.summary.json +6 -0
  295. package/package.json +1 -6
  296. package/dist/callback-ownership.d.ts +0 -58
  297. package/dist/callback-ownership.js +0 -71
  298. package/generated/v1/callback-endpoint-verification.json +0 -59
  299. /package/generated/v1/schemas/{endpoints.verify.response-headers.json → endpoints.acknowledgeSigningKeyRotation.response-headers.json} +0 -0
@@ -1,4 +1,4 @@
1
- import { z } from "zod";
1
+ import { z } from "./zod.js";
2
2
  /**
3
3
  * Reusable callback endpoints.
4
4
  *
@@ -7,18 +7,28 @@ import { z } from "zod";
7
7
  * a caller can use to widen that tuple: `project` and `environmentKind` are
8
8
  * display metadata, while every lookup is scoped by the verified principal.
9
9
  */
10
- export declare const CALLBACK_ENDPOINT_STATUSES: readonly ["pending", "verified", "disabled"];
11
- export declare const callbackEndpointStatusSchema: z.ZodEnum<{
12
- verified: "verified";
13
- pending: "pending";
10
+ /**
11
+ * An endpoint is usable the moment it exists (W4-12). `active` is every
12
+ * endpoint that is not disabled; `disabled` stops delivery until
13
+ * `endpoints.enable` turns it back on. There is no state in between and
14
+ * nothing to prove.
15
+ */
16
+ export declare const CALLBACK_ENDPOINT_STATUSES: readonly ["active", "disabled"];
17
+ export declare const callbackEndpointStatusSchema: import("zod").ZodEnum<{
14
18
  disabled: "disabled";
19
+ active: "active";
15
20
  }>;
16
21
  export type CallbackEndpointStatus = z.infer<typeof callbackEndpointStatusSchema>;
17
- export declare const CALLBACK_VERIFICATION_FAILURES: readonly ["address_forbidden", "challenge_failed", "connection_failed", "dns_unresolved", "rate_limited", "redirect_refused", "response_too_large", "timed_out", "unexpected_status"];
18
- export declare const callbackVerificationFailureSchema: z.ZodEnum<{
22
+ /**
23
+ * Why an address could not be resolved or reached: the classification the
24
+ * DNS inspection at create and update, and the delivery egress, share. It
25
+ * was the verification-failure vocabulary until W4-12 removed verification;
26
+ * what remains is what those two paths can still observe.
27
+ */
28
+ export declare const CALLBACK_EGRESS_FAILURES: readonly ["address_forbidden", "connection_failed", "dns_unresolved", "rate_limited", "redirect_refused", "response_too_large", "timed_out", "unexpected_status"];
29
+ export declare const callbackEgressFailureSchema: import("zod").ZodEnum<{
19
30
  rate_limited: "rate_limited";
20
31
  address_forbidden: "address_forbidden";
21
- challenge_failed: "challenge_failed";
22
32
  connection_failed: "connection_failed";
23
33
  dns_unresolved: "dns_unresolved";
24
34
  redirect_refused: "redirect_refused";
@@ -26,280 +36,211 @@ export declare const callbackVerificationFailureSchema: z.ZodEnum<{
26
36
  timed_out: "timed_out";
27
37
  unexpected_status: "unexpected_status";
28
38
  }>;
29
- export type CallbackVerificationFailure = z.infer<typeof callbackVerificationFailureSchema>;
39
+ export type CallbackEgressFailure = z.infer<typeof callbackEgressFailureSchema>;
30
40
  /**
31
41
  * A safety ceiling on retained endpoint records, independent of later
32
42
  * commercial plan limits. Disabled records remain readable for audit and count
33
43
  * toward it; changing that lifetime semantic needs a product decision.
34
44
  */
35
45
  export declare const CALLBACK_ENDPOINT_LIMIT_PER_ENVIRONMENT = 50;
36
- /** Verification egress is admitted through both buckets before DNS or fetch. */
37
- export declare const CALLBACK_VERIFICATION_RATE_LIMITS: {
46
+ /**
47
+ * DNS inspection at create and update is admitted through both buckets
48
+ * before the first lookup, so an address a caller retypes cannot make this
49
+ * service resolve names without bound.
50
+ */
51
+ export declare const CALLBACK_ADMISSION_RATE_LIMITS: {
38
52
  readonly destinationPerMinute: 5;
39
53
  readonly projectPerMinute: 20;
40
54
  readonly windowSeconds: 60;
41
55
  };
42
- /** Total bytes a verification response may return before it is refused. */
43
- export declare const CALLBACK_VERIFICATION_RESPONSE_BYTES = 1024;
44
- /** Total DNS + connect + response bound for one verification attempt. */
45
- export declare const CALLBACK_VERIFICATION_TIMEOUT_MILLISECONDS = 5000;
46
56
  /** Longest period during which a receiver may accept current and next keys. */
47
57
  export declare const CALLBACK_SIGNING_KEY_ROTATION_OVERLAP_SECONDS = 86400;
48
- export declare const callbackSigningKeysSchema: z.ZodObject<{
49
- current: z.ZodString;
50
- next: z.ZodOptional<z.ZodObject<{
51
- id: z.ZodString;
52
- overlapEndsAt: z.ZodString;
53
- }, z.core.$strip>>;
54
- }, z.core.$strip>;
58
+ export declare const callbackSigningKeysSchema: import("zod").ZodObject<{
59
+ current: import("zod").ZodString;
60
+ next: import("zod").ZodOptional<import("zod").ZodObject<{
61
+ acknowledgedAt: import("zod").ZodOptional<import("zod").ZodString>;
62
+ id: import("zod").ZodString;
63
+ overlapEndsAt: import("zod").ZodString;
64
+ }, import("zod/v4/core").$strip>>;
65
+ }, import("zod/v4/core").$strip>;
55
66
  export type CallbackSigningKeys = z.infer<typeof callbackSigningKeysSchema>;
67
+ /**
68
+ * An endpoint's name: unique within its project and environment, compared
69
+ * exactly (W4-14, FXO-2255).
70
+ *
71
+ * Generated on save when nobody types one — the whole URL — because an
72
+ * endpoint appears in a dropdown, and two identical rows in a dropdown are
73
+ * two rows nobody can choose between. So a second endpoint at an address one
74
+ * already has is refused unless it is given a name of its own. **Case
75
+ * matters**: two webhook URLs differing only in the case of a token are two
76
+ * endpoints and both save unnamed; the cost, accepted knowingly, is that
77
+ * "Prod receiver" and "prod receiver" are both allowed. Deliberately unlike a
78
+ * project's name, which ignores case and spacing.
79
+ */
80
+ export declare const callbackEndpointNameSchema: import("zod").ZodString;
56
81
  /**
57
82
  * A metadata-only endpoint shape. The sealed signing secret has no public
58
- * field, so list/get/update/verify/disable cannot accidentally recover it.
83
+ * field, so list/get/update/disable/enable cannot accidentally recover it.
59
84
  */
60
- export declare const callbackEndpointSchema: z.ZodObject<{
61
- createdAt: z.ZodString;
62
- disabledAt: z.ZodOptional<z.ZodString>;
63
- environmentKind: z.ZodEnum<{
85
+ export declare const callbackEndpointSchema: import("zod").ZodObject<{
86
+ createdAt: import("zod").ZodString;
87
+ disabledAt: import("zod").ZodOptional<import("zod").ZodString>;
88
+ environmentKind: import("zod").ZodEnum<{
64
89
  test: "test";
65
90
  live: "live";
66
91
  }>;
67
- id: z.ZodString;
68
- lastVerificationAttemptAt: z.ZodOptional<z.ZodString>;
69
- lastVerificationFailure: z.ZodOptional<z.ZodEnum<{
70
- rate_limited: "rate_limited";
71
- address_forbidden: "address_forbidden";
72
- challenge_failed: "challenge_failed";
73
- connection_failed: "connection_failed";
74
- dns_unresolved: "dns_unresolved";
75
- redirect_refused: "redirect_refused";
76
- response_too_large: "response_too_large";
77
- timed_out: "timed_out";
78
- unexpected_status: "unexpected_status";
79
- }>>;
80
- project: z.ZodString;
81
- signingKeys: z.ZodObject<{
82
- current: z.ZodString;
83
- next: z.ZodOptional<z.ZodObject<{
84
- id: z.ZodString;
85
- overlapEndsAt: z.ZodString;
86
- }, z.core.$strip>>;
87
- }, z.core.$strip>;
88
- status: z.ZodEnum<{
89
- verified: "verified";
90
- pending: "pending";
92
+ id: import("zod").ZodString;
93
+ name: import("zod").ZodOptional<import("zod").ZodString>;
94
+ project: import("zod").ZodString;
95
+ signingKeys: import("zod").ZodObject<{
96
+ current: import("zod").ZodString;
97
+ next: import("zod").ZodOptional<import("zod").ZodObject<{
98
+ acknowledgedAt: import("zod").ZodOptional<import("zod").ZodString>;
99
+ id: import("zod").ZodString;
100
+ overlapEndsAt: import("zod").ZodString;
101
+ }, import("zod/v4/core").$strip>>;
102
+ }, import("zod/v4/core").$strip>;
103
+ status: import("zod").ZodEnum<{
91
104
  disabled: "disabled";
105
+ active: "active";
92
106
  }>;
93
- updatedAt: z.ZodString;
94
- url: z.ZodString;
95
- verifiedAt: z.ZodOptional<z.ZodString>;
96
- version: z.ZodNumber;
97
- }, z.core.$strip>;
107
+ updatedAt: import("zod").ZodString;
108
+ url: import("zod").ZodString;
109
+ version: import("zod").ZodNumber;
110
+ }, import("zod/v4/core").$strip>;
98
111
  export type CallbackEndpoint = z.infer<typeof callbackEndpointSchema>;
99
- export declare const callbackEndpointPageSchema: z.ZodObject<{
100
- data: z.ZodArray<z.ZodObject<{
101
- createdAt: z.ZodString;
102
- disabledAt: z.ZodOptional<z.ZodString>;
103
- environmentKind: z.ZodEnum<{
112
+ export declare const callbackEndpointPageSchema: import("zod").ZodObject<{
113
+ data: import("zod").ZodArray<import("zod").ZodObject<{
114
+ createdAt: import("zod").ZodString;
115
+ disabledAt: import("zod").ZodOptional<import("zod").ZodString>;
116
+ environmentKind: import("zod").ZodEnum<{
104
117
  test: "test";
105
118
  live: "live";
106
119
  }>;
107
- id: z.ZodString;
108
- lastVerificationAttemptAt: z.ZodOptional<z.ZodString>;
109
- lastVerificationFailure: z.ZodOptional<z.ZodEnum<{
110
- rate_limited: "rate_limited";
111
- address_forbidden: "address_forbidden";
112
- challenge_failed: "challenge_failed";
113
- connection_failed: "connection_failed";
114
- dns_unresolved: "dns_unresolved";
115
- redirect_refused: "redirect_refused";
116
- response_too_large: "response_too_large";
117
- timed_out: "timed_out";
118
- unexpected_status: "unexpected_status";
119
- }>>;
120
- project: z.ZodString;
121
- signingKeys: z.ZodObject<{
122
- current: z.ZodString;
123
- next: z.ZodOptional<z.ZodObject<{
124
- id: z.ZodString;
125
- overlapEndsAt: z.ZodString;
126
- }, z.core.$strip>>;
127
- }, z.core.$strip>;
128
- status: z.ZodEnum<{
129
- verified: "verified";
130
- pending: "pending";
120
+ id: import("zod").ZodString;
121
+ name: import("zod").ZodOptional<import("zod").ZodString>;
122
+ project: import("zod").ZodString;
123
+ signingKeys: import("zod").ZodObject<{
124
+ current: import("zod").ZodString;
125
+ next: import("zod").ZodOptional<import("zod").ZodObject<{
126
+ acknowledgedAt: import("zod").ZodOptional<import("zod").ZodString>;
127
+ id: import("zod").ZodString;
128
+ overlapEndsAt: import("zod").ZodString;
129
+ }, import("zod/v4/core").$strip>>;
130
+ }, import("zod/v4/core").$strip>;
131
+ status: import("zod").ZodEnum<{
131
132
  disabled: "disabled";
133
+ active: "active";
132
134
  }>;
133
- updatedAt: z.ZodString;
134
- url: z.ZodString;
135
- verifiedAt: z.ZodOptional<z.ZodString>;
136
- version: z.ZodNumber;
137
- }, z.core.$strip>>;
138
- freshness: z.ZodDiscriminatedUnion<[z.ZodObject<{
139
- kind: z.ZodLiteral<"authoritative">;
140
- }, z.core.$strip>, z.ZodObject<{
141
- asOf: z.ZodString;
142
- kind: z.ZodLiteral<"projected">;
143
- lagSeconds: z.ZodNumber;
144
- }, z.core.$strip>], "kind">;
145
- nextCursor: z.ZodOptional<z.ZodString>;
146
- }, z.core.$strip>;
135
+ updatedAt: import("zod").ZodString;
136
+ url: import("zod").ZodString;
137
+ version: import("zod").ZodNumber;
138
+ }, import("zod/v4/core").$strip>>;
139
+ freshness: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
140
+ kind: import("zod").ZodLiteral<"authoritative">;
141
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
142
+ asOf: import("zod").ZodString;
143
+ kind: import("zod").ZodLiteral<"projected">;
144
+ lagSeconds: import("zod").ZodNumber;
145
+ }, import("zod/v4/core").$strip>], "kind">;
146
+ nextCursor: import("zod").ZodOptional<import("zod").ZodString>;
147
+ }, import("zod/v4/core").$strip>;
147
148
  export type CallbackEndpointPage = z.infer<typeof callbackEndpointPageSchema>;
148
149
  /** The one response that carries the per-endpoint secret. */
149
- export declare const callbackEndpointCreatedSchema: z.ZodObject<{
150
- createdAt: z.ZodString;
151
- disabledAt: z.ZodOptional<z.ZodString>;
152
- environmentKind: z.ZodEnum<{
150
+ export declare const callbackEndpointCreatedSchema: import("zod").ZodObject<{
151
+ createdAt: import("zod").ZodString;
152
+ disabledAt: import("zod").ZodOptional<import("zod").ZodString>;
153
+ environmentKind: import("zod").ZodEnum<{
153
154
  test: "test";
154
155
  live: "live";
155
156
  }>;
156
- id: z.ZodString;
157
- lastVerificationAttemptAt: z.ZodOptional<z.ZodString>;
158
- lastVerificationFailure: z.ZodOptional<z.ZodEnum<{
159
- rate_limited: "rate_limited";
160
- address_forbidden: "address_forbidden";
161
- challenge_failed: "challenge_failed";
162
- connection_failed: "connection_failed";
163
- dns_unresolved: "dns_unresolved";
164
- redirect_refused: "redirect_refused";
165
- response_too_large: "response_too_large";
166
- timed_out: "timed_out";
167
- unexpected_status: "unexpected_status";
168
- }>>;
169
- project: z.ZodString;
170
- signingKeys: z.ZodObject<{
171
- current: z.ZodString;
172
- next: z.ZodOptional<z.ZodObject<{
173
- id: z.ZodString;
174
- overlapEndsAt: z.ZodString;
175
- }, z.core.$strip>>;
176
- }, z.core.$strip>;
177
- status: z.ZodEnum<{
178
- verified: "verified";
179
- pending: "pending";
157
+ id: import("zod").ZodString;
158
+ name: import("zod").ZodOptional<import("zod").ZodString>;
159
+ project: import("zod").ZodString;
160
+ signingKeys: import("zod").ZodObject<{
161
+ current: import("zod").ZodString;
162
+ next: import("zod").ZodOptional<import("zod").ZodObject<{
163
+ acknowledgedAt: import("zod").ZodOptional<import("zod").ZodString>;
164
+ id: import("zod").ZodString;
165
+ overlapEndsAt: import("zod").ZodString;
166
+ }, import("zod/v4/core").$strip>>;
167
+ }, import("zod/v4/core").$strip>;
168
+ status: import("zod").ZodEnum<{
180
169
  disabled: "disabled";
170
+ active: "active";
181
171
  }>;
182
- updatedAt: z.ZodString;
183
- url: z.ZodString;
184
- verifiedAt: z.ZodOptional<z.ZodString>;
185
- version: z.ZodNumber;
186
- keyId: z.ZodString;
187
- secret: z.ZodString;
188
- shownOnce: z.ZodLiteral<true>;
189
- }, z.core.$strip>;
172
+ updatedAt: import("zod").ZodString;
173
+ url: import("zod").ZodString;
174
+ version: import("zod").ZodNumber;
175
+ keyId: import("zod").ZodString;
176
+ secret: import("zod").ZodString;
177
+ shownOnce: import("zod").ZodLiteral<true>;
178
+ }, import("zod/v4/core").$strip>;
190
179
  export type CallbackEndpointCreated = z.infer<typeof callbackEndpointCreatedSchema>;
191
- export declare const callbackSigningKeyRotationRequestSchema: z.ZodObject<{
192
- overlapSeconds: z.ZodOptional<z.ZodNumber>;
193
- }, z.core.$strip>;
180
+ export declare const callbackSigningKeyRotationRequestSchema: import("zod").ZodObject<{
181
+ overlapSeconds: import("zod").ZodOptional<import("zod").ZodNumber>;
182
+ }, import("zod/v4/core").$strip>;
194
183
  export type CallbackSigningKeyRotationRequest = z.infer<typeof callbackSigningKeyRotationRequestSchema>;
195
- export declare const callbackEndpointRotatedSchema: z.ZodObject<{
196
- endpoint: z.ZodObject<{
197
- createdAt: z.ZodString;
198
- disabledAt: z.ZodOptional<z.ZodString>;
199
- environmentKind: z.ZodEnum<{
184
+ export declare const callbackEndpointRotatedSchema: import("zod").ZodObject<{
185
+ endpoint: import("zod").ZodObject<{
186
+ createdAt: import("zod").ZodString;
187
+ disabledAt: import("zod").ZodOptional<import("zod").ZodString>;
188
+ environmentKind: import("zod").ZodEnum<{
200
189
  test: "test";
201
190
  live: "live";
202
191
  }>;
203
- id: z.ZodString;
204
- lastVerificationAttemptAt: z.ZodOptional<z.ZodString>;
205
- lastVerificationFailure: z.ZodOptional<z.ZodEnum<{
206
- rate_limited: "rate_limited";
207
- address_forbidden: "address_forbidden";
208
- challenge_failed: "challenge_failed";
209
- connection_failed: "connection_failed";
210
- dns_unresolved: "dns_unresolved";
211
- redirect_refused: "redirect_refused";
212
- response_too_large: "response_too_large";
213
- timed_out: "timed_out";
214
- unexpected_status: "unexpected_status";
215
- }>>;
216
- project: z.ZodString;
217
- signingKeys: z.ZodObject<{
218
- current: z.ZodString;
219
- next: z.ZodOptional<z.ZodObject<{
220
- id: z.ZodString;
221
- overlapEndsAt: z.ZodString;
222
- }, z.core.$strip>>;
223
- }, z.core.$strip>;
224
- status: z.ZodEnum<{
225
- verified: "verified";
226
- pending: "pending";
192
+ id: import("zod").ZodString;
193
+ name: import("zod").ZodOptional<import("zod").ZodString>;
194
+ project: import("zod").ZodString;
195
+ signingKeys: import("zod").ZodObject<{
196
+ current: import("zod").ZodString;
197
+ next: import("zod").ZodOptional<import("zod").ZodObject<{
198
+ acknowledgedAt: import("zod").ZodOptional<import("zod").ZodString>;
199
+ id: import("zod").ZodString;
200
+ overlapEndsAt: import("zod").ZodString;
201
+ }, import("zod/v4/core").$strip>>;
202
+ }, import("zod/v4/core").$strip>;
203
+ status: import("zod").ZodEnum<{
227
204
  disabled: "disabled";
205
+ active: "active";
228
206
  }>;
229
- updatedAt: z.ZodString;
230
- url: z.ZodString;
231
- verifiedAt: z.ZodOptional<z.ZodString>;
232
- version: z.ZodNumber;
233
- }, z.core.$strip>;
234
- keyId: z.ZodString;
235
- secret: z.ZodString;
236
- shownOnce: z.ZodLiteral<true>;
237
- }, z.core.$strip>;
207
+ updatedAt: import("zod").ZodString;
208
+ url: import("zod").ZodString;
209
+ version: import("zod").ZodNumber;
210
+ }, import("zod/v4/core").$strip>;
211
+ keyId: import("zod").ZodString;
212
+ secret: import("zod").ZodString;
213
+ shownOnce: import("zod").ZodLiteral<true>;
214
+ }, import("zod/v4/core").$strip>;
238
215
  export type CallbackEndpointRotated = z.infer<typeof callbackEndpointRotatedSchema>;
239
- export declare const callbackEndpointRequestSchema: z.ZodObject<{
240
- url: z.ZodString;
241
- }, z.core.$strip>;
242
- export type CallbackEndpointRequest = z.infer<typeof callbackEndpointRequestSchema>;
243
- export declare const CALLBACK_VERIFICATION_PROTOCOL_VERSION = "2026-08-05";
244
- export declare const CALLBACK_VERIFICATION_TYPE = "callback.endpoint.verification";
216
+ /** One signing key and the secret behind it, as a signed-in person may see it. */
217
+ export declare const callbackEndpointSigningSecretSchema: import("zod").ZodObject<{
218
+ keyId: import("zod").ZodString;
219
+ secret: import("zod").ZodString;
220
+ }, import("zod/v4/core").$strip>;
245
221
  /**
246
- * Exact verification bytes sent to the receiver. The receiver validates the
247
- * request signature and proves possession of the one-time secret by returning
248
- * an HMAC of `challenge` in `Callback-Verification-Response`.
249
- */
250
- export declare const callbackVerificationChallengeSchema: z.ZodObject<{
251
- challenge: z.ZodString;
252
- endpointId: z.ZodString;
253
- type: z.ZodLiteral<"callback.endpoint.verification">;
254
- version: z.ZodLiteral<"2026-08-05">;
255
- }, z.core.$strip>;
256
- export type CallbackVerificationChallenge = z.infer<typeof callbackVerificationChallengeSchema>;
257
- export declare const CALLBACK_VERIFICATION_HEADERS: {
258
- readonly challenge: "Callback-Verification-Challenge";
259
- readonly requestSignature: "Callback-Verification-Signature";
260
- readonly responseSignature: "Callback-Verification-Response";
261
- };
262
- /**
263
- * Machine-readable receiver contract for endpoint ownership verification.
222
+ * What `endpoints.revealSigningSecret` answers (FXO-2244).
264
223
  *
265
- * This is deliberately separate from W3-02's occurrence-delivery signature:
266
- * the request proves control of a receiver before the endpoint may be used,
267
- * while a delivery signature authenticates an occurrence body later. The
268
- * generator publishes this object beside OpenAPI and the JSON Schema.
224
+ * The same value `endpoints.create` and `endpoints.rotateSigningKey` hand out
225
+ * once, readable again by a signed-in member. Mirrors `signingKeys`: during a
226
+ * rotation both keys are here, with the instant the overlap ends, because a
227
+ * receiver being moved to the new key needs both until then.
269
228
  */
270
- export declare const CALLBACK_VERIFICATION_PROTOCOL: {
271
- readonly purpose: "Prove that the receiver possesses the one-time endpoint secret before Greatwait marks the endpoint verified.";
272
- readonly request: {
273
- readonly bodyEncoding: "UTF-8 bytes of the compact JSON object in schema property order: challenge, endpointId, type, version.";
274
- readonly contentType: "application/json";
275
- readonly method: "POST";
276
- readonly redirectPolicy: "manual; every 3xx response is refused";
277
- readonly signature: {
278
- readonly algorithm: "HMAC-SHA-256";
279
- readonly format: "v1=<64 lowercase hexadecimal characters>";
280
- readonly header: "Callback-Verification-Signature";
281
- readonly input: "the exact request body bytes";
282
- readonly key: "the one-time endpoint secret returned by REST endpoint creation";
283
- };
284
- };
285
- readonly response: {
286
- readonly body: "ignored after enforcing the 1024-byte response limit; return an empty body";
287
- readonly proof: {
288
- readonly algorithm: "HMAC-SHA-256";
289
- readonly format: "v1=<64 lowercase hexadecimal characters>";
290
- readonly header: "Callback-Verification-Response";
291
- readonly input: "the UTF-8 bytes of the challenge string";
292
- readonly key: "the same endpoint secret";
293
- };
294
- readonly status: "any 2xx status";
295
- };
296
- readonly testVector: {
297
- readonly challenge: "cvc_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
298
- readonly endpointId: "ep_00000000000000000000000000";
299
- readonly exactBodyBase64: "eyJjaGFsbGVuZ2UiOiJjdmNfQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIsImVuZHBvaW50SWQiOiJlcF8wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsInR5cGUiOiJjYWxsYmFjay5lbmRwb2ludC52ZXJpZmljYXRpb24iLCJ2ZXJzaW9uIjoiMjAyNi0wOC0wNSJ9";
300
- readonly requestSignature: "v1=0d24c7fed4d752411b88025a9923627b329e0eb9d53978a6ebcf92c0678c731e";
301
- readonly responseSignature: "v1=efc690a23f1870930ff3388313162c0e06406902a7a4d3f9273ffe0abcef86bd";
302
- readonly secret: "verification-vector-secret";
303
- };
304
- readonly version: "2026-08-05";
305
- };
229
+ export declare const callbackEndpointSigningSecretsSchema: import("zod").ZodObject<{
230
+ current: import("zod").ZodObject<{
231
+ keyId: import("zod").ZodString;
232
+ secret: import("zod").ZodString;
233
+ }, import("zod/v4/core").$strip>;
234
+ id: import("zod").ZodString;
235
+ next: import("zod").ZodOptional<import("zod").ZodObject<{
236
+ keyId: import("zod").ZodString;
237
+ secret: import("zod").ZodString;
238
+ overlapEndsAt: import("zod").ZodString;
239
+ }, import("zod/v4/core").$strip>>;
240
+ }, import("zod/v4/core").$strip>;
241
+ export type CallbackEndpointSigningSecrets = z.infer<typeof callbackEndpointSigningSecretsSchema>;
242
+ export declare const callbackEndpointRequestSchema: import("zod").ZodObject<{
243
+ name: import("zod").ZodOptional<import("zod").ZodString>;
244
+ url: import("zod").ZodString;
245
+ }, import("zod/v4/core").$strip>;
246
+ export type CallbackEndpointRequest = z.infer<typeof callbackEndpointRequestSchema>;