@greatwait/contracts 0.1.0-alpha.2 → 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 (349) hide show
  1. package/README.md +11 -9
  2. package/dist/authority.d.ts +84 -21
  3. package/dist/authority.js +47 -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 +192 -42
  17. package/dist/first-value-journey.js +212 -6
  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 +45 -41
  23. package/dist/identity.js +5 -4
  24. package/dist/index.d.ts +13 -8
  25. package/dist/index.js +13 -8
  26. package/dist/mcp.d.ts +201 -0
  27. package/dist/mcp.js +214 -0
  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 +84 -8
  32. package/dist/operation-definitions.d.ts +9 -0
  33. package/dist/operation-definitions.js +7 -0
  34. package/dist/operations.d.ts +4359 -2214
  35. package/dist/operations.js +2754 -881
  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/context.read.response.json +6 -0
  102. package/generated/v1/examples/credentials.connection.response.json +16 -0
  103. package/generated/v1/examples/endpoints.acknowledgeSigningKeyRotation.response.json +18 -0
  104. package/generated/v1/examples/endpoints.create.response.json +1 -1
  105. package/generated/v1/examples/endpoints.disable.response.json +0 -1
  106. package/generated/v1/examples/{endpoints.verify.response.json → endpoints.enable.response.json} +4 -5
  107. package/generated/v1/examples/endpoints.list.response.json +1 -2
  108. package/generated/v1/examples/endpoints.read.response.json +2 -2
  109. package/generated/v1/examples/endpoints.revealSigningSecret.response.json +7 -0
  110. package/generated/v1/examples/endpoints.rotateSigningKey.response.json +1 -2
  111. package/generated/v1/examples/endpoints.update.response.json +1 -1
  112. package/generated/v1/examples/executions.list.response.json +20 -0
  113. package/generated/v1/examples/exports.cancel.response.json +11 -0
  114. package/generated/v1/examples/exports.create.request.json +1 -0
  115. package/generated/v1/examples/exports.create.response.json +8 -0
  116. package/generated/v1/examples/exports.part.response.json +5 -0
  117. package/generated/v1/examples/exports.read.response.json +8 -0
  118. package/generated/v1/examples/occurrences.read.response.json +4 -0
  119. package/generated/v1/examples/organizations.close.request.json +5 -0
  120. package/generated/v1/examples/organizations.close.response.json +10 -0
  121. package/generated/v1/examples/organizations.lifecycle.response.json +10 -0
  122. package/generated/v1/examples/organizations.restore.request.json +3 -0
  123. package/generated/v1/examples/organizations.restore.response.json +10 -0
  124. package/generated/v1/examples/projects.archive.request.json +3 -0
  125. package/generated/v1/examples/projects.archive.response.json +14 -0
  126. package/generated/v1/examples/projects.create.response.json +10 -1
  127. package/generated/v1/examples/projects.delete.response.json +9 -0
  128. package/generated/v1/examples/projects.list.response.json +12 -2
  129. package/generated/v1/examples/projects.rename.request.json +3 -0
  130. package/generated/v1/examples/projects.rename.response.json +14 -0
  131. package/generated/v1/examples/schedules.archive.response.json +3 -0
  132. package/generated/v1/examples/schedules.cancel.response.json +3 -0
  133. package/generated/v1/examples/schedules.create.request.json +4 -0
  134. package/generated/v1/examples/schedules.create.response.json +3 -0
  135. package/generated/v1/examples/schedules.list.response.json +3 -0
  136. package/generated/v1/examples/schedules.pause.response.json +3 -0
  137. package/generated/v1/examples/schedules.read.response.json +6 -0
  138. package/generated/v1/examples/schedules.replace.request.json +4 -0
  139. package/generated/v1/examples/schedules.replace.response.json +3 -0
  140. package/generated/v1/examples/schedules.resume.response.json +3 -0
  141. package/generated/v1/examples/timing.summary.response.json +35 -0
  142. package/generated/v1/examples/usage.read.response.json +1 -0
  143. package/generated/v1/first-value-journey.json +19 -10
  144. package/generated/v1/manifest.json +1019 -53
  145. package/generated/v1/openapi.json +30597 -5709
  146. package/generated/v1/policy-matrix.json +290 -45
  147. package/generated/v1/schemas/attempts.list.response.json +24 -1
  148. package/generated/v1/schemas/attempts.read.response.json +24 -1
  149. package/generated/v1/schemas/billing.autotopup.request-headers.json +13 -0
  150. package/generated/v1/schemas/billing.autotopup.request.json +22 -0
  151. package/generated/v1/schemas/billing.autotopup.response-headers.json +10 -0
  152. package/generated/v1/schemas/billing.autotopup.response.json +552 -0
  153. package/generated/v1/schemas/billing.autotopuppreview.request.json +77 -0
  154. package/generated/v1/schemas/billing.autotopuppreview.response.json +277 -0
  155. package/generated/v1/schemas/billing.budgets.request-headers.json +13 -0
  156. package/generated/v1/schemas/billing.budgets.request.json +66 -0
  157. package/generated/v1/schemas/billing.budgets.response-headers.json +10 -0
  158. package/generated/v1/schemas/billing.budgets.response.json +92 -0
  159. package/generated/v1/schemas/billing.ceiling.request-headers.json +13 -0
  160. package/generated/v1/schemas/billing.ceiling.request.json +40 -0
  161. package/generated/v1/schemas/billing.ceiling.response-headers.json +10 -0
  162. package/generated/v1/schemas/billing.ceiling.response.json +552 -0
  163. package/generated/v1/schemas/billing.change.request-headers.json +13 -0
  164. package/generated/v1/schemas/billing.change.request.json +22 -0
  165. package/generated/v1/schemas/billing.change.response.json +119 -0
  166. package/generated/v1/schemas/billing.funding.response.json +552 -0
  167. package/generated/v1/schemas/billing.fundingquote.request.json +28 -0
  168. package/generated/v1/schemas/billing.fundingquote.response.json +61 -0
  169. package/generated/v1/schemas/billing.ledger.query.json +16 -0
  170. package/generated/v1/schemas/billing.ledger.response.json +125 -0
  171. package/generated/v1/schemas/billing.notices.query.json +16 -0
  172. package/generated/v1/schemas/billing.notices.response.json +278 -0
  173. package/generated/v1/schemas/billing.notificationsettings.response.json +70 -0
  174. package/generated/v1/schemas/billing.notificationsettingsupdate.request-headers.json +13 -0
  175. package/generated/v1/schemas/billing.notificationsettingsupdate.request.json +36 -0
  176. package/generated/v1/schemas/billing.notificationsettingsupdate.response-headers.json +10 -0
  177. package/generated/v1/schemas/billing.notificationsettingsupdate.response.json +70 -0
  178. package/generated/v1/schemas/billing.portal.response.json +11 -0
  179. package/generated/v1/schemas/billing.projects.response.json +119 -0
  180. package/generated/v1/schemas/billing.purchase.request-headers.json +13 -0
  181. package/generated/v1/schemas/billing.purchase.request.json +22 -0
  182. package/generated/v1/schemas/billing.purchase.response-headers.json +10 -0
  183. package/generated/v1/schemas/billing.purchase.response.json +552 -0
  184. package/generated/v1/schemas/billing.quote.request.json +20 -0
  185. package/generated/v1/schemas/billing.quote.response.json +86 -0
  186. package/generated/v1/schemas/billing.reconcile.response.json +468 -0
  187. package/generated/v1/schemas/billing.refundrequest.request-headers.json +13 -0
  188. package/generated/v1/schemas/billing.refundrequest.request.json +42 -0
  189. package/generated/v1/schemas/billing.refundrequest.response-headers.json +10 -0
  190. package/generated/v1/schemas/billing.refundrequest.response.json +45 -0
  191. package/generated/v1/schemas/billing.refundresolution.request-headers.json +13 -0
  192. package/generated/v1/schemas/billing.refundresolution.request.json +61 -0
  193. package/generated/v1/schemas/billing.refundresolution.response-headers.json +10 -0
  194. package/generated/v1/schemas/billing.refundresolution.response.json +552 -0
  195. package/generated/v1/schemas/billing.summary.response.json +468 -0
  196. package/generated/v1/schemas/context.read.response.json +45 -0
  197. package/generated/v1/schemas/credentials.connection.response.json +66 -0
  198. package/generated/v1/schemas/credentials.create.request.json +2 -0
  199. package/generated/v1/schemas/credentials.create.response.json +2 -0
  200. package/generated/v1/schemas/credentials.list.response.json +2 -0
  201. package/generated/v1/schemas/credentials.revoke.response.json +2 -0
  202. package/generated/v1/schemas/credentials.rotate.response.json +4 -0
  203. package/generated/v1/schemas/{endpoints.verify.request-headers.json → endpoints.acknowledgeSigningKeyRotation.request-headers.json} +2 -1
  204. package/generated/v1/schemas/{endpoints.verify.response.json → endpoints.acknowledgeSigningKeyRotation.response.json} +8 -21
  205. package/generated/v1/schemas/endpoints.create.request.json +5 -0
  206. package/generated/v1/schemas/endpoints.create.response.json +8 -21
  207. package/generated/v1/schemas/endpoints.disable.response.json +8 -21
  208. package/generated/v1/schemas/endpoints.enable.response-headers.json +11 -0
  209. package/generated/v1/schemas/endpoints.enable.response.json +87 -0
  210. package/generated/v1/schemas/endpoints.list.response.json +8 -21
  211. package/generated/v1/schemas/endpoints.read.response.json +8 -21
  212. package/generated/v1/schemas/endpoints.revealSigningSecret.response.json +43 -0
  213. package/generated/v1/schemas/endpoints.rotateSigningKey.response.json +8 -21
  214. package/generated/v1/schemas/endpoints.update.request.json +5 -0
  215. package/generated/v1/schemas/endpoints.update.response.json +8 -21
  216. package/generated/v1/schemas/executions.list.query.json +46 -0
  217. package/generated/v1/schemas/executions.list.response.json +116 -0
  218. package/generated/v1/schemas/exports.cancel.response.json +48 -0
  219. package/generated/v1/schemas/exports.create.request.json +6 -0
  220. package/generated/v1/schemas/exports.create.response.json +38 -0
  221. package/generated/v1/schemas/exports.part.query.json +11 -0
  222. package/generated/v1/schemas/exports.part.response.json +22 -0
  223. package/generated/v1/schemas/exports.read.response.json +38 -0
  224. package/generated/v1/schemas/grants.list.response.json +2 -0
  225. package/generated/v1/schemas/grants.revoke.response.json +2 -0
  226. package/generated/v1/schemas/occurrences.list.query.json +5 -0
  227. package/generated/v1/schemas/occurrences.list.response.json +23 -0
  228. package/generated/v1/schemas/occurrences.read.response.json +23 -0
  229. package/generated/v1/schemas/occurrences.redeliver.response.json +24 -1
  230. package/generated/v1/schemas/organizations.close.request.json +20 -0
  231. package/generated/v1/schemas/organizations.close.response.json +68 -0
  232. package/generated/v1/schemas/organizations.lifecycle.response.json +68 -0
  233. package/generated/v1/schemas/organizations.restore.request.json +13 -0
  234. package/generated/v1/schemas/organizations.restore.response.json +68 -0
  235. package/generated/v1/schemas/projects.archive.request-headers.json +11 -0
  236. package/generated/v1/schemas/projects.archive.request.json +10 -0
  237. package/generated/v1/schemas/projects.archive.response-headers.json +11 -0
  238. package/generated/v1/schemas/projects.archive.response.json +79 -0
  239. package/generated/v1/schemas/projects.create.response.json +55 -1
  240. package/generated/v1/schemas/projects.delete.request-headers.json +11 -0
  241. package/generated/v1/schemas/projects.delete.response.json +37 -0
  242. package/generated/v1/schemas/projects.list.response.json +61 -2
  243. package/generated/v1/schemas/projects.rename.request-headers.json +11 -0
  244. package/generated/v1/schemas/projects.rename.request.json +12 -0
  245. package/generated/v1/schemas/projects.rename.response-headers.json +11 -0
  246. package/generated/v1/schemas/projects.rename.response.json +79 -0
  247. package/generated/v1/schemas/schedules.archive.response.json +90 -2
  248. package/generated/v1/schemas/schedules.cancel.response.json +90 -2
  249. package/generated/v1/schemas/schedules.create.request.json +24 -3
  250. package/generated/v1/schemas/schedules.create.response.json +90 -2
  251. package/generated/v1/schemas/schedules.list.query.json +13 -0
  252. package/generated/v1/schemas/schedules.list.response.json +67 -2
  253. package/generated/v1/schemas/schedules.pause.response.json +90 -2
  254. package/generated/v1/schemas/schedules.read.response.json +90 -2
  255. package/generated/v1/schemas/schedules.replace.request.json +24 -3
  256. package/generated/v1/schemas/schedules.replace.response.json +90 -2
  257. package/generated/v1/schemas/schedules.resume.response.json +90 -2
  258. package/generated/v1/schemas/timing.summary.response.json +191 -0
  259. package/generated/v1/schemas/usage.read.query.json +7 -0
  260. package/generated/v1/schemas/usage.read.response.json +36 -1
  261. package/generated/v1/snippets/attempts.list.json +1 -0
  262. package/generated/v1/snippets/attempts.read.json +1 -0
  263. package/generated/v1/snippets/billing.autotopup.json +6 -0
  264. package/generated/v1/snippets/billing.autotopuppreview.json +6 -0
  265. package/generated/v1/snippets/billing.budgets.json +6 -0
  266. package/generated/v1/snippets/billing.ceiling.json +6 -0
  267. package/generated/v1/snippets/billing.change.json +6 -0
  268. package/generated/v1/snippets/billing.funding.json +6 -0
  269. package/generated/v1/snippets/billing.fundingquote.json +6 -0
  270. package/generated/v1/snippets/billing.ledger.json +6 -0
  271. package/generated/v1/snippets/billing.notices.json +6 -0
  272. package/generated/v1/snippets/billing.notificationsettings.json +6 -0
  273. package/generated/v1/snippets/billing.notificationsettingsupdate.json +6 -0
  274. package/generated/v1/snippets/billing.portal.json +6 -0
  275. package/generated/v1/snippets/billing.projects.json +6 -0
  276. package/generated/v1/snippets/billing.purchase.json +6 -0
  277. package/generated/v1/snippets/billing.quote.json +6 -0
  278. package/generated/v1/snippets/billing.reconcile.json +6 -0
  279. package/generated/v1/snippets/billing.refundrequest.json +6 -0
  280. package/generated/v1/snippets/billing.refundresolution.json +6 -0
  281. package/generated/v1/snippets/billing.summary.json +6 -0
  282. package/generated/v1/snippets/context.read.json +6 -0
  283. package/generated/v1/snippets/credentials.connection.json +6 -0
  284. package/generated/v1/snippets/credentials.create.json +1 -0
  285. package/generated/v1/snippets/credentials.list.json +1 -0
  286. package/generated/v1/snippets/credentials.revoke.json +1 -0
  287. package/generated/v1/snippets/credentials.rotate.json +1 -0
  288. package/generated/v1/snippets/endpoints.acknowledgeSigningKeyRotation.json +6 -0
  289. package/generated/v1/snippets/endpoints.create.json +1 -0
  290. package/generated/v1/snippets/endpoints.disable.json +1 -0
  291. package/generated/v1/snippets/{endpoints.verify.json → endpoints.enable.json} +4 -3
  292. package/generated/v1/snippets/endpoints.list.json +1 -0
  293. package/generated/v1/snippets/endpoints.read.json +1 -0
  294. package/generated/v1/snippets/endpoints.revealSigningSecret.json +6 -0
  295. package/generated/v1/snippets/endpoints.rotateSigningKey.json +1 -0
  296. package/generated/v1/snippets/endpoints.update.json +1 -0
  297. package/generated/v1/snippets/executions.list.json +6 -0
  298. package/generated/v1/snippets/exports.cancel.json +6 -0
  299. package/generated/v1/snippets/exports.create.json +6 -0
  300. package/generated/v1/snippets/exports.part.json +6 -0
  301. package/generated/v1/snippets/exports.read.json +6 -0
  302. package/generated/v1/snippets/forecast.read.json +1 -0
  303. package/generated/v1/snippets/forecast.windows.json +1 -0
  304. package/generated/v1/snippets/grants.list.json +1 -0
  305. package/generated/v1/snippets/grants.revoke.json +1 -0
  306. package/generated/v1/snippets/journey/await-occurrence.json +6 -0
  307. package/generated/v1/snippets/journey/check-credential.json +6 -0
  308. package/generated/v1/snippets/journey/check-service.json +6 -0
  309. package/generated/v1/snippets/journey/clean-up.json +6 -0
  310. package/generated/v1/snippets/journey/create-destination.json +6 -0
  311. package/generated/v1/snippets/journey/create-one-shot.json +6 -0
  312. package/generated/v1/snippets/journey/read-attempt.json +6 -0
  313. package/generated/v1/snippets/journey/read-schedule.json +6 -0
  314. package/generated/v1/snippets/journey/replay-one-shot.json +6 -0
  315. package/generated/v1/snippets/meta.scaffold.json +1 -0
  316. package/generated/v1/snippets/meta.version.json +1 -0
  317. package/generated/v1/snippets/occurrences.list.json +1 -0
  318. package/generated/v1/snippets/occurrences.read.json +1 -0
  319. package/generated/v1/snippets/occurrences.redeliver.json +1 -0
  320. package/generated/v1/snippets/organizations.close.json +6 -0
  321. package/generated/v1/snippets/organizations.lifecycle.json +6 -0
  322. package/generated/v1/snippets/organizations.restore.json +6 -0
  323. package/generated/v1/snippets/projects.archive.json +6 -0
  324. package/generated/v1/snippets/projects.create.json +1 -0
  325. package/generated/v1/snippets/projects.delete.json +6 -0
  326. package/generated/v1/snippets/projects.list.json +1 -0
  327. package/generated/v1/snippets/projects.rename.json +6 -0
  328. package/generated/v1/snippets/schedules.archive.json +1 -0
  329. package/generated/v1/snippets/schedules.cancel.json +1 -0
  330. package/generated/v1/snippets/schedules.create.json +4 -3
  331. package/generated/v1/snippets/schedules.list.json +1 -0
  332. package/generated/v1/snippets/schedules.pause.json +1 -0
  333. package/generated/v1/snippets/schedules.read.json +1 -0
  334. package/generated/v1/snippets/schedules.replace.json +4 -3
  335. package/generated/v1/snippets/schedules.resume.json +1 -0
  336. package/generated/v1/snippets/sinkdeliveries.list.json +1 -0
  337. package/generated/v1/snippets/sinkdeliveries.read.json +1 -0
  338. package/generated/v1/snippets/testsinks.configure.json +1 -0
  339. package/generated/v1/snippets/testsinks.create.json +1 -0
  340. package/generated/v1/snippets/testsinks.delete.json +1 -0
  341. package/generated/v1/snippets/testsinks.list.json +1 -0
  342. package/generated/v1/snippets/testsinks.read.json +1 -0
  343. package/generated/v1/snippets/timing.summary.json +6 -0
  344. package/generated/v1/snippets/usage.read.json +1 -0
  345. package/package.json +2 -7
  346. package/dist/callback-ownership.d.ts +0 -58
  347. package/dist/callback-ownership.js +0 -71
  348. package/generated/v1/callback-endpoint-verification.json +0 -59
  349. /package/generated/v1/schemas/{endpoints.verify.response-headers.json → endpoints.acknowledgeSigningKeyRotation.response-headers.json} +0 -0
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "curl": "curl -sS -X GET \"$GREATWAIT_API_URL/__greatwait/version\"",
3
+ "environments": ["test", "live"],
3
4
  "javascript": "import { createGreatwaitClient } from \"@greatwait/api-client\";\n\nconst greatwait = createGreatwaitClient({\n baseUrl: process.env.GREATWAIT_API_URL,\n fetch,\n});\n\nconst result = await greatwait.request(\"meta_version\");",
