Contrato de la API

Lo que tu app tiene que responder. Es un resumen de los requisitos de la spec; si hay diferencia, gana ese archivo.

Todas las rutas cuelgan de tu ApiUrl (la ves en los outputs del stack o con npm run datos).

Alcance de seguridad del workshop

Esta API solo sirve para pruebas temporales del workshop, no es una plantilla de producción. GET /gastos es público y una API key identifica y limita uso, pero no autentica personas. Usa gastos ficticios, no compartas tu key y elimina el backend y Amplify al terminar. El paso extra de Cognito sirve para experimentar con login; antes de llevar una app a producción necesitas revisar autenticación, autorización, CORS, monitoreo y un modelo de amenazas para tu caso.

POST /gastos

Necesita el header x-api-key.

{
  "monto": 45,
  "descripcion": "café de la esquina",
  "categoria": "cafes"
}
Caso Status
Gasto válido 201 con el gasto: id, fecha, origen, monto, descripcion, categoria
Sin monto, monto ≤ 0, categoría que no existe 400 con { "error": "..." }
Sin API key 403
Rebasa el throttling o la cuota 429

El header opcional x-origen (atajo, curl, pagina o verify) dice de dónde vino el gasto.

GET /gastos

Abierto. Responde 200 con { "gastos": [...] }, los más recientes primero, máximo 200.

Categorías

cafes, snacks, transporte, suscripciones y otros. Se aceptan con acentos y mayúsculas (Cafés), pero se guardan así.

Qué revisa cada checkpoint

Comando Revisa
npm run verify 0 Node 22+, npm 11.10+, el .npmrc del repo activo, Git y AWS CLI 2.32+
npm run verify 1 Sesión activa de AWS y la Región del perfil
npm run verify 2 <url> amplify.yml publica web/ y la página de Amplify responde
npm run verify 3 Sesión activa y el budget mensual de USD 10
npm run verify 4 Los tests de gastos y de infraestructura, 403 sin key, 201 con key, el GET y 400 con monto negativo en tu API desplegada
npm run verify 5 <url> Amplify responde, config.js apunta a tu API y hay al menos un gasto con origen: atajo
npm run verify cognito 401 sin token, 200 con token y el POST con key sigue en 201