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<Response> {
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 });
}