4
5
  "mcp": "// Any MCP client, against $GREATWAIT_API_URL/mcp.\n// A resource rather than a tool: read it by URI, with no arguments.\n{\n \"uri\": \"greatwait://meta/version\"\n}"
5
6
  }
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "curl": "curl -sS -X GET \"$GREATWAIT_API_URL/v1/schedules/$GREATWAIT_SCHEDULEID/occurrences\" \\\n --variable %GREATWAIT_API_KEY \\\n --expand-header \"Authorization: Bearer {{GREATWAIT_API_KEY}}\"",
3
+ "environments": ["test", "live"],
3
4
  "javascript": "import { createGreatwaitClient } from \"@greatwait/api-client\";\n\nconst greatwait = createGreatwaitClient({\n baseUrl: process.env.GREATWAIT_API_URL,\n credential: process.env.GREATWAIT_API_KEY,\n fetch,\n});\n\nconst scheduleId = process.env.GREATWAIT_SCHEDULEID;\n\nconst result = await greatwait.request(\"occurrences_list\", scheduleId);",
4
5
  "mcp": "// Any MCP client, against $GREATWAIT_API_URL/mcp.\n{\n \"arguments\": {\n \"scheduleId\": \"$SCHEDULEID\"\n },\n \"name\": \"occurrences_list\"\n}"
