import { NextResponse } from "next/server"; import { createClient } from "@/lib/supabase/server"; export async function DELETE() { const supabase = await createClient(); const { data: userData, error: userError } = await supabase.auth.getUser(); if (userError || !userData.user) { return NextResponse.json({ error: "Unauthorized" }, { status: 401 }); } const { data: profile } = await supabase .from("profiles") .select("unipile_account_id") .eq("id", userData.user.id) .single(); if (!profile?.unipile_account_id) { return NextResponse.json({ error: "No LinkedIn account connected" }, { status: 400 }); } const apiKey = process.env.UNIPILE_API_KEY; const dsn = process.env.UNIPILE_DSN; // Try to remove from Unipile (best-effort; don't block DB cleanup if it fails) if (apiKey && dsn) { const unipileRes = await fetch( `https://${dsn}/api/v1/accounts/${profile.unipile_account_id}`, { method: "DELETE", headers: { "X-API-KEY": apiKey }, } ); if (!unipileRes.ok) { console.warn( "Unipile delete returned non-OK:", unipileRes.status, await unipileRes.text() ); } } // Always clear from our DB const { error: dbError } = await supabase .from("profiles") .update({ unipile_account_id: null, unipile_account_status: null, }) .eq("id", userData.user.id); if (dbError) { console.error("Error clearing Unipile account from profile:", dbError); return NextResponse.json({ error: "DB update failed" }, { status: 500 }); } return NextResponse.json({ ok: true }); }