@sylphx/contract 0.2.0
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/CHANGELOG.md +44 -0
- package/LICENSE +21 -0
- package/README.md +164 -0
- package/dist/endpoint.d.ts +65 -0
- package/dist/endpoint.d.ts.map +1 -0
- package/dist/endpoint.js +22 -0
- package/dist/endpoints/admin-ai-playground.d.ts +93 -0
- package/dist/endpoints/admin-ai-playground.d.ts.map +1 -0
- package/dist/endpoints/admin-ai-playground.js +37 -0
- package/dist/endpoints/admin-anomalies.d.ts +108 -0
- package/dist/endpoints/admin-anomalies.d.ts.map +1 -0
- package/dist/endpoints/admin-anomalies.js +72 -0
- package/dist/endpoints/admin-apm.d.ts +102 -0
- package/dist/endpoints/admin-apm.d.ts.map +1 -0
- package/dist/endpoints/admin-apm.js +70 -0
- package/dist/endpoints/admin-audit.d.ts +714 -0
- package/dist/endpoints/admin-audit.d.ts.map +1 -0
- package/dist/endpoints/admin-audit.js +494 -0
- package/dist/endpoints/admin-billing.d.ts +82 -0
- package/dist/endpoints/admin-billing.d.ts.map +1 -0
- package/dist/endpoints/admin-billing.js +190 -0
- package/dist/endpoints/admin-bootstrap.d.ts +16 -0
- package/dist/endpoints/admin-bootstrap.d.ts.map +1 -0
- package/dist/endpoints/admin-bootstrap.js +28 -0
- package/dist/endpoints/admin-broadcasts.d.ts +105 -0
- package/dist/endpoints/admin-broadcasts.d.ts.map +1 -0
- package/dist/endpoints/admin-broadcasts.js +60 -0
- package/dist/endpoints/admin-builds.d.ts +33 -0
- package/dist/endpoints/admin-builds.d.ts.map +1 -0
- package/dist/endpoints/admin-builds.js +36 -0
- package/dist/endpoints/admin-config.d.ts +180 -0
- package/dist/endpoints/admin-config.d.ts.map +1 -0
- package/dist/endpoints/admin-config.js +108 -0
- package/dist/endpoints/admin-consent.d.ts +123 -0
- package/dist/endpoints/admin-consent.d.ts.map +1 -0
- package/dist/endpoints/admin-consent.js +126 -0
- package/dist/endpoints/admin-env-services.d.ts +28 -0
- package/dist/endpoints/admin-env-services.d.ts.map +1 -0
- package/dist/endpoints/admin-env-services.js +35 -0
- package/dist/endpoints/admin-impersonation.d.ts +105 -0
- package/dist/endpoints/admin-impersonation.d.ts.map +1 -0
- package/dist/endpoints/admin-impersonation.js +88 -0
- package/dist/endpoints/admin-invitations.d.ts +73 -0
- package/dist/endpoints/admin-invitations.d.ts.map +1 -0
- package/dist/endpoints/admin-invitations.js +55 -0
- package/dist/endpoints/admin-jwt-keys.d.ts +75 -0
- package/dist/endpoints/admin-jwt-keys.d.ts.map +1 -0
- package/dist/endpoints/admin-jwt-keys.js +63 -0
- package/dist/endpoints/admin-logs.d.ts +109 -0
- package/dist/endpoints/admin-logs.d.ts.map +1 -0
- package/dist/endpoints/admin-logs.js +78 -0
- package/dist/endpoints/admin-plans.d.ts +63 -0
- package/dist/endpoints/admin-plans.d.ts.map +1 -0
- package/dist/endpoints/admin-plans.js +47 -0
- package/dist/endpoints/admin-project-users.d.ts +148 -0
- package/dist/endpoints/admin-project-users.d.ts.map +1 -0
- package/dist/endpoints/admin-project-users.js +89 -0
- package/dist/endpoints/admin-projects.d.ts +124 -0
- package/dist/endpoints/admin-projects.d.ts.map +1 -0
- package/dist/endpoints/admin-projects.js +74 -0
- package/dist/endpoints/admin-quotas.d.ts +98 -0
- package/dist/endpoints/admin-quotas.d.ts.map +1 -0
- package/dist/endpoints/admin-quotas.js +67 -0
- package/dist/endpoints/admin-rate-limits.d.ts +50 -0
- package/dist/endpoints/admin-rate-limits.d.ts.map +1 -0
- package/dist/endpoints/admin-rate-limits.js +53 -0
- package/dist/endpoints/admin-reconcile.d.ts +28 -0
- package/dist/endpoints/admin-reconcile.d.ts.map +1 -0
- package/dist/endpoints/admin-reconcile.js +33 -0
- package/dist/endpoints/admin-resources.d.ts +51 -0
- package/dist/endpoints/admin-resources.d.ts.map +1 -0
- package/dist/endpoints/admin-resources.js +53 -0
- package/dist/endpoints/admin-secrets.d.ts +41 -0
- package/dist/endpoints/admin-secrets.d.ts.map +1 -0
- package/dist/endpoints/admin-secrets.js +33 -0
- package/dist/endpoints/admin-services.d.ts +29 -0
- package/dist/endpoints/admin-services.d.ts.map +1 -0
- package/dist/endpoints/admin-services.js +35 -0
- package/dist/endpoints/admin-tasks.d.ts +186 -0
- package/dist/endpoints/admin-tasks.d.ts.map +1 -0
- package/dist/endpoints/admin-tasks.js +67 -0
- package/dist/endpoints/admin-tenants.d.ts +26 -0
- package/dist/endpoints/admin-tenants.d.ts.map +1 -0
- package/dist/endpoints/admin-tenants.js +30 -0
- package/dist/endpoints/admin-traces.d.ts +124 -0
- package/dist/endpoints/admin-traces.d.ts.map +1 -0
- package/dist/endpoints/admin-traces.js +59 -0
- package/dist/endpoints/admin-users.d.ts +106 -0
- package/dist/endpoints/admin-users.d.ts.map +1 -0
- package/dist/endpoints/admin-users.js +83 -0
- package/dist/endpoints/admin-webhook-signature-versions.d.ts +59 -0
- package/dist/endpoints/admin-webhook-signature-versions.d.ts.map +1 -0
- package/dist/endpoints/admin-webhook-signature-versions.js +57 -0
- package/dist/endpoints/ai-admin.d.ts +30 -0
- package/dist/endpoints/ai-admin.d.ts.map +1 -0
- package/dist/endpoints/ai-admin.js +59 -0
- package/dist/endpoints/analytics-admin.d.ts +279 -0
- package/dist/endpoints/analytics-admin.d.ts.map +1 -0
- package/dist/endpoints/analytics-admin.js +308 -0
- package/dist/endpoints/analytics.d.ts +58 -0
- package/dist/endpoints/analytics.d.ts.map +1 -0
- package/dist/endpoints/analytics.js +43 -0
- package/dist/endpoints/audit-chain.d.ts +49 -0
- package/dist/endpoints/audit-chain.d.ts.map +1 -0
- package/dist/endpoints/audit-chain.js +29 -0
- package/dist/endpoints/audit.d.ts +50 -0
- package/dist/endpoints/audit.d.ts.map +1 -0
- package/dist/endpoints/audit.js +30 -0
- package/dist/endpoints/auth-admin.d.ts +65 -0
- package/dist/endpoints/auth-admin.d.ts.map +1 -0
- package/dist/endpoints/auth-admin.js +55 -0
- package/dist/endpoints/auth.d.ts +157 -0
- package/dist/endpoints/auth.d.ts.map +1 -0
- package/dist/endpoints/auth.js +214 -0
- package/dist/endpoints/backups.d.ts +51 -0
- package/dist/endpoints/backups.d.ts.map +1 -0
- package/dist/endpoints/backups.js +47 -0
- package/dist/endpoints/billing-console.d.ts +294 -0
- package/dist/endpoints/billing-console.d.ts.map +1 -0
- package/dist/endpoints/billing-console.js +167 -0
- package/dist/endpoints/billing-settings.d.ts +107 -0
- package/dist/endpoints/billing-settings.d.ts.map +1 -0
- package/dist/endpoints/billing-settings.js +117 -0
- package/dist/endpoints/branch-databases.d.ts +75 -0
- package/dist/endpoints/branch-databases.d.ts.map +1 -0
- package/dist/endpoints/branch-databases.js +61 -0
- package/dist/endpoints/challenge.d.ts +62 -0
- package/dist/endpoints/challenge.d.ts.map +1 -0
- package/dist/endpoints/challenge.js +52 -0
- package/dist/endpoints/ci-settings.d.ts +89 -0
- package/dist/endpoints/ci-settings.d.ts.map +1 -0
- package/dist/endpoints/ci-settings.js +78 -0
- package/dist/endpoints/consent-admin.d.ts +134 -0
- package/dist/endpoints/consent-admin.d.ts.map +1 -0
- package/dist/endpoints/consent-admin.js +83 -0
- package/dist/endpoints/databases.d.ts +251 -0
- package/dist/endpoints/databases.d.ts.map +1 -0
- package/dist/endpoints/databases.js +150 -0
- package/dist/endpoints/deployments.d.ts +280 -0
- package/dist/endpoints/deployments.d.ts.map +1 -0
- package/dist/endpoints/deployments.js +205 -0
- package/dist/endpoints/domains.d.ts +356 -0
- package/dist/endpoints/domains.d.ts.map +1 -0
- package/dist/endpoints/domains.js +149 -0
- package/dist/endpoints/edge-deployments.d.ts +92 -0
- package/dist/endpoints/edge-deployments.d.ts.map +1 -0
- package/dist/endpoints/edge-deployments.js +58 -0
- package/dist/endpoints/email-admin.d.ts +415 -0
- package/dist/endpoints/email-admin.d.ts.map +1 -0
- package/dist/endpoints/email-admin.js +253 -0
- package/dist/endpoints/email.d.ts +37 -0
- package/dist/endpoints/email.d.ts.map +1 -0
- package/dist/endpoints/email.js +42 -0
- package/dist/endpoints/engagement-admin.d.ts +98 -0
- package/dist/endpoints/engagement-admin.d.ts.map +1 -0
- package/dist/endpoints/engagement-admin.js +64 -0
- package/dist/endpoints/env-vars.d.ts +66 -0
- package/dist/endpoints/env-vars.d.ts.map +1 -0
- package/dist/endpoints/env-vars.js +47 -0
- package/dist/endpoints/environments.d.ts +456 -0
- package/dist/endpoints/environments.d.ts.map +1 -0
- package/dist/endpoints/environments.js +237 -0
- package/dist/endpoints/experiments.d.ts +500 -0
- package/dist/endpoints/experiments.d.ts.map +1 -0
- package/dist/endpoints/experiments.js +93 -0
- package/dist/endpoints/flags-admin.d.ts +74 -0
- package/dist/endpoints/flags-admin.d.ts.map +1 -0
- package/dist/endpoints/flags-admin.js +84 -0
- package/dist/endpoints/flags.d.ts +23 -0
- package/dist/endpoints/flags.d.ts.map +1 -0
- package/dist/endpoints/flags.js +17 -0
- package/dist/endpoints/github.d.ts +30 -0
- package/dist/endpoints/github.d.ts.map +1 -0
- package/dist/endpoints/github.js +37 -0
- package/dist/endpoints/image-opt.d.ts +43 -0
- package/dist/endpoints/image-opt.d.ts.map +1 -0
- package/dist/endpoints/image-opt.js +44 -0
- package/dist/endpoints/kv-admin.d.ts +58 -0
- package/dist/endpoints/kv-admin.d.ts.map +1 -0
- package/dist/endpoints/kv-admin.js +69 -0
- package/dist/endpoints/kv.d.ts +63 -0
- package/dist/endpoints/kv.d.ts.map +1 -0
- package/dist/endpoints/kv.js +82 -0
- package/dist/endpoints/monitoring-admin.d.ts +204 -0
- package/dist/endpoints/monitoring-admin.d.ts.map +1 -0
- package/dist/endpoints/monitoring-admin.js +119 -0
- package/dist/endpoints/monitoring.d.ts +63 -0
- package/dist/endpoints/monitoring.d.ts.map +1 -0
- package/dist/endpoints/monitoring.js +27 -0
- package/dist/endpoints/newsletter.d.ts +366 -0
- package/dist/endpoints/newsletter.d.ts.map +1 -0
- package/dist/endpoints/newsletter.js +232 -0
- package/dist/endpoints/notifications-admin.d.ts +268 -0
- package/dist/endpoints/notifications-admin.d.ts.map +1 -0
- package/dist/endpoints/notifications-admin.js +172 -0
- package/dist/endpoints/notifications.d.ts +225 -0
- package/dist/endpoints/notifications.d.ts.map +1 -0
- package/dist/endpoints/notifications.js +150 -0
- package/dist/endpoints/oidc.d.ts +67 -0
- package/dist/endpoints/oidc.d.ts.map +1 -0
- package/dist/endpoints/oidc.js +49 -0
- package/dist/endpoints/organizations.d.ts +702 -0
- package/dist/endpoints/organizations.d.ts.map +1 -0
- package/dist/endpoints/organizations.js +460 -0
- package/dist/endpoints/plans.d.ts +136 -0
- package/dist/endpoints/plans.d.ts.map +1 -0
- package/dist/endpoints/plans.js +83 -0
- package/dist/endpoints/privacy.d.ts +131 -0
- package/dist/endpoints/privacy.d.ts.map +1 -0
- package/dist/endpoints/privacy.js +98 -0
- package/dist/endpoints/project-manifest.d.ts +1044 -0
- package/dist/endpoints/project-manifest.d.ts.map +1 -0
- package/dist/endpoints/project-manifest.js +59 -0
- package/dist/endpoints/projects.d.ts +187 -0
- package/dist/endpoints/projects.d.ts.map +1 -0
- package/dist/endpoints/projects.js +58 -0
- package/dist/endpoints/rate-limits.d.ts +83 -0
- package/dist/endpoints/rate-limits.d.ts.map +1 -0
- package/dist/endpoints/rate-limits.js +54 -0
- package/dist/endpoints/realtime-admin.d.ts +42 -0
- package/dist/endpoints/realtime-admin.d.ts.map +1 -0
- package/dist/endpoints/realtime-admin.js +50 -0
- package/dist/endpoints/realtime.d.ts +35 -0
- package/dist/endpoints/realtime.d.ts.map +1 -0
- package/dist/endpoints/realtime.js +39 -0
- package/dist/endpoints/referrals-admin.d.ts +118 -0
- package/dist/endpoints/referrals-admin.d.ts.map +1 -0
- package/dist/endpoints/referrals-admin.js +59 -0
- package/dist/endpoints/refresh.d.ts +19 -0
- package/dist/endpoints/refresh.d.ts.map +1 -0
- package/dist/endpoints/refresh.js +25 -0
- package/dist/endpoints/regions.d.ts +41 -0
- package/dist/endpoints/regions.d.ts.map +1 -0
- package/dist/endpoints/regions.js +43 -0
- package/dist/endpoints/runners.d.ts +55 -0
- package/dist/endpoints/runners.d.ts.map +1 -0
- package/dist/endpoints/runners.js +45 -0
- package/dist/endpoints/saml.d.ts +147 -0
- package/dist/endpoints/saml.d.ts.map +1 -0
- package/dist/endpoints/saml.js +106 -0
- package/dist/endpoints/search.d.ts +62 -0
- package/dist/endpoints/search.d.ts.map +1 -0
- package/dist/endpoints/search.js +40 -0
- package/dist/endpoints/secrets.d.ts +95 -0
- package/dist/endpoints/secrets.d.ts.map +1 -0
- package/dist/endpoints/secrets.js +81 -0
- package/dist/endpoints/security.d.ts +231 -0
- package/dist/endpoints/security.d.ts.map +1 -0
- package/dist/endpoints/security.js +291 -0
- package/dist/endpoints/service-tokens.d.ts +392 -0
- package/dist/endpoints/service-tokens.d.ts.map +1 -0
- package/dist/endpoints/service-tokens.js +125 -0
- package/dist/endpoints/session-replay.d.ts +142 -0
- package/dist/endpoints/session-replay.d.ts.map +1 -0
- package/dist/endpoints/session-replay.js +53 -0
- package/dist/endpoints/storage-admin.d.ts +96 -0
- package/dist/endpoints/storage-admin.d.ts.map +1 -0
- package/dist/endpoints/storage-admin.js +113 -0
- package/dist/endpoints/storage.d.ts +167 -0
- package/dist/endpoints/storage.d.ts.map +1 -0
- package/dist/endpoints/storage.js +117 -0
- package/dist/endpoints/tasks.d.ts +141 -0
- package/dist/endpoints/tasks.d.ts.map +1 -0
- package/dist/endpoints/tasks.js +97 -0
- package/dist/endpoints/users.d.ts +103 -0
- package/dist/endpoints/users.d.ts.map +1 -0
- package/dist/endpoints/users.js +98 -0
- package/dist/endpoints/webhooks.d.ts +201 -0
- package/dist/endpoints/webhooks.d.ts.map +1 -0
- package/dist/endpoints/webhooks.js +120 -0
- package/dist/errors.d.ts +153 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +73 -0
- package/dist/index.d.ts +12303 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +390 -0
- package/dist/schemas/_primitives.d.ts +37 -0
- package/dist/schemas/_primitives.d.ts.map +1 -0
- package/dist/schemas/_primitives.js +38 -0
- package/dist/schemas/admin-ai-playground.d.ts +128 -0
- package/dist/schemas/admin-ai-playground.d.ts.map +1 -0
- package/dist/schemas/admin-ai-playground.js +84 -0
- package/dist/schemas/admin-anomalies.d.ts +131 -0
- package/dist/schemas/admin-anomalies.d.ts.map +1 -0
- package/dist/schemas/admin-anomalies.js +106 -0
- package/dist/schemas/admin-apm.d.ts +151 -0
- package/dist/schemas/admin-apm.d.ts.map +1 -0
- package/dist/schemas/admin-apm.js +96 -0
- package/dist/schemas/admin-audit.d.ts +625 -0
- package/dist/schemas/admin-audit.d.ts.map +1 -0
- package/dist/schemas/admin-audit.js +508 -0
- package/dist/schemas/admin-billing.d.ts +73 -0
- package/dist/schemas/admin-billing.d.ts.map +1 -0
- package/dist/schemas/admin-billing.js +60 -0
- package/dist/schemas/admin-bootstrap.d.ts +32 -0
- package/dist/schemas/admin-bootstrap.d.ts.map +1 -0
- package/dist/schemas/admin-bootstrap.js +37 -0
- package/dist/schemas/admin-broadcasts.d.ts +181 -0
- package/dist/schemas/admin-broadcasts.d.ts.map +1 -0
- package/dist/schemas/admin-broadcasts.js +93 -0
- package/dist/schemas/admin-builds.d.ts +108 -0
- package/dist/schemas/admin-builds.d.ts.map +1 -0
- package/dist/schemas/admin-builds.js +127 -0
- package/dist/schemas/admin-config.d.ts +248 -0
- package/dist/schemas/admin-config.d.ts.map +1 -0
- package/dist/schemas/admin-config.js +145 -0
- package/dist/schemas/admin-consent.d.ts +129 -0
- package/dist/schemas/admin-consent.d.ts.map +1 -0
- package/dist/schemas/admin-consent.js +76 -0
- package/dist/schemas/admin-env-services.d.ts +63 -0
- package/dist/schemas/admin-env-services.d.ts.map +1 -0
- package/dist/schemas/admin-env-services.js +81 -0
- package/dist/schemas/admin-impersonation.d.ts +150 -0
- package/dist/schemas/admin-impersonation.d.ts.map +1 -0
- package/dist/schemas/admin-impersonation.js +114 -0
- package/dist/schemas/admin-invitations.d.ts +119 -0
- package/dist/schemas/admin-invitations.d.ts.map +1 -0
- package/dist/schemas/admin-invitations.js +80 -0
- package/dist/schemas/admin-jwt-keys.d.ts +130 -0
- package/dist/schemas/admin-jwt-keys.d.ts.map +1 -0
- package/dist/schemas/admin-jwt-keys.js +83 -0
- package/dist/schemas/admin-logs.d.ts +170 -0
- package/dist/schemas/admin-logs.d.ts.map +1 -0
- package/dist/schemas/admin-logs.js +108 -0
- package/dist/schemas/admin-plans.d.ts +92 -0
- package/dist/schemas/admin-plans.d.ts.map +1 -0
- package/dist/schemas/admin-plans.js +62 -0
- package/dist/schemas/admin-project-users.d.ts +183 -0
- package/dist/schemas/admin-project-users.d.ts.map +1 -0
- package/dist/schemas/admin-project-users.js +108 -0
- package/dist/schemas/admin-projects.d.ts +237 -0
- package/dist/schemas/admin-projects.d.ts.map +1 -0
- package/dist/schemas/admin-projects.js +129 -0
- package/dist/schemas/admin-quotas.d.ts +161 -0
- package/dist/schemas/admin-quotas.d.ts.map +1 -0
- package/dist/schemas/admin-quotas.js +107 -0
- package/dist/schemas/admin-rate-limits.d.ts +90 -0
- package/dist/schemas/admin-rate-limits.d.ts.map +1 -0
- package/dist/schemas/admin-rate-limits.js +72 -0
- package/dist/schemas/admin-reconcile.d.ts +89 -0
- package/dist/schemas/admin-reconcile.d.ts.map +1 -0
- package/dist/schemas/admin-reconcile.js +86 -0
- package/dist/schemas/admin-resources.d.ts +129 -0
- package/dist/schemas/admin-resources.d.ts.map +1 -0
- package/dist/schemas/admin-resources.js +143 -0
- package/dist/schemas/admin-secrets.d.ts +113 -0
- package/dist/schemas/admin-secrets.d.ts.map +1 -0
- package/dist/schemas/admin-secrets.js +94 -0
- package/dist/schemas/admin-services.d.ts +71 -0
- package/dist/schemas/admin-services.d.ts.map +1 -0
- package/dist/schemas/admin-services.js +61 -0
- package/dist/schemas/admin-tasks.d.ts +239 -0
- package/dist/schemas/admin-tasks.d.ts.map +1 -0
- package/dist/schemas/admin-tasks.js +103 -0
- package/dist/schemas/admin-tenants.d.ts +45 -0
- package/dist/schemas/admin-tenants.d.ts.map +1 -0
- package/dist/schemas/admin-tenants.js +54 -0
- package/dist/schemas/admin-traces.d.ts +203 -0
- package/dist/schemas/admin-traces.d.ts.map +1 -0
- package/dist/schemas/admin-traces.js +128 -0
- package/dist/schemas/admin-users.d.ts +158 -0
- package/dist/schemas/admin-users.d.ts.map +1 -0
- package/dist/schemas/admin-users.js +110 -0
- package/dist/schemas/admin-webhook-signature-versions.d.ts +103 -0
- package/dist/schemas/admin-webhook-signature-versions.d.ts.map +1 -0
- package/dist/schemas/admin-webhook-signature-versions.js +73 -0
- package/dist/schemas/ai-admin.d.ts +39 -0
- package/dist/schemas/ai-admin.d.ts.map +1 -0
- package/dist/schemas/ai-admin.js +29 -0
- package/dist/schemas/ai.d.ts +120 -0
- package/dist/schemas/ai.d.ts.map +1 -0
- package/dist/schemas/ai.js +84 -0
- package/dist/schemas/analytics-admin.d.ts +104 -0
- package/dist/schemas/analytics-admin.d.ts.map +1 -0
- package/dist/schemas/analytics-admin.js +61 -0
- package/dist/schemas/analytics.d.ts +118 -0
- package/dist/schemas/analytics.d.ts.map +1 -0
- package/dist/schemas/analytics.js +80 -0
- package/dist/schemas/audit-chain.d.ts +81 -0
- package/dist/schemas/audit-chain.d.ts.map +1 -0
- package/dist/schemas/audit-chain.js +62 -0
- package/dist/schemas/auth-admin.d.ts +55 -0
- package/dist/schemas/auth-admin.d.ts.map +1 -0
- package/dist/schemas/auth-admin.js +48 -0
- package/dist/schemas/auth.d.ts +865 -0
- package/dist/schemas/auth.d.ts.map +1 -0
- package/dist/schemas/auth.js +815 -0
- package/dist/schemas/backups.d.ts +70 -0
- package/dist/schemas/backups.d.ts.map +1 -0
- package/dist/schemas/backups.js +38 -0
- package/dist/schemas/billing-console.d.ts +414 -0
- package/dist/schemas/billing-console.d.ts.map +1 -0
- package/dist/schemas/billing-console.js +298 -0
- package/dist/schemas/billing-settings.d.ts +156 -0
- package/dist/schemas/billing-settings.d.ts.map +1 -0
- package/dist/schemas/billing-settings.js +119 -0
- package/dist/schemas/billing.d.ts +211 -0
- package/dist/schemas/billing.d.ts.map +1 -0
- package/dist/schemas/billing.js +147 -0
- package/dist/schemas/branch-database.d.ts +98 -0
- package/dist/schemas/branch-database.d.ts.map +1 -0
- package/dist/schemas/branch-database.js +68 -0
- package/dist/schemas/challenge.d.ts +104 -0
- package/dist/schemas/challenge.d.ts.map +1 -0
- package/dist/schemas/challenge.js +74 -0
- package/dist/schemas/ci-settings.d.ts +122 -0
- package/dist/schemas/ci-settings.d.ts.map +1 -0
- package/dist/schemas/ci-settings.js +65 -0
- package/dist/schemas/consent-admin.d.ts +187 -0
- package/dist/schemas/consent-admin.d.ts.map +1 -0
- package/dist/schemas/consent-admin.js +114 -0
- package/dist/schemas/consent.d.ts +78 -0
- package/dist/schemas/consent.d.ts.map +1 -0
- package/dist/schemas/consent.js +68 -0
- package/dist/schemas/database.d.ts +104 -0
- package/dist/schemas/database.d.ts.map +1 -0
- package/dist/schemas/database.js +89 -0
- package/dist/schemas/deployment.d.ts +386 -0
- package/dist/schemas/deployment.d.ts.map +1 -0
- package/dist/schemas/deployment.js +282 -0
- package/dist/schemas/domain.d.ts +148 -0
- package/dist/schemas/domain.d.ts.map +1 -0
- package/dist/schemas/domain.js +86 -0
- package/dist/schemas/edge-deployments.d.ts +140 -0
- package/dist/schemas/edge-deployments.d.ts.map +1 -0
- package/dist/schemas/edge-deployments.js +87 -0
- package/dist/schemas/email-admin.d.ts +384 -0
- package/dist/schemas/email-admin.d.ts.map +1 -0
- package/dist/schemas/email-admin.js +313 -0
- package/dist/schemas/email.d.ts +46 -0
- package/dist/schemas/email.d.ts.map +1 -0
- package/dist/schemas/email.js +34 -0
- package/dist/schemas/engagement-admin.d.ts +148 -0
- package/dist/schemas/engagement-admin.d.ts.map +1 -0
- package/dist/schemas/engagement-admin.js +107 -0
- package/dist/schemas/env-var.d.ts +68 -0
- package/dist/schemas/env-var.d.ts.map +1 -0
- package/dist/schemas/env-var.js +52 -0
- package/dist/schemas/environment.d.ts +392 -0
- package/dist/schemas/environment.d.ts.map +1 -0
- package/dist/schemas/environment.js +211 -0
- package/dist/schemas/experiments.d.ts +540 -0
- package/dist/schemas/experiments.d.ts.map +1 -0
- package/dist/schemas/experiments.js +150 -0
- package/dist/schemas/flags-admin.d.ts +112 -0
- package/dist/schemas/flags-admin.d.ts.map +1 -0
- package/dist/schemas/flags-admin.js +84 -0
- package/dist/schemas/flags.d.ts +43 -0
- package/dist/schemas/flags.d.ts.map +1 -0
- package/dist/schemas/flags.js +27 -0
- package/dist/schemas/github.d.ts +34 -0
- package/dist/schemas/github.d.ts.map +1 -0
- package/dist/schemas/github.js +24 -0
- package/dist/schemas/ids.d.ts +39 -0
- package/dist/schemas/ids.d.ts.map +1 -0
- package/dist/schemas/ids.js +26 -0
- package/dist/schemas/image-opt.d.ts +70 -0
- package/dist/schemas/image-opt.d.ts.map +1 -0
- package/dist/schemas/image-opt.js +68 -0
- package/dist/schemas/kv-admin.d.ts +60 -0
- package/dist/schemas/kv-admin.d.ts.map +1 -0
- package/dist/schemas/kv-admin.js +43 -0
- package/dist/schemas/kv.d.ts +79 -0
- package/dist/schemas/kv.d.ts.map +1 -0
- package/dist/schemas/kv.js +54 -0
- package/dist/schemas/monitoring-admin.d.ts +314 -0
- package/dist/schemas/monitoring-admin.d.ts.map +1 -0
- package/dist/schemas/monitoring-admin.js +196 -0
- package/dist/schemas/monitoring.d.ts +143 -0
- package/dist/schemas/monitoring.d.ts.map +1 -0
- package/dist/schemas/monitoring.js +96 -0
- package/dist/schemas/newsletter.d.ts +366 -0
- package/dist/schemas/newsletter.d.ts.map +1 -0
- package/dist/schemas/newsletter.js +245 -0
- package/dist/schemas/notifications-admin.d.ts +337 -0
- package/dist/schemas/notifications-admin.d.ts.map +1 -0
- package/dist/schemas/notifications-admin.js +261 -0
- package/dist/schemas/notifications.d.ts +312 -0
- package/dist/schemas/notifications.d.ts.map +1 -0
- package/dist/schemas/notifications.js +235 -0
- package/dist/schemas/oidc.d.ts +74 -0
- package/dist/schemas/oidc.d.ts.map +1 -0
- package/dist/schemas/oidc.js +46 -0
- package/dist/schemas/organization-billing.d.ts +165 -0
- package/dist/schemas/organization-billing.d.ts.map +1 -0
- package/dist/schemas/organization-billing.js +156 -0
- package/dist/schemas/organization-project-users.d.ts +126 -0
- package/dist/schemas/organization-project-users.d.ts.map +1 -0
- package/dist/schemas/organization-project-users.js +88 -0
- package/dist/schemas/organization-projects.d.ts +129 -0
- package/dist/schemas/organization-projects.d.ts.map +1 -0
- package/dist/schemas/organization-projects.js +119 -0
- package/dist/schemas/organization-referrals.d.ts +129 -0
- package/dist/schemas/organization-referrals.d.ts.map +1 -0
- package/dist/schemas/organization-referrals.js +126 -0
- package/dist/schemas/organization-team.d.ts +123 -0
- package/dist/schemas/organization-team.d.ts.map +1 -0
- package/dist/schemas/organization-team.js +119 -0
- package/dist/schemas/organization.d.ts +210 -0
- package/dist/schemas/organization.d.ts.map +1 -0
- package/dist/schemas/organization.js +169 -0
- package/dist/schemas/plans.d.ts +211 -0
- package/dist/schemas/plans.d.ts.map +1 -0
- package/dist/schemas/plans.js +131 -0
- package/dist/schemas/privacy.d.ts +174 -0
- package/dist/schemas/privacy.d.ts.map +1 -0
- package/dist/schemas/privacy.js +132 -0
- package/dist/schemas/project-manifest.d.ts +1421 -0
- package/dist/schemas/project-manifest.d.ts.map +1 -0
- package/dist/schemas/project-manifest.js +318 -0
- package/dist/schemas/project.d.ts +132 -0
- package/dist/schemas/project.d.ts.map +1 -0
- package/dist/schemas/project.js +76 -0
- package/dist/schemas/realtime-admin.d.ts +51 -0
- package/dist/schemas/realtime-admin.d.ts.map +1 -0
- package/dist/schemas/realtime-admin.js +29 -0
- package/dist/schemas/realtime.d.ts +46 -0
- package/dist/schemas/realtime.d.ts.map +1 -0
- package/dist/schemas/realtime.js +32 -0
- package/dist/schemas/referrals-admin.d.ts +166 -0
- package/dist/schemas/referrals-admin.d.ts.map +1 -0
- package/dist/schemas/referrals-admin.js +123 -0
- package/dist/schemas/referrals.d.ts +148 -0
- package/dist/schemas/referrals.d.ts.map +1 -0
- package/dist/schemas/referrals.js +102 -0
- package/dist/schemas/refresh.d.ts +29 -0
- package/dist/schemas/refresh.d.ts.map +1 -0
- package/dist/schemas/refresh.js +18 -0
- package/dist/schemas/region.d.ts +118 -0
- package/dist/schemas/region.d.ts.map +1 -0
- package/dist/schemas/region.js +86 -0
- package/dist/schemas/resources.d.ts +345 -0
- package/dist/schemas/resources.d.ts.map +1 -0
- package/dist/schemas/resources.js +220 -0
- package/dist/schemas/runners.d.ts +93 -0
- package/dist/schemas/runners.d.ts.map +1 -0
- package/dist/schemas/runners.js +49 -0
- package/dist/schemas/saml.d.ts +254 -0
- package/dist/schemas/saml.d.ts.map +1 -0
- package/dist/schemas/saml.js +159 -0
- package/dist/schemas/search.d.ts +96 -0
- package/dist/schemas/search.d.ts.map +1 -0
- package/dist/schemas/search.js +57 -0
- package/dist/schemas/secret.d.ts +101 -0
- package/dist/schemas/secret.d.ts.map +1 -0
- package/dist/schemas/secret.js +79 -0
- package/dist/schemas/security.d.ts +345 -0
- package/dist/schemas/security.d.ts.map +1 -0
- package/dist/schemas/security.js +248 -0
- package/dist/schemas/service-tokens.d.ts +342 -0
- package/dist/schemas/service-tokens.d.ts.map +1 -0
- package/dist/schemas/service-tokens.js +101 -0
- package/dist/schemas/session-replay.d.ts +285 -0
- package/dist/schemas/session-replay.d.ts.map +1 -0
- package/dist/schemas/session-replay.js +145 -0
- package/dist/schemas/storage-admin.d.ts +351 -0
- package/dist/schemas/storage-admin.d.ts.map +1 -0
- package/dist/schemas/storage-admin.js +197 -0
- package/dist/schemas/storage.d.ts +257 -0
- package/dist/schemas/storage.d.ts.map +1 -0
- package/dist/schemas/storage.js +173 -0
- package/dist/schemas/tasks.d.ts +178 -0
- package/dist/schemas/tasks.d.ts.map +1 -0
- package/dist/schemas/tasks.js +102 -0
- package/dist/schemas/user.d.ts +103 -0
- package/dist/schemas/user.d.ts.map +1 -0
- package/dist/schemas/user.js +79 -0
- package/dist/schemas/webhooks.d.ts +259 -0
- package/dist/schemas/webhooks.d.ts.map +1 -0
- package/dist/schemas/webhooks.js +198 -0
- package/package.json +154 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Admin Bootstrap — reset-bootstrap-window schema (ADR-089 §2.7 Phase 7 Commit B).
|
|
3
|
+
*
|
|
4
|
+
* Platform-plane endpoint that forcibly re-opens the Appwrite-pattern
|
|
5
|
+
* bootstrap window for an already-booted cluster. The window normally
|
|
6
|
+
* opens ONCE at first boot (SETNX with 10-min TTL) and closes itself on
|
|
7
|
+
* first successful super-admin signup. This reset path is the documented
|
|
8
|
+
* recovery for:
|
|
9
|
+
*
|
|
10
|
+
* - Operator missed the window (10 minutes elapsed without signup).
|
|
11
|
+
* - A second recovery super-admin needs to be created later (e.g. the
|
|
12
|
+
* original admin's credentials are lost and there are no other
|
|
13
|
+
* admins to promote via the admin-users surface).
|
|
14
|
+
*
|
|
15
|
+
* Auth: `superAdminAuth` (platform session cookie, super_admin role) —
|
|
16
|
+
* see `apps/api/src/server/platform/middleware/auth.ts:462`. Deliberately
|
|
17
|
+
* NOT service-token-scoped: this is a power operator action, not an
|
|
18
|
+
* automation hook; it SHOULD require a human-in-the-loop session.
|
|
19
|
+
*/
|
|
20
|
+
import { Schema } from 'effect';
|
|
21
|
+
/** Input: no body. The POST verb + super-admin auth is the whole request. */
|
|
22
|
+
export const ResetBootstrapWindowInput = Schema.Struct({}).annotations({
|
|
23
|
+
identifier: 'ResetBootstrapWindowInput',
|
|
24
|
+
description: 'Empty body — the authenticated POST is itself the signal.',
|
|
25
|
+
});
|
|
26
|
+
/** Output: confirm window state + TTL so the caller knows when it expires. */
|
|
27
|
+
export const ResetBootstrapWindowResult = Schema.Struct({
|
|
28
|
+
/** Always `true` when the endpoint returns 200. */
|
|
29
|
+
opened: Schema.Boolean,
|
|
30
|
+
/** Seconds until the window closes again. Mirrors `BOOTSTRAP_WINDOW_TTL_SECONDS`. */
|
|
31
|
+
ttlSeconds: Schema.Number,
|
|
32
|
+
/** Human-readable instruction for the next step. */
|
|
33
|
+
message: Schema.String,
|
|
34
|
+
}).annotations({
|
|
35
|
+
identifier: 'ResetBootstrapWindowResult',
|
|
36
|
+
description: 'Bootstrap window reset confirmation (ADR-089 §2.7).',
|
|
37
|
+
});
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Admin Broadcasts — internal operator console schemas for broadcast management.
|
|
3
|
+
* Mirrors `/admin/broadcasts/*` in `apps/api/src/server/platform/routes/admin/broadcasts.ts`.
|
|
4
|
+
*
|
|
5
|
+
* Plane: `admin`.
|
|
6
|
+
*/
|
|
7
|
+
import { Schema } from 'effect';
|
|
8
|
+
export declare const AdminBroadcastType: Schema.Literal<["email", "push", "in_app"]>;
|
|
9
|
+
export type AdminBroadcastType = typeof AdminBroadcastType.Type;
|
|
10
|
+
export declare const AdminBroadcastStatus: Schema.Literal<["draft", "scheduled", "sending", "sent", "failed"]>;
|
|
11
|
+
export type AdminBroadcastStatus = typeof AdminBroadcastStatus.Type;
|
|
12
|
+
export declare const AdminTargetSegment: Schema.Literal<["all", "active", "premium"]>;
|
|
13
|
+
export type AdminTargetSegment = typeof AdminTargetSegment.Type;
|
|
14
|
+
export declare const AdminBroadcastStats: Schema.Struct<{
|
|
15
|
+
totalRecipients: Schema.optional<typeof Schema.Number>;
|
|
16
|
+
sent: Schema.optional<typeof Schema.Number>;
|
|
17
|
+
opened: Schema.optional<typeof Schema.Number>;
|
|
18
|
+
clicked: Schema.optional<typeof Schema.Number>;
|
|
19
|
+
bounced: Schema.optional<typeof Schema.Number>;
|
|
20
|
+
unsubscribed: Schema.optional<typeof Schema.Number>;
|
|
21
|
+
}>;
|
|
22
|
+
export type AdminBroadcastStats = typeof AdminBroadcastStats.Type;
|
|
23
|
+
export declare const AdminBroadcastCreator: Schema.Struct<{
|
|
24
|
+
id: typeof Schema.String;
|
|
25
|
+
name: Schema.NullOr<typeof Schema.String>;
|
|
26
|
+
email: typeof Schema.String;
|
|
27
|
+
}>;
|
|
28
|
+
export type AdminBroadcastCreator = typeof AdminBroadcastCreator.Type;
|
|
29
|
+
export declare const AdminBroadcastListItem: Schema.Struct<{
|
|
30
|
+
id: typeof Schema.String;
|
|
31
|
+
type: Schema.Literal<["email", "push", "in_app"]>;
|
|
32
|
+
status: Schema.Literal<["draft", "scheduled", "sending", "sent", "failed"]>;
|
|
33
|
+
targetSegment: typeof Schema.String;
|
|
34
|
+
subject: Schema.NullOr<typeof Schema.String>;
|
|
35
|
+
scheduledAt: Schema.NullOr<typeof Schema.String>;
|
|
36
|
+
sentAt: Schema.NullOr<typeof Schema.String>;
|
|
37
|
+
stats: Schema.NullOr<Schema.Struct<{
|
|
38
|
+
totalRecipients: Schema.optional<typeof Schema.Number>;
|
|
39
|
+
sent: Schema.optional<typeof Schema.Number>;
|
|
40
|
+
opened: Schema.optional<typeof Schema.Number>;
|
|
41
|
+
clicked: Schema.optional<typeof Schema.Number>;
|
|
42
|
+
bounced: Schema.optional<typeof Schema.Number>;
|
|
43
|
+
unsubscribed: Schema.optional<typeof Schema.Number>;
|
|
44
|
+
}>>;
|
|
45
|
+
createdAt: typeof Schema.String;
|
|
46
|
+
createdBy: Schema.NullOr<Schema.Struct<{
|
|
47
|
+
id: typeof Schema.String;
|
|
48
|
+
name: Schema.NullOr<typeof Schema.String>;
|
|
49
|
+
email: typeof Schema.String;
|
|
50
|
+
}>>;
|
|
51
|
+
}>;
|
|
52
|
+
export type AdminBroadcastListItem = typeof AdminBroadcastListItem.Type;
|
|
53
|
+
export declare const AdminBroadcast: Schema.Struct<{
|
|
54
|
+
id: typeof Schema.String;
|
|
55
|
+
type: Schema.Literal<["email", "push", "in_app"]>;
|
|
56
|
+
status: Schema.Literal<["draft", "scheduled", "sending", "sent", "failed"]>;
|
|
57
|
+
targetSegment: typeof Schema.String;
|
|
58
|
+
targetAppIds: Schema.NullOr<Schema.Array$<typeof Schema.String>>;
|
|
59
|
+
subject: Schema.NullOr<typeof Schema.String>;
|
|
60
|
+
content: Schema.NullOr<typeof Schema.String>;
|
|
61
|
+
richContent: Schema.NullOr<typeof Schema.Unknown>;
|
|
62
|
+
scheduledAt: Schema.NullOr<typeof Schema.String>;
|
|
63
|
+
sentAt: Schema.NullOr<typeof Schema.String>;
|
|
64
|
+
stats: Schema.NullOr<Schema.Struct<{
|
|
65
|
+
totalRecipients: Schema.optional<typeof Schema.Number>;
|
|
66
|
+
sent: Schema.optional<typeof Schema.Number>;
|
|
67
|
+
opened: Schema.optional<typeof Schema.Number>;
|
|
68
|
+
clicked: Schema.optional<typeof Schema.Number>;
|
|
69
|
+
bounced: Schema.optional<typeof Schema.Number>;
|
|
70
|
+
unsubscribed: Schema.optional<typeof Schema.Number>;
|
|
71
|
+
}>>;
|
|
72
|
+
createdBy: Schema.NullOr<typeof Schema.String>;
|
|
73
|
+
createdAt: typeof Schema.String;
|
|
74
|
+
updatedAt: typeof Schema.String;
|
|
75
|
+
}>;
|
|
76
|
+
export type AdminBroadcast = typeof AdminBroadcast.Type;
|
|
77
|
+
export declare const AdminBroadcastIdParams: Schema.Struct<{
|
|
78
|
+
id: typeof Schema.String;
|
|
79
|
+
}>;
|
|
80
|
+
export type AdminBroadcastIdParams = typeof AdminBroadcastIdParams.Type;
|
|
81
|
+
export declare const AdminBroadcastProjectQuery: Schema.Struct<{
|
|
82
|
+
projectId: typeof Schema.String;
|
|
83
|
+
}>;
|
|
84
|
+
export type AdminBroadcastProjectQuery = typeof AdminBroadcastProjectQuery.Type;
|
|
85
|
+
export declare const AdminListBroadcastsQuery: Schema.Struct<{
|
|
86
|
+
projectId: typeof Schema.String;
|
|
87
|
+
limit: Schema.optional<typeof Schema.String>;
|
|
88
|
+
offset: Schema.optional<typeof Schema.String>;
|
|
89
|
+
}>;
|
|
90
|
+
export type AdminListBroadcastsQuery = typeof AdminListBroadcastsQuery.Type;
|
|
91
|
+
export declare const AdminCreateBroadcastInput: Schema.Struct<{
|
|
92
|
+
type: Schema.Literal<["email", "push", "in_app"]>;
|
|
93
|
+
targetSegment: Schema.optional<Schema.Literal<["all", "active", "premium"]>>;
|
|
94
|
+
targetAppIds: Schema.optional<Schema.Array$<typeof Schema.String>>;
|
|
95
|
+
subject: Schema.optional<typeof Schema.String>;
|
|
96
|
+
content: typeof Schema.String;
|
|
97
|
+
scheduledAt: Schema.optional<typeof Schema.String>;
|
|
98
|
+
}>;
|
|
99
|
+
export type AdminCreateBroadcastInput = typeof AdminCreateBroadcastInput.Type;
|
|
100
|
+
export declare const AdminCreateBroadcastResult: Schema.Struct<{
|
|
101
|
+
id: typeof Schema.String;
|
|
102
|
+
type: Schema.Literal<["email", "push", "in_app"]>;
|
|
103
|
+
status: Schema.Literal<["draft", "scheduled", "sending", "sent", "failed"]>;
|
|
104
|
+
subject: Schema.NullOr<typeof Schema.String>;
|
|
105
|
+
scheduledAt: Schema.NullOr<typeof Schema.String>;
|
|
106
|
+
createdAt: typeof Schema.String;
|
|
107
|
+
}>;
|
|
108
|
+
export type AdminCreateBroadcastResult = typeof AdminCreateBroadcastResult.Type;
|
|
109
|
+
export declare const AdminListBroadcastsResult: Schema.Struct<{
|
|
110
|
+
broadcasts: Schema.Array$<Schema.Struct<{
|
|
111
|
+
id: typeof Schema.String;
|
|
112
|
+
type: Schema.Literal<["email", "push", "in_app"]>;
|
|
113
|
+
status: Schema.Literal<["draft", "scheduled", "sending", "sent", "failed"]>;
|
|
114
|
+
targetSegment: typeof Schema.String;
|
|
115
|
+
subject: Schema.NullOr<typeof Schema.String>;
|
|
116
|
+
scheduledAt: Schema.NullOr<typeof Schema.String>;
|
|
117
|
+
sentAt: Schema.NullOr<typeof Schema.String>;
|
|
118
|
+
stats: Schema.NullOr<Schema.Struct<{
|
|
119
|
+
totalRecipients: Schema.optional<typeof Schema.Number>;
|
|
120
|
+
sent: Schema.optional<typeof Schema.Number>;
|
|
121
|
+
opened: Schema.optional<typeof Schema.Number>;
|
|
122
|
+
clicked: Schema.optional<typeof Schema.Number>;
|
|
123
|
+
bounced: Schema.optional<typeof Schema.Number>;
|
|
124
|
+
unsubscribed: Schema.optional<typeof Schema.Number>;
|
|
125
|
+
}>>;
|
|
126
|
+
createdAt: typeof Schema.String;
|
|
127
|
+
createdBy: Schema.NullOr<Schema.Struct<{
|
|
128
|
+
id: typeof Schema.String;
|
|
129
|
+
name: Schema.NullOr<typeof Schema.String>;
|
|
130
|
+
email: typeof Schema.String;
|
|
131
|
+
}>>;
|
|
132
|
+
}>>;
|
|
133
|
+
total: typeof Schema.Number;
|
|
134
|
+
}>;
|
|
135
|
+
export type AdminListBroadcastsResult = typeof AdminListBroadcastsResult.Type;
|
|
136
|
+
export declare const AdminGetBroadcastResult: Schema.Struct<{
|
|
137
|
+
broadcast: Schema.Struct<{
|
|
138
|
+
id: typeof Schema.String;
|
|
139
|
+
type: Schema.Literal<["email", "push", "in_app"]>;
|
|
140
|
+
status: Schema.Literal<["draft", "scheduled", "sending", "sent", "failed"]>;
|
|
141
|
+
targetSegment: typeof Schema.String;
|
|
142
|
+
targetAppIds: Schema.NullOr<Schema.Array$<typeof Schema.String>>;
|
|
143
|
+
subject: Schema.NullOr<typeof Schema.String>;
|
|
144
|
+
content: Schema.NullOr<typeof Schema.String>;
|
|
145
|
+
richContent: Schema.NullOr<typeof Schema.Unknown>;
|
|
146
|
+
scheduledAt: Schema.NullOr<typeof Schema.String>;
|
|
147
|
+
sentAt: Schema.NullOr<typeof Schema.String>;
|
|
148
|
+
stats: Schema.NullOr<Schema.Struct<{
|
|
149
|
+
totalRecipients: Schema.optional<typeof Schema.Number>;
|
|
150
|
+
sent: Schema.optional<typeof Schema.Number>;
|
|
151
|
+
opened: Schema.optional<typeof Schema.Number>;
|
|
152
|
+
clicked: Schema.optional<typeof Schema.Number>;
|
|
153
|
+
bounced: Schema.optional<typeof Schema.Number>;
|
|
154
|
+
unsubscribed: Schema.optional<typeof Schema.Number>;
|
|
155
|
+
}>>;
|
|
156
|
+
createdBy: Schema.NullOr<typeof Schema.String>;
|
|
157
|
+
createdAt: typeof Schema.String;
|
|
158
|
+
updatedAt: typeof Schema.String;
|
|
159
|
+
}>;
|
|
160
|
+
}>;
|
|
161
|
+
export type AdminGetBroadcastResult = typeof AdminGetBroadcastResult.Type;
|
|
162
|
+
export declare const AdminSendBroadcastStats: Schema.Struct<{
|
|
163
|
+
totalRecipients: typeof Schema.Number;
|
|
164
|
+
sent: typeof Schema.Number;
|
|
165
|
+
failed: typeof Schema.Number;
|
|
166
|
+
}>;
|
|
167
|
+
export type AdminSendBroadcastStats = typeof AdminSendBroadcastStats.Type;
|
|
168
|
+
export declare const AdminSendBroadcastResult: Schema.Struct<{
|
|
169
|
+
success: typeof Schema.Boolean;
|
|
170
|
+
stats: Schema.Struct<{
|
|
171
|
+
totalRecipients: typeof Schema.Number;
|
|
172
|
+
sent: typeof Schema.Number;
|
|
173
|
+
failed: typeof Schema.Number;
|
|
174
|
+
}>;
|
|
175
|
+
}>;
|
|
176
|
+
export type AdminSendBroadcastResult = typeof AdminSendBroadcastResult.Type;
|
|
177
|
+
export declare const AdminDeleteBroadcastResult: Schema.Struct<{
|
|
178
|
+
success: typeof Schema.Boolean;
|
|
179
|
+
}>;
|
|
180
|
+
export type AdminDeleteBroadcastResult = typeof AdminDeleteBroadcastResult.Type;
|
|
181
|
+
//# sourceMappingURL=admin-broadcasts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-broadcasts.d.ts","sourceRoot":"","sources":["../../src/schemas/admin-broadcasts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,eAAO,MAAM,kBAAkB,6CAA4C,CAAA;AAC3E,MAAM,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,CAAC,IAAI,CAAA;AAE/D,eAAO,MAAM,oBAAoB,qEAMhC,CAAA;AACD,MAAM,MAAM,oBAAoB,GAAG,OAAO,oBAAoB,CAAC,IAAI,CAAA;AAEnE,eAAO,MAAM,kBAAkB,8CAA6C,CAAA;AAC5E,MAAM,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,CAAC,IAAI,CAAA;AAE/D,eAAO,MAAM,mBAAmB;;;;;;;EAO9B,CAAA;AACF,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAC,IAAI,CAAA;AAEjE,eAAO,MAAM,qBAAqB;;;;EAIhC,CAAA;AACF,MAAM,MAAM,qBAAqB,GAAG,OAAO,qBAAqB,CAAC,IAAI,CAAA;AAErE,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;EAWjC,CAAA;AACF,MAAM,MAAM,sBAAsB,GAAG,OAAO,sBAAsB,CAAC,IAAI,CAAA;AAEvE,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;EAezB,CAAA;AACF,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC,IAAI,CAAA;AAIvD,eAAO,MAAM,sBAAsB;;EAAuC,CAAA;AAC1E,MAAM,MAAM,sBAAsB,GAAG,OAAO,sBAAsB,CAAC,IAAI,CAAA;AAIvE,eAAO,MAAM,0BAA0B;;EAA8C,CAAA;AACrF,MAAM,MAAM,0BAA0B,GAAG,OAAO,0BAA0B,CAAC,IAAI,CAAA;AAE/E,eAAO,MAAM,wBAAwB;;;;EAInC,CAAA;AACF,MAAM,MAAM,wBAAwB,GAAG,OAAO,wBAAwB,CAAC,IAAI,CAAA;AAI3E,eAAO,MAAM,yBAAyB;;;;;;;EAOpC,CAAA;AACF,MAAM,MAAM,yBAAyB,GAAG,OAAO,yBAAyB,CAAC,IAAI,CAAA;AAI7E,eAAO,MAAM,0BAA0B;;;;;;;EAOrC,CAAA;AACF,MAAM,MAAM,0BAA0B,GAAG,OAAO,0BAA0B,CAAC,IAAI,CAAA;AAE/E,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;EAGpC,CAAA;AACF,MAAM,MAAM,yBAAyB,GAAG,OAAO,yBAAyB,CAAC,IAAI,CAAA;AAE7E,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;EAA+C,CAAA;AACnF,MAAM,MAAM,uBAAuB,GAAG,OAAO,uBAAuB,CAAC,IAAI,CAAA;AAEzE,eAAO,MAAM,uBAAuB;;;;EAIlC,CAAA;AACF,MAAM,MAAM,uBAAuB,GAAG,OAAO,uBAAuB,CAAC,IAAI,CAAA;AAEzE,eAAO,MAAM,wBAAwB;;;;;;;EAGnC,CAAA;AACF,MAAM,MAAM,wBAAwB,GAAG,OAAO,wBAAwB,CAAC,IAAI,CAAA;AAE3E,eAAO,MAAM,0BAA0B;;EAA6C,CAAA;AACpF,MAAM,MAAM,0BAA0B,GAAG,OAAO,0BAA0B,CAAC,IAAI,CAAA"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Admin Broadcasts — internal operator console schemas for broadcast management.
|
|
3
|
+
* Mirrors `/admin/broadcasts/*` in `apps/api/src/server/platform/routes/admin/broadcasts.ts`.
|
|
4
|
+
*
|
|
5
|
+
* Plane: `admin`.
|
|
6
|
+
*/
|
|
7
|
+
import { Schema } from 'effect';
|
|
8
|
+
export const AdminBroadcastType = Schema.Literal('email', 'push', 'in_app');
|
|
9
|
+
export const AdminBroadcastStatus = Schema.Literal('draft', 'scheduled', 'sending', 'sent', 'failed');
|
|
10
|
+
export const AdminTargetSegment = Schema.Literal('all', 'active', 'premium');
|
|
11
|
+
export const AdminBroadcastStats = Schema.Struct({
|
|
12
|
+
totalRecipients: Schema.optional(Schema.Number),
|
|
13
|
+
sent: Schema.optional(Schema.Number),
|
|
14
|
+
opened: Schema.optional(Schema.Number),
|
|
15
|
+
clicked: Schema.optional(Schema.Number),
|
|
16
|
+
bounced: Schema.optional(Schema.Number),
|
|
17
|
+
unsubscribed: Schema.optional(Schema.Number),
|
|
18
|
+
});
|
|
19
|
+
export const AdminBroadcastCreator = Schema.Struct({
|
|
20
|
+
id: Schema.String,
|
|
21
|
+
name: Schema.NullOr(Schema.String),
|
|
22
|
+
email: Schema.String,
|
|
23
|
+
});
|
|
24
|
+
export const AdminBroadcastListItem = Schema.Struct({
|
|
25
|
+
id: Schema.String,
|
|
26
|
+
type: AdminBroadcastType,
|
|
27
|
+
status: AdminBroadcastStatus,
|
|
28
|
+
targetSegment: Schema.String,
|
|
29
|
+
subject: Schema.NullOr(Schema.String),
|
|
30
|
+
scheduledAt: Schema.NullOr(Schema.String),
|
|
31
|
+
sentAt: Schema.NullOr(Schema.String),
|
|
32
|
+
stats: Schema.NullOr(AdminBroadcastStats),
|
|
33
|
+
createdAt: Schema.String,
|
|
34
|
+
createdBy: Schema.NullOr(AdminBroadcastCreator),
|
|
35
|
+
});
|
|
36
|
+
export const AdminBroadcast = Schema.Struct({
|
|
37
|
+
id: Schema.String,
|
|
38
|
+
type: AdminBroadcastType,
|
|
39
|
+
status: AdminBroadcastStatus,
|
|
40
|
+
targetSegment: Schema.String,
|
|
41
|
+
targetAppIds: Schema.NullOr(Schema.Array(Schema.String)),
|
|
42
|
+
subject: Schema.NullOr(Schema.String),
|
|
43
|
+
content: Schema.NullOr(Schema.String),
|
|
44
|
+
richContent: Schema.NullOr(Schema.Unknown),
|
|
45
|
+
scheduledAt: Schema.NullOr(Schema.String),
|
|
46
|
+
sentAt: Schema.NullOr(Schema.String),
|
|
47
|
+
stats: Schema.NullOr(AdminBroadcastStats),
|
|
48
|
+
createdBy: Schema.NullOr(Schema.String),
|
|
49
|
+
createdAt: Schema.String,
|
|
50
|
+
updatedAt: Schema.String,
|
|
51
|
+
});
|
|
52
|
+
// ── Params ─────────────────────────────────────────────────────────────────
|
|
53
|
+
export const AdminBroadcastIdParams = Schema.Struct({ id: Schema.String });
|
|
54
|
+
// ── Query ──────────────────────────────────────────────────────────────────
|
|
55
|
+
export const AdminBroadcastProjectQuery = Schema.Struct({ projectId: Schema.String });
|
|
56
|
+
export const AdminListBroadcastsQuery = Schema.Struct({
|
|
57
|
+
projectId: Schema.String,
|
|
58
|
+
limit: Schema.optional(Schema.String),
|
|
59
|
+
offset: Schema.optional(Schema.String),
|
|
60
|
+
});
|
|
61
|
+
// ── Inputs ─────────────────────────────────────────────────────────────────
|
|
62
|
+
export const AdminCreateBroadcastInput = Schema.Struct({
|
|
63
|
+
type: AdminBroadcastType,
|
|
64
|
+
targetSegment: Schema.optional(AdminTargetSegment),
|
|
65
|
+
targetAppIds: Schema.optional(Schema.Array(Schema.String)),
|
|
66
|
+
subject: Schema.optional(Schema.String),
|
|
67
|
+
content: Schema.String,
|
|
68
|
+
scheduledAt: Schema.optional(Schema.String),
|
|
69
|
+
});
|
|
70
|
+
// ── Responses ──────────────────────────────────────────────────────────────
|
|
71
|
+
export const AdminCreateBroadcastResult = Schema.Struct({
|
|
72
|
+
id: Schema.String,
|
|
73
|
+
type: AdminBroadcastType,
|
|
74
|
+
status: AdminBroadcastStatus,
|
|
75
|
+
subject: Schema.NullOr(Schema.String),
|
|
76
|
+
scheduledAt: Schema.NullOr(Schema.String),
|
|
77
|
+
createdAt: Schema.String,
|
|
78
|
+
});
|
|
79
|
+
export const AdminListBroadcastsResult = Schema.Struct({
|
|
80
|
+
broadcasts: Schema.Array(AdminBroadcastListItem),
|
|
81
|
+
total: Schema.Number,
|
|
82
|
+
});
|
|
83
|
+
export const AdminGetBroadcastResult = Schema.Struct({ broadcast: AdminBroadcast });
|
|
84
|
+
export const AdminSendBroadcastStats = Schema.Struct({
|
|
85
|
+
totalRecipients: Schema.Number,
|
|
86
|
+
sent: Schema.Number,
|
|
87
|
+
failed: Schema.Number,
|
|
88
|
+
});
|
|
89
|
+
export const AdminSendBroadcastResult = Schema.Struct({
|
|
90
|
+
success: Schema.Boolean,
|
|
91
|
+
stats: AdminSendBroadcastStats,
|
|
92
|
+
});
|
|
93
|
+
export const AdminDeleteBroadcastResult = Schema.Struct({ success: Schema.Boolean });
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Admin Builds — recovery-operation schemas (OPS-1 + OPS-7).
|
|
3
|
+
*
|
|
4
|
+
* Mirrors `apps/api/src/server/platform/routes/admin/builds.ts`. Replaces
|
|
5
|
+
* the manual `UPDATE build_records SET status='failed' …` from the
|
|
6
|
+
* `BuildRecordsStuckInBuilding` runbook (line 117–127, 141–147) with a
|
|
7
|
+
* structured admin endpoint. Operators reach this endpoint via the CLI
|
|
8
|
+
* (`sylphx admin builds reap`) — no future agent should need to enter the
|
|
9
|
+
* DB shell to clear a stuck build queue.
|
|
10
|
+
*
|
|
11
|
+
* Plane: `admin` (super-admin / scoped service-token only — scope
|
|
12
|
+
* `platform:builds:reap`).
|
|
13
|
+
*
|
|
14
|
+
* OPS-7 fold-in: an optional `imageDigest` filter clears builds whose
|
|
15
|
+
* stale image-digest reference is also blocking GC outreach. Same audit
|
|
16
|
+
* row, same scope, same writer.
|
|
17
|
+
*/
|
|
18
|
+
import { Schema } from 'effect';
|
|
19
|
+
/**
|
|
20
|
+
* Body of `POST /admin/builds/reap`.
|
|
21
|
+
*
|
|
22
|
+
* Semantics:
|
|
23
|
+
*
|
|
24
|
+
* - `olderThan` — required. Any `build_records` row whose `status='building'`
|
|
25
|
+
* AND whose `started_at < NOW() - <olderThan>` is in the candidate set.
|
|
26
|
+
* Rows whose `started_at IS NULL` are NOT touched: a NULL `started_at`
|
|
27
|
+
* means the K8s Job never transitioned to Active, which is a different
|
|
28
|
+
* failure mode (queue starvation) handled by a separate runbook.
|
|
29
|
+
* - `dryRun` — when true, the endpoint returns the candidate set without
|
|
30
|
+
* mutating anything. `reason` becomes optional in this mode.
|
|
31
|
+
* - `reason` — written to `audit_logs.metadata.reason`. Required unless
|
|
32
|
+
* `dryRun=true`. The endpoint rejects with 400 when missing in a
|
|
33
|
+
* non-dry-run call.
|
|
34
|
+
* - `imageDigest` — optional OPS-7 fold-in. When present, the reaper
|
|
35
|
+
* restricts the candidate set to rows where `image_digest = <digest>`
|
|
36
|
+
* AND clears `image_digest` on each reaped row (preserves the audit
|
|
37
|
+
* trail by leaving `failure_reason` / `finished_at` populated).
|
|
38
|
+
*
|
|
39
|
+
* Resulting UPDATE on a non-dry-run call (single statement, no app-side
|
|
40
|
+
* loop):
|
|
41
|
+
*
|
|
42
|
+
* UPDATE build_records
|
|
43
|
+
* SET status = 'failed',
|
|
44
|
+
* finished_at = NOW(),
|
|
45
|
+
* failure_reason = 'admin reap: ' || $reason
|
|
46
|
+
* [, image_digest = NULL] -- only if imageDigest passed
|
|
47
|
+
* WHERE status = 'building'
|
|
48
|
+
* AND started_at IS NOT NULL
|
|
49
|
+
* AND started_at < NOW() - $olderThan
|
|
50
|
+
* [AND image_digest = $imageDigest] -- only if imageDigest passed
|
|
51
|
+
* RETURNING id, project_id, env_id, started_at;
|
|
52
|
+
*/
|
|
53
|
+
export declare const AdminBuildsReapInput: Schema.Struct<{
|
|
54
|
+
olderThan: Schema.filter<typeof Schema.String>;
|
|
55
|
+
dryRun: Schema.optional<typeof Schema.Boolean>;
|
|
56
|
+
reason: Schema.optional<Schema.filter<Schema.filter<typeof Schema.String>>>;
|
|
57
|
+
imageDigest: Schema.optional<Schema.filter<typeof Schema.String>>;
|
|
58
|
+
}>;
|
|
59
|
+
export type AdminBuildsReapInput = typeof AdminBuildsReapInput.Type;
|
|
60
|
+
/**
|
|
61
|
+
* One row from the reaper's `RETURNING` clause (or the dry-run candidate
|
|
62
|
+
* set). Surfaces the minimum the operator needs to triage in the CLI:
|
|
63
|
+
* which project, which environment, how old.
|
|
64
|
+
*
|
|
65
|
+
* `id` and `projectId` are TypeIDs (`bld_xxx`, `proj_xxx`) — never raw
|
|
66
|
+
* UUIDs. `envId` is a TypeID (`env_xxx`).
|
|
67
|
+
*
|
|
68
|
+
* `ageSeconds` is the wall-clock age of the row at reap time
|
|
69
|
+
* (`extract(epoch from now() - started_at)`), so dashboards can render
|
|
70
|
+
* "stuck for X hours" without re-deriving from a server-clock-dependent
|
|
71
|
+
* `startedAt` ISO string.
|
|
72
|
+
*/
|
|
73
|
+
export declare const AdminBuildsReapRecord: Schema.Struct<{
|
|
74
|
+
id: typeof Schema.String;
|
|
75
|
+
projectId: typeof Schema.String;
|
|
76
|
+
envId: typeof Schema.String;
|
|
77
|
+
startedAt: typeof Schema.String;
|
|
78
|
+
ageSeconds: typeof Schema.Number;
|
|
79
|
+
}>;
|
|
80
|
+
export type AdminBuildsReapRecord = typeof AdminBuildsReapRecord.Type;
|
|
81
|
+
/**
|
|
82
|
+
* Result envelope.
|
|
83
|
+
*
|
|
84
|
+
* - `dryRun` — echo of the input flag. Lets the caller assert
|
|
85
|
+
* invariants without re-parsing their own request.
|
|
86
|
+
* - `reaped` — number of rows transitioned (0 on dry-run).
|
|
87
|
+
* - `records` — full list of rows in the candidate set (dry-run) or
|
|
88
|
+
* the rows actually flipped (write path). Capped at 1000
|
|
89
|
+
* — at higher volumes the operator should narrow
|
|
90
|
+
* `olderThan` instead of relying on a single mega-reap.
|
|
91
|
+
* - `digestCleared` — number of rows whose stale `image_digest` was
|
|
92
|
+
* additionally nulled (always 0 unless OPS-7 fold-in
|
|
93
|
+
* was triggered with `imageDigest`).
|
|
94
|
+
*/
|
|
95
|
+
export declare const AdminBuildsReapResult: Schema.Struct<{
|
|
96
|
+
dryRun: typeof Schema.Boolean;
|
|
97
|
+
reaped: typeof Schema.Number;
|
|
98
|
+
digestCleared: typeof Schema.Number;
|
|
99
|
+
records: Schema.Array$<Schema.Struct<{
|
|
100
|
+
id: typeof Schema.String;
|
|
101
|
+
projectId: typeof Schema.String;
|
|
102
|
+
envId: typeof Schema.String;
|
|
103
|
+
startedAt: typeof Schema.String;
|
|
104
|
+
ageSeconds: typeof Schema.Number;
|
|
105
|
+
}>>;
|
|
106
|
+
}>;
|
|
107
|
+
export type AdminBuildsReapResult = typeof AdminBuildsReapResult.Type;
|
|
108
|
+
//# sourceMappingURL=admin-builds.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-builds.d.ts","sourceRoot":"","sources":["../../src/schemas/admin-builds.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAsC/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,oBAAoB;;;;;EAK/B,CAAA;AACF,MAAM,MAAM,oBAAoB,GAAG,OAAO,oBAAoB,CAAC,IAAI,CAAA;AAInE;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,qBAAqB;;;;;;EAMhC,CAAA;AACF,MAAM,MAAM,qBAAqB,GAAG,OAAO,qBAAqB,CAAC,IAAI,CAAA;AAErE;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;EAKhC,CAAA;AACF,MAAM,MAAM,qBAAqB,GAAG,OAAO,qBAAqB,CAAC,IAAI,CAAA"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Admin Builds — recovery-operation schemas (OPS-1 + OPS-7).
|
|
3
|
+
*
|
|
4
|
+
* Mirrors `apps/api/src/server/platform/routes/admin/builds.ts`. Replaces
|
|
5
|
+
* the manual `UPDATE build_records SET status='failed' …` from the
|
|
6
|
+
* `BuildRecordsStuckInBuilding` runbook (line 117–127, 141–147) with a
|
|
7
|
+
* structured admin endpoint. Operators reach this endpoint via the CLI
|
|
8
|
+
* (`sylphx admin builds reap`) — no future agent should need to enter the
|
|
9
|
+
* DB shell to clear a stuck build queue.
|
|
10
|
+
*
|
|
11
|
+
* Plane: `admin` (super-admin / scoped service-token only — scope
|
|
12
|
+
* `platform:builds:reap`).
|
|
13
|
+
*
|
|
14
|
+
* OPS-7 fold-in: an optional `imageDigest` filter clears builds whose
|
|
15
|
+
* stale image-digest reference is also blocking GC outreach. Same audit
|
|
16
|
+
* row, same scope, same writer.
|
|
17
|
+
*/
|
|
18
|
+
import { Schema } from 'effect';
|
|
19
|
+
// ─── Input ──────────────────────────────────────────────────────────────
|
|
20
|
+
/**
|
|
21
|
+
* Duration string accepted by the reap endpoint. Subset of Go's `time.ParseDuration`
|
|
22
|
+
* grammar that the API actually consumes:
|
|
23
|
+
*
|
|
24
|
+
* ^[0-9]+(s|m|h|d)$ — `30m`, `2h`, `1d`, `7200s`
|
|
25
|
+
*
|
|
26
|
+
* Anything else 400s. Keeping the grammar narrow lets ops scripts compose
|
|
27
|
+
* the value safely without accidental injection of negative offsets or
|
|
28
|
+
* zero-length windows.
|
|
29
|
+
*/
|
|
30
|
+
const Duration = Schema.String.pipe(Schema.pattern(/^[0-9]+(s|m|h|d)$/, {
|
|
31
|
+
message: () => 'olderThan must match ^[0-9]+(s|m|h|d)$ (e.g. "30m", "2h", "1d")',
|
|
32
|
+
}));
|
|
33
|
+
/**
|
|
34
|
+
* SHA-256 image digest, when the reaper should ALSO null out the
|
|
35
|
+
* `image_digest` column on matched rows (OPS-7 fold-in).
|
|
36
|
+
*/
|
|
37
|
+
const ImageDigest = Schema.String.pipe(Schema.pattern(/^sha256:[a-f0-9]{64}$/, {
|
|
38
|
+
message: () => 'imageDigest must match ^sha256:[a-f0-9]{64}$',
|
|
39
|
+
}));
|
|
40
|
+
/**
|
|
41
|
+
* Reason string for the audit trail. Required unless `dryRun=true`.
|
|
42
|
+
*
|
|
43
|
+
* Length-bounded to keep the audit row size predictable and to nudge
|
|
44
|
+
* operators toward terse-but-useful narratives.
|
|
45
|
+
*/
|
|
46
|
+
const Reason = Schema.String.pipe(Schema.minLength(3), Schema.maxLength(500));
|
|
47
|
+
/**
|
|
48
|
+
* Body of `POST /admin/builds/reap`.
|
|
49
|
+
*
|
|
50
|
+
* Semantics:
|
|
51
|
+
*
|
|
52
|
+
* - `olderThan` — required. Any `build_records` row whose `status='building'`
|
|
53
|
+
* AND whose `started_at < NOW() - <olderThan>` is in the candidate set.
|
|
54
|
+
* Rows whose `started_at IS NULL` are NOT touched: a NULL `started_at`
|
|
55
|
+
* means the K8s Job never transitioned to Active, which is a different
|
|
56
|
+
* failure mode (queue starvation) handled by a separate runbook.
|
|
57
|
+
* - `dryRun` — when true, the endpoint returns the candidate set without
|
|
58
|
+
* mutating anything. `reason` becomes optional in this mode.
|
|
59
|
+
* - `reason` — written to `audit_logs.metadata.reason`. Required unless
|
|
60
|
+
* `dryRun=true`. The endpoint rejects with 400 when missing in a
|
|
61
|
+
* non-dry-run call.
|
|
62
|
+
* - `imageDigest` — optional OPS-7 fold-in. When present, the reaper
|
|
63
|
+
* restricts the candidate set to rows where `image_digest = <digest>`
|
|
64
|
+
* AND clears `image_digest` on each reaped row (preserves the audit
|
|
65
|
+
* trail by leaving `failure_reason` / `finished_at` populated).
|
|
66
|
+
*
|
|
67
|
+
* Resulting UPDATE on a non-dry-run call (single statement, no app-side
|
|
68
|
+
* loop):
|
|
69
|
+
*
|
|
70
|
+
* UPDATE build_records
|
|
71
|
+
* SET status = 'failed',
|
|
72
|
+
* finished_at = NOW(),
|
|
73
|
+
* failure_reason = 'admin reap: ' || $reason
|
|
74
|
+
* [, image_digest = NULL] -- only if imageDigest passed
|
|
75
|
+
* WHERE status = 'building'
|
|
76
|
+
* AND started_at IS NOT NULL
|
|
77
|
+
* AND started_at < NOW() - $olderThan
|
|
78
|
+
* [AND image_digest = $imageDigest] -- only if imageDigest passed
|
|
79
|
+
* RETURNING id, project_id, env_id, started_at;
|
|
80
|
+
*/
|
|
81
|
+
export const AdminBuildsReapInput = Schema.Struct({
|
|
82
|
+
olderThan: Duration,
|
|
83
|
+
dryRun: Schema.optional(Schema.Boolean),
|
|
84
|
+
reason: Schema.optional(Reason),
|
|
85
|
+
imageDigest: Schema.optional(ImageDigest),
|
|
86
|
+
});
|
|
87
|
+
// ─── Output ─────────────────────────────────────────────────────────────
|
|
88
|
+
/**
|
|
89
|
+
* One row from the reaper's `RETURNING` clause (or the dry-run candidate
|
|
90
|
+
* set). Surfaces the minimum the operator needs to triage in the CLI:
|
|
91
|
+
* which project, which environment, how old.
|
|
92
|
+
*
|
|
93
|
+
* `id` and `projectId` are TypeIDs (`bld_xxx`, `proj_xxx`) — never raw
|
|
94
|
+
* UUIDs. `envId` is a TypeID (`env_xxx`).
|
|
95
|
+
*
|
|
96
|
+
* `ageSeconds` is the wall-clock age of the row at reap time
|
|
97
|
+
* (`extract(epoch from now() - started_at)`), so dashboards can render
|
|
98
|
+
* "stuck for X hours" without re-deriving from a server-clock-dependent
|
|
99
|
+
* `startedAt` ISO string.
|
|
100
|
+
*/
|
|
101
|
+
export const AdminBuildsReapRecord = Schema.Struct({
|
|
102
|
+
id: Schema.String,
|
|
103
|
+
projectId: Schema.String,
|
|
104
|
+
envId: Schema.String,
|
|
105
|
+
startedAt: Schema.String,
|
|
106
|
+
ageSeconds: Schema.Number,
|
|
107
|
+
});
|
|
108
|
+
/**
|
|
109
|
+
* Result envelope.
|
|
110
|
+
*
|
|
111
|
+
* - `dryRun` — echo of the input flag. Lets the caller assert
|
|
112
|
+
* invariants without re-parsing their own request.
|
|
113
|
+
* - `reaped` — number of rows transitioned (0 on dry-run).
|
|
114
|
+
* - `records` — full list of rows in the candidate set (dry-run) or
|
|
115
|
+
* the rows actually flipped (write path). Capped at 1000
|
|
116
|
+
* — at higher volumes the operator should narrow
|
|
117
|
+
* `olderThan` instead of relying on a single mega-reap.
|
|
118
|
+
* - `digestCleared` — number of rows whose stale `image_digest` was
|
|
119
|
+
* additionally nulled (always 0 unless OPS-7 fold-in
|
|
120
|
+
* was triggered with `imageDigest`).
|
|
121
|
+
*/
|
|
122
|
+
export const AdminBuildsReapResult = Schema.Struct({
|
|
123
|
+
dryRun: Schema.Boolean,
|
|
124
|
+
reaped: Schema.Number,
|
|
125
|
+
digestCleared: Schema.Number,
|
|
126
|
+
records: Schema.Array(AdminBuildsReapRecord),
|
|
127
|
+
});
|