5
6
  }
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "curl": "curl -sS -X GET \"$GREATWAIT_API_URL/v1/schedules/$GREATWAIT_SCHEDULEID/occurrences/$GREATWAIT_OCCURRENCEID\" \\\n --variable %GREATWAIT_API_KEY \\\n --expand-header \"Authorization: Bearer {{GREATWAIT_API_KEY}}\"",
3
+ "environments": ["test", "live"],
3
4
  "javascript": "import { createGreatwaitClient } from \"@greatwait/api-client\";\n\nconst greatwait = createGreatwaitClient({\n baseUrl: process.env.GREATWAIT_API_URL,\n credential: process.env.GREATWAIT_API_KEY,\n fetch,\n});\n\nconst scheduleId = process.env.GREATWAIT_SCHEDULEID;\nconst occurrenceId = process.env.GREATWAIT_OCCURRENCEID;\n\nconst result = await greatwait.request(\"occurrences_read\", scheduleId, occurrenceId);",
4
5
  "mcp": "// Any MCP client, against $GREATWAIT_API_URL/mcp.\n{\n \"arguments\": {\n \"occurrenceId\": \"$OCCURRENCEID\",\n \"scheduleId\": \"$SCHEDULEID\"\n },\n \"name\": \"occurrences_read\"\n}"
5
6
  }
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "curl": "curl -sS -X POST \"$GREATWAIT_API_URL/v1/schedules/$GREATWAIT_SCHEDULEID/occurrences/$GREATWAIT_OCCURRENCEID/redeliver\" \\\n --variable %GREATWAIT_API_KEY \\\n --expand-header \"Authorization: Bearer {{GREATWAIT_API_KEY}}\" \\\n -H 'Idempotency-Key: $GREATWAIT_IDEMPOTENCY_KEY'",
3
+ "environments": ["test", "live"],
3
4
  "javascript": "import { createGreatwaitClient } from \"@greatwait/api-client\";\n\nconst greatwait = createGreatwaitClient({\n baseUrl: process.env.GREATWAIT_API_URL,\n credential: process.env.GREATWAIT_API_KEY,\n fetch,\n});\n\nconst scheduleId = process.env.GREATWAIT_SCHEDULEID;\nconst occurrenceId = process.env.GREATWAIT_OCCURRENCEID;\n\nconst result = await greatwait.request(\"occurrences_redeliver\", scheduleId, occurrenceId, { \"Idempotency-Key\": process.env.GREATWAIT_IDEMPOTENCY_KEY });",
4
5
  "mcp": "// Any MCP client, against $GREATWAIT_API_URL/mcp.\n{\n \"arguments\": {\n \"Idempotency-Key\": \"$IDEMPOTENCY_KEY\",\n \"occurrenceId\": \"$OCCURRENCEID\",\n \"scheduleId\": \"$SCHEDULEID\"\n },\n \"name\": \"occurrences_redeliver\"\n}"
5
6
  }
