@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.
- package/README.md +1 -1
- package/dist/authority.d.ts +4 -1
- package/dist/authority.js +1 -0
- package/dist/billing.d.ts +231 -1
- package/dist/billing.js +150 -1
- package/dist/callback-safety.js +13 -3
- package/dist/configuration-bounds.d.ts +13 -0
- package/dist/configuration-bounds.js +13 -0
- package/dist/data-export.d.ts +2 -0
- package/dist/delivery.d.ts +26 -0
- package/dist/delivery.js +2 -0
- package/dist/effective-limits.d.ts +40 -0
- package/dist/effective-limits.js +42 -0
- package/dist/endpoints.d.ts +173 -5
- package/dist/endpoints.js +77 -6
- package/dist/first-value-journey.d.ts +1 -1
- package/dist/first-value-journey.js +11 -7
- package/dist/forecast.d.ts +111 -21
- package/dist/forecast.js +87 -24
- package/dist/http-request.d.ts +193 -0
- package/dist/http-request.js +305 -0
- package/dist/identity.d.ts +4 -4
- package/dist/index.d.ts +9 -6
- package/dist/index.js +8 -5
- package/dist/mcp.d.ts +2 -1
- package/dist/mcp.js +1 -1
- package/dist/members.d.ts +141 -0
- package/dist/members.js +223 -0
- package/dist/oauth.d.ts +7 -0
- package/dist/operation-definitions.d.ts +20 -4
- package/dist/operation-definitions.js +9 -1
- package/dist/operational-config.d.ts +101 -0
- package/dist/operational-config.js +341 -0
- package/dist/operations.d.ts +1299 -52
- package/dist/operations.js +466 -32
- package/dist/organization-lifecycle.d.ts +10 -0
- package/dist/partition.d.ts +17 -9
- package/dist/partition.js +3 -3
- package/dist/policy.js +5 -2
- package/dist/problems.d.ts +25 -2
- package/dist/problems.js +49 -1
- package/dist/protocol.d.ts +5 -5
- package/dist/protocol.js +2 -1
- package/dist/scheduling-records.d.ts +226 -0
- package/dist/scheduling-records.js +5 -0
- package/dist/scheduling.d.ts +273 -1
- package/dist/scheduling.js +91 -4
- package/dist/secrets.d.ts +7 -0
- package/dist/tenancy.d.ts +1 -1
- package/dist/tenancy.js +1 -1
- package/dist/usage.js +6 -21
- package/dist/zod-values.d.ts +2 -2
- package/dist/zod-values.js +1 -1
- package/generated/v1/examples/attempts.list.response.json +2 -0
- package/generated/v1/examples/attempts.read.response.json +2 -0
- package/generated/v1/examples/billing.fundingconfirm.response.json +120 -0
- package/generated/v1/examples/billing.invoicehistory.response.json +6 -0
- package/generated/v1/examples/billing.invoices.response.json +15 -0
- package/generated/v1/examples/billing.paymenthistory.response.json +6 -0
- package/generated/v1/examples/billing.paymentmethod.response.json +16 -0
- package/generated/v1/examples/billing.paymentmethodconfirm.request.json +3 -0
- package/generated/v1/examples/billing.paymentmethodconfirm.response.json +16 -0
- package/generated/v1/examples/billing.paymentmethodremove.request.json +3 -0
- package/generated/v1/examples/billing.paymentmethodremove.response.json +4 -0
- package/generated/v1/examples/billing.paymentmethodsetup.request.json +1 -0
- package/generated/v1/examples/billing.paymentmethodsetup.response.json +3 -0
- package/generated/v1/examples/endpoints.ensure.request.json +3 -0
- package/generated/v1/examples/endpoints.ensure.response.json +20 -0
- package/generated/v1/examples/invitations.create.request.json +5 -0
- package/generated/v1/examples/invitations.create.response.json +7 -0
- package/generated/v1/examples/invitations.list.response.json +11 -0
- package/generated/v1/examples/invitations.resend.request.json +1 -0
- package/generated/v1/examples/invitations.resend.response.json +4 -0
- package/generated/v1/examples/invitations.revoke.request.json +3 -0
- package/generated/v1/examples/invitations.revoke.response.json +4 -0
- package/generated/v1/examples/limits.read.response.json +16 -0
- package/generated/v1/examples/members.list.response.json +13 -0
- package/generated/v1/examples/members.remove.request.json +3 -0
- package/generated/v1/examples/members.remove.response.json +4 -0
- package/generated/v1/examples/members.role.request.json +3 -0
- package/generated/v1/examples/members.role.response.json +4 -0
- package/generated/v1/examples/occurrences.redeliver.response.json +2 -0
- package/generated/v1/examples/projectmembers.add.request.json +1 -0
- package/generated/v1/examples/projectmembers.add.response.json +4 -0
- package/generated/v1/examples/projectmembers.remove.request.json +3 -0
- package/generated/v1/examples/projectmembers.remove.response.json +4 -0
- package/generated/v1/first-value-journey.json +24 -8
- package/generated/v1/manifest.json +627 -10
- package/generated/v1/openapi.json +29081 -15663
- package/generated/v1/policy-matrix.json +137 -2
- package/generated/v1/schemas/attempts.list.response.json +15 -0
- package/generated/v1/schemas/attempts.read.response.json +15 -0
- package/generated/v1/schemas/billing.fundingconfirm.response.json +552 -0
- package/generated/v1/schemas/billing.invoicehistory.query.json +16 -0
- package/generated/v1/schemas/billing.invoicehistory.response.json +88 -0
- package/generated/v1/schemas/billing.invoices.response.json +51 -0
- package/generated/v1/schemas/billing.ledger.response.json +5 -0
- package/generated/v1/schemas/billing.notificationsettingsupdate.request.json +24 -17
- package/generated/v1/schemas/billing.paymenthistory.query.json +16 -0
- package/generated/v1/schemas/billing.paymenthistory.response.json +182 -0
- package/generated/v1/schemas/billing.paymentmethod.response.json +137 -0
- package/generated/v1/schemas/billing.paymentmethodconfirm.request.json +14 -0
- package/generated/v1/schemas/billing.paymentmethodconfirm.response.json +137 -0
- package/generated/v1/schemas/billing.paymentmethodremove.request.json +12 -0
- package/generated/v1/schemas/billing.paymentmethodremove.response.json +137 -0
- package/generated/v1/schemas/billing.paymentmethodsetup.request.json +12 -0
- package/generated/v1/schemas/billing.paymentmethodsetup.response.json +11 -0
- package/generated/v1/schemas/billing.purchase.request.json +4 -0
- package/generated/v1/schemas/context.read.response.json +1 -0
- package/generated/v1/schemas/credentials.connection.response.json +1 -0
- package/generated/v1/schemas/credentials.create.request.json +1 -0
- package/generated/v1/schemas/credentials.create.response.json +1 -0
- package/generated/v1/schemas/credentials.list.response.json +1 -0
- package/generated/v1/schemas/credentials.revoke.response.json +1 -0
- package/generated/v1/schemas/credentials.rotate.response.json +2 -0
- package/generated/v1/schemas/endpoints.acknowledgeSigningKeyRotation.response.json +59 -0
- package/generated/v1/schemas/endpoints.create.request.json +74 -0
- package/generated/v1/schemas/endpoints.create.response.json +59 -0
- package/generated/v1/schemas/endpoints.disable.response.json +59 -0
- package/generated/v1/schemas/endpoints.enable.response.json +59 -0
- package/generated/v1/schemas/endpoints.ensure.request.json +91 -0
- package/generated/v1/schemas/endpoints.ensure.response.json +169 -0
- package/generated/v1/schemas/endpoints.list.response.json +59 -0
- package/generated/v1/schemas/endpoints.read.response.json +59 -0
- package/generated/v1/schemas/endpoints.rotateSigningKey.response.json +59 -0
- package/generated/v1/schemas/endpoints.update.request.json +74 -0
- package/generated/v1/schemas/endpoints.update.response.json +59 -0
- package/generated/v1/schemas/forecast.read.request-headers.json +10 -0
- package/generated/v1/schemas/forecast.read.response.json +148 -0
- package/generated/v1/schemas/grants.list.response.json +1 -0
- package/generated/v1/schemas/grants.revoke.response.json +1 -0
- package/generated/v1/schemas/invitations.create.request-headers.json +13 -0
- package/generated/v1/schemas/invitations.create.request.json +24 -0
- package/generated/v1/schemas/invitations.create.response.json +31 -0
- package/generated/v1/schemas/invitations.list.response.json +40 -0
- package/generated/v1/schemas/invitations.resend.request-headers.json +13 -0
- package/generated/v1/schemas/invitations.resend.request.json +6 -0
- package/generated/v1/schemas/invitations.resend.response.json +27 -0
- package/generated/v1/schemas/invitations.revoke.request-headers.json +13 -0
- package/generated/v1/schemas/invitations.revoke.request.json +12 -0
- package/generated/v1/schemas/invitations.revoke.response.json +27 -0
- package/generated/v1/schemas/limits.read.response.json +79 -0
- package/generated/v1/schemas/members.list.response.json +53 -0
- package/generated/v1/schemas/members.remove.request-headers.json +13 -0
- package/generated/v1/schemas/members.remove.request.json +12 -0
- package/generated/v1/schemas/members.remove.response.json +27 -0
- package/generated/v1/schemas/members.role.request-headers.json +13 -0
- package/generated/v1/schemas/members.role.request.json +12 -0
- package/generated/v1/schemas/members.role.response.json +27 -0
- package/generated/v1/schemas/occurrences.redeliver.response.json +15 -0
- package/generated/v1/schemas/projectmembers.add.request-headers.json +13 -0
- package/generated/v1/schemas/projectmembers.add.request.json +6 -0
- package/generated/v1/schemas/projectmembers.add.response.json +27 -0
- package/generated/v1/schemas/projectmembers.remove.request-headers.json +13 -0
- package/generated/v1/schemas/projectmembers.remove.request.json +12 -0
- package/generated/v1/schemas/projectmembers.remove.response.json +27 -0
- package/generated/v1/schemas/schedules.archive.response.json +138 -1
- package/generated/v1/schemas/schedules.cancel.response.json +138 -1
- package/generated/v1/schemas/schedules.create.request.json +150 -1
- package/generated/v1/schemas/schedules.create.response.json +156 -1
- package/generated/v1/schemas/schedules.list.response.json +138 -1
- package/generated/v1/schemas/schedules.pause.response.json +138 -1
- package/generated/v1/schemas/schedules.read.response.json +138 -1
- package/generated/v1/schemas/schedules.replace.request.json +150 -1
- package/generated/v1/schemas/schedules.replace.response.json +156 -1
- package/generated/v1/schemas/schedules.resume.response.json +138 -1
- package/generated/v1/snippets/billing.fundingconfirm.json +6 -0
- package/generated/v1/snippets/billing.invoicehistory.json +6 -0
- package/generated/v1/snippets/billing.invoices.json +6 -0
- package/generated/v1/snippets/billing.notificationsettingsupdate.json +1 -1
- package/generated/v1/snippets/billing.paymenthistory.json +6 -0
- package/generated/v1/snippets/billing.paymentmethod.json +6 -0
- package/generated/v1/snippets/billing.paymentmethodconfirm.json +6 -0
- package/generated/v1/snippets/billing.paymentmethodremove.json +6 -0
- package/generated/v1/snippets/billing.paymentmethodsetup.json +6 -0
- package/generated/v1/snippets/endpoints.create.json +1 -1
- package/generated/v1/snippets/endpoints.ensure.json +6 -0
- package/generated/v1/snippets/forecast.windows.json +1 -1
- package/generated/v1/snippets/invitations.create.json +6 -0
- package/generated/v1/snippets/invitations.list.json +6 -0
- package/generated/v1/snippets/invitations.resend.json +6 -0
- package/generated/v1/snippets/invitations.revoke.json +6 -0
- package/generated/v1/snippets/journey/create-destination.json +1 -1
- package/generated/v1/snippets/limits.read.json +6 -0
- package/generated/v1/snippets/members.list.json +6 -0
- package/generated/v1/snippets/members.remove.json +6 -0
- package/generated/v1/snippets/members.role.json +6 -0
- package/generated/v1/snippets/projectmembers.add.json +6 -0
- package/generated/v1/snippets/projectmembers.remove.json +6 -0
- package/package.json +7 -2
package/dist/scheduling.d.ts
CHANGED
|
@@ -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
|
|
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";
|
package/dist/scheduling.js
CHANGED
|
@@ -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:
|
|
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:
|
|
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:
|
|
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
|
|
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
|
|
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
|
|
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
|