{"service":"nextjs-themariscal-v2-api","docs":"https://github.com/themariscal/nextjs-themariscal-v2-api","routes":{"GET /health":"estado del deployment","GET /yo":"quién soy (Bearer: cualquier JWT de Clerk de The Mariscal, logueado)","GET /coins":"mi saldo de créditos para la IA (logueado)","POST /coins/regalar":"regalar créditos a un usuario registrado { email, amount, note? } (admin)","GET /coins/regalos":"últimos regalos de créditos (admin)","POST /mariscal-ai/chat":"chat de Mariscal AI, streaming de tokens crudos, x-service-used, x-coins (logueado; cuesta créditos, 402 SIN_COINS)","POST /mariscal-ai/curso":"Mariscal AI dentro del curso { messages, contexto } → streaming de tokens crudos, x-service-used, x-coins (logueado; cuesta créditos)","POST /mariscal-ai/onboarding":"evaluación de un bloque del diagnóstico { blockId, user_responses, … } (logueado; x-eval-source)","POST /mariscal-ai/onboarding/final":"diagnóstico final { contextJson } → { report } (logueado; x-eval-source)","POST /profesorica/*":"alias heredados de Croatiapp de las cuatro rutas de /mariscal-ai (se borran cuando ningún cliente los use)","POST /examen-final/evaluate":"examen final del tribunal { answers, courseId? } → { boletin, tribunal, analisis } (logueado; x-eval-source; 503 si el curso no tiene examen cargado)","POST /examen-final/rendir":"volver a rendir el examen final (logueado; cuesta 2 créditos)","POST /examen-final/ejercicios":"rutina de repaso para Mis ejercicios { contextJson, language } → { routine } (logueado; cuesta créditos)","POST /examen-final/cuaderno":"cuaderno de repaso para Mi cuaderno { contextJson, language } → { notebook } (logueado; cuesta créditos)","POST /regalos/enviar":"crear un regalo y mandar el email (Bearer: JWT de Clerk, template convex, role admin)","POST /regalos/comprado":"emails de un regalo comprado (interno: x-internal-secret = MARISCAL_API_SECRET)","GET /regalos/preview":"vista previa HTML del email (admin)"}}