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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. package/README.md +1 -1
  2. package/dist/authority.d.ts +4 -1
  3. package/dist/authority.js +1 -0
  4. package/dist/billing.d.ts +231 -1
  5. package/dist/billing.js +150 -1
  6. package/dist/callback-safety.js +13 -3
  7. package/dist/configuration-bounds.d.ts +13 -0
  8. package/dist/configuration-bounds.js +13 -0
  9. package/dist/data-export.d.ts +2 -0
  10. package/dist/delivery.d.ts +26 -0
  11. package/dist/delivery.js +2 -0
  12. package/dist/effective-limits.d.ts +40 -0
  13. package/dist/effective-limits.js +42 -0
  14. package/dist/endpoints.d.ts +173 -5
  15. package/dist/endpoints.js +77 -6
  16. package/dist/first-value-journey.d.ts +1 -1
  17. package/dist/first-value-journey.js +11 -7
  18. package/dist/forecast.d.ts +111 -21
  19. package/dist/forecast.js +87 -24
  20. package/dist/http-request.d.ts +193 -0
  21. package/dist/http-request.js +305 -0
  22. package/dist/identity.d.ts +4 -4
  23. package/dist/index.d.ts +9 -6
  24. package/dist/index.js +8 -5
  25. package/dist/mcp.d.ts +2 -1
  26. package/dist/mcp.js +1 -1
  27. package/dist/members.d.ts +141 -0
  28. package/dist/members.js +223 -0
  29. package/dist/oauth.d.ts +7 -0
  30. package/dist/operation-definitions.d.ts +20 -4
  31. package/dist/operation-definitions.js +9 -1
  32. package/dist/operational-config.d.ts +101 -0
  33. package/dist/operational-config.js +341 -0
  34. package/dist/operations.d.ts +1299 -52
  35. package/dist/operations.js +466 -32
  36. package/dist/organization-lifecycle.d.ts +10 -0
  37. package/dist/partition.d.ts +17 -9
  38. package/dist/partition.js +3 -3
  39. package/dist/policy.js +5 -2
  40. package/dist/problems.d.ts +25 -2
  41. package/dist/problems.js +49 -1
  42. package/dist/protocol.d.ts +5 -5
  43. package/dist/protocol.js +2 -1
  44. package/dist/scheduling-records.d.ts +226 -0
  45. package/dist/scheduling-records.js +5 -0
  46. package/dist/scheduling.d.ts +273 -1
  47. package/dist/scheduling.js +91 -4
  48. package/dist/secrets.d.ts +7 -0
  49. package/dist/tenancy.d.ts +1 -1
  50. package/dist/tenancy.js +1 -1
  51. package/dist/usage.js +6 -21
  52. package/dist/zod-values.d.ts +2 -2
  53. package/dist/zod-values.js +1 -1
  54. package/generated/v1/examples/attempts.list.response.json +2 -0
  55. package/generated/v1/examples/attempts.read.response.json +2 -0
  56. package/generated/v1/examples/billing.fundingconfirm.response.json +120 -0
  57. package/generated/v1/examples/billing.invoicehistory.response.json +6 -0
  58. package/generated/v1/examples/billing.invoices.response.json +15 -0
  59. package/generated/v1/examples/billing.paymenthistory.response.json +6 -0
  60. package/generated/v1/examples/billing.paymentmethod.response.json +16 -0
  61. package/generated/v1/examples/billing.paymentmethodconfirm.request.json +3 -0
  62. package/generated/v1/examples/billing.paymentmethodconfirm.response.json +16 -0
  63. package/generated/v1/examples/billing.paymentmethodremove.request.json +3 -0
  64. package/generated/v1/examples/billing.paymentmethodremove.response.json +4 -0
  65. package/generated/v1/examples/billing.paymentmethodsetup.request.json +1 -0
  66. package/generated/v1/examples/billing.paymentmethodsetup.response.json +3 -0
  67. package/generated/v1/examples/endpoints.ensure.request.json +3 -0
  68. package/generated/v1/examples/endpoints.ensure.response.json +20 -0
  69. package/generated/v1/examples/invitations.create.request.json +5 -0
  70. package/generated/v1/examples/invitations.create.response.json +7 -0
  71. package/generated/v1/examples/invitations.list.response.json +11 -0
  72. package/generated/v1/examples/invitations.resend.request.json +1 -0
  73. package/generated/v1/examples/invitations.resend.response.json +4 -0
  74. package/generated/v1/examples/invitations.revoke.request.json +3 -0
  75. package/generated/v1/examples/invitations.revoke.response.json +4 -0
  76. package/generated/v1/examples/limits.read.response.json +16 -0
  77. package/generated/v1/examples/members.list.response.json +13 -0
  78. package/generated/v1/examples/members.remove.request.json +3 -0
  79. package/generated/v1/examples/members.remove.response.json +4 -0
  80. package/generated/v1/examples/members.role.request.json +3 -0
  81. package/generated/v1/examples/members.role.response.json +4 -0
  82. package/generated/v1/examples/occurrences.redeliver.response.json +2 -0
  83. package/generated/v1/examples/projectmembers.add.request.json +1 -0
  84. package/generated/v1/examples/projectmembers.add.response.json +4 -0
  85. package/generated/v1/examples/projectmembers.remove.request.json +3 -0
  86. package/generated/v1/examples/projectmembers.remove.response.json +4 -0
  87. package/generated/v1/first-value-journey.json +24 -8
  88. package/generated/v1/manifest.json +627 -10
  89. package/generated/v1/openapi.json +29081 -15663
  90. package/generated/v1/policy-matrix.json +137 -2
  91. package/generated/v1/schemas/attempts.list.response.json +15 -0
  92. package/generated/v1/schemas/attempts.read.response.json +15 -0
  93. package/generated/v1/schemas/billing.fundingconfirm.response.json +552 -0
  94. package/generated/v1/schemas/billing.invoicehistory.query.json +16 -0
  95. package/generated/v1/schemas/billing.invoicehistory.response.json +88 -0
  96. package/generated/v1/schemas/billing.invoices.response.json +51 -0
  97. package/generated/v1/schemas/billing.ledger.response.json +5 -0
  98. package/generated/v1/schemas/billing.notificationsettingsupdate.request.json +24 -17
  99. package/generated/v1/schemas/billing.paymenthistory.query.json +16 -0
  100. package/generated/v1/schemas/billing.paymenthistory.response.json +182 -0
  101. package/generated/v1/schemas/billing.paymentmethod.response.json +137 -0
  102. package/generated/v1/schemas/billing.paymentmethodconfirm.request.json +14 -0
  103. package/generated/v1/schemas/billing.paymentmethodconfirm.response.json +137 -0
  104. package/generated/v1/schemas/billing.paymentmethodremove.request.json +12 -0
  105. package/generated/v1/schemas/billing.paymentmethodremove.response.json +137 -0
  106. package/generated/v1/schemas/billing.paymentmethodsetup.request.json +12 -0
  107. package/generated/v1/schemas/billing.paymentmethodsetup.response.json +11 -0
  108. package/generated/v1/schemas/billing.purchase.request.json +4 -0
  109. package/generated/v1/schemas/context.read.response.json +1 -0
  110. package/generated/v1/schemas/credentials.connection.response.json +1 -0
  111. package/generated/v1/schemas/credentials.create.request.json +1 -0
  112. package/generated/v1/schemas/credentials.create.response.json +1 -0
  113. package/generated/v1/schemas/credentials.list.response.json +1 -0
  114. package/generated/v1/schemas/credentials.revoke.response.json +1 -0
  115. package/generated/v1/schemas/credentials.rotate.response.json +2 -0
  116. package/generated/v1/schemas/endpoints.acknowledgeSigningKeyRotation.response.json +59 -0
  117. package/generated/v1/schemas/endpoints.create.request.json +74 -0
  118. package/generated/v1/schemas/endpoints.create.response.json +59 -0
  119. package/generated/v1/schemas/endpoints.disable.response.json +59 -0
  120. package/generated/v1/schemas/endpoints.enable.response.json +59 -0
  121. package/generated/v1/schemas/endpoints.ensure.request.json +91 -0
  122. package/generated/v1/schemas/endpoints.ensure.response.json +169 -0
  123. package/generated/v1/schemas/endpoints.list.response.json +59 -0
  124. package/generated/v1/schemas/endpoints.read.response.json +59 -0
  125. package/generated/v1/schemas/endpoints.rotateSigningKey.response.json +59 -0
  126. package/generated/v1/schemas/endpoints.update.request.json +74 -0
  127. package/generated/v1/schemas/endpoints.update.response.json +59 -0
  128. package/generated/v1/schemas/forecast.read.request-headers.json +10 -0
  129. package/generated/v1/schemas/forecast.read.response.json +148 -0
  130. package/generated/v1/schemas/grants.list.response.json +1 -0
  131. package/generated/v1/schemas/grants.revoke.response.json +1 -0
  132. package/generated/v1/schemas/invitations.create.request-headers.json +13 -0
  133. package/generated/v1/schemas/invitations.create.request.json +24 -0
  134. package/generated/v1/schemas/invitations.create.response.json +31 -0
  135. package/generated/v1/schemas/invitations.list.response.json +40 -0
  136. package/generated/v1/schemas/invitations.resend.request-headers.json +13 -0
  137. package/generated/v1/schemas/invitations.resend.request.json +6 -0
  138. package/generated/v1/schemas/invitations.resend.response.json +27 -0
  139. package/generated/v1/schemas/invitations.revoke.request-headers.json +13 -0
  140. package/generated/v1/schemas/invitations.revoke.request.json +12 -0
  141. package/generated/v1/schemas/invitations.revoke.response.json +27 -0
  142. package/generated/v1/schemas/limits.read.response.json +79 -0
  143. package/generated/v1/schemas/members.list.response.json +53 -0
  144. package/generated/v1/schemas/members.remove.request-headers.json +13 -0
  145. package/generated/v1/schemas/members.remove.request.json +12 -0
  146. package/generated/v1/schemas/members.remove.response.json +27 -0
  147. package/generated/v1/schemas/members.role.request-headers.json +13 -0
  148. package/generated/v1/schemas/members.role.request.json +12 -0
  149. package/generated/v1/schemas/members.role.response.json +27 -0
  150. package/generated/v1/schemas/occurrences.redeliver.response.json +15 -0
  151. package/generated/v1/schemas/projectmembers.add.request-headers.json +13 -0
  152. package/generated/v1/schemas/projectmembers.add.request.json +6 -0
  153. package/generated/v1/schemas/projectmembers.add.response.json +27 -0
  154. package/generated/v1/schemas/projectmembers.remove.request-headers.json +13 -0
  155. package/generated/v1/schemas/projectmembers.remove.request.json +12 -0
  156. package/generated/v1/schemas/projectmembers.remove.response.json +27 -0
  157. package/generated/v1/schemas/schedules.archive.response.json +138 -1
  158. package/generated/v1/schemas/schedules.cancel.response.json +138 -1
  159. package/generated/v1/schemas/schedules.create.request.json +150 -1
  160. package/generated/v1/schemas/schedules.create.response.json +156 -1
  161. package/generated/v1/schemas/schedules.list.response.json +138 -1
  162. package/generated/v1/schemas/schedules.pause.response.json +138 -1
  163. package/generated/v1/schemas/schedules.read.response.json +138 -1
  164. package/generated/v1/schemas/schedules.replace.request.json +150 -1
  165. package/generated/v1/schemas/schedules.replace.response.json +156 -1
  166. package/generated/v1/schemas/schedules.resume.response.json +138 -1
  167. package/generated/v1/snippets/billing.fundingconfirm.json +6 -0
  168. package/generated/v1/snippets/billing.invoicehistory.json +6 -0
  169. package/generated/v1/snippets/billing.invoices.json +6 -0
  170. package/generated/v1/snippets/billing.notificationsettingsupdate.json +1 -1
  171. package/generated/v1/snippets/billing.paymenthistory.json +6 -0
  172. package/generated/v1/snippets/billing.paymentmethod.json +6 -0
  173. package/generated/v1/snippets/billing.paymentmethodconfirm.json +6 -0
  174. package/generated/v1/snippets/billing.paymentmethodremove.json +6 -0
  175. package/generated/v1/snippets/billing.paymentmethodsetup.json +6 -0
  176. package/generated/v1/snippets/endpoints.create.json +1 -1
  177. package/generated/v1/snippets/endpoints.ensure.json +6 -0
  178. package/generated/v1/snippets/forecast.windows.json +1 -1
  179. package/generated/v1/snippets/invitations.create.json +6 -0
  180. package/generated/v1/snippets/invitations.list.json +6 -0
  181. package/generated/v1/snippets/invitations.resend.json +6 -0
  182. package/generated/v1/snippets/invitations.revoke.json +6 -0
  183. package/generated/v1/snippets/journey/create-destination.json +1 -1
  184. package/generated/v1/snippets/limits.read.json +6 -0
  185. package/generated/v1/snippets/members.list.json +6 -0
  186. package/generated/v1/snippets/members.remove.json +6 -0
  187. package/generated/v1/snippets/members.role.json +6 -0
  188. package/generated/v1/snippets/projectmembers.add.json +6 -0
  189. package/generated/v1/snippets/projectmembers.remove.json +6 -0
  190. package/package.json +7 -2
