← back to Norma
app/api/settings/api-keys/[id]/route.ts
33 lines
import { NextRequest, NextResponse } from 'next/server';
import { requireRole } from '@/lib/require-role';
import { revokeApiKey } from '@/lib/credentials';
import { auditLog } from '@/lib/audit';
/**
* DELETE /api/settings/api-keys/:id
* Revoke (soft-delete) a Norma API key.
*/
export async function DELETE(
request: NextRequest,
{ params }: { params: Promise<{ id: string }> },
) {
const auth = requireRole(request, 'admin');
if (auth instanceof NextResponse) return auth;
const { id } = await params;
if (!id) {
return NextResponse.json({ error: 'id is required' }, { status: 400 });
}
const revoked = await revokeApiKey(id);
if (!revoked) {
return NextResponse.json({ error: 'Key not found or already revoked' }, { status: 404 });
}
await auditLog('apikey.revoked', 'norma_api_key', id, {
revokedBy: auth.username,
});
return NextResponse.json({ success: true });
}