@@ -0,0 +1,6 @@
1
+ {
2
+ "curl": "curl -sS -X POST \"$GREATWAIT_API_URL/v1/organization/close\" \\\n --variable %GREATWAIT_SESSION_TOKEN \\\n --expand-header \"Authorization: Bearer {{GREATWAIT_SESSION_TOKEN}}\" \\\n -H 'Content-Type: application/json' \\\n --data-binary '{\"expectedGeneration\":0,\"immediate\":false,\"confirmation\":\"delete organization\"}'",
3
+ "environments": ["test", "live"],
4
+ "javascript": "import { createGreatwaitClient } from \"@greatwait/api-client\";\n\nconst greatwait = createGreatwaitClient({\n baseUrl: process.env.GREATWAIT_API_URL,\n credential: process.env.GREATWAIT_SESSION_TOKEN,\n fetch,\n});\n\nconst body = {\n \"expectedGeneration\": 0,\n \"immediate\": false,\n \"confirmation\": \"delete organization\"\n};\n\nconst result = await greatwait.request(\"organizations_close\", body);",
5
+ "mcp": "// organizations.close is not on the MCP surface.\n// Organization closure and recovery require a signed-in administrator; delegated credentials cannot acquire organization-wide authority."
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "curl": "curl -sS -X GET \"$GREATWAIT_API_URL/v1/organization/lifecycle\" \\\n --variable %GREATWAIT_SESSION_TOKEN \\\n --expand-header \"Authorization: Bearer {{GREATWAIT_SESSION_TOKEN}}\"",
3
+ "environments": ["test", "live"],
4
+ "javascript": "import { createGreatwaitClient } from \"@greatwait/api-client\";\n\nconst greatwait = createGreatwaitClient({\n baseUrl: process.env.GREATWAIT_API_URL,\n credential: process.env.GREATWAIT_SESSION_TOKEN,\n fetch,\n});\n\nconst result = await greatwait.request(\"organizations_lifecycle\");",
5
+ "mcp": "// organizations.lifecycle is not on the MCP surface.\n// Organization closure and recovery require a signed-in administrator; delegated credentials cannot acquire organization-wide authority."
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "curl": "curl -sS -X POST \"$GREATWAIT_API_URL/v1/organization/restore\" \\\n --variable %GREATWAIT_SESSION_TOKEN \\\n --expand-header \"Authorization: Bearer {{GREATWAIT_SESSION_TOKEN}}\" \\\n -H 'Content-Type: application/json' \\\n --data-binary '{\"expectedGeneration\":1}'",
3
+ "environments": ["test", "live"],
4
+ "javascript": "import { createGreatwaitClient } from \"@greatwait/api-client\";\n\nconst greatwait = createGreatwaitClient({\n baseUrl: process.env.GREATWAIT_API_URL,\n credential: process.env.GREATWAIT_SESSION_TOKEN,\n fetch,\n});\n\nconst body = {\n \"expectedGeneration\": 1\n};\n\nconst result = await greatwait.request(\"organizations_restore\", body);",
5
+ "mcp": "// organizations.restore is not on the MCP surface.\n// Organization closure and recovery require a signed-in administrator; delegated credentials cannot acquire organization-wide authority."
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "curl": "curl -sS -X POST \"$GREATWAIT_API_URL/v1/projects/$GREATWAIT_PROJECTID/archive\" \\\n --variable %GREATWAIT_API_KEY \\\n --expand-header \"Authorization: Bearer {{GREATWAIT_API_KEY}}\" \\\n -H 'Content-Type: application/json' \\\n -H 'If-Match: $GREATWAIT_IF_MATCH' \\\n --data-binary '{\"archived\":true}'",
3
+ "environments": ["test", "live"],
4
+ "javascript": "import { createGreatwaitClient } from \"@greatwait/api-client\";\n\nconst greatwait = createGreatwaitClient({\n baseUrl: process.env.GREATWAIT_API_URL,\n credential: process.env.GREATWAIT_API_KEY,\n fetch,\n});\n\nconst projectId = process.env.GREATWAIT_PROJECTID;\n\nconst body = {\n \"archived\": true\n};\n\nconst result = await greatwait.request(\"projects_archive\", projectId, body, { \"If-Match\": process.env.GREATWAIT_IF_MATCH });",
5
+ "mcp": "// Any MCP client, against $GREATWAIT_API_URL/mcp.\n{\n \"arguments\": {\n \"If-Match\": \"$IF_MATCH\",\n \"archived\": true,\n \"projectId\": \"$PROJECTID\"\n },\n \"name\": \"projects_archive\"\n}"
6
+ }
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "curl": "curl -sS -X POST \"$GREATWAIT_API_URL/v1/projects\" \\\n --variable %GREATWAIT_SESSION_TOKEN \\\n --expand-header \"Authorization: Bearer {{GREATWAIT_SESSION_TOKEN}}\" \\\n -H 'Content-Type: application/json' \\\n --data-binary '{\"name\":\"Billing reminders\"}'",
3
+ "environments": ["test", "live"],
3
4
  "javascript": "import { createGreatwaitClient } from \"@greatwait/api-client\";\n\nconst greatwait = createGreatwaitClient({\n baseUrl: process.env.GREATWAIT_API_URL,\n credential: process.env.GREATWAIT_SESSION_TOKEN,\n fetch,\n});\n\nconst body = {\n \"name\": \"Billing reminders\"\n};\n\nconst result = await greatwait.request(\"projects_create\", body);",
4
5
  "mcp": "// projects.create is not on the MCP surface.\n// Creating a project is a signed-in member's act. MCP carries API credentials and OAuth tokens, whose authority already is one project — so this operation accepts neither, and an agent that somehow created one could not act in it."
5
6
  }
@@ -0,0 +1,6 @@
1
+ {
2
+ "curl": "curl -sS -X DELETE \"$GREATWAIT_API_URL/v1/projects/$GREATWAIT_PROJECTID\" \\\n --variable %GREATWAIT_API_KEY \\\n --expand-header \"Authorization: Bearer {{GREATWAIT_API_KEY}}\" \\\n -H 'If-Match: $GREATWAIT_IF_MATCH'",
3
+ "environments": ["test", "live"],
4
+ "javascript": "import { createGreatwaitClient } from \"@greatwait/api-client\";\n\nconst greatwait = createGreatwaitClient({\n baseUrl: process.env.GREATWAIT_API_URL,\n credential: process.env.GREATWAIT_API_KEY,\n fetch,\n});\n\nconst projectId = process.env.GREATWAIT_PROJECTID;\n\nconst result = await greatwait.request(\"projects_delete\", projectId, { \"If-Match\": process.env.GREATWAIT_IF_MATCH });",
5
+ "mcp": "// Any MCP client, against $GREATWAIT_API_URL/mcp.\n{\n \"arguments\": {\n \"If-Match\": \"$IF_MATCH\",\n \"projectId\": \"$PROJECTID\"\n },\n \"name\": \"projects_delete\"\n}"
6
+ }
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "curl": "curl -sS -X GET \"$GREATWAIT_API_URL/v1/projects\" \\\n --variable %GREATWAIT_SESSION_TOKEN \\\n --expand-header \"Authorization: Bearer {{GREATWAIT_SESSION_TOKEN}}\"",
3
+ "environments": ["test", "live"],
3
4
  "javascript": "import { createGreatwaitClient } from \"@greatwait/api-client\";\n\nconst greatwait = createGreatwaitClient({\n baseUrl: process.env.GREATWAIT_API_URL,\n credential: process.env.GREATWAIT_SESSION_TOKEN,\n fetch,\n});\n\nconst result = await greatwait.request(\"projects_list\");",
4
5
  "mcp": "// projects.list is not on the MCP surface.\n// Enumerating an organization's projects is a signed-in member's question. MCP carries API credentials and OAuth tokens, whose authority already is one project, and this operation accepts neither."
5
6
  }
@@ -0,0 +1,6 @@
1
+ {
2
+ "curl": "curl -sS -X PATCH \"$GREATWAIT_API_URL/v1/projects/$GREATWAIT_PROJECTID\" \\\n --variable %GREATWAIT_API_KEY \\\n --expand-header \"Authorization: Bearer {{GREATWAIT_API_KEY}}\" \\\n -H 'Content-Type: application/json' \\\n -H 'If-Match: $GREATWAIT_IF_MATCH' \\\n --data-binary '{\"name\":\"Customer reminders\"}'",
3
+ "environments": ["test", "live"],
4
+ "javascript": "import { createGreatwaitClient } from \"@greatwait/api-client\";\n\nconst greatwait = createGreatwaitClient({\n baseUrl: process.env.GREATWAIT_API_URL,\n credential: process.env.GREATWAIT_API_KEY,\n fetch,\n});\n\nconst projectId = process.env.GREATWAIT_PROJECTID;\n\nconst body = {\n \"name\": \"Customer reminders\"\n};\n\nconst result = await greatwait.request(\"projects_rename\", projectId, body, { \"If-Match\": process.env.GREATWAIT_IF_MATCH });",
5
+ "mcp": "// Any MCP client, against $GREATWAIT_API_URL/mcp.\n{\n \"arguments\": {\n \"If-Match\": \"$IF_MATCH\",\n \"name\": \"Customer reminders\",\n \"projectId\": \"$PROJECTID\"\n },\n \"name\": \"projects_rename\"\n}"
6
+ }
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "curl": "curl -sS -X POST \"$GREATWAIT_API_URL/v1/schedules/$GREATWAIT_SCHEDULEID/archive\" \\\n --variable %GREATWAIT_API_KEY \\\n --expand-header \"Authorization: Bearer {{GREATWAIT_API_KEY}}\"",
3
+ "environments": ["test", "live"],
3
4
  "javascript": "import { createGreatwaitClient } from \"@greatwait/api-client\";\n\nconst greatwait = createGreatwaitClient({\n baseUrl: process.env.GREATWAIT_API_URL,\n credential: process.env.GREATWAIT_API_KEY,\n fetch,\n});\n\nconst scheduleId = process.env.GREATWAIT_SCHEDULEID;\n\nconst result = await greatwait.request(\"schedules_archive\", scheduleId);",