@@ -42,6 +42,33 @@ export declare const scheduleStatusSchema: import("zod").ZodEnum<{
42
42
  cancelled: "cancelled";
43
43
  }>;
44
44
  export type ScheduleStatus = z.infer<typeof scheduleStatusSchema>;
45
+ /**
46
+ * The statuses a schedule never leaves, and from which it never fires again on
47
+ * its own.
48
+ *
49
+ * **"Never fires again on its own" rather than "never delivers again", and the
50
+ * distinction is real.** A member can still press Redeliver on a completed
51
+ * occurrence, and the repository admits that for a `completed` schedule as well
52
+ * as an `active` one. What is terminal here is the schedule's own timetable, not
53
+ * every possible future delivery.
54
+ *
55
+ * Exported for the same reason as {@link TERMINAL_OCCURRENCE_STATES}: so a
56
+ * caller enumerates them rather than writing the list out and quietly missing
57
+ * one if another is ever added. Three places had already written it out — the
58
+ * `archivedAt` validator in `scheduling-records.ts`, the dashboard's schedule
59
+ * controls, and the dashboard's pending-action rules — and the third had missed
60
+ * it entirely, which is the defect this list was extracted for.
61
+ */
62
+ export declare const TERMINAL_SCHEDULE_STATUSES: readonly ["cancelled", "completed"];
63
+ /**
64
+ * Whether this schedule has finished, either on its own or because somebody
65
+ * stopped it.
66
+ *
67
+ * `paused` is deliberately not terminal: it is reversible, so a paused schedule
68
+ * pointed at a broken destination is still a problem worth telling somebody
69
+ * about.
70
+ */
71
+ export declare function isTerminalScheduleStatus(status: ScheduleStatus): boolean;
45
72
  /**
46
73
  * How promptly an occurrence expects to be dispatched.
47
74
  *
@@ -682,6 +709,34 @@ export declare function defaultLatenessPolicyForRecurrence(kind: Recurrence["kin
682
709
  export declare const SCHEDULE_NAME_MAX_LENGTH = 120;
683
710
  export declare const scheduleNameSchema: import("zod").ZodString;
684
711
  export declare const scheduleSchema: import("zod").ZodObject<{
712
+ http: import("zod").ZodOptional<import("zod").ZodObject<{
713
+ method: import("zod").ZodEnum<{
714
+ POST: "POST";
715
+ PUT: "PUT";
716
+ GET: "GET";
717
+ }>;
718
+ body: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
719
+ mode: import("zod").ZodLiteral<"envelope">;
720
+ }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
721
+ mode: import("zod").ZodLiteral<"none">;
722
+ }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
723
+ mode: import("zod").ZodLiteral<"json">;
724
+ value: import("zod").ZodOptional<import("zod").ZodJSONSchema>;
725
+ }, import("zod/v4/core").$strict>], "mode">;
726
+ headers: import("zod").ZodArray<import("zod").ZodUnion<readonly [import("zod").ZodObject<{
727
+ name: import("zod").ZodString;
728
+ secret: import("zod").ZodLiteral<false>;
729
+ value: import("zod").ZodString;
730
+ }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
731
+ name: import("zod").ZodString;
732
+ secret: import("zod").ZodLiteral<true>;
733
+ configured: import("zod").ZodLiteral<true>;
734
+ value: import("zod").ZodOptional<import("zod").ZodNever>;
735
+ }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
736
+ name: import("zod").ZodString;
737
+ suppressed: import("zod").ZodLiteral<true>;
738
+ }, import("zod/v4/core").$strict>]>>;
739
+ }, import("zod/v4/core").$strict>>;
685
740
  archivedAt: import("zod").ZodOptional<import("zod").ZodString>;
686
741
  data: import("zod").ZodOptional<import("zod").ZodJSONSchema>;
687
742
  createdAt: import("zod").ZodString;
@@ -738,7 +793,7 @@ export type Schedule = z.infer<typeof scheduleSchema>;
738
793
  * A page of schedules.
739
794
  *
740
795
  * Items are schedules rather than schedule *views*. A cross-partition listing is
741
- * served from the D1 projection W2-06 built, and that projection holds a route
796
+ * served from the control-plane projection W2-06 built, and that projection holds a route
742
797
  * and a summary rather than every partition's live occurrence — so a page that
743
798
  * promised an occurrence would either lie about its freshness or force the
744
799
  * listing back through every partition it spans. Detail is where the occurrence
@@ -746,6 +801,34 @@ export type Schedule = z.infer<typeof scheduleSchema>;
746
801
  */
