import { z } from "zod";
import { badRequest, notFoundError } from "../errors";
import { limitWrite } from "../limits";
import { branchSha, listRefs } from "../git/refs";
import { pagesDomain, siteUrl } from "../pages/config";
import { customDomainsEnabled } from "../pages/domains";
import { createDeployment, loadSite, removePreview, rollbackTo } from "../pages/deploy";
import { disableSite, listDeployments, refreshDomain, saveSite, setDomain } from "../pages/site";
import { labelUrl, sitesDomain } from "../sites/config";
import { createSiteDeployment, listSiteDeployments, loadSiteForRepo, rollbackSite } from "../sites/deploy";
import { siteLabel } from "../sites/naming";
import {
deleteEnv,
disableSite as disableSiteHosting,
listEnv,
refreshSiteDomain,
saveAccess,
saveSite as saveSiteSettings,
setEnv,
setSiteDomain,
} from "../sites/site";
import { noContent, readJson, requireScopedRepo, unprocessable } from "./http";
import type { ApiContext } from "./http";
const settingsInput = z.object({
source: z.enum(["branch", "workflow"]).default("branch"),
branch: z.string().min(1).max(255),
folder: z.string().max(200).default(""),
artifact_name: z
.string()
.regex(/^[A-Za-z0-9._-]{1,100}$/)
.default("github-pages"),
spa: z.boolean().default(false),
previews: z.boolean().default(false),
preview_env: z.boolean().default(false),
});
const domainInput = z.object({ domain: z.string().max(253).nullable() });
const rollbackInput = z.object({ deployment_id: z.string().min(1) });
const accessInput = z.object({
access: z.enum(["public", "password", "gitfor", "oidc"]),