4
5
  "mcp": "// Any MCP client, against $GREATWAIT_API_URL/mcp.\n{\n \"arguments\": {\n \"scheduleId\": \"$SCHEDULEID\"\n },\n \"name\": \"schedules_archive\"\n}"
5
6
  }
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "curl": "curl -sS -X DELETE \"$GREATWAIT_API_URL/v1/schedules/$GREATWAIT_SCHEDULEID\" \\\n --variable %GREATWAIT_API_KEY \\\n --expand-header \"Authorization: Bearer {{GREATWAIT_API_KEY}}\"",
3
+ "environments": ["test", "live"],
3
4
  "javascript": "import { createGreatwaitClient } from \"@greatwait/api-client\";\n\nconst greatwait = createGreatwaitClient({\n baseUrl: process.env.GREATWAIT_API_URL,\n credential: process.env.GREATWAIT_API_KEY,\n fetch,\n});\n\nconst scheduleId = process.env.GREATWAIT_SCHEDULEID;\n\nconst result = await greatwait.request(\"schedules_cancel\", scheduleId);",
4
5
  "mcp": "// Any MCP client, against $GREATWAIT_API_URL/mcp.\n{\n \"arguments\": {\n \"scheduleId\": \"$SCHEDULEID\"\n },\n \"name\": \"schedules_cancel\"\n}"
5
6
  }
@@ -1,5 +1,6 @@
1
1
  {
2
- "curl": "curl -sS -X POST \"$GREATWAIT_API_URL/v1/schedules\" \\\n --variable %GREATWAIT_API_KEY \\\n --expand-header \"Authorization: Bearer {{GREATWAIT_API_KEY}}\" \\\n -H 'Content-Type: application/json' \\\n --data-binary '{\"cron\":\"0 9 * * 1-5\",\"data\":{\"report\":\"daily\"},\"endpoint\":\"ep_01h8xyz9k2m4n6p8r0t2v4w6y8\",\"partitionKey\":\"campaign.spring\",\"timeZone\":\"Europe/London\"}'",
3
- "javascript": "import { createGreatwaitClient } from \"@greatwait/api-client\";\n\nconst greatwait = createGreatwaitClient({\n baseUrl: process.env.GREATWAIT_API_URL,\n credential: process.env.GREATWAIT_API_KEY,\n fetch,\n});\n\nconst body = {\n \"cron\": \"0 9 * * 1-5\",\n \"data\": {\n \"report\": \"daily\"\n },\n \"endpoint\": \"ep_01h8xyz9k2m4n6p8r0t2v4w6y8\",\n \"partitionKey\": \"campaign.spring\",\n \"timeZone\": \"Europe/London\"\n};\n\nconst result = await greatwait.request(\"schedules_create\", body);",
4
- "mcp": "// Any MCP client, against $GREATWAIT_API_URL/mcp.\n{\n \"arguments\": {\n \"cron\": \"0 9 * * 1-5\",\n \"data\": {\n \"report\": \"daily\"\n },\n \"endpoint\": \"ep_01h8xyz9k2m4n6p8r0t2v4w6y8\",\n \"partitionKey\": \"campaign.spring\",\n \"timeZone\": \"Europe/London\"\n },\n \"name\": \"schedules_create\"\n}"
2
+ "curl": "curl -sS -X POST \"$GREATWAIT_API_URL/v1/schedules\" \\\n --variable %GREATWAIT_API_KEY \\\n --expand-header \"Authorization: Bearer {{GREATWAIT_API_KEY}}\" \\\n -H 'Content-Type: application/json' \\\n --data-binary '{\"cron\":\"0 9 * * 1-5\",\"data\":{\"report\":\"daily\"},\"endpoint\":\"ep_01h8xyz9k2m4n6p8r0t2v4w6y8\",\"lateness\":{\"maxStalenessSeconds\":3600,\"policy\":\"catchUp\"},\"partitionKey\":\"campaign.spring\",\"timeZone\":\"Europe/London\"}'",
3
+ "environments": ["test", "live"],
4
+ "javascript": "import { createGreatwaitClient } from \"@greatwait/api-client\";\n\nconst greatwait = createGreatwaitClient({\n baseUrl: process.env.GREATWAIT_API_URL,\n credential: process.env.GREATWAIT_API_KEY,\n fetch,\n});\n\nconst body = {\n \"cron\": \"0 9 * * 1-5\",\n \"data\": {\n \"report\": \"daily\"\n },\n \"endpoint\": \"ep_01h8xyz9k2m4n6p8r0t2v4w6y8\",\n \"lateness\": {\n \"maxStalenessSeconds\": 3600,\n \"policy\": \"catchUp\"\n },\n \"partitionKey\": \"campaign.spring\",\n \"timeZone\": \"Europe/London\"\n};\n\nconst result = await greatwait.request(\"schedules_create\", body);",
5
+ "mcp": "// Any MCP client, against $GREATWAIT_API_URL/mcp.\n{\n \"arguments\": {\n \"cron\": \"0 9 * * 1-5\",\n \"data\": {\n \"report\": \"daily\"\n },\n \"endpoint\": \"ep_01h8xyz9k2m4n6p8r0t2v4w6y8\",\n \"lateness\": {\n \"maxStalenessSeconds\": 3600,\n \"policy\": \"catchUp\"\n },\n \"partitionKey\": \"campaign.spring\",\n \"timeZone\": \"Europe/London\"\n },\n \"name\": \"schedules_create\"\n}"
5
6
  }
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "curl": "curl -sS -X GET \"$GREATWAIT_API_URL/v1/schedules\" \\\n --variable %GREATWAIT_API_KEY \\\n --expand-header \"Authorization: Bearer {{GREATWAIT_API_KEY}}\"",
3
+ "environments": ["test", "live"],
3
4
  "javascript": "import { createGreatwaitClient } from \"@greatwait/api-client\";\n\nconst greatwait = createGreatwaitClient({\n baseUrl: process.env.GREATWAIT_API_URL,\n credential: process.env.GREATWAIT_API_KEY,\n fetch,\n});\n\nconst result = await greatwait.request(\"schedules_list\");",
4
5
  "mcp": "// Any MCP client, against $GREATWAIT_API_URL/mcp.\n{\n \"arguments\": {},\n \"name\": \"schedules_list\"\n}"
5
6
  }
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "curl": "curl -sS -X POST \"$GREATWAIT_API_URL/v1/schedules/$GREATWAIT_SCHEDULEID/pause\" \\\n --variable %GREATWAIT_API_KEY \\\n --expand-header \"Authorization: Bearer {{GREATWAIT_API_KEY}}\"",
3
+ "environments": ["test", "live"],
3
4
  "javascript": "import { createGreatwaitClient } from \"@greatwait/api-client\";\n\nconst greatwait = createGreatwaitClient({\n baseUrl: process.env.GREATWAIT_API_URL,\n credential: process.env.GREATWAIT_API_KEY,\n fetch,\n});\n\nconst scheduleId = process.env.GREATWAIT_SCHEDULEID;\n\nconst result = await greatwait.request(\"schedules_pause\", scheduleId);",
4
5
  "mcp": "// Any MCP client, against $GREATWAIT_API_URL/mcp.\n{\n \"arguments\": {\n \"scheduleId\": \"$SCHEDULEID\"\n },\n \"name\": \"schedules_pause\"\n}"
5
6
  }
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "curl": "curl -sS -X GET \"$GREATWAIT_API_URL/v1/schedules/$GREATWAIT_SCHEDULEID\" \\\n --variable %GREATWAIT_API_KEY \\\n --expand-header \"Authorization: Bearer {{GREATWAIT_API_KEY}}\"",
3
+ "environments": ["test", "live"],
3
4
  "javascript": "import { createGreatwaitClient } from \"@greatwait/api-client\";\n\nconst greatwait = createGreatwaitClient({\n baseUrl: process.env.GREATWAIT_API_URL,\n credential: process.env.GREATWAIT_API_KEY,\n fetch,\n});\n\nconst scheduleId = process.env.GREATWAIT_SCHEDULEID;\n\nconst result = await greatwait.request(\"schedules_read\", scheduleId);",
4
5
  "mcp": "// Any MCP client, against $GREATWAIT_API_URL/mcp.\n{\n \"arguments\": {\n \"scheduleId\": \"$SCHEDULEID\"\n },\n \"name\": \"schedules_read\"\n}"