747
802
  export declare const schedulePageSchema: import("zod").ZodObject<{
748
803
  data: import("zod").ZodArray<import("zod").ZodObject<{
804
+ http: import("zod").ZodOptional<import("zod").ZodObject<{
805
+ method: import("zod").ZodEnum<{
806
+ POST: "POST";
807
+ PUT: "PUT";
808
+ GET: "GET";
809
+ }>;
810
+ body: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
811
+ mode: import("zod").ZodLiteral<"envelope">;
812
+ }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
813
+ mode: import("zod").ZodLiteral<"none">;
814
+ }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
815
+ mode: import("zod").ZodLiteral<"json">;
816
+ value: import("zod").ZodOptional<import("zod").ZodJSONSchema>;
817
+ }, import("zod/v4/core").$strict>], "mode">;
818
+ headers: import("zod").ZodArray<import("zod").ZodUnion<readonly [import("zod").ZodObject<{
819
+ name: import("zod").ZodString;
820
+ secret: import("zod").ZodLiteral<false>;
821
+ value: import("zod").ZodString;
822
+ }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
823
+ name: import("zod").ZodString;
824
+ secret: import("zod").ZodLiteral<true>;
825
+ configured: import("zod").ZodLiteral<true>;
826
+ value: import("zod").ZodOptional<import("zod").ZodNever>;
827
+ }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
828
+ name: import("zod").ZodString;
829
+ suppressed: import("zod").ZodLiteral<true>;
830
+ }, import("zod/v4/core").$strict>]>>;
831
+ }, import("zod/v4/core").$strict>>;
749
832
  archivedAt: import("zod").ZodOptional<import("zod").ZodString>;
