@greatwait/contracts 0.1.0-alpha.3 → 0.1.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -9
- package/dist/authority.d.ts +33 -27
- package/dist/authority.js +12 -2
- package/dist/billing.d.ts +1001 -0
- package/dist/billing.js +684 -0
- package/dist/callback-safety.d.ts +2 -2
- package/dist/callback-safety.js +2 -2
- package/dist/compatibility.d.ts +3 -3
- package/dist/compatibility.js +1 -1
- package/dist/data-export.d.ts +67 -0
- package/dist/data-export.js +182 -0
- package/dist/endpoints.d.ts +181 -240
- package/dist/endpoints.js +77 -81
- package/dist/events.d.ts +17 -17
- package/dist/events.js +1 -1
- package/dist/first-value-journey.d.ts +49 -55
- package/dist/first-value-journey.js +6 -13
- package/dist/forecast.d.ts +71 -71
- package/dist/forecast.js +1 -1
- package/dist/identifiers.d.ts +20 -20
- package/dist/identifiers.js +1 -1
- package/dist/identity.d.ts +41 -37
- package/dist/identity.js +5 -4
- package/dist/index.d.ts +10 -5
- package/dist/index.js +10 -5
- package/dist/mcp.d.ts +21 -19
- package/dist/mcp.js +1 -1
- package/dist/naming.d.ts +45 -0
- package/dist/naming.js +159 -0
- package/dist/oauth.d.ts +186 -172
- package/dist/oauth.js +1 -1
- package/dist/operation-definitions.d.ts +9 -0
- package/dist/operation-definitions.js +7 -0
- package/dist/operations.d.ts +4162 -2171
- package/dist/operations.js +2679 -908
- package/dist/organization-lifecycle.d.ts +34 -0
- package/dist/organization-lifecycle.js +122 -0
- package/dist/partition.d.ts +26 -0
- package/dist/policy.d.ts +4 -4
- package/dist/policy.js +9 -5
- package/dist/problems.d.ts +32 -26
- package/dist/problems.js +6 -2
- package/dist/protocol.d.ts +204 -75
- package/dist/protocol.js +108 -36
- package/dist/scheduling-records.d.ts +343 -285
- package/dist/scheduling-records.js +1 -1
- package/dist/scheduling.d.ts +670 -360
- package/dist/scheduling.js +382 -56
- package/dist/secrets.d.ts +119 -105
- package/dist/secrets.js +1 -1
- package/dist/signatures.d.ts +74 -74
- package/dist/signatures.js +1 -1
- package/dist/tenancy.d.ts +142 -68
- package/dist/tenancy.js +70 -17
- package/dist/test-sink.d.ts +127 -127
- package/dist/test-sink.js +1 -1
- package/dist/time.d.ts +4 -4
- package/dist/time.js +1 -1
- package/dist/timing.d.ts +65 -0
- package/dist/timing.js +82 -0
- package/dist/usage.d.ts +103 -47
- package/dist/usage.js +197 -31
- package/dist/workspace.d.ts +34 -34
- package/dist/workspace.js +1 -1
- package/dist/zod-values.d.ts +3 -0
- package/dist/zod-values.js +2 -0
- package/dist/zod.d.ts +2 -0
- package/dist/zod.js +2 -0
- package/generated/v1/examples/attempts.list.response.json +4 -0
- package/generated/v1/examples/attempts.read.response.json +4 -0
- package/generated/v1/examples/billing.autotopup.request.json +5 -0
- package/generated/v1/examples/billing.autotopup.response.json +120 -0
- package/generated/v1/examples/billing.autotopuppreview.request.json +19 -0
- package/generated/v1/examples/billing.autotopuppreview.response.json +45 -0
- package/generated/v1/examples/billing.budgets.request.json +13 -0
- package/generated/v1/examples/billing.budgets.response.json +22 -0
- package/generated/v1/examples/billing.ceiling.request.json +8 -0
- package/generated/v1/examples/billing.ceiling.response.json +120 -0
- package/generated/v1/examples/billing.change.request.json +5 -0
- package/generated/v1/examples/billing.change.response.json +12 -0
- package/generated/v1/examples/billing.funding.response.json +120 -0
- package/generated/v1/examples/billing.fundingquote.request.json +7 -0
- package/generated/v1/examples/billing.fundingquote.response.json +13 -0
- package/generated/v1/examples/billing.ledger.response.json +23 -0
- package/generated/v1/examples/billing.notices.response.json +41 -0
- package/generated/v1/examples/billing.notificationsettings.response.json +17 -0
- package/generated/v1/examples/billing.notificationsettingsupdate.request.json +9 -0
- package/generated/v1/examples/billing.notificationsettingsupdate.response.json +17 -0
- package/generated/v1/examples/billing.portal.response.json +3 -0
- package/generated/v1/examples/billing.projects.response.json +12 -0
- package/generated/v1/examples/billing.purchase.request.json +5 -0
- package/generated/v1/examples/billing.purchase.response.json +120 -0
- package/generated/v1/examples/billing.quote.request.json +4 -0
- package/generated/v1/examples/billing.quote.response.json +19 -0
- package/generated/v1/examples/billing.reconcile.response.json +73 -0
- package/generated/v1/examples/billing.refundrequest.request.json +10 -0
- package/generated/v1/examples/billing.refundrequest.response.json +11 -0
- package/generated/v1/examples/billing.refundresolution.request.json +4 -0
- package/generated/v1/examples/billing.refundresolution.response.json +120 -0
- package/generated/v1/examples/billing.summary.response.json +73 -0
- package/generated/v1/examples/endpoints.acknowledgeSigningKeyRotation.response.json +18 -0
- package/generated/v1/examples/endpoints.create.response.json +1 -1
- package/generated/v1/examples/endpoints.disable.response.json +0 -1
- package/generated/v1/examples/{endpoints.verify.response.json → endpoints.enable.response.json} +4 -5
- package/generated/v1/examples/endpoints.list.response.json +1 -2
- package/generated/v1/examples/endpoints.read.response.json +2 -2
- package/generated/v1/examples/endpoints.revealSigningSecret.response.json +7 -0
- package/generated/v1/examples/endpoints.rotateSigningKey.response.json +1 -2
- package/generated/v1/examples/endpoints.update.response.json +1 -1
- package/generated/v1/examples/executions.list.response.json +20 -0
- package/generated/v1/examples/exports.cancel.response.json +11 -0
- package/generated/v1/examples/exports.create.request.json +1 -0
- package/generated/v1/examples/exports.create.response.json +8 -0
- package/generated/v1/examples/exports.part.response.json +5 -0
- package/generated/v1/examples/exports.read.response.json +8 -0
- package/generated/v1/examples/occurrences.read.response.json +4 -0
- package/generated/v1/examples/organizations.close.request.json +5 -0
- package/generated/v1/examples/organizations.close.response.json +10 -0
- package/generated/v1/examples/organizations.lifecycle.response.json +10 -0
- package/generated/v1/examples/organizations.restore.request.json +3 -0
- package/generated/v1/examples/organizations.restore.response.json +10 -0
- package/generated/v1/examples/projects.archive.request.json +3 -0
- package/generated/v1/examples/projects.archive.response.json +14 -0
- package/generated/v1/examples/projects.create.response.json +10 -1
- package/generated/v1/examples/projects.delete.response.json +9 -0
- package/generated/v1/examples/projects.list.response.json +12 -2
- package/generated/v1/examples/projects.rename.request.json +3 -0
- package/generated/v1/examples/projects.rename.response.json +14 -0
- package/generated/v1/examples/schedules.archive.response.json +3 -0
- package/generated/v1/examples/schedules.cancel.response.json +3 -0
- package/generated/v1/examples/schedules.create.request.json +4 -0
- package/generated/v1/examples/schedules.create.response.json +3 -0
- package/generated/v1/examples/schedules.list.response.json +3 -0
- package/generated/v1/examples/schedules.pause.response.json +3 -0
- package/generated/v1/examples/schedules.read.response.json +6 -0
- package/generated/v1/examples/schedules.replace.request.json +4 -0
- package/generated/v1/examples/schedules.replace.response.json +3 -0
- package/generated/v1/examples/schedules.resume.response.json +3 -0
- package/generated/v1/examples/timing.summary.response.json +35 -0
- package/generated/v1/examples/usage.read.response.json +1 -0
- package/generated/v1/first-value-journey.json +19 -10
- package/generated/v1/manifest.json +936 -23
- package/generated/v1/openapi.json +29983 -5784
- package/generated/v1/policy-matrix.json +278 -47
- package/generated/v1/schemas/attempts.list.response.json +24 -1
- package/generated/v1/schemas/attempts.read.response.json +24 -1
- package/generated/v1/schemas/billing.autotopup.request-headers.json +13 -0
- package/generated/v1/schemas/billing.autotopup.request.json +22 -0
- package/generated/v1/schemas/billing.autotopup.response-headers.json +10 -0
- package/generated/v1/schemas/billing.autotopup.response.json +552 -0
- package/generated/v1/schemas/billing.autotopuppreview.request.json +77 -0
- package/generated/v1/schemas/billing.autotopuppreview.response.json +277 -0
- package/generated/v1/schemas/billing.budgets.request-headers.json +13 -0
- package/generated/v1/schemas/billing.budgets.request.json +66 -0
- package/generated/v1/schemas/billing.budgets.response-headers.json +10 -0
- package/generated/v1/schemas/billing.budgets.response.json +92 -0
- package/generated/v1/schemas/billing.ceiling.request-headers.json +13 -0
- package/generated/v1/schemas/billing.ceiling.request.json +40 -0
- package/generated/v1/schemas/billing.ceiling.response-headers.json +10 -0
- package/generated/v1/schemas/billing.ceiling.response.json +552 -0
- package/generated/v1/schemas/billing.change.request-headers.json +13 -0
- package/generated/v1/schemas/billing.change.request.json +22 -0
- package/generated/v1/schemas/billing.change.response.json +119 -0
- package/generated/v1/schemas/billing.funding.response.json +552 -0
- package/generated/v1/schemas/billing.fundingquote.request.json +28 -0
- package/generated/v1/schemas/billing.fundingquote.response.json +61 -0
- package/generated/v1/schemas/billing.ledger.query.json +16 -0
- package/generated/v1/schemas/billing.ledger.response.json +125 -0
- package/generated/v1/schemas/billing.notices.query.json +16 -0
- package/generated/v1/schemas/billing.notices.response.json +278 -0
- package/generated/v1/schemas/billing.notificationsettings.response.json +70 -0
- package/generated/v1/schemas/billing.notificationsettingsupdate.request-headers.json +13 -0
- package/generated/v1/schemas/billing.notificationsettingsupdate.request.json +36 -0
- package/generated/v1/schemas/billing.notificationsettingsupdate.response-headers.json +10 -0
- package/generated/v1/schemas/billing.notificationsettingsupdate.response.json +70 -0
- package/generated/v1/schemas/billing.portal.response.json +11 -0
- package/generated/v1/schemas/billing.projects.response.json +119 -0
- package/generated/v1/schemas/billing.purchase.request-headers.json +13 -0
- package/generated/v1/schemas/billing.purchase.request.json +22 -0
- package/generated/v1/schemas/billing.purchase.response-headers.json +10 -0
- package/generated/v1/schemas/billing.purchase.response.json +552 -0
- package/generated/v1/schemas/billing.quote.request.json +20 -0
- package/generated/v1/schemas/billing.quote.response.json +86 -0
- package/generated/v1/schemas/billing.reconcile.response.json +468 -0
- package/generated/v1/schemas/billing.refundrequest.request-headers.json +13 -0
- package/generated/v1/schemas/billing.refundrequest.request.json +42 -0
- package/generated/v1/schemas/billing.refundrequest.response-headers.json +10 -0
- package/generated/v1/schemas/billing.refundrequest.response.json +45 -0
- package/generated/v1/schemas/billing.refundresolution.request-headers.json +13 -0
- package/generated/v1/schemas/billing.refundresolution.request.json +61 -0
- package/generated/v1/schemas/billing.refundresolution.response-headers.json +10 -0
- package/generated/v1/schemas/billing.refundresolution.response.json +552 -0
- package/generated/v1/schemas/billing.summary.response.json +468 -0
- package/generated/v1/schemas/context.read.response.json +2 -0
- package/generated/v1/schemas/credentials.connection.response.json +2 -0
- package/generated/v1/schemas/credentials.create.request.json +2 -0
- package/generated/v1/schemas/credentials.create.response.json +2 -0
- package/generated/v1/schemas/credentials.list.response.json +2 -0
- package/generated/v1/schemas/credentials.revoke.response.json +2 -0
- package/generated/v1/schemas/credentials.rotate.response.json +4 -0
- package/generated/v1/schemas/{endpoints.verify.request-headers.json → endpoints.acknowledgeSigningKeyRotation.request-headers.json} +2 -1
- package/generated/v1/schemas/{endpoints.verify.response.json → endpoints.acknowledgeSigningKeyRotation.response.json} +8 -21
- package/generated/v1/schemas/endpoints.create.request.json +5 -0
- package/generated/v1/schemas/endpoints.create.response.json +8 -21
- package/generated/v1/schemas/endpoints.disable.response.json +8 -21
- package/generated/v1/schemas/endpoints.enable.response-headers.json +11 -0
- package/generated/v1/schemas/endpoints.enable.response.json +87 -0
- package/generated/v1/schemas/endpoints.list.response.json +8 -21
- package/generated/v1/schemas/endpoints.read.response.json +8 -21
- package/generated/v1/schemas/endpoints.revealSigningSecret.response.json +43 -0
- package/generated/v1/schemas/endpoints.rotateSigningKey.response.json +8 -21
- package/generated/v1/schemas/endpoints.update.request.json +5 -0
- package/generated/v1/schemas/endpoints.update.response.json +8 -21
- package/generated/v1/schemas/executions.list.query.json +46 -0
- package/generated/v1/schemas/executions.list.response.json +116 -0
- package/generated/v1/schemas/exports.cancel.response.json +48 -0
- package/generated/v1/schemas/exports.create.request.json +6 -0
- package/generated/v1/schemas/exports.create.response.json +38 -0
- package/generated/v1/schemas/exports.part.query.json +11 -0
- package/generated/v1/schemas/exports.part.response.json +22 -0
- package/generated/v1/schemas/exports.read.response.json +38 -0
- package/generated/v1/schemas/grants.list.response.json +2 -0
- package/generated/v1/schemas/grants.revoke.response.json +2 -0
- package/generated/v1/schemas/occurrences.list.query.json +5 -0
- package/generated/v1/schemas/occurrences.list.response.json +23 -0
- package/generated/v1/schemas/occurrences.read.response.json +23 -0
- package/generated/v1/schemas/occurrences.redeliver.response.json +24 -1
- package/generated/v1/schemas/organizations.close.request.json +20 -0
- package/generated/v1/schemas/organizations.close.response.json +68 -0
- package/generated/v1/schemas/organizations.lifecycle.response.json +68 -0
- package/generated/v1/schemas/organizations.restore.request.json +13 -0
- package/generated/v1/schemas/organizations.restore.response.json +68 -0
- package/generated/v1/schemas/projects.archive.request-headers.json +11 -0
- package/generated/v1/schemas/projects.archive.request.json +10 -0
- package/generated/v1/schemas/projects.archive.response-headers.json +11 -0
- package/generated/v1/schemas/projects.archive.response.json +79 -0
- package/generated/v1/schemas/projects.create.response.json +55 -1
- package/generated/v1/schemas/projects.delete.request-headers.json +11 -0
- package/generated/v1/schemas/projects.delete.response.json +37 -0
- package/generated/v1/schemas/projects.list.response.json +61 -2
- package/generated/v1/schemas/projects.rename.request-headers.json +11 -0
- package/generated/v1/schemas/projects.rename.request.json +12 -0
- package/generated/v1/schemas/projects.rename.response-headers.json +11 -0
- package/generated/v1/schemas/projects.rename.response.json +79 -0
- package/generated/v1/schemas/schedules.archive.response.json +90 -2
- package/generated/v1/schemas/schedules.cancel.response.json +90 -2
- package/generated/v1/schemas/schedules.create.request.json +24 -3
- package/generated/v1/schemas/schedules.create.response.json +90 -2
- package/generated/v1/schemas/schedules.list.query.json +13 -0
- package/generated/v1/schemas/schedules.list.response.json +67 -2
- package/generated/v1/schemas/schedules.pause.response.json +90 -2
- package/generated/v1/schemas/schedules.read.response.json +90 -2
- package/generated/v1/schemas/schedules.replace.request.json +24 -3
- package/generated/v1/schemas/schedules.replace.response.json +90 -2
- package/generated/v1/schemas/schedules.resume.response.json +90 -2
- package/generated/v1/schemas/timing.summary.response.json +191 -0
- package/generated/v1/schemas/usage.read.query.json +7 -0
- package/generated/v1/schemas/usage.read.response.json +36 -1
- package/generated/v1/snippets/billing.autotopup.json +6 -0
- package/generated/v1/snippets/billing.autotopuppreview.json +6 -0
- package/generated/v1/snippets/billing.budgets.json +6 -0
- package/generated/v1/snippets/billing.ceiling.json +6 -0
- package/generated/v1/snippets/billing.change.json +6 -0
- package/generated/v1/snippets/billing.funding.json +6 -0
- package/generated/v1/snippets/billing.fundingquote.json +6 -0
- package/generated/v1/snippets/billing.ledger.json +6 -0
- package/generated/v1/snippets/billing.notices.json +6 -0
- package/generated/v1/snippets/billing.notificationsettings.json +6 -0
- package/generated/v1/snippets/billing.notificationsettingsupdate.json +6 -0
- package/generated/v1/snippets/billing.portal.json +6 -0
- package/generated/v1/snippets/billing.projects.json +6 -0
- package/generated/v1/snippets/billing.purchase.json +6 -0
- package/generated/v1/snippets/billing.quote.json +6 -0
- package/generated/v1/snippets/billing.reconcile.json +6 -0
- package/generated/v1/snippets/billing.refundrequest.json +6 -0
- package/generated/v1/snippets/billing.refundresolution.json +6 -0
- package/generated/v1/snippets/billing.summary.json +6 -0
- package/generated/v1/snippets/endpoints.acknowledgeSigningKeyRotation.json +6 -0
- package/generated/v1/snippets/{endpoints.verify.json → endpoints.enable.json} +3 -3
- package/generated/v1/snippets/endpoints.revealSigningSecret.json +6 -0
- package/generated/v1/snippets/executions.list.json +6 -0
- package/generated/v1/snippets/exports.cancel.json +6 -0
- package/generated/v1/snippets/exports.create.json +6 -0
- package/generated/v1/snippets/exports.part.json +6 -0
- package/generated/v1/snippets/exports.read.json +6 -0
- package/generated/v1/snippets/organizations.close.json +6 -0
- package/generated/v1/snippets/organizations.lifecycle.json +6 -0
- package/generated/v1/snippets/organizations.restore.json +6 -0
- package/generated/v1/snippets/projects.archive.json +6 -0
- package/generated/v1/snippets/projects.delete.json +6 -0
- package/generated/v1/snippets/projects.rename.json +6 -0
- package/generated/v1/snippets/schedules.create.json +3 -3
- package/generated/v1/snippets/schedules.replace.json +3 -3
- package/generated/v1/snippets/timing.summary.json +6 -0
- package/package.json +1 -6
- package/dist/callback-ownership.d.ts +0 -58
- package/dist/callback-ownership.js +0 -71
- package/generated/v1/callback-endpoint-verification.json +0 -59
- /package/generated/v1/schemas/{endpoints.verify.response-headers.json → endpoints.acknowledgeSigningKeyRotation.response-headers.json} +0 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { z } from "./zod.js";
|
|
2
|
+
export declare const organizationLifecycleSchema: import("zod").ZodObject<{
|
|
3
|
+
organizationId: import("zod").ZodString;
|
|
4
|
+
generation: import("zod").ZodNumber;
|
|
5
|
+
phase: import("zod").ZodEnum<{
|
|
6
|
+
active: "active";
|
|
7
|
+
closing: "closing";
|
|
8
|
+
closed: "closed";
|
|
9
|
+
restoring: "restoring";
|
|
10
|
+
purging: "purging";
|
|
11
|
+
erased: "erased";
|
|
12
|
+
}>;
|
|
13
|
+
requestedAt: import("zod").ZodNullable<import("zod").ZodString>;
|
|
14
|
+
reversibleUntil: import("zod").ZodNullable<import("zod").ZodString>;
|
|
15
|
+
purgeDeadline: import("zod").ZodNullable<import("zod").ZodString>;
|
|
16
|
+
immediate: import("zod").ZodBoolean;
|
|
17
|
+
converged: import("zod").ZodBoolean;
|
|
18
|
+
}, import("zod/v4/core").$strict>;
|
|
19
|
+
export declare const organizationClosureRequestSchema: import("zod").ZodObject<{
|
|
20
|
+
expectedGeneration: import("zod").ZodNumber;
|
|
21
|
+
immediate: import("zod").ZodBoolean;
|
|
22
|
+
confirmation: import("zod").ZodLiteral<"delete organization">;
|
|
23
|
+
}, import("zod/v4/core").$strict>;
|
|
24
|
+
export declare const organizationRestoreRequestSchema: import("zod").ZodObject<{
|
|
25
|
+
expectedGeneration: import("zod").ZodNumber;
|
|
26
|
+
}, import("zod/v4/core").$strict>;
|
|
27
|
+
export type OrganizationLifecycle = z.infer<typeof organizationLifecycleSchema>;
|
|
28
|
+
export declare const ORGANIZATION_LIFECYCLE_OPERATIONS: readonly [import("./operations.js").OperationDefinition & {
|
|
29
|
+
readonly id: "organizations.lifecycle";
|
|
30
|
+
}, import("./operations.js").OperationDefinition & {
|
|
31
|
+
readonly id: "organizations.close";
|
|
32
|
+
}, import("./operations.js").OperationDefinition & {
|
|
33
|
+
readonly id: "organizations.restore";
|
|
34
|
+
}];
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { organizationIdSchema } from "./identifiers.js";
|
|
2
|
+
import { API_UNUSED_RESPONSE_SCHEMA, defineOperations, } from "./operation-definitions.js";
|
|
3
|
+
import { timestampSchema } from "./time.js";
|
|
4
|
+
import { z } from "./zod.js";
|
|
5
|
+
export const organizationLifecycleSchema = z.strictObject({
|
|
6
|
+
organizationId: organizationIdSchema,
|
|
7
|
+
generation: z.number().int().nonnegative(),
|
|
8
|
+
phase: z.enum([
|
|
9
|
+
"active",
|
|
10
|
+
"closing",
|
|
11
|
+
"closed",
|
|
12
|
+
"restoring",
|
|
13
|
+
"purging",
|
|
14
|
+
"erased",
|
|
15
|
+
]),
|
|
16
|
+
requestedAt: timestampSchema.nullable(),
|
|
17
|
+
reversibleUntil: timestampSchema.nullable(),
|
|
18
|
+
purgeDeadline: timestampSchema.nullable(),
|
|
19
|
+
immediate: z.boolean(),
|
|
20
|
+
converged: z.boolean(),
|
|
21
|
+
});
|
|
22
|
+
export const organizationClosureRequestSchema = z.strictObject({
|
|
23
|
+
expectedGeneration: z.number().int().nonnegative(),
|
|
24
|
+
immediate: z.boolean(),
|
|
25
|
+
confirmation: z.literal("delete organization"),
|
|
26
|
+
});
|
|
27
|
+
export const organizationRestoreRequestSchema = z.strictObject({
|
|
28
|
+
expectedGeneration: z.number().int().positive(),
|
|
29
|
+
});
|
|
30
|
+
const example = {
|
|
31
|
+
organizationId: "org_01h8xyz9k2m4n6p8r0t2v4w6y8",
|
|
32
|
+
generation: 1,
|
|
33
|
+
phase: "closed",
|
|
34
|
+
requestedAt: "2026-09-12T12:00:00.000Z",
|
|
35
|
+
reversibleUntil: "2026-09-19T12:00:00.000Z",
|
|
36
|
+
purgeDeadline: "2026-10-12T12:00:00.000Z",
|
|
37
|
+
immediate: false,
|
|
38
|
+
converged: true,
|
|
39
|
+
};
|
|
40
|
+
const common = {
|
|
41
|
+
creates: false,
|
|
42
|
+
idempotent: true,
|
|
43
|
+
mcp: {
|
|
44
|
+
kind: "unavailable",
|
|
45
|
+
reason: "Organization closure and recovery require a signed-in administrator; delegated credentials cannot acquire organization-wide authority.",
|
|
46
|
+
},
|
|
47
|
+
principals: ["session"],
|
|
48
|
+
problems: [
|
|
49
|
+
"invalid_request",
|
|
50
|
+
"not_found",
|
|
51
|
+
"state_conflict",
|
|
52
|
+
"version_conflict",
|
|
53
|
+
],
|
|
54
|
+
response: globalThis.GREATWAIT_API_REQUEST_REGISTRY
|
|
55
|
+
? API_UNUSED_RESPONSE_SCHEMA
|
|
56
|
+
: organizationLifecycleSchema,
|
|
57
|
+
scopes: ["projects:administer"],
|
|
58
|
+
sessionAuthority: "organization",
|
|
59
|
+
surfaces: ["api", "mock"],
|
|
60
|
+
example: globalThis.GREATWAIT_RUNTIME_WITHOUT_EXAMPLES
|
|
61
|
+
? {}
|
|
62
|
+
: example,
|
|
63
|
+
};
|
|
64
|
+
export const ORGANIZATION_LIFECYCLE_OPERATIONS = defineOperations([
|
|
65
|
+
{
|
|
66
|
+
...common,
|
|
67
|
+
id: "organizations.lifecycle",
|
|
68
|
+
problems: ["not_found", "service_unavailable"],
|
|
69
|
+
method: "GET",
|
|
70
|
+
mutates: false,
|
|
71
|
+
path: "/v1/organization/lifecycle",
|
|
72
|
+
summary: globalThis.GREATWAIT_API_REQUEST_REGISTRY
|
|
73
|
+
? ""
|
|
74
|
+
: "Read organization closure progress",
|
|
75
|
+
description: globalThis.GREATWAIT_RUNTIME_CONTRACTS_ONLY
|
|
76
|
+
? ""
|
|
77
|
+
: "Reads the signed-in administrator's organization closure generation and progress, including the reversible window. It remains available during closure so the administrator can request recovery.",
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
...common,
|
|
81
|
+
id: "organizations.close",
|
|
82
|
+
method: "POST",
|
|
83
|
+
mutates: true,
|
|
84
|
+
path: "/v1/organization/close",
|
|
85
|
+
summary: globalThis.GREATWAIT_API_REQUEST_REGISTRY
|
|
86
|
+
? ""
|
|
87
|
+
: "Close the organization and request erasure",
|
|
88
|
+
description: globalThis.GREATWAIT_RUNTIME_CONTRACTS_ONLY
|
|
89
|
+
? ""
|
|
90
|
+
: "Stops customer access, execution and new purchases across the organization. Ordinary closure can be reversed for seven days; immediate erasure skips that window. Non-financial erasure completes within thirty days unless suspended by an operator legal hold. Financial records remain under the configured retention policy. An interrupted request resumes under the same generation; closure is acknowledged only after every configured scheduling shard is fenced.",
|
|
91
|
+
request: organizationClosureRequestSchema,
|
|
92
|
+
requestExample: globalThis
|
|
93
|
+
.GREATWAIT_RUNTIME_WITHOUT_EXAMPLES
|
|
94
|
+
? {}
|
|
95
|
+
: {
|
|
96
|
+
expectedGeneration: 0,
|
|
97
|
+
immediate: false,
|
|
98
|
+
confirmation: "delete organization",
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
...common,
|
|
103
|
+
id: "organizations.restore",
|
|
104
|
+
method: "POST",
|
|
105
|
+
mutates: true,
|
|
106
|
+
path: "/v1/organization/restore",
|
|
107
|
+
summary: globalThis.GREATWAIT_API_REQUEST_REGISTRY
|
|
108
|
+
? ""
|
|
109
|
+
: "Cancel organization erasure during its reversible window",
|
|
110
|
+
description: globalThis.GREATWAIT_RUNTIME_CONTRACTS_ONLY
|
|
111
|
+
? ""
|
|
112
|
+
: "Restores access after every configured scheduling shard acknowledges the new generation. Immediate erasure and expired reversible windows cannot be restored. Recovery preserves each schedule's pause and lateness policy and does not reauthorize automatic top-up.",
|
|
113
|
+
request: organizationRestoreRequestSchema,
|
|
114
|
+
requestExample: globalThis
|
|
115
|
+
.GREATWAIT_RUNTIME_WITHOUT_EXAMPLES
|
|
116
|
+
? {}
|
|
117
|
+
: { expectedGeneration: 1 },
|
|
118
|
+
example: globalThis.GREATWAIT_RUNTIME_WITHOUT_EXAMPLES
|
|
119
|
+
? {}
|
|
120
|
+
: { ...example, generation: 2, phase: "active" },
|
|
121
|
+
},
|
|
122
|
+
]);
|
package/dist/partition.d.ts
CHANGED
|
@@ -540,6 +540,12 @@ export interface ListOccurrencesQuery {
|
|
|
540
540
|
readonly after?: OccurrencePagePosition;
|
|
541
541
|
readonly authority: Authority;
|
|
542
542
|
readonly limit: number;
|
|
543
|
+
/**
|
|
544
|
+
* Which end to walk from; oldest when absent. A cursor belongs to the order
|
|
545
|
+
* it was issued under. Spelled out rather than imported so this module keeps
|
|
546
|
+
* carrying no runtime import of the contract barrel.
|
|
547
|
+
*/
|
|
548
|
+
readonly order?: "newest" | "oldest";
|
|
543
549
|
readonly scheduleId: string;
|
|
544
550
|
}
|
|
545
551
|
export type ListOccurrencesOutcome = PartitionRefused | {
|
|
@@ -621,6 +627,8 @@ export interface ScheduleWriteCommand {
|
|
|
621
627
|
}
|
|
622
628
|
/** Replace a schedule's definition, starting a new generation. */
|
|
623
629
|
export interface ReplaceScheduleCommand extends ScheduleWriteCommand {
|
|
630
|
+
/** A new name; absent keeps the stored one (W4-14). */
|
|
631
|
+
readonly name?: string;
|
|
624
632
|
/**
|
|
625
633
|
* The replacement's delivery settings.
|
|
626
634
|
*
|
|
@@ -740,6 +748,24 @@ export type ForecastOutcome = PartitionRefused | {
|
|
|
740
748
|
*/
|
|
741
749
|
readonly asOfMs?: number;
|
|
742
750
|
readonly buckets: readonly ForecastPartitionBucket[];
|
|
751
|
+
/**
|
|
752
|
+
* The instant this answer actually reached, when it is not the one asked
|
|
753
|
+
* for.
|
|
754
|
+
*
|
|
755
|
+
* **A plan horizon shortens a forecast rather than refusing it**, which
|
|
756
|
+
* is the right trade — a plan that buys six hours is telling a customer
|
|
757
|
+
* how far it can see, and answering "no forecast at all" because they
|
|
758
|
+
* asked for a day would be a worse reading of the same purchase. What
|
|
759
|
+
* was missing is the other half: the published window said twenty-four
|
|
760
|
+
* hours and the last eighteen of them were empty, so a caller sizing
|
|
761
|
+
* capacity read "nothing planned" where the truth was "not projected",
|
|
762
|
+
* and under-read by three quarters. The dashboard drew it as eighteen
|
|
763
|
+
* hours of zero bars.
|
|
764
|
+
*
|
|
765
|
+
* Absent when the answer covered the whole window, which is every source
|
|
766
|
+
* with no horizon over it.
|
|
767
|
+
*/
|
|
768
|
+
readonly coveredToMs?: number;
|
|
743
769
|
readonly truncated: boolean;
|
|
744
770
|
};
|
|
745
771
|
/**
|
package/dist/policy.d.ts
CHANGED
|
@@ -47,10 +47,10 @@ export declare function grantableScopes(): readonly Scope[];
|
|
|
47
47
|
* that will be refused `authentication_required` on the only route it names,
|
|
48
48
|
* for ever, and nothing about the key says so.
|
|
49
49
|
*
|
|
50
|
-
* `projects:read`
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
50
|
+
* `projects:read` remains excluded because enumerating an organization is a
|
|
51
|
+
* signed-in member's question. Project writes are different: a key's authority
|
|
52
|
+
* already names exactly the project that rename/archive/delete may affect, so
|
|
53
|
+
* those scopes become usable when their operations do.
|
|
54
54
|
*/
|
|
55
55
|
export declare function credentialScopes(): readonly Scope[];
|
|
56
56
|
/** One row of the generated policy matrix. */
|
package/dist/policy.js
CHANGED
|
@@ -50,9 +50,13 @@ function allOperations() {
|
|
|
50
50
|
* Clerk's and this product does not do it, so this is the whole of what `admin`
|
|
51
51
|
* means here.
|
|
52
52
|
*/
|
|
53
|
-
const MEMBER_SCOPES = SCOPES.filter((scope) => scope !== "
|
|
53
|
+
const MEMBER_SCOPES = SCOPES.filter((scope) => scope !== "billing:write" &&
|
|
54
|
+
scope !== "credentials:administer" &&
|
|
55
|
+
scope !== "projects:administer");
|
|
56
|
+
const BILLING_SCOPES = SCOPES.filter((scope) => scope !== "credentials:administer" && scope !== "projects:administer");
|
|
54
57
|
export const ROLE_SCOPE_CEILINGS = {
|
|
55
58
|
admin: SCOPES,
|
|
59
|
+
billing: BILLING_SCOPES,
|
|
56
60
|
member: MEMBER_SCOPES,
|
|
57
61
|
};
|
|
58
62
|
/** Everything a role may hold, expanded so a write implies its read. */
|
|
@@ -129,10 +133,10 @@ export function grantableScopes() {
|
|
|
129
133
|
* that will be refused `authentication_required` on the only route it names,
|
|
130
134
|
* for ever, and nothing about the key says so.
|
|
131
135
|
*
|
|
132
|
-
* `projects:read`
|
|
133
|
-
*
|
|
134
|
-
*
|
|
135
|
-
*
|
|
136
|
+
* `projects:read` remains excluded because enumerating an organization is a
|
|
137
|
+
* signed-in member's question. Project writes are different: a key's authority
|
|
138
|
+
* already names exactly the project that rename/archive/delete may affect, so
|
|
139
|
+
* those scopes become usable when their operations do.
|
|
136
140
|
*/
|
|
137
141
|
export function credentialScopes() {
|
|
138
142
|
const usable = new Set(allOperations()
|
package/dist/problems.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
1
|
+
import { z } from "./zod.js";
|
|
2
2
|
/**
|
|
3
3
|
* Refusals.
|
|
4
4
|
*
|
|
@@ -13,7 +13,7 @@ import { z } from "zod";
|
|
|
13
13
|
* being a breaking change; clients must never branch on them.
|
|
14
14
|
*/
|
|
15
15
|
export declare const PROBLEM_CATEGORIES: readonly ["authentication", "authorization", "conflict", "invalid-request", "not-found", "rate-limited", "unavailable"];
|
|
16
|
-
export declare const problemCategorySchema:
|
|
16
|
+
export declare const problemCategorySchema: import("zod").ZodEnum<{
|
|
17
17
|
authentication: "authentication";
|
|
18
18
|
authorization: "authorization";
|
|
19
19
|
conflict: "conflict";
|
|
@@ -40,10 +40,6 @@ export declare const PROBLEM_CODES: {
|
|
|
40
40
|
readonly category: "authentication";
|
|
41
41
|
readonly status: 401;
|
|
42
42
|
};
|
|
43
|
-
readonly endpoint_unverified: {
|
|
44
|
-
readonly category: "invalid-request";
|
|
45
|
-
readonly status: 422;
|
|
46
|
-
};
|
|
47
43
|
readonly idempotency_key_reused: {
|
|
48
44
|
readonly category: "conflict";
|
|
49
45
|
readonly status: 409;
|
|
@@ -64,10 +60,18 @@ export declare const PROBLEM_CODES: {
|
|
|
64
60
|
readonly category: "conflict";
|
|
65
61
|
readonly status: 409;
|
|
66
62
|
};
|
|
63
|
+
readonly project_archived: {
|
|
64
|
+
readonly category: "conflict";
|
|
65
|
+
readonly status: 409;
|
|
66
|
+
};
|
|
67
67
|
readonly rate_limited: {
|
|
68
68
|
readonly category: "rate-limited";
|
|
69
69
|
readonly status: 429;
|
|
70
70
|
};
|
|
71
|
+
readonly revision_conflict: {
|
|
72
|
+
readonly category: "conflict";
|
|
73
|
+
readonly status: 409;
|
|
74
|
+
};
|
|
71
75
|
readonly scope_missing: {
|
|
72
76
|
readonly category: "authorization";
|
|
73
77
|
readonly status: 403;
|
|
@@ -90,17 +94,18 @@ export declare const PROBLEM_CODES: {
|
|
|
90
94
|
};
|
|
91
95
|
};
|
|
92
96
|
export type ProblemCode = keyof typeof PROBLEM_CODES;
|
|
93
|
-
export declare const problemCodeSchema:
|
|
97
|
+
export declare const problemCodeSchema: import("zod").ZodEnum<{
|
|
94
98
|
authentication_required: "authentication_required";
|
|
95
99
|
credential_expired: "credential_expired";
|
|
96
100
|
credential_revoked: "credential_revoked";
|
|
97
|
-
endpoint_unverified: "endpoint_unverified";
|
|
98
101
|
idempotency_key_reused: "idempotency_key_reused";
|
|
99
102
|
invalid_request: "invalid_request";
|
|
100
103
|
not_found: "not_found";
|
|
101
104
|
payload_too_large: "payload_too_large";
|
|
102
105
|
plan_limit_reached: "plan_limit_reached";
|
|
106
|
+
project_archived: "project_archived";
|
|
103
107
|
rate_limited: "rate_limited";
|
|
108
|
+
revision_conflict: "revision_conflict";
|
|
104
109
|
scope_missing: "scope_missing";
|
|
105
110
|
service_unavailable: "service_unavailable";
|
|
106
111
|
state_conflict: "state_conflict";
|
|
@@ -109,40 +114,41 @@ export declare const problemCodeSchema: z.ZodEnum<{
|
|
|
109
114
|
}>;
|
|
110
115
|
/** Whether repeating the identical request could succeed later. */
|
|
111
116
|
export declare function isRetryable(code: ProblemCode): boolean;
|
|
112
|
-
export declare const fieldErrorSchema:
|
|
113
|
-
pointer:
|
|
114
|
-
reason:
|
|
115
|
-
},
|
|
117
|
+
export declare const fieldErrorSchema: import("zod").ZodObject<{
|
|
118
|
+
pointer: import("zod").ZodString;
|
|
119
|
+
reason: import("zod").ZodString;
|
|
120
|
+
}, import("zod/v4/core").$strip>;
|
|
116
121
|
export type FieldError = z.infer<typeof fieldErrorSchema>;
|
|
117
|
-
export declare const problemSchema:
|
|
118
|
-
code:
|
|
122
|
+
export declare const problemSchema: import("zod").ZodObject<{
|
|
123
|
+
code: import("zod").ZodEnum<{
|
|
119
124
|
authentication_required: "authentication_required";
|
|
120
125
|
credential_expired: "credential_expired";
|
|
121
126
|
credential_revoked: "credential_revoked";
|
|
122
|
-
endpoint_unverified: "endpoint_unverified";
|
|
123
127
|
idempotency_key_reused: "idempotency_key_reused";
|
|
124
128
|
invalid_request: "invalid_request";
|
|
125
129
|
not_found: "not_found";
|
|
126
130
|
payload_too_large: "payload_too_large";
|
|
127
131
|
plan_limit_reached: "plan_limit_reached";
|
|
132
|
+
project_archived: "project_archived";
|
|
128
133
|
rate_limited: "rate_limited";
|
|
134
|
+
revision_conflict: "revision_conflict";
|
|
129
135
|
scope_missing: "scope_missing";
|
|
130
136
|
service_unavailable: "service_unavailable";
|
|
131
137
|
state_conflict: "state_conflict";
|
|
132
138
|
test_to_live_escalation: "test_to_live_escalation";
|
|
133
139
|
version_conflict: "version_conflict";
|
|
134
140
|
}>;
|
|
135
|
-
detail:
|
|
136
|
-
errors:
|
|
137
|
-
pointer:
|
|
138
|
-
reason:
|
|
139
|
-
},
|
|
140
|
-
retryAfterSeconds:
|
|
141
|
-
status:
|
|
142
|
-
title:
|
|
143
|
-
traceId:
|
|
144
|
-
type:
|
|
145
|
-
},
|
|
141
|
+
detail: import("zod").ZodOptional<import("zod").ZodString>;
|
|
142
|
+
errors: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
|
|
143
|
+
pointer: import("zod").ZodString;
|
|
144
|
+
reason: import("zod").ZodString;
|
|
145
|
+
}, import("zod/v4/core").$strip>>>;
|
|
146
|
+
retryAfterSeconds: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
147
|
+
status: import("zod").ZodNumber;
|
|
148
|
+
title: import("zod").ZodString;
|
|
149
|
+
traceId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
150
|
+
type: import("zod").ZodLiteral<"about:blank">;
|
|
151
|
+
}, import("zod/v4/core").$strip>;
|
|
146
152
|
export type Problem = z.infer<typeof problemSchema>;
|
|
147
153
|
export interface ProblemOptions {
|
|
148
154
|
readonly detail?: string;
|
package/dist/problems.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
1
|
+
import { z } from "./zod.js";
|
|
2
2
|
/**
|
|
3
3
|
* Refusals.
|
|
4
4
|
*
|
|
@@ -36,13 +36,17 @@ export const PROBLEM_CODES = {
|
|
|
36
36
|
// versus find out who revoked it.
|
|
37
37
|
credential_expired: { category: "authentication", status: 401 },
|
|
38
38
|
credential_revoked: { category: "authentication", status: 401 },
|
|
39
|
-
endpoint_unverified: { category: "invalid-request", status: 422 },
|
|
40
39
|
idempotency_key_reused: { category: "conflict", status: 409 },
|
|
41
40
|
invalid_request: { category: "invalid-request", status: 400 },
|
|
42
41
|
not_found: { category: "not-found", status: 404 },
|
|
43
42
|
payload_too_large: { category: "invalid-request", status: 413 },
|
|
44
43
|
plan_limit_reached: { category: "conflict", status: 409 },
|
|
44
|
+
// The target belongs to the caller, but its whole project is parked. This is
|
|
45
|
+
// deliberately distinct from `not_found`: foreign projects still receive
|
|
46
|
+
// that opaque answer, while an owner needs the move that restores their own.
|
|
47
|
+
project_archived: { category: "conflict", status: 409 },
|
|
45
48
|
rate_limited: { category: "rate-limited", status: 429 },
|
|
49
|
+
revision_conflict: { category: "conflict", status: 409 },
|
|
46
50
|
scope_missing: { category: "authorization", status: 403 },
|
|
47
51
|
service_unavailable: { category: "unavailable", status: 503 },
|
|
48
52
|
// The resource is in a state that does not permit what was asked — resuming a
|