5
6
  }
@@ -1,5 +1,6 @@
1
1
  {
2
- "curl": "curl -sS -X PUT \"$GREATWAIT_API_URL/v1/schedules/$GREATWAIT_SCHEDULEID\" \\\n --variable %GREATWAIT_API_KEY \\\n --expand-header \"Authorization: Bearer {{GREATWAIT_API_KEY}}\" \\\n -H 'Content-Type: application/json' \\\n --data-binary '{\"data\":{\"report\":\"weekly\"},\"everySeconds\":86400,\"endpoint\":\"ep_01h8xyz9k2m4n6p8r0t2v4w6y8\",\"partitionKey\":\"campaign.spring\"}'",
3
- "javascript": "import { createGreatwaitClient } from \"@greatwait/api-client\";\n\nconst greatwait = createGreatwaitClient({\n baseUrl: process.env.GREATWAIT_API_URL,\n credential: process.env.GREATWAIT_API_KEY,\n fetch,\n});\n\nconst scheduleId = process.env.GREATWAIT_SCHEDULEID;\n\nconst body = {\n \"data\": {\n \"report\": \"weekly\"\n },\n \"everySeconds\": 86400,\n \"endpoint\": \"ep_01h8xyz9k2m4n6p8r0t2v4w6y8\",\n \"partitionKey\": \"campaign.spring\"\n};\n\nconst result = await greatwait.request(\"schedules_replace\", scheduleId, body);",
4
- "mcp": "// Any MCP client, against $GREATWAIT_API_URL/mcp.\n{\n \"arguments\": {\n \"scheduleId\": \"$SCHEDULEID\",\n \"data\": {\n \"report\": \"weekly\"\n },\n \"everySeconds\": 86400,\n \"endpoint\": \"ep_01h8xyz9k2m4n6p8r0t2v4w6y8\",\n \"partitionKey\": \"campaign.spring\"\n },\n \"name\": \"schedules_replace\"\n}"
2
+ "curl": "curl -sS -X PUT \"$GREATWAIT_API_URL/v1/schedules/$GREATWAIT_SCHEDULEID\" \\\n --variable %GREATWAIT_API_KEY \\\n --expand-header \"Authorization: Bearer {{GREATWAIT_API_KEY}}\" \\\n -H 'Content-Type: application/json' \\\n --data-binary '{\"data\":{\"report\":\"weekly\"},\"everySeconds\":86400,\"endpoint\":\"ep_01h8xyz9k2m4n6p8r0t2v4w6y8\",\"lateness\":{\"maxStalenessSeconds\":7200,\"policy\":\"catchUp\"},\"partitionKey\":\"campaign.spring\"}'",
3
+ "environments": ["test", "live"],
4
+ "javascript": "import { createGreatwaitClient } from \"@greatwait/api-client\";\n\nconst greatwait = createGreatwaitClient({\n baseUrl: process.env.GREATWAIT_API_URL,\n credential: process.env.GREATWAIT_API_KEY,\n fetch,\n});\n\nconst scheduleId = process.env.GREATWAIT_SCHEDULEID;\n\nconst body = {\n \"data\": {\n \"report\": \"weekly\"\n },\n \"everySeconds\": 86400,\n \"endpoint\": \"ep_01h8xyz9k2m4n6p8r0t2v4w6y8\",\n \"lateness\": {\n \"maxStalenessSeconds\": 7200,\n \"policy\": \"catchUp\"\n },\n \"partitionKey\": \"campaign.spring\"\n};\n\nconst result = await greatwait.request(\"schedules_replace\", scheduleId, body);",
5
+ "mcp": "// Any MCP client, against $GREATWAIT_API_URL/mcp.\n{\n \"arguments\": {\n \"scheduleId\": \"$SCHEDULEID\",\n \"data\": {\n \"report\": \"weekly\"\n },\n \"everySeconds\": 86400,\n \"endpoint\": \"ep_01h8xyz9k2m4n6p8r0t2v4w6y8\",\n \"lateness\": {\n \"maxStalenessSeconds\": 7200,\n \"policy\": \"catchUp\"\n },\n \"partitionKey\": \"campaign.spring\"\n },\n \"name\": \"schedules_replace\"\n}"
5
6
  }
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "curl": "curl -sS -X POST \"$GREATWAIT_API_URL/v1/schedules/$GREATWAIT_SCHEDULEID/resume\" \\\n --variable %GREATWAIT_API_KEY \\\n --expand-header \"Authorization: Bearer {{GREATWAIT_API_KEY}}\"",
3
+ "environments": ["test", "live"],
3
4
  "javascript": "import { createGreatwaitClient } from \"@greatwait/api-client\";\n\nconst greatwait = createGreatwaitClient({\n baseUrl: process.env.GREATWAIT_API_URL,\n credential: process.env.GREATWAIT_API_KEY,\n fetch,\n});\n\nconst scheduleId = process.env.GREATWAIT_SCHEDULEID;\n\nconst result = await greatwait.request(\"schedules_resume\", scheduleId);",
4
5
  "mcp": "// Any MCP client, against $GREATWAIT_API_URL/mcp.\n{\n \"arguments\": {\n \"scheduleId\": \"$SCHEDULEID\"\n },\n \"name\": \"schedules_resume\"\n}"
5
6
  }
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "curl": "curl -sS -X GET \"$GREATWAIT_API_URL/v1/test-sinks/$GREATWAIT_SINKID/deliveries\" \\\n --variable %GREATWAIT_API_KEY \\\n --expand-header \"Authorization: Bearer {{GREATWAIT_API_KEY}}\"",
3
+ "environments": ["test"],
3
4
  "javascript": "import { createGreatwaitClient } from \"@greatwait/api-client\";\n\nconst greatwait = createGreatwaitClient({\n baseUrl: process.env.GREATWAIT_API_URL,\n credential: process.env.GREATWAIT_API_KEY,\n fetch,\n});\n\nconst sinkId = process.env.GREATWAIT_SINKID;\n\nconst result = await greatwait.request(\"sinkdeliveries_list\", sinkId);",
4
5
  "mcp": "// Any MCP client, against $GREATWAIT_API_URL/mcp.\n{\n \"arguments\": {\n \"sinkId\": \"$SINKID\"\n },\n \"name\": \"sinkdeliveries_list\"\n}"
5
6
  }
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "curl": "curl -sS -X GET \"$GREATWAIT_API_URL/v1/test-sinks/$GREATWAIT_SINKID/deliveries/$GREATWAIT_DELIVERYRECORDID\" \\\n --variable %GREATWAIT_API_KEY \\\n --expand-header \"Authorization: Bearer {{GREATWAIT_API_KEY}}\"",
3
+ "environments": ["test"],
3
4
  "javascript": "import { createGreatwaitClient } from \"@greatwait/api-client\";\n\nconst greatwait = createGreatwaitClient({\n baseUrl: process.env.GREATWAIT_API_URL,\n credential: process.env.GREATWAIT_API_KEY,\n fetch,\n});\n\nconst sinkId = process.env.GREATWAIT_SINKID;\nconst deliveryRecordId = process.env.GREATWAIT_DELIVERYRECORDID;\n\nconst result = await greatwait.request(\"sinkdeliveries_read\", sinkId, deliveryRecordId);",
4
5
  "mcp": "// sinkdeliveries.read is not on the MCP surface.\n// The only operation that returns a delivered callback body. An agent handed it would put customer payload into ordinary tool history, which is the disclosure the narrow exception was written to avoid."
5
6
  }
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "curl": "curl -sS -X PUT \"$GREATWAIT_API_URL/v1/test-sinks/$GREATWAIT_SINKID/program\" \\\n --variable %GREATWAIT_API_KEY \\\n --expand-header \"Authorization: Bearer {{GREATWAIT_API_KEY}}\" \\\n -H 'Content-Type: application/json' \\\n --data-binary '{\"behavior\":\"timeout\"}'",
3
+ "environments": ["test"],
3
4
  "javascript": "import { createGreatwaitClient } from \"@greatwait/api-client\";\n\nconst greatwait = createGreatwaitClient({\n baseUrl: process.env.GREATWAIT_API_URL,\n credential: process.env.GREATWAIT_API_KEY,\n fetch,\n});\n\nconst sinkId = process.env.GREATWAIT_SINKID;\n\nconst body = {\n \"behavior\": \"timeout\"\n};\n\nconst result = await greatwait.request(\"testsinks_configure\", sinkId, body);",