750
833
  data: import("zod").ZodOptional<import("zod").ZodJSONSchema>;
751
834
  createdAt: import("zod").ZodString;
@@ -895,7 +978,9 @@ export declare const attemptFailureSnippetSchema: import("zod").ZodObject<{
895
978
  export type AttemptFailureSnippet = z.infer<typeof attemptFailureSnippetSchema>;
896
979
  export declare const attemptSchema: import("zod").ZodObject<{
897
980
  id: import("zod").ZodString;
981
+ localReceiptRecoveries: import("zod").ZodOptional<import("zod").ZodInt>;
898
982
  occurrence: import("zod").ZodString;
983
+ rescues: import("zod").ZodOptional<import("zod").ZodInt>;
899
984
  remediation: import("zod").ZodOptional<import("zod").ZodEnum<{
900
985
  none: "none";
901
986
  review_retry_policy: "review_retry_policy";
@@ -954,6 +1039,7 @@ export declare const attemptSchema: import("zod").ZodObject<{
954
1039
  network_ambiguous: "network_ambiguous";
955
1040
  payload_unavailable: "payload_unavailable";
956
1041
  }>>;
1042
+ dispatchRecoveries: import("zod").ZodOptional<import("zod").ZodInt>;
957
1043
  durationMs: import("zod").ZodOptional<import("zod").ZodNumber>;
958
1044
  }, import("zod/v4/core").$strip>;
959
1045
  export type Attempt = z.infer<typeof attemptSchema>;
@@ -1074,7 +1160,9 @@ export type OccurrenceView = z.infer<typeof occurrenceViewSchema>;
1074
1160
  export declare const attemptPageSchema: import("zod").ZodObject<{
1075
1161
  data: import("zod").ZodArray<import("zod").ZodObject<{
1076
1162
  id: import("zod").ZodString;
1163
+ localReceiptRecoveries: import("zod").ZodOptional<import("zod").ZodInt>;
1077
1164
  occurrence: import("zod").ZodString;
1165
+ rescues: import("zod").ZodOptional<import("zod").ZodInt>;
1078
1166
  remediation: import("zod").ZodOptional<import("zod").ZodEnum<{
1079
1167
  none: "none";
1080
1168
  review_retry_policy: "review_retry_policy";
@@ -1133,6 +1221,7 @@ export declare const attemptPageSchema: import("zod").ZodObject<{
1133
1221
  network_ambiguous: "network_ambiguous";
1134
1222
  payload_unavailable: "payload_unavailable";
1135
1223
  }>>;
1224
+ dispatchRecoveries: import("zod").ZodOptional<import("zod").ZodInt>;
1136
1225
  durationMs: import("zod").ZodOptional<import("zod").ZodNumber>;
1137
1226
  }, import("zod/v4/core").$strip>>;
1138
1227
  nextCursor: import("zod").ZodOptional<import("zod").ZodString>;
@@ -1145,7 +1234,9 @@ export type AttemptPage = z.infer<typeof attemptPageSchema>;
1145
1234
  export declare const attemptViewSchema: import("zod").ZodObject<{
1146
1235
  attempt: import("zod").ZodObject<{
1147
1236
  id: import("zod").ZodString;
1237
+ localReceiptRecoveries: import("zod").ZodOptional<import("zod").ZodInt>;
1148
1238
  occurrence: import("zod").ZodString;
1239
+ rescues: import("zod").ZodOptional<import("zod").ZodInt>;
1149
1240
  remediation: import("zod").ZodOptional<import("zod").ZodEnum<{
1150
1241
  none: "none";
1151
1242
  review_retry_policy: "review_retry_policy";
@@ -1204,6 +1295,7 @@ export declare const attemptViewSchema: import("zod").ZodObject<{
1204
1295
  network_ambiguous: "network_ambiguous";
1205
1296
  payload_unavailable: "payload_unavailable";
1206
1297
  }>>;
1298
+ dispatchRecoveries: import("zod").ZodOptional<import("zod").ZodInt>;
1207
1299
  durationMs: import("zod").ZodOptional<import("zod").ZodNumber>;
1208
1300
  }, import("zod/v4/core").$strip>;
1209
1301
  freshness: import("zod").ZodObject<{
@@ -1250,6 +1342,34 @@ export declare const scheduleViewSchema: import("zod").ZodObject<{
1250
1342
  attemptCount: import("zod").ZodNumber;
1251
1343
  }, import("zod/v4/core").$strip>;
1252
1344
  schedule: import("zod").ZodObject<{
1345
+ http: import("zod").ZodOptional<import("zod").ZodObject<{
1346
+ method: import("zod").ZodEnum<{
1347
+ POST: "POST";
1348
+ PUT: "PUT";
1349
+ GET: "GET";
1350
+ }>;
1351
+ body: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
1352
+ mode: import("zod").ZodLiteral<"envelope">;
1353
+ }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
1354
+ mode: import("zod").ZodLiteral<"none">;
1355
+ }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
1356
+ mode: import("zod").ZodLiteral<"json">;
1357
+ value: import("zod").ZodOptional<import("zod").ZodJSONSchema>;
1358
+ }, import("zod/v4/core").$strict>], "mode">;
1359
+ headers: import("zod").ZodArray<import("zod").ZodUnion<readonly [import("zod").ZodObject<{
1360
+ name: import("zod").ZodString;
1361
+ secret: import("zod").ZodLiteral<false>;
1362
+ value: import("zod").ZodString;
1363
+ }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
1364
+ name: import("zod").ZodString;
1365
+ secret: import("zod").ZodLiteral<true>;
1366
+ configured: import("zod").ZodLiteral<true>;
1367
+ value: import("zod").ZodOptional<import("zod").ZodNever>;
1368
+ }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
1369
+ name: import("zod").ZodString;
1370
+ suppressed: import("zod").ZodLiteral<true>;
1371
+ }, import("zod/v4/core").$strict>]>>;
1372
+ }, import("zod/v4/core").$strict>>;
1253
1373
  archivedAt: import("zod").ZodOptional<import("zod").ZodString>;
1254
1374
  data: import("zod").ZodOptional<import("zod").ZodJSONSchema>;
1255
1375
  createdAt: import("zod").ZodString;
@@ -1303,6 +1423,129 @@ export declare const scheduleViewSchema: import("zod").ZodObject<{
1303
1423
  }, import("zod/v4/core").$strip>;
1304
1424
  }, import("zod/v4/core").$strip>;
1305
1425
  export type ScheduleView = z.infer<typeof scheduleViewSchema>;
1426
+ /**
1427
+ * What a schedule create or replace answers: the schedule view, and — when the
1428
+ * request named its destination by `url` — where that endpoint's signing
1429
+ * secret is (W9-44). Present only then, because only then can the caller have
1430
+ * an endpoint whose secret it never held.
1431
+ */
1432
+ export declare const scheduleWrittenViewSchema: import("zod").ZodObject<{
1433
+ occurrence: import("zod").ZodObject<{
1434
+ generation: import("zod").ZodNumber;
1435
+ id: import("zod").ZodString;
1436
+ plannedFor: import("zod").ZodString;
1437
+ schedule: import("zod").ZodString;
1438
+ sequence: import("zod").ZodNumber;
1439
+ settledAt: import("zod").ZodOptional<import("zod").ZodString>;
1440
+ state: import("zod").ZodEnum<{
1441
+ due: "due";
1442
+ succeeded: "succeeded";
1443
+ ambiguous: "ambiguous";
1444
+ cancelled: "cancelled";
1445
+ planned: "planned";
1446
+ dispatching: "dispatching";
1447
+ retry_wait: "retry_wait";
1448
+ terminal_failed: "terminal_failed";
1449
+ skipped_stale: "skipped_stale";
1450
+ }>;
1451
+ firstAttemptLatenessMs: import("zod").ZodOptional<import("zod").ZodInt>;
1452
+ firstAttemptStartedAt: import("zod").ZodOptional<import("zod").ZodString>;
1453
+ timingEligibility: import("zod").ZodOptional<import("zod").ZodEnum<{
1454
+ customer_blocked: "customer_blocked";
1455
+ eligible: "eligible";
1456
+ platform_blocked: "platform_blocked";
1457
+ }>>;
1458
+ timingEligibilityReason: import("zod").ZodOptional<import("zod").ZodString>;
1459
+ timingPolicyVersion: import("zod").ZodOptional<import("zod").ZodString>;
1460
+ attemptCount: import("zod").ZodNumber;
1461
+ }, import("zod/v4/core").$strip>;
1462
+ schedule: import("zod").ZodObject<{
1463
+ http: import("zod").ZodOptional<import("zod").ZodObject<{
1464
+ method: import("zod").ZodEnum<{
1465
+ POST: "POST";
1466
+ PUT: "PUT";
1467
+ GET: "GET";
1468
+ }>;
1469
+ body: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
1470
+ mode: import("zod").ZodLiteral<"envelope">;
1471
+ }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
1472
+ mode: import("zod").ZodLiteral<"none">;
1473
+ }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
1474
+ mode: import("zod").ZodLiteral<"json">;
1475
+ value: import("zod").ZodOptional<import("zod").ZodJSONSchema>;
1476
+ }, import("zod/v4/core").$strict>], "mode">;
1477
+ headers: import("zod").ZodArray<import("zod").ZodUnion<readonly [import("zod").ZodObject<{
1478
+ name: import("zod").ZodString;
1479
+ secret: import("zod").ZodLiteral<false>;
1480
+ value: import("zod").ZodString;
1481
+ }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
1482
+ name: import("zod").ZodString;
1483
+ secret: import("zod").ZodLiteral<true>;
1484
+ configured: import("zod").ZodLiteral<true>;
1485
+ value: import("zod").ZodOptional<import("zod").ZodNever>;
1486
+ }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
1487
+ name: import("zod").ZodString;
1488
+ suppressed: import("zod").ZodLiteral<true>;
1489
+ }, import("zod/v4/core").$strict>]>>;
1490
+ }, import("zod/v4/core").$strict>>;
1491
+ archivedAt: import("zod").ZodOptional<import("zod").ZodString>;
1492
+ data: import("zod").ZodOptional<import("zod").ZodJSONSchema>;
1493
+ createdAt: import("zod").ZodString;
1494
+ delivery: import("zod").ZodOptional<import("zod").ZodObject<{
1495
+ completion: import("zod").ZodEnum<{
1496
+ response: "response";
1497
+ callback: "callback";
1498
+ }>;
1499
+ maxDurationSeconds: import("zod").ZodNumber;
1500
+ onOverlap: import("zod").ZodEnum<{
1501
+ skip: "skip";
1502
+ queue: "queue";
1503
+ }>;
1504
+ }, import("zod/v4/core").$strip>>;
1505
+ endpoint: import("zod").ZodOptional<import("zod").ZodString>;
1506
+ endpointUrl: import("zod").ZodOptional<import("zod").ZodString>;
1507
+ generation: import("zod").ZodNumber;
1508
+ id: import("zod").ZodString;
1509
+ latencyClass: import("zod").ZodEnum<{
1510
+ realtime: "realtime";
1511
+ bulk: "bulk";
1512
+ }>;
1513
+ lateness: import("zod").ZodObject<{
1514
+ maxStalenessSeconds: import("zod").ZodOptional<import("zod").ZodNumber>;
1515
+ policy: import("zod").ZodEnum<{
1516
+ skipAhead: "skipAhead";
1517
+ catchUp: "catchUp";
1518
+ }>;
1519
+ }, import("zod/v4/core").$strict>;
1520
+ name: import("zod").ZodOptional<import("zod").ZodString>;
1521
+ partitionKey: import("zod").ZodOptional<import("zod").ZodString>;
1522
+ nextDueAt: import("zod").ZodOptional<import("zod").ZodString>;
1523
+ recurrence: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
1524
+ kind: import("zod").ZodLiteral<"at">;
1525
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
1526
+ everySeconds: import("zod").ZodNumber;
1527
+ kind: import("zod").ZodLiteral<"every">;
1528
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
1529
+ cron: import("zod").ZodString;
1530
+ kind: import("zod").ZodLiteral<"cron">;
1531
+ timeZone: import("zod").ZodPipe<import("zod").ZodString, import("zod").ZodTransform<string, string>>;
1532
+ }, import("zod/v4/core").$strip>], "kind">;
1533
+ status: import("zod").ZodEnum<{
1534
+ active: "active";
1535
+ completed: "completed";
1536
+ paused: "paused";
1537
+ cancelled: "cancelled";
1538
+ }>;
1539
+ updatedAt: import("zod").ZodString;
1540
+ version: import("zod").ZodNumber;
1541
+ }, import("zod/v4/core").$strip>;
1542
+ endpointSigningSecret: import("zod").ZodOptional<import("zod").ZodObject<{
1543
+ guidance: import("zod").ZodString;
1544
+ returned: import("zod").ZodLiteral<false>;
1545
+ revealUrl: import("zod").ZodOptional<import("zod").ZodString>;
1546
+ }, import("zod/v4/core").$strip>>;
1547
+ }, import("zod/v4/core").$strip>;
1548
+ export type ScheduleWrittenView = z.infer<typeof scheduleWrittenViewSchema>;
1306
1549
  /**
1307
1550
  * The four ways a caller may say when a schedule happens.
1308
1551
  *
@@ -1328,6 +1571,34 @@ export declare const RECURRENCE_REQUEST_FIELDS: readonly ["at", "cron", "delaySe
1328
1571
  * a customer named is the worst kind of helpful.
1329
1572
  */
