import { z } from "zod"; import { limitAccountWrite } from "../limits"; import { deleteOrganization } from "../org-delete"; import { readJson, requireAccountScope } from "./http"; import type { ApiContext } from "./http"; const deleteInput = z.object({ confirm: z.string(), delete_repos: z.boolean().default(false) }); /** DELETE /orgs/:org — owners only, with an account-level (all-repos admin:write) token. */ export async function deleteOrg(ctx: ApiContext, org: string): Promise { requireAccountScope(ctx); const data = await readJson(ctx.request, deleteInput); await limitAccountWrite(ctx.viewer); const result = await deleteOrganization({ org, confirm: data.confirm, deleteRepos: data.delete_repos, viewer: ctx.viewer, }); return Response.json({ deleted: true, deleted_repos: result.deletedRepos }); }