DOCUMENTACIÓN API
Guía completa para el uso de la API de nuestro servicio
🔓 Autenticación y Seguridad (Spring Security)
- JWT + Stateless: Usamos JWT para proteger casi todas las rutas. No hay sesiones en servidor.
-
El filtro
JwtAuthFilterintercepta cada petición entrante y valida el JWT antes de permitir acceso. -
Rutas públicas (no necesitan token):
POST /api/v1/auth/registerPOST /api/v1/auth/loginGET /api/v1/platos/**GET /api/v1/categorias/**GET /api/v1/alergenos/**GET /api/v1/ingredientes/**POST /api/v1/contact/**
-
Todas las demás rutas requieren un header:
Authorization: Bearer <token_JWT> -
Dentro de las rutas autenticadas, algunos endpoints aceptan cualquier
rol autenticado (
CLIENTEoADMIN), y otros están restringidos solo aADMIN.
| Autenticación (AuthController) |
|---|
POST /api/v1/auth/register – Registrar nuevo usuario (público)
Body (JSON):
|
POST /api/v1/auth/login – Obtener JWT (público)
Body (JSON):
|
| Alérgenos (AlergenoController) |
|---|
GET /api/v1/alergenos – Listar todos los alérgenos (público)
|
POST /api/v1/alergenos?nombre=xxxx – Crear nuevo alérgeno (solo ADMIN)
|
DELETE /api/v1/alergenos/{id} – Eliminar alérgeno (solo ADMIN)
|
| Categorías (CategoriaController) |
|---|
GET /api/v1/categorias – Listar todas las categorías (público)
|
POST /api/v1/categorias – Crear categoría (solo ADMIN)
Body (JSON):
|
PUT /api/v1/categorias/{id} – Actualizar categoría (solo ADMIN)
Body (JSON):
|
DELETE /api/v1/categorias/{id} – Eliminar categoría (solo ADMIN)
|
| Proveedores (ProveedorController) |
|---|
POST /api/v1/proveedores – Crear proveedor (solo ADMIN)
Body (JSON):
|
GET /api/v1/proveedores – Listar proveedores (solo ADMIN)
|
GET /api/v1/proveedores/{id} – Obtener proveedor por ID (solo ADMIN)
|
PUT /api/v1/proveedores/{id} – Actualizar proveedor (solo ADMIN)
Body (JSON):
|
DELETE /api/v1/proveedores/{id} – Eliminar proveedor (solo ADMIN)
|
| Ingredientes (IngredientesController) |
|---|
GET /api/v1/ingredientes?page=&size= – Listar ingredientes (público)
|
GET /api/v1/ingredientes/{id} – Obtener ingrediente por ID (público)
|
GET /api/v1/ingredientes/por-proveedor/{id}?page=&size= – Listar por proveedor (público)
|
GET /api/v1/ingredientes/{id}/alergenos – Obtener alérgenos de un ingrediente (público)
|
POST /api/v1/ingredientes/{ingredienteId}/alergenos/{alergenoId} – Añadir alérgeno a ingrediente (solo ADMIN)
|
PUT /api/v1/ingredientes/{id} – Actualizar ingrediente (solo ADMIN)
Body (JSON):
|
DELETE /api/v1/ingredientes/{id} – Eliminar ingrediente (solo ADMIN)
|
| Platos (PlatoController) |
|---|
GET /api/v1/platos?page=&size= – Listar todos los platos (público)
Descripción: Devuelve un
No requiere token. Ejemplo de respuesta (200 OK):
|
GET /api/v1/platos/{id} – Obtener plato por ID (público)
|
GET /api/v1/platos/categoria?nombre=&page=&size= – Buscar platos por categoría (público)
|
GET /api/v1/platos/buscar?nombre=&page=&size= – Buscar platos por nombre (público)
|
GET /api/v1/platos/{id}/ingredientes – Obtener lista de ingredientes de un plato (público)
|
GET /api/v1/platos/{id}/alergenos – Obtener lista deduplicada de alérgenos de un plato (público)
|
POST /api/v1/platos – Crear nuevo plato (solo ADMIN)
Body (JSON):
|
PUT /api/v1/platos/{id} – Actualizar plato (solo ADMIN)
Body (JSON):
|
DELETE /api/v1/platos/{id} – Eliminar plato (solo ADMIN)
|
| Estados de Pedido (EstadoController) |
|---|
GET /api/v1/estados – Listar todos los estados (CLIENTE o ADMIN)
|
POST /api/v1/estados – Crear estado (solo ADMIN)
Body (JSON):
|
DELETE /api/v1/estados/{id} – Eliminar estado (solo ADMIN)
|
| Pedidos (PedidoController) |
|---|
POST /api/v1/pedidos – Crear nuevo pedido (CLIENTE o ADMIN)
Body (JSON):
|
GET /api/v1/pedidos/usuario – Listar los pedidos del usuario autenticado (CLIENTE o ADMIN)
|
GET /api/v1/pedidos?page=&size=&estadoId= – Listar todos los pedidos (solo ADMIN)
|
GET /api/v1/pedidos/{id} – Obtener pedido por ID (CLIENTE o ADMIN)
|
DELETE /api/v1/pedidos/{id} – Cancelar o eliminar pedido (CLIENTE o ADMIN)
|
PUT /api/v1/pedidos/{id}/estado/{estadoId} – Cambiar estado de pedido (solo ADMIN)
|
| Facturas (FacturaController) |
|---|
GET /api/v1/facturas/{pedidoId} – Descargar factura en PDF (CLIENTE o ADMIN)
|
| Estadísticas (EstadisticaController) |
|---|
|
Nota: La clase GET /api/v1/estadisticas/top-platos?topN={n} – Top N platos vendidos (solo ADMIN)
|
GET /api/v1/estadisticas/ingresos?desde=&hasta= – Ingresos por período (solo ADMIN)
|
GET /api/v1/estadisticas/pedidos-por-estado – Pedidos agrupados por estado (solo ADMIN)
|
| Log Auditoría (LogAuditoriaController) |
|---|
|
Nota: El controller está anotado con GET /api/v1/logs – Listar todos los logs de auditoría (solo ADMIN)
|
| Usuarios Públicos y Perfil (UsuarioController) |
|---|
GET /api/v1/users/me – Perfil del usuario autenticado (CLIENTE o ADMIN)
|
PUT /api/v1/users/password – Cambiar contraseña (CLIENTE o ADMIN)
Body (JSON)
|
PUT /api/v1/users/perfil – Actualizar nombre y teléfono (CLIENTE o ADMIN)
Body (JSON)
|
GET /api/v1/users/profile/{nombre} – Ver perfil público de un usuario (público)
|
GET /api/v1/users/search?name={nombre} – Buscar usuarios por nombre (solo ADMIN)
|
GET /api/v1/users – Listar todos los usuarios (solo ADMIN)
|
GET /api/v1/users/{id} – Obtener usuario por ID (solo ADMIN)
|
DELETE /api/v1/users/{id} – Eliminar usuario (solo ADMIN)
|
PUT /api/v1/users/{id}/rol/{rolId} – Asignar rol a usuario (solo ADMIN)
|