1330
1573
  export declare const scheduleRequestSchema: import("zod").ZodObject<{
1574
+ http: import("zod").ZodOptional<import("zod").ZodObject<{
1575
+ method: import("zod").ZodOptional<import("zod").ZodEnum<{
1576
+ POST: "POST";
1577
+ PUT: "PUT";
1578
+ GET: "GET";
1579
+ }>>;
1580
+ body: import("zod").ZodOptional<import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
1581
+ mode: import("zod").ZodLiteral<"envelope">;
1582
+ }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
1583
+ mode: import("zod").ZodLiteral<"json">;
1584
+ value: import("zod").ZodJSONSchema;
1585
+ }, import("zod/v4/core").$strict>], "mode">>;
1586
+ headers: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
1587
+ action: import("zod").ZodLiteral<"set">;
1588
+ name: import("zod").ZodString;
1589
+ value: import("zod").ZodString;
1590
+ secret: import("zod").ZodOptional<import("zod").ZodBoolean>;
1591
+ }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
1592
+ action: import("zod").ZodLiteral<"keep">;
1593
+ name: import("zod").ZodString;
1594
+ }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
1595
+ action: import("zod").ZodLiteral<"remove">;
1596
+ name: import("zod").ZodString;
1597
+ }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
1598
+ action: import("zod").ZodLiteral<"suppress">;
1599
+ name: import("zod").ZodString;
1600
+ }, import("zod/v4/core").$strict>], "action">>>;
1601
+ }, import("zod/v4/core").$strict>>;
1331
1602
  at: import("zod").ZodOptional<import("zod").ZodString>;