4
5
  "mcp": "// Any MCP client, against $GREATWAIT_API_URL/mcp.\n{\n \"arguments\": {\n \"behavior\": \"timeout\",\n \"sinkId\": \"$SINKID\"\n },\n \"name\": \"testsinks_configure\"\n}"
5
6
  }
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "curl": "curl -sS -X POST \"$GREATWAIT_API_URL/v1/test-sinks\" \\\n --variable %GREATWAIT_API_KEY \\\n --expand-header \"Authorization: Bearer {{GREATWAIT_API_KEY}}\" \\\n -H 'Content-Type: application/json' \\\n --data-binary '{\"endpoint\":\"ep_01h8xyz9k2m4n6p8r0t2v4w6y8\",\"program\":{\"behavior\":\"server_error\",\"forDeliveries\":2,\"then\":\"success\"}}'",
3
+ "environments": ["test"],
3
4
  "javascript": "import { createGreatwaitClient } from \"@greatwait/api-client\";\n\nconst greatwait = createGreatwaitClient({\n baseUrl: process.env.GREATWAIT_API_URL,\n credential: process.env.GREATWAIT_API_KEY,\n fetch,\n});\n\nconst body = {\n \"endpoint\": \"ep_01h8xyz9k2m4n6p8r0t2v4w6y8\",\n \"program\": {\n \"behavior\": \"server_error\",\n \"forDeliveries\": 2,\n \"then\": \"success\"\n }\n};\n\nconst result = await greatwait.request(\"testsinks_create\", body);",
4
5
  "mcp": "// Any MCP client, against $GREATWAIT_API_URL/mcp.\n{\n \"arguments\": {\n \"endpoint\": \"ep_01h8xyz9k2m4n6p8r0t2v4w6y8\",\n \"program\": {\n \"behavior\": \"server_error\",\n \"forDeliveries\": 2,\n \"then\": \"success\"\n }\n },\n \"name\": \"testsinks_create\"\n}"
5
6
  }
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "curl": "curl -sS -X DELETE \"$GREATWAIT_API_URL/v1/test-sinks/$GREATWAIT_SINKID\" \\\n --variable %GREATWAIT_API_KEY \\\n --expand-header \"Authorization: Bearer {{GREATWAIT_API_KEY}}\"",
3
+ "environments": ["test"],
3
4
  "javascript": "import { createGreatwaitClient } from \"@greatwait/api-client\";\n\nconst greatwait = createGreatwaitClient({\n baseUrl: process.env.GREATWAIT_API_URL,\n credential: process.env.GREATWAIT_API_KEY,\n fetch,\n});\n\nconst sinkId = process.env.GREATWAIT_SINKID;\n\nconst result = await greatwait.request(\"testsinks_delete\", sinkId);",
4
5
  "mcp": "// Any MCP client, against $GREATWAIT_API_URL/mcp.\n{\n \"arguments\": {\n \"sinkId\": \"$SINKID\"\n },\n \"name\": \"testsinks_delete\"\n}"
5
6
  }
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "curl": "curl -sS -X GET \"$GREATWAIT_API_URL/v1/test-sinks\" \\\n --variable %GREATWAIT_API_KEY \\\n --expand-header \"Authorization: Bearer {{GREATWAIT_API_KEY}}\"",
3
+ "environments": ["test"],
3
4
  "javascript": "import { createGreatwaitClient } from \"@greatwait/api-client\";\n\nconst greatwait = createGreatwaitClient({\n baseUrl: process.env.GREATWAIT_API_URL,\n credential: process.env.GREATWAIT_API_KEY,\n fetch,\n});\n\nconst result = await greatwait.request(\"testsinks_list\");",
4
5
  "mcp": "// Any MCP client, against $GREATWAIT_API_URL/mcp.\n{\n \"arguments\": {},\n \"name\": \"testsinks_list\"\n}"
5
6
  }
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "curl": "curl -sS -X GET \"$GREATWAIT_API_URL/v1/test-sinks/$GREATWAIT_SINKID\" \\\n --variable %GREATWAIT_API_KEY \\\n --expand-header \"Authorization: Bearer {{GREATWAIT_API_KEY}}\"",
3
+ "environments": ["test"],
3
4
  "javascript": "import { createGreatwaitClient } from \"@greatwait/api-client\";\n\nconst greatwait = createGreatwaitClient({\n baseUrl: process.env.GREATWAIT_API_URL,\n credential: process.env.GREATWAIT_API_KEY,\n fetch,\n});\n\nconst sinkId = process.env.GREATWAIT_SINKID;\n\nconst result = await greatwait.request(\"testsinks_read\", sinkId);",
4
5
  "mcp": "// Any MCP client, against $GREATWAIT_API_URL/mcp.\n{\n \"arguments\": {\n \"sinkId\": \"$SINKID\"\n },\n \"name\": \"testsinks_read\"\n}"
5
6
  }
@@ -0,0 +1,6 @@
1
+ {
2
+ "curl": "curl -sS -X GET \"$GREATWAIT_API_URL/v1/timing/summary\" \\\n --variable %GREATWAIT_API_KEY \\\n --expand-header \"Authorization: Bearer {{GREATWAIT_API_KEY}}\"",
3
+ "environments": ["test", "live"],
4
+ "javascript": "import { createGreatwaitClient } from \"@greatwait/api-client\";\n\nconst greatwait = createGreatwaitClient({\n baseUrl: process.env.GREATWAIT_API_URL,\n credential: process.env.GREATWAIT_API_KEY,\n fetch,\n});\n\nconst result = await greatwait.request(\"timing_summary\");",
5
+ "mcp": "// Any MCP client, against $GREATWAIT_API_URL/mcp.\n{\n \"arguments\": {},\n \"name\": \"timing_summary\"\n}"
6
+ }
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "curl": "curl -sS -X GET \"$GREATWAIT_API_URL/v1/usage\" \\\n --variable %GREATWAIT_API_KEY \\\n --expand-header \"Authorization: Bearer {{GREATWAIT_API_KEY}}\"",
3
+ "environments": ["test", "live"],
3
4
  "javascript": "import { createGreatwaitClient } from \"@greatwait/api-client\";\n\nconst greatwait = createGreatwaitClient({\n baseUrl: process.env.GREATWAIT_API_URL,\n credential: process.env.GREATWAIT_API_KEY,\n fetch,\n});\n\nconst result = await greatwait.request(\"usage_read\");",
4
5
  "mcp": "// Any MCP client, against $GREATWAIT_API_URL/mcp.\n{\n \"arguments\": {},\n \"name\": \"usage_read\"\n}"
5
6
  }
package/package.json CHANGED
@@ -20,11 +20,6 @@
20
20
  "import": "./dist/authority.js",
21
21
  "default": "./dist/authority.js"
22
22
  },
23
- "./callback-ownership": {
24
- "types": "./dist/callback-ownership.d.ts",
25
- "import": "./dist/callback-ownership.js",
26
- "default": "./dist/callback-ownership.js"
27
- },
28
23
  "./callback-receiver": {
29
24
  "types": "./dist/callback-receiver.d.ts",
30
25
  "import": "./dist/callback-receiver.js",
@@ -145,7 +140,7 @@
145
140
  "name": "@greatwait/contracts",
146
141
  "publishConfig": {
147
142
  "access": "public",
148
- "tag": "alpha"
143
+ "tag": "latest"
149
144
  },
150
145
  "repository": {
151
146
  "type": "git",
@@ -154,5 +149,5 @@
154
149
  },
155
150
  "sideEffects": false,
156
151
  "type": "module",
157
- "version": "0.1.0-alpha.2"
152
+ "version": "0.1.0-alpha.4"
158
153
  }
