TypeScript 98.3%
CSS 0.9%
Shell 0.7%
1import { NextResponse } from "next/server";2import { apiError } from "@/lib/api.ts";3import { requireUser } from "@/lib/auth/session.ts";4import { listModels, getPresets } from "@/lib/openrouter/registry.ts";56export async function GET() {7 try {8 await requireUser();9 const models = await listModels();10 const presets = getPresets();11 // L'étudiant voit le palier de coût, pas les prix détaillés (réservés à l'admin).12 return NextResponse.json({13 models: models.map((m) => ({14 id: m.id,15 name: m.name,16 provider: m.provider,17 description: m.description,18 contextLength: m.contextLength,19 supportsImages: m.supportsImages,20 supportsFiles: m.supportsFiles,21 supportsReasoning: m.supportsReasoning,22 isFree: m.isFree,23 costTier: m.costTier,24 favorite: m.favorite,25 })),26 presets,27 });28 } catch (e) {29 return apiError(e);30 }31}32