import { NextRequest, NextResponse } from "next/server"; import { toErrorResponse, PipelineError } from "@/lib/render-pipeline/errors"; import { requirePipelineUser } from "@/lib/render-pipeline/session-auth"; import { getJobDetail } from "@/lib/render-pipeline/jobs"; import { retryExport } from "@/lib/render-pipeline/exports"; // ── POST /api/render/jobs/{jobId}/retry (E15) ──────────────────────────────── // // Job-level retry resolves to its Export (each retry is a fresh attempt row). export async function POST( _req: NextRequest, { params }: { params: Promise<{ jobId: string }> } ) { try { const user = await requirePipelineUser(); const { jobId } = await params; const job = await getJobDetail(jobId); if (!job.exportId) throw new PipelineError(422, "Job has no export to retry"); const result = await retryExport(job.exportId, { type: "USER", id: user.id, note: "Retry from web UI" }); return NextResponse.json(result); } catch (err) { const { body, status } = toErrorResponse(err); return NextResponse.json(body, { status }); } }