@@ -1,58 +0,0 @@
1
- /**
2
- * Whether a receiver has to prove it owns a destination before Greatwait
3
- * delivers anything there.
4
- *
5
- * **Zod-free and dependency-free on purpose.** Both the API Worker and the
6
- * Scheduler Worker enforce this, and `apps/scheduler/src/contract-runtime.ts`
7
- * records what reaching the contract barrel costs a Durable Object cold start.
8
- * This module is an enumeration and two pure functions, so the subpath export
9
- * `@greatwait/contracts/callback-ownership` costs the scheduler nothing.
10
- *
11
- * **Why the rule is stated once rather than twice.** Two sites resolve a
12
- * destination for sending — `apps/api` when a schedule is created, and
13
- * `apps/scheduler` at the moment of delivery — and they live in different
14
- * workspaces. If each wrote its own status predicate they would eventually
15
- * disagree, and the shape of that disagreement is a schedule the product
16
- * accepts and then silently never delivers. `sendableStatuses` is the single
17
- * statement both build their query from.
18
- */
19
- /**
20
- * The answers this product understands, in the order a person would read them
21
- * as increasing strictness.
22
- *
23
- * `not-required` does **not** mean verification is gone. A destination may
24
- * still answer its ownership challenge, and doing so still records the instant
25
- * it proved possession of the secret. It means nothing waits for that.
26
- */
27
- export declare const CALLBACK_OWNERSHIP_POLICIES: readonly ["not-required", "required"];
28
- export type CallbackOwnershipPolicy = (typeof CALLBACK_OWNERSHIP_POLICIES)[number];
29
- /**
30
- * What an unset variable means.
31
- *
32
- * Not required, decided on 2026-08-18 after the first invited customers walked
33
- * the product: nobody writes an HMAC responder to try a scheduler, so requiring
34
- * one before the first delivery cost the whole top of the funnel to buy a
35
- * property that `evaluateCallbackUrl`, the delivery rate limits and the request
36
- * signature already defend from other directions. See W4-09.
37
- */
38
- export declare const DEFAULT_CALLBACK_OWNERSHIP_POLICY: CallbackOwnershipPolicy;
39
- /**
40
- * Read the policy a deployment declares, or refuse to run.
41
- *
42
- * **An unrecognised value throws rather than falling back.** The entire reason
43
- * this is configuration is that turning the requirement on or off should be a
44
- * visible decision; a typo, a rename, or a half-finished edit silently read as
45
- * `not-required` would hand back exactly the off-switch the setting exists to
46
- * make visible. Absent is a decision — it is the documented default — and
47
- * `"requred"` is not.
48
- */
49
- export declare function readCallbackOwnershipPolicy(value: string | undefined): CallbackOwnershipPolicy;
50
- /**
51
- * The destination statuses a send may resolve under a policy, as a query
52
- * builds its `IN` list from.
53
- *
54
- * `disabled` is absent from both and always will be: disabling is terminal and
55
- * is the one refusal this setting does not reach. A caller that widened this to
56
- * include it would be delivering to a destination somebody turned off.
57
- */
58
- export declare function sendableStatuses(policy: CallbackOwnershipPolicy): readonly string[];
@@ -1,71 +0,0 @@
1
- /**
2
- * Whether a receiver has to prove it owns a destination before Greatwait
3
- * delivers anything there.
4
- *
5
- * **Zod-free and dependency-free on purpose.** Both the API Worker and the
6
- * Scheduler Worker enforce this, and `apps/scheduler/src/contract-runtime.ts`
7
- * records what reaching the contract barrel costs a Durable Object cold start.
8
- * This module is an enumeration and two pure functions, so the subpath export
9
- * `@greatwait/contracts/callback-ownership` costs the scheduler nothing.
10
- *
11
- * **Why the rule is stated once rather than twice.** Two sites resolve a
12
- * destination for sending — `apps/api` when a schedule is created, and
13
- * `apps/scheduler` at the moment of delivery — and they live in different
14
- * workspaces. If each wrote its own status predicate they would eventually
15
- * disagree, and the shape of that disagreement is a schedule the product
16
- * accepts and then silently never delivers. `sendableStatuses` is the single
17
- * statement both build their query from.
18
- */
19
- /**
20
- * The answers this product understands, in the order a person would read them
21
- * as increasing strictness.
22
- *
23
- * `not-required` does **not** mean verification is gone. A destination may
24
- * still answer its ownership challenge, and doing so still records the instant
25
- * it proved possession of the secret. It means nothing waits for that.
26
- */
27
- export const CALLBACK_OWNERSHIP_POLICIES = [
28
- "not-required",
29
- "required",
30
- ];
31
- /**
32
- * What an unset variable means.
33
- *
34
- * Not required, decided on 2026-08-18 after the first invited customers walked
35
- * the product: nobody writes an HMAC responder to try a scheduler, so requiring
36
- * one before the first delivery cost the whole top of the funnel to buy a
37
- * property that `evaluateCallbackUrl`, the delivery rate limits and the request
38
- * signature already defend from other directions. See W4-09.
39
- */
40
- export const DEFAULT_CALLBACK_OWNERSHIP_POLICY = "not-required";
41
- /**
42
- * Read the policy a deployment declares, or refuse to run.
43
- *
44
- * **An unrecognised value throws rather than falling back.** The entire reason
45
- * this is configuration is that turning the requirement on or off should be a
46
- * visible decision; a typo, a rename, or a half-finished edit silently read as
47
- * `not-required` would hand back exactly the off-switch the setting exists to
48
- * make visible. Absent is a decision — it is the documented default — and
49
- * `"requred"` is not.
50
- */
51
- export function readCallbackOwnershipPolicy(value) {
52
- if (value === undefined || value === "") {
53
- return DEFAULT_CALLBACK_OWNERSHIP_POLICY;
54
- }
55
- const known = CALLBACK_OWNERSHIP_POLICIES.find((policy) => policy === value);
56
- if (known === undefined) {
57
- throw new Error(`GREATWAIT_CALLBACK_OWNERSHIP is ${JSON.stringify(value)}, which this service does not understand. Known values: ${CALLBACK_OWNERSHIP_POLICIES.join(", ")}. Leave it unset for ${DEFAULT_CALLBACK_OWNERSHIP_POLICY}.`);
58
- }
59
- return known;
60
- }
61
- /**
62
- * The destination statuses a send may resolve under a policy, as a query
63
- * builds its `IN` list from.
64
- *
65
- * `disabled` is absent from both and always will be: disabling is terminal and
66
- * is the one refusal this setting does not reach. A caller that widened this to
67
- * include it would be delivering to a destination somebody turned off.
68
- */
69
- export function sendableStatuses(policy) {
70
- return policy === "required" ? ["verified"] : ["pending", "verified"];
71
- }
@@ -1,59 +0,0 @@
1
- {
2
- "purpose": "Prove that the receiver possesses the one-time endpoint secret before Greatwait marks the endpoint verified.",
3
- "request": {
4
- "bodyEncoding": "UTF-8 bytes of the compact JSON object in schema property order: challenge, endpointId, type, version.",
5
- "contentType": "application/json",
6
- "method": "POST",
7
- "redirectPolicy": "manual; every 3xx response is refused",
8
- "signature": {
9
- "algorithm": "HMAC-SHA-256",
10
- "format": "v1=<64 lowercase hexadecimal characters>",
11
- "header": "Callback-Verification-Signature",
12
- "input": "the exact request body bytes",
13
- "key": "the one-time endpoint secret returned by REST endpoint creation"
14
- }
15
- },
16
- "response": {
17
- "body": "ignored after enforcing the 1024-byte response limit; return an empty body",
18
- "proof": {
19
- "algorithm": "HMAC-SHA-256",
20
- "format": "v1=<64 lowercase hexadecimal characters>",
21
- "header": "Callback-Verification-Response",
22
- "input": "the UTF-8 bytes of the challenge string",
23
- "key": "the same endpoint secret"
24
- },
25
- "status": "any 2xx status"
26
- },
27
- "testVector": {
28
- "challenge": "cvc_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
29
- "endpointId": "ep_00000000000000000000000000",
30
- "exactBodyBase64": "eyJjaGFsbGVuZ2UiOiJjdmNfQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIsImVuZHBvaW50SWQiOiJlcF8wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsInR5cGUiOiJjYWxsYmFjay5lbmRwb2ludC52ZXJpZmljYXRpb24iLCJ2ZXJzaW9uIjoiMjAyNi0wOC0wNSJ9",
31
- "requestSignature": "v1=0d24c7fed4d752411b88025a9923627b329e0eb9d53978a6ebcf92c0678c731e",
32
- "responseSignature": "v1=efc690a23f1870930ff3388313162c0e06406902a7a4d3f9273ffe0abcef86bd",
33
- "secret": "verification-vector-secret"
34
- },
35
- "version": "2026-08-05",
36
- "challengeSchema": {
37
- "$schema": "https://json-schema.org/draft/2020-12/schema",
38
- "type": "object",
39
- "properties": {
40
- "challenge": {
41
- "type": "string",
42
- "pattern": "^cvc_[A-Za-z0-9_-]{43}$"
43
- },
44
- "endpointId": {
45
- "type": "string",
46
- "pattern": "^ep_[0-9abcdefghjkmnpqrstvwxyz]{26}$"
47
- },
48
- "type": {
49
- "type": "string",
50
- "const": "callback.endpoint.verification"
51
- },
52
- "version": {
53
- "type": "string",
54
- "const": "2026-08-05"
55
- }
56
- },
57
- "required": ["challenge", "endpointId", "type", "version"]
58
- }
59
- }