Spaces:
Runtime error
Runtime error
File size: 942 Bytes
cd8bd0a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | /**
* GET /api/gamification/level — current XP/level for a key, or the operator-wide
* aggregate when no `apiKeyId` is supplied (the dashboard profile page case). (#3484)
*
* LOCAL_ONLY: not process-spawning; management-scoped via requireManagementAuth.
*/
import { NextRequest, NextResponse } from "next/server";
import { CORS_HEADERS, handleCorsOptions } from "@/shared/utils/cors";
import { getXp, getAggregateXp } from "@/lib/db/gamification";
import { requireManagementAuth } from "@/lib/api/requireManagementAuth";
export async function OPTIONS() {
return handleCorsOptions();
}
export async function GET(request: NextRequest) {
const authError = await requireManagementAuth(request);
if (authError) return authError;
const apiKeyId = new URL(request.url).searchParams.get("apiKeyId");
const level = apiKeyId ? getXp(apiKeyId) : getAggregateXp();
return NextResponse.json({ level }, { headers: CORS_HEADERS });
}
|