Undo a pending soft-delete; idempotent.
The only write path that’s allowed for soft-deleted accounts —
require_active_account is intentionally NOT used here. Returns
the refreshed profile so the frontend can clear its “scheduled for
deletion” banner from the response alone.
Documentation Index
Fetch the complete documentation index at: https://docs.roughy.ai/llms.txt
Use this file to discover all available pages before exploring further.
Either your Supabase session JWT (UI flows) or an API key minted via POST /api-keys (programmatic flows). Pass it as Authorization: Bearer <token>. The server inspects the token format and routes to JWT or API-key verification automatically.
Successful Response
Public projection of the caller's own users row.
No auth_user_id (Supabase identity, not part of our public API),
no stripe_customer_id (billing-internal), no is_admin (role
flag, not a profile field). email and deleted_at stay so the
UI can render the account state honestly.