Files
enclava/frontend/src/app/api/llm/api-keys/[id]/route.ts
2025-08-26 20:27:30 +02:00

79 lines
1.9 KiB
TypeScript

import { NextRequest, NextResponse } from 'next/server'
const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://enclava-backend:8000'
export async function DELETE(
request: NextRequest,
{ params }: { params: { id: string } }
) {
try {
const token = request.headers.get('authorization')
if (!token) {
return NextResponse.json({ error: 'Unauthorized' }, { status: 401 })
}
const response = await fetch(`${BACKEND_URL}/api/api-keys/${params.id}`, {
method: 'DELETE',
headers: {
'Authorization': token,
'Content-Type': 'application/json',
},
})
if (!response.ok) {
const errorData = await response.text()
return NextResponse.json(
{ error: 'Failed to delete API key', details: errorData },
{ status: response.status }
)
}
return NextResponse.json({ success: true })
} catch (error) {
return NextResponse.json(
{ error: 'Internal server error' },
{ status: 500 }
)
}
}
export async function PUT(
request: NextRequest,
{ params }: { params: { id: string } }
) {
try {
const token = request.headers.get('authorization')
if (!token) {
return NextResponse.json({ error: 'Unauthorized' }, { status: 401 })
}
const body = await request.json()
const response = await fetch(`${BACKEND_URL}/api/api-keys/${params.id}`, {
method: 'PUT',
headers: {
'Authorization': token,
'Content-Type': 'application/json',
},
body: JSON.stringify(body),
})
if (!response.ok) {
const errorData = await response.text()
return NextResponse.json(
{ error: 'Failed to update API key', details: errorData },
{ status: response.status }
)
}
const data = await response.json()
return NextResponse.json(data)
} catch (error) {
return NextResponse.json(
{ error: 'Internal server error' },
{ status: 500 }
)
}
}