1332
1603
  cron: import("zod").ZodOptional<import("zod").ZodString>;
1333
1604
  data: import("zod").ZodOptional<import("zod").ZodJSONSchema>;
@@ -1345,6 +1616,7 @@ export declare const scheduleRequestSchema: import("zod").ZodObject<{
1345
1616
  }, import("zod/v4/core").$strict>>;
1346
1617
  everySeconds: import("zod").ZodOptional<import("zod").ZodNumber>;
1347
1618
  endpoint: import("zod").ZodOptional<import("zod").ZodString>;
1619
+ url: import("zod").ZodOptional<import("zod").ZodString>;
1348
1620
  latencyClass: import("zod").ZodOptional<import("zod").ZodEnum<{
1349
1621
  realtime: "realtime";
1350
1622
  bulk: "bulk";
@@ -1,6 +1,9 @@
1
+ import { httpRequestSchema, publicHttpRequestSchema } from "./http-request.js";
2
+ import { FIXED_INTERVAL_MIN_SECONDS, FIXED_INTERVAL_MAX_SECONDS, MAX_INLINE_PAYLOAD_BYTES, } from "./configuration-bounds.js";
1
3
  import { z } from "./zod.js";
2
4
  import { attemptIdSchema, deliveryIdSchema, endpointIdSchema, occurrenceIdSchema, scheduleIdSchema, } from "./identifiers.js";
3
5
  import { CALLBACK_ATTEMPT_DIAGNOSTICS } from "./delivery.js";
6
+ import { callbackUrlSchema, signingSecretNoticeSchema } from "./endpoints.js";
4
7
  import { pageRequestSchema, pageSchema, versionSchema, } from "./protocol.js";
5
8
  import { callbackTriggerSchema, } from "./signatures.js";
6
9
  import { durationSecondsSchema, timeZoneSchema, timestampSchema } from "./time.js";
@@ -46,6 +49,38 @@ export const SCHEDULE_STATUSES = [
46
49
  "completed",
47
50
  ];
48
51
  export const scheduleStatusSchema = z.enum(SCHEDULE_STATUSES);
52
+ /**
53
+ * The statuses a schedule never leaves, and from which it never fires again on
54
+ * its own.
55
+ *
56
+ * **"Never fires again on its own" rather than "never delivers again", and the
57
+ * distinction is real.** A member can still press Redeliver on a completed
58
+ * occurrence, and the repository admits that for a `completed` schedule as well
59
+ * as an `active` one. What is terminal here is the schedule's own timetable, not
60
+ * every possible future delivery.
61
+ *
62
+ * Exported for the same reason as {@link TERMINAL_OCCURRENCE_STATES}: so a
63
+ * caller enumerates them rather than writing the list out and quietly missing
64
+ * one if another is ever added. Three places had already written it out — the
65
+ * `archivedAt` validator in `scheduling-records.ts`, the dashboard's schedule
66
+ * controls, and the dashboard's pending-action rules — and the third had missed
67
+ * it entirely, which is the defect this list was extracted for.
68
+ */
69
+ export const TERMINAL_SCHEDULE_STATUSES = [
70
+ "cancelled",
71
+ "completed",
72
+ ];
73
+ /**
74
+ * Whether this schedule has finished, either on its own or because somebody
75
+ * stopped it.
76
+ *
77
+ * `paused` is deliberately not terminal: it is reversible, so a paused schedule
78
+ * pointed at a broken destination is still a problem worth telling somebody
79
+ * about.
80
+ */
81
+ export function isTerminalScheduleStatus(status) {
82
+ return TERMINAL_SCHEDULE_STATUSES.includes(status);
83
+ }
49
84
  /**
50
85
  * How promptly an occurrence expects to be dispatched.
51
86
  *
@@ -598,7 +633,7 @@ export const SCHEDULING_BOUNDS = {
598
633
  * Widening a bound is additive by `classifyChange` and narrowing it is
599
634
  * breaking, so this direction is the safe one to move in.
600
635
  */
601
- everySecondsMax: 365 * 24 * 60 * 60,
636
+ everySecondsMax: FIXED_INTERVAL_MAX_SECONDS,
602
637
  /**
603
638
  * The shortest fixed interval a recurring schedule may ask for, in seconds.
604
639
  *
@@ -610,7 +645,7 @@ export const SCHEDULING_BOUNDS = {
610
645
  * `classifyChange` and narrowing it is breaking, which is the direction to be
611
646
  * conservative in.
612
647
  */
613
- everySecondsMin: 60,
648
+ everySecondsMin: FIXED_INTERVAL_MIN_SECONDS,
614
649
  /**
615
650
  * How long an idempotency receipt is honoured. A client retrying a create for
616
651
  * longer than a day is not retrying, it is making a new request; keeping
@@ -662,7 +697,7 @@ export const SCHEDULING_BOUNDS = {
662
697
  * command-shaped payloads this product is for, and refuses the ones that are
663
698
  * really a file transfer.
664
699
  */
665
- payloadBytes: 65_536,
700
+ payloadBytes: MAX_INLINE_PAYLOAD_BYTES,
666
701
  /**
667
702
  * How soon a one-shot has to be for `realtime` to be the class it gets by
668
703
  * default, in seconds.
@@ -785,6 +820,7 @@ export const scheduleNameSchema = z
785
820
  .min(1, "must not be blank")
786
821
  .max(SCHEDULE_NAME_MAX_LENGTH, `must be at most ${String(SCHEDULE_NAME_MAX_LENGTH)} characters`);
787
822
  export const scheduleSchema = z.object({
823
+ http: publicHttpRequestSchema.optional(),
788
824
  /**
789
825
  * When the schedule was filed away, and absent until it is.
790
826
  *
@@ -908,7 +944,7 @@ export const scheduleSchema = z.object({
908
944
  * A page of schedules.
909
945
  *
910
946
  * Items are schedules rather than schedule *views*. A cross-partition listing is
911
- * served from the D1 projection W2-06 built, and that projection holds a route
947
+ * served from the control-plane projection W2-06 built, and that projection holds a route
912
948
  * and a summary rather than every partition's live occurrence — so a page that
913
949
  * promised an occurrence would either lie about its freshness or force the
914
950
  * listing back through every partition it spans. Detail is where the occurrence
@@ -1037,6 +1073,12 @@ export const attemptSchema = z
1037
1073
  delivery: deliveryIdSchema,
1038
1074
  /** Safe classifier code; absent when durable evidence predates diagnostics. */
1039
1075
  diagnostic: attemptDiagnosticSchema.optional(),
1076
+ /**
1077
+ * Instrumented re-drives of the same dispatching occurrence under a new
1078
+ * dispatch epoch. Includes deliberate admission deferrals; this is not a
1079
+ * count of database failures or callback sends. Absent on older responses.
1080
+ */
1081
+ dispatchRecoveries: z.int().nonnegative().optional(),
1040
1082
  /** Executor-observed elapsed time; absent when no durable timing survived. */
1041
1083
  durationMs: z
1042
1084
  .number()
@@ -1046,7 +1088,24 @@ export const attemptSchema = z
1046
1088
  .optional(),
1047
1089
  ...timingEvidenceShape,
1048
1090
  id: attemptIdSchema,
1091
+ /**
1092
+ * Instrumented send authorizations granted after a later local alarm
1093
+ * replayed the original wake receipt. Preserves the attempt and delivery
1094
+ * identity; excludes synchronous receipt hedges and repeated authorization
1095
+ * acknowledgements. A grant does not prove a callback left. Absent on
1096
+ * older responses.
1097
+ */
1098
+ localReceiptRecoveries: z.int().nonnegative().optional(),
1049
1099
  occurrence: occurrenceIdSchema,
1100
+ /**
1101
+ * How many times the watchdog took this attempt's send back and sent it
1102
+ * again: the send was authorized, and its outcome was never recorded
1103
+ * before its lease expired. Each re-send uses this attempt's `delivery` id,
1104
+ * so the receiver may have got the attempt more than once. `state` is the
1105
+ * outcome that was recorded. The timing evidence is the earliest send
1106
+ * known to have left. Absent when nothing was re-sent.
1107
+ */
1108
+ rescues: z.int().positive().optional(),
1050
1109
  /** Stable next-action code paired with a diagnostic when one is known. */
1051
1110
  remediation: attemptRemediationSchema.optional(),
1052
1111
  /**
@@ -1138,6 +1197,15 @@ export const scheduleViewSchema = z.object({
1138
1197
  occurrence: occurrenceSchema,
1139
1198
  schedule: scheduleSchema,
1140
1199
  });
1200
+ /**
1201
+ * What a schedule create or replace answers: the schedule view, and — when the
1202
+ * request named its destination by `url` — where that endpoint's signing
1203
+ * secret is (W9-44). Present only then, because only then can the caller have
1204
+ * an endpoint whose secret it never held.
1205
+ */
1206
+ export const scheduleWrittenViewSchema = scheduleViewSchema.extend({
1207
+ endpointSigningSecret: signingSecretNoticeSchema.optional(),
1208
+ });
1141
1209
  /**
1142
1210
  * The four ways a caller may say when a schedule happens.
1143
1211
  *
@@ -1169,6 +1237,7 @@ export const RECURRENCE_REQUEST_FIELDS = [
1169
1237
  */
1170
1238
  export const scheduleRequestSchema = z
1171
1239
  .object({
1240
+ http: httpRequestSchema.optional(),
1172
1241
  /** The instant the first occurrence is planned for. */
1173
1242
  at: timestampSchema.optional(),
1174
1243
  /**
@@ -1257,6 +1326,15 @@ export const scheduleRequestSchema = z
1257
1326
  * valid only when the stored schedule already has an endpoint.
1258
1327
  */
1259
1328
  endpoint: endpointIdSchema.optional(),
1329
+ /**
1330
+ * A callback destination named by its address instead of by an endpoint
1331
+ * id (W9-44, FXO-2907). The service uses the project's existing endpoint
1332
+ * at exactly this address, or creates one silently and returns no signing
1333
+ * secret — the response's `endpointSigningSecret` says where a person
1334
+ * reveals it. Reusing needs only `schedules:write`; creating also needs
1335
+ * `endpoints:write`. Give this or `endpoint`, not both.
1336
+ */
1337
+ url: callbackUrlSchema().optional(),
1260
1338
  /**
1261
1339
  * How promptly this schedule's occurrences expect to be served.
1262
1340
  *
@@ -1344,6 +1422,15 @@ export const scheduleRequestSchema = z
1344
1422
  });
1345
1423
  }
1346
1424
  }
1425
+ if (request.url !== undefined && request.endpoint !== undefined) {
1426
+ for (const path of ["endpoint", "url"]) {
1427
+ context.addIssue({
1428
+ code: "custom",
1429
+ message: "give `endpoint` or `url`, not both; `url` finds or creates the endpoint at that address",
1430
+ path: [path],
1431
+ });
1432
+ }
1433
+ }
1347
1434
  if (request.timeZone !== undefined && request.cron === undefined) {
1348
1435
  context.addIssue({
1349
1436
  code: "custom",
package/dist/secrets.d.ts CHANGED
@@ -47,6 +47,7 @@ export declare const credentialMetadataSchema: import("zod").ZodObject<{
47
47
  revokedAt: import("zod").ZodOptional<import("zod").ZodString>;
48
48
  supersededBy: import("zod").ZodOptional<import("zod").ZodString>;
49
49
  scopes: import("zod").ZodArray<import("zod").ZodEnum<{
50
+ "members:manage": "members:manage";
50
51
  "credentials:administer": "credentials:administer";
51
52
  "billing:write": "billing:write";
52
53
  "credentials:read": "credentials:read";
@@ -95,6 +96,7 @@ export declare const credentialPageSchema: import("zod").ZodObject<{
95
96
  revokedAt: import("zod").ZodOptional<import("zod").ZodString>;
96
97
  supersededBy: import("zod").ZodOptional<import("zod").ZodString>;
97
98
  scopes: import("zod").ZodArray<import("zod").ZodEnum<{
99
+ "members:manage": "members:manage";
98
100
  "credentials:administer": "credentials:administer";
99
101
  "billing:write": "billing:write";
100
102
  "credentials:read": "credentials:read";
@@ -143,6 +145,7 @@ export declare const credentialCreatedSchema: import("zod").ZodObject<{
143
145
  revokedAt: import("zod").ZodOptional<import("zod").ZodString>;
144
146
  supersededBy: import("zod").ZodOptional<import("zod").ZodString>;
145
147
  scopes: import("zod").ZodArray<import("zod").ZodEnum<{
148
+ "members:manage": "members:manage";
146
149
  "credentials:administer": "credentials:administer";
147
150
  "billing:write": "billing:write";
148
151
  "credentials:read": "credentials:read";
@@ -181,6 +184,7 @@ export declare const credentialRequestSchema: import("zod").ZodObject<{
181
184
  }>;
182
185
  project: import("zod").ZodString;
183
186
  scopes: import("zod").ZodArray<import("zod").ZodEnum<{
187
+ "members:manage": "members:manage";
184
188
  "credentials:administer": "credentials:administer";
185
189
  "billing:write": "billing:write";
186
190
  "credentials:read": "credentials:read";
@@ -250,6 +254,7 @@ export declare const credentialRotatedSchema: import("zod").ZodObject<{
250
254
  revokedAt: import("zod").ZodOptional<import("zod").ZodString>;
251
255
  supersededBy: import("zod").ZodOptional<import("zod").ZodString>;
252
256
  scopes: import("zod").ZodArray<import("zod").ZodEnum<{
257
+ "members:manage": "members:manage";
253
258
  "credentials:administer": "credentials:administer";
254
259
  "billing:write": "billing:write";
255
260
  "credentials:read": "credentials:read";
@@ -286,6 +291,7 @@ export declare const credentialRotatedSchema: import("zod").ZodObject<{
286
291
  revokedAt: import("zod").ZodOptional<import("zod").ZodString>;
287
292
  supersededBy: import("zod").ZodOptional<import("zod").ZodString>;
288
293
  scopes: import("zod").ZodArray<import("zod").ZodEnum<{
294
+ "members:manage": "members:manage";
289
295
  "credentials:administer": "credentials:administer";
290
296
  "billing:write": "billing:write";
291
297
  "credentials:read": "credentials:read";
@@ -333,6 +339,7 @@ export declare const credentialRevokedSchema: import("zod").ZodObject<{
333
339
  revokedAt: import("zod").ZodOptional<import("zod").ZodString>;
334
340
  supersededBy: import("zod").ZodOptional<import("zod").ZodString>;
335
341
  scopes: import("zod").ZodArray<import("zod").ZodEnum<{
342
+ "members:manage": "members:manage";
336
343
  "credentials:administer": "credentials:administer";
337
344
  "billing:write": "billing:write";
338
345
  "credentials:read": "credentials:read";
package/dist/tenancy.d.ts CHANGED
@@ -177,7 +177,7 @@ export declare const projectDeletionCountsSchema: import("zod").ZodObject<{
177
177
  }, import("zod/v4/core").$strip>;
178
178
  export type ProjectDeletionCounts = z.infer<typeof projectDeletionCountsSchema>;
179
179
  /**
180
- * Every active or archived project in the member's organization.
180
+ * Every active or archived project the member can access. Administrators see all.
181
181
  *
182
182
  * **Unpaged, with a stated ceiling, because the store beneath it is.**
183
183
  * `listProjects` reads an organization's projects in one go; declaring a page
package/dist/tenancy.js CHANGED
@@ -149,7 +149,7 @@ export const projectSummarySchema = z.object({
149
149
  });
150
150
  export const projectDeletionCountsSchema = projectSummarySchema.shape.deletionCounts;
151
151
  /**
152
- * Every active or archived project in the member's organization.
152
+ * Every active or archived project the member can access. Administrators see all.
153
153
  *
154
154
  * **Unpaged, with a stated ceiling, because the store beneath it is.**
155
155
  * `listProjects` reads an organization's projects in one go; declaring a page