Esta documentación contiene todas las rutas de la API con ejemplos JSON y explicaciones para cada controlador.
También puedes acceder a la documentación interactiva de la API en la ruta /swagger-ui/index.html#/ donde podrás probar los endpoints directamente.
- Introducción
- Autenticación (Auth)
- Usuarios
- Perfiles
- Posts
- Comentarios
- Chat
- Eventos
- Grupos
- Mascotas
- Notificaciones
- Seguidos
- Valoraciones
- Relaciones
La API de Patitas Conectadas proporciona una interfaz RESTful para gestionar una plataforma social centrada en mascotas. Esta API permite:
- Gestión de usuarios y autenticación
- Manejo de perfiles y publicaciones
- Interacción social (comentarios, chat, eventos)
- Gestión de mascotas y grupos
- Sistema de valoraciones y notificaciones
- Autenticación mediante JWT
- Manejo de archivos multimedia
- Relaciones complejas entre entidades
- Sistema de notificaciones en tiempo real
- Gestión de permisos y roles
- Todas las respuestas están en formato JSON
- Los códigos de estado HTTP indican el resultado de la operación
- Las fechas se manejan en formato ISO 8601
- Los IDs son numéricos y autoincrementales
Descripción: Inicia sesión de usuario y devuelve un token JWT.
Ejemplo Request:
{
"email": "usuario@ejemplo.com",
"password": "contraseña123"
}Ejemplo Response:
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}Notas:
- Si las credenciales son incorrectas, se devolverá un error 401 Unauthorized
- El token debe ser incluido en el header Authorization para las siguientes peticiones
Descripción: Registra un nuevo usuario en el sistema.
Ejemplo Request:
{
"email": "nuevo@ejemplo.com",
"password": "contraseña123",
"nombre": "Juan",
"apellido": "Pérez"
}Ejemplo Response:
{
"id": 1,
"nombre": "Juan",
"apellido": "Pérez",
"email": "nuevo@ejemplo.com"
}Descripción: Obtiene información del usuario autenticado.
Headers requeridos:
- Authorization: Bearer {token}
Ejemplo Response:
{
"id": 1,
"nombre": "Juan",
"apellido": "Pérez",
"email": "nuevo@ejemplo.com",
"perfil": {
"id": 1,
"usuarioId": 1,
"descripcion": "Amante de los animales",
"ubicacion": "Barcelona"
},
"mascotas": [
{
"id": 1,
"usuarioId": 1,
"nombre": "Toby",
"genero": "Macho",
"raza": "Labrador"
}
]
}Descripción: Obtiene todos los usuarios registrados en el sistema.
Ejemplo Response:
[
{
"id": 1,
"nombre": "Juan",
"apellido": "Pérez",
"email": "juan@ejemplo.com"
},
{
"id": 2,
"nombre": "María",
"apellido": "García",
"email": "maria@ejemplo.com"
}
]Notas:
- Si ocurre un error al obtener los usuarios, se devolverá un error 400 Bad Request
- La contraseña no se incluye en la respuesta por seguridad
Descripción: Busca usuarios por nombre y/o apellido.
Parámetros Query (opcionales):
- nombre: Texto para buscar en el nombre del usuario
- apellido: Texto para buscar en el apellido del usuario
Ejemplo Response:
[
{
"id": 1,
"nombre": "Juan",
"apellido": "Pérez",
"email": "juan@ejemplo.com"
},
{
"id": 3,
"nombre": "Juan Carlos",
"apellido": "Pérez García",
"email": "juancarlos@ejemplo.com"
}
]Notas:
- La búsqueda es parcial (usando
Containing), lo que significa que encontrará coincidencias parciales - Si se proporcionan ambos parámetros, buscará usuarios que coincidan con ambos criterios
- Si solo se proporciona nombre, buscará solo por nombre
- Si solo se proporciona apellido, buscará solo por apellido
- Si no se proporciona ningún parámetro, devolverá una lista vacía
- La búsqueda es insensible a mayúsculas/minúsculas
- La contraseña no se incluye en la respuesta por seguridad
- Si ocurre un error en la búsqueda, se devolverá un error 400 Bad Request
Descripción: Crea un nuevo usuario en el sistema.
Ejemplo Request:
{
"nombre": "Juan",
"apellido": "Pérez",
"email": "juan@ejemplo.com",
"password": "contraseña123"
}Ejemplo Response:
{
"id": 1,
"nombre": "Juan",
"apellido": "Pérez",
"email": "juan@ejemplo.com"
}Notas:
- Todos los campos son obligatorios
- El nombre y apellido tienen un límite de 50 caracteres
- El email tiene un límite de 50 caracteres y debe ser único
- La contraseña tiene un límite de 250 caracteres
- La contraseña no se devuelve en la respuesta por seguridad
- Si ocurre un error al crear el usuario, se devolverá un error 500 Internal Server Error
Descripción: Obtiene un usuario específico por su ID.
Ejemplo Response:
{
"id": 1,
"nombre": "Juan",
"apellido": "Pérez",
"email": "juan@ejemplo.com"
}Notas:
- Si el usuario no existe, se devolverá un error 404 Not Found
- La contraseña no se incluye en la respuesta por seguridad
- Si ocurre un error al obtener el usuario, se devolverá un error 400 Bad Request
Descripción: Actualiza un usuario existente.
Ejemplo Request:
{
"nombre": "Juan Carlos",
"apellido": "Pérez García",
"email": "juancarlos@ejemplo.com",
"password": "nuevaContraseña123"
}Ejemplo Response:
{
"id": 1,
"nombre": "Juan Carlos",
"apellido": "Pérez García",
"email": "juancarlos@ejemplo.com"
}Notas:
- Todos los campos son obligatorios
- El nombre y apellido tienen un límite de 50 caracteres
- El email tiene un límite de 50 caracteres y debe ser único
- La contraseña tiene un límite de 250 caracteres
- La contraseña no se devuelve en la respuesta por seguridad
- Si el usuario no existe, se devolverá un error 404 Not Found
- Si ocurre un error al actualizar el usuario, se devolverá un error 500 Internal Server Error
Descripción: Elimina un usuario existente.
Ejemplo Response:
{
"mensaje": "Usuario con ID: 1 eliminado correctamente"
}Notas:
- Si el usuario no existe, se devolverá un error 404 Not Found
- Si ocurre un error al eliminar el usuario, se devolverá un error 400 Bad Request
- La eliminación de un usuario también eliminará todas sus relaciones con grupos y eventos
Descripción: Actualiza parcialmente un usuario existente.
Ejemplo Request:
{
"nombre": "Juan Carlos",
"apellido": "Pérez García",
"email": "juancarlos@ejemplo.com"
}Ejemplo Response:
{
"id": 1,
"nombre": "Juan Carlos",
"apellido": "Pérez García",
"email": "juancarlos@ejemplo.com"
}Notas:
- Solo se actualizan los campos proporcionados en la petición
- El email debe ser único si se está actualizando
- No se permite actualizar la contraseña a través de este endpoint
- Si el usuario no existe, se devolverá un error 404 Not Found
- Si el email ya está en uso, se devolverá un error 400 Bad Request
Descripción: Actualiza la contraseña de un usuario.
Ejemplo Request:
{
"currentPassword": "contraseña_actual",
"newPassword": "nueva_contraseña"
}Ejemplo Response:
{
"id": 1,
"nombre": "Juan",
"apellido": "Pérez",
"email": "juan@ejemplo.com"
}Notas:
- Se requiere la contraseña actual para verificar la identidad del usuario
- La nueva contraseña se encripta automáticamente antes de guardarse
- Si la contraseña actual es incorrecta, se devolverá un error 400 Bad Request
- Si el usuario no existe, se devolverá un error 404 Not Found
- La contraseña no se devuelve en la respuesta por seguridad
Descripción: Restablece la contraseña de un usuario.
Ejemplo Request:
{
"email": "usuario@ejemplo.com",
"nuevaContrasena": "nueva_contraseña"
}Ejemplo Response:
{
"mensaje": "Contraseña actualizada exitosamente"
}Notas:
- El email y la nueva contraseña son obligatorios
- La nueva contraseña debe tener al menos 8 caracteres
- Si el email no existe, se devolverá un error 400 Bad Request
- Si la contraseña no cumple con los requisitos mínimos, se devolverá un error 400 Bad Request
- La nueva contraseña no puede ser igual a la contraseña actual
- Si ocurre un error interno, se devolverá un error 500 Internal Server Error
Descripción: Obtiene todos los perfiles existentes en el sistema.
Ejemplo Response:
[
{
"id": 1,
"usuario": {
"id": 1,
"nombre": "Juan",
"apellido": "Pérez",
"email": "juan@ejemplo.com"
},
"descripcion": "Amante de los animales",
"fecha_nacimiento": "1990-01-01",
"img": "https://ejemplo.com/imagen.jpg"
}
]Notas:
- Si ocurre un error al obtener los perfiles, se devolverá un error 500 Internal Server Error
- Si no hay perfiles, se devolverá una lista vacía
Descripción: Crea un nuevo perfil en el sistema con imagen opcional.
Content-Type: multipart/form-data
Parámetros:
- descripcion: string (requerido)
- fechaNacimiento: string (requerido, formato: YYYY-MM-DD)
- usuarioId: number (requerido)
- imagen: file (opcional)
Ejemplo Request (multipart/form-data):
descripcion: "Amante de los animales"
fechaNacimiento: "1990-01-01"
usuarioId: 1
imagen: [archivo de imagen]
Ejemplo Response:
{
"id": 1,
"usuario_id": 1,
"descripcion": "Amante de los animales",
"fecha_nacimiento": "1990-01-01",
"img": "/uploads/perfiles/2024/03/nombre-archivo.jpg"
}Notas:
- El usuarioId es obligatorio y debe corresponder a un usuario existente
- La fechaNacimiento debe estar en formato YYYY-MM-DD
- Un usuario solo puede tener un perfil. Si intenta crear otro, se devolverá un error 400 Bad Request
- Para la imagen:
- Tipos permitidos: jpg, jpeg, png, gif
- Tamaño máximo: 10MB
- Se almacena en
uploads/perfiles/YYYY/MM/ - Las URLs son accesibles vía
/uploads/perfiles/YYYY/MM/nombre-archivo
- Si ocurre un error al crear el perfil, se devolverá un error 500 Internal Server Error
- La respuesta incluye el ID del perfil, el ID del usuario, la descripción, la fecha de nacimiento y la ruta de la imagen
Descripción: Obtiene el perfil asociado a un usuario específico.
Ejemplo Response:
{
"id": 1,
"usuario_id": 1,
"descripcion": "Amante de los animales",
"fecha_nacimiento": "1990-01-01",
"img": "/uploads/perfiles/2024/03/nombre-archivo.jpg"
}Notas:
- Si el perfil no existe, se devolverá un error 404 Not Found
- Si ocurre un error al obtener el perfil, se devolverá un error 500 Internal Server Error
- La respuesta incluye el ID del perfil, el ID del usuario, la descripción, la fecha de nacimiento y la ruta de la imagen
Descripción: Actualiza el perfil de un usuario específico con imagen opcional.
Content-Type: multipart/form-data
Parámetros:
- descripcion: string (requerido)
- fechaNacimiento: string (requerido, formato: YYYY-MM-DD)
- imagen: file (opcional)
Ejemplo Request (multipart/form-data):
descripcion: "Amante de los animales y la naturaleza"
fechaNacimiento: "1990-01-01"
imagen: [archivo de imagen]
Ejemplo Response:
{
"id": 1,
"usuario_id": 1,
"descripcion": "Amante de los animales y la naturaleza",
"fecha_nacimiento": "1990-01-01",
"img": "/uploads/perfiles/2024/03/nueva-imagen.jpg"
}Notas:
- Si el perfil no existe, se devolverá un error 404 Not Found
- La fechaNacimiento debe estar en formato YYYY-MM-DD
- Para la imagen:
- Tipos permitidos: jpg, jpeg, png, gif
- Tamaño máximo: 10MB
- Al actualizar con nueva imagen, la anterior se elimina automáticamente
- Se almacena en
uploads/perfiles/YYYY/MM/ - Las URLs son accesibles vía
/uploads/perfiles/YYYY/MM/nombre-archivo
- La respuesta incluye el ID del perfil, el ID del usuario, la descripción, la fecha de nacimiento y la ruta de la imagen actualizada
Descripción: Elimina el perfil de un usuario específico y su imagen asociada.
Ejemplo Response:
{
"mensaje": "Se ha eliminado el perfil con id: 1"
}Notas:
- Si el perfil no existe, se devolverá un error 404 Not Found
- La imagen asociada al perfil se elimina automáticamente
- Si ocurre un error al eliminar el perfil, se devolverá un error 500 Internal Server Error
Descripción: Obtiene todas las publicaciones con posibilidad de filtrar por contenido o rango de fechas.
Parámetros Query (opcionales):
- contenido: Texto para filtrar por contenido
- fechaInicio: Fecha inicial para filtrar por rango (formato: YYYY-MM-DDThh:mm:ss)
- fechaFin: Fecha final para filtrar por rango (formato: YYYY-MM-DDThh:mm:ss)
Ejemplo Response:
[
{
"id": 1,
"grupoId": 1,
"nombreGrupo": "Amantes de los Perros",
"creadorId": 1,
"nombreCreador": "Juan",
"apellidoCreador": "Pérez",
"contenido": "¡Hoy adopté un nuevo perrito!",
"fecha": "2024-03-20T15:30:00",
"img": "https://ejemplo.com/imagen.jpg",
"createdAt": "2024-03-20T15:30:00",
"updatedAt": "2024-03-20T15:30:00",
"comentarios": [
{
"id": 1,
"contenido": "¡Felicidades!",
"fecha": "2024-03-20T15:35:00"
}
]
}
]Notas:
- Si no se proporcionan filtros, se devuelven todas las publicaciones
- Si se proporciona contenido, se buscan publicaciones que contengan ese texto
- Si se proporcionan fechas, se filtran las publicaciones entre esas fechas
- Las fechas deben estar en formato ISO 8601
Descripción: Crea una nueva publicación en el sistema.
Content-Type: multipart/form-data
Parámetros:
- contenido: Texto de la publicación (requerido)
- creadorId: ID del usuario creador (requerido)
- grupoId: ID del grupo (opcional)
- imagen: Archivo de imagen (opcional)
Ejemplo Request (multipart/form-data):
contenido: "¡Hoy adopté un nuevo perrito!"
creadorId: 1
grupoId: 1
imagen: [archivo de imagen]
Ejemplo Response:
{
"id": 1,
"grupoId": 1,
"nombreGrupo": "Amantes de los Perros",
"creadorId": 1,
"nombreCreador": "Juan",
"apellidoCreador": "Pérez",
"contenido": "¡Hoy adopté un nuevo perrito!",
"fecha": "2024-03-20T15:30:00",
"img": "/uploads/posts/2024/03/imagen-123456.jpg",
"createdAt": "2024-03-20T15:30:00",
"updatedAt": "2024-03-20T15:30:00",
"comentarios": []
}Notas:
- La imagen debe ser un archivo de tipo imagen (jpg, jpeg, png, gif)
- El tamaño máximo de la imagen es 10MB
- La imagen se almacenará en el directorio
uploads/posts/YYYY/MM/ - El nombre del archivo se generará automáticamente usando UUID
- La URL de la imagen será accesible a través de
/uploads/posts/YYYY/MM/nombre-archivo
Descripción: Actualiza una publicación existente, incluyendo la imagen.
Content-Type: multipart/form-data
Parámetros:
- contenido: Texto de la publicación (requerido)
- creadorId: ID del usuario creador (requerido)
- grupoId: ID del grupo (opcional)
- imagen: Archivo de imagen (opcional)
Ejemplo Request (multipart/form-data):
contenido: "¡Actualización: Mi perrito ya está adaptado!"
creadorId: 1
grupoId: 1
imagen: [nuevo archivo de imagen]
Ejemplo Response:
{
"id": 1,
"grupoId": 1,
"nombreGrupo": "Amantes de los Perros",
"creadorId": 1,
"nombreCreador": "Juan",
"apellidoCreador": "Pérez",
"contenido": "¡Actualización: Mi perrito ya está adaptado!",
"fecha": "2024-03-20T16:30:00",
"img": "/uploads/posts/2024/03/nueva-imagen-789012.jpg",
"createdAt": "2024-03-20T15:30:00",
"updatedAt": "2024-03-20T16:30:00",
"comentarios": []
}Notas:
- Si se proporciona una nueva imagen, la imagen anterior será eliminada
- La imagen debe ser un archivo de tipo imagen (jpg, jpeg, png, gif)
- El tamaño máximo de la imagen es 10MB
- La imagen se almacenará en el directorio
uploads/posts/YYYY/MM/ - El nombre del archivo se generará automáticamente usando UUID
- La URL de la imagen será accesible a través de
/uploads/posts/YYYY/MM/nombre-archivo
Descripción: Elimina una publicación y su imagen asociada.
Ejemplo Response:
{
"mensaje": "Post eliminado correctamente"
}Notas:
- Al eliminar un post, también se eliminará la imagen asociada del sistema de archivos
- Si la publicación no existe, se devolverá un error 404 Not Found
- Si ocurre un error al eliminar, se devolverá un error 500 Internal Server Error
Descripción: Obtiene todas las publicaciones realizadas por un usuario específico.
Ejemplo Response:
[
{
"id": 1,
"grupoId": 1,
"nombreGrupo": "Amantes de los Perros",
"creadorId": 1,
"nombreCreador": "Juan",
"apellidoCreador": "Pérez",
"contenido": "¡Hoy adopté un nuevo perrito!",
"fecha": "2024-03-20T15:30:00",
"img": "https://ejemplo.com/imagen.jpg",
"createdAt": "2024-03-20T15:30:00",
"updatedAt": "2024-03-20T15:30:00",
"comentarios": []
}
]Notas:
- Si el usuario no existe, se devolverá un error 404 Not Found
- Si el usuario no tiene publicaciones, se devolverá una lista vacía
Descripción: Obtiene todas las publicaciones realizadas en un grupo específico.
Ejemplo Response:
[
{
"id": 1,
"grupoId": 1,
"nombreGrupo": "Amantes de los Perros",
"creadorId": 1,
"nombreCreador": "Juan",
"apellidoCreador": "Pérez",
"contenido": "¡Hoy adopté un nuevo perrito!",
"fecha": "2024-03-20T15:30:00",
"img": "https://ejemplo.com/imagen.jpg",
"createdAt": "2024-03-20T15:30:00",
"updatedAt": "2024-03-20T15:30:00",
"comentarios": []
}
]Notas:
- Si el grupo no existe, se devolverá un error 404 Not Found
- Si el grupo no tiene publicaciones, se devolverá una lista vacía
Descripción: Obtiene todos los comentarios asociados a una publicación específica.
Ejemplo Response:
[
{
"id": 1,
"postId": 1,
"creadorId": 1,
"nombreCreador": "Juan",
"apellidoCreador": "Pérez",
"contenido": "¡Qué lindo perro!",
"fecha": "2024-03-20T15:30:00",
"img": "https://ejemplo.com/imagen.jpg",
"createdAt": "2024-03-20T15:30:00",
"updatedAt": "2024-03-20T15:30:00"
}
]Descripción: Crea un nuevo comentario en una publicación específica.
Ejemplo Request:
{
"creadorId": 1,
"contenido": "¡Qué lindo perro!",
"fecha": "2024-03-20T15:30:00",
"img": "https://ejemplo.com/imagen.jpg"
}Ejemplo Response:
{
"id": 1,
"postId": 1,
"creadorId": 1,
"nombreCreador": "Juan",
"apellidoCreador": "Pérez",
"contenido": "¡Qué lindo perro!",
"fecha": "2024-03-20T15:30:00",
"img": "https://ejemplo.com/imagen.jpg",
"createdAt": "2024-03-20T15:30:00",
"updatedAt": "2024-03-20T15:30:00"
}Notas:
- Si el post no existe, se devolverá un error 404 Not Found
- El contenido del comentario no puede exceder los 1000 caracteres
- La fecha es opcional, si no se proporciona se usará la fecha actual
Descripción: Obtiene un comentario específico por su ID.
Ejemplo Response:
{
"id": 1,
"postId": 1,
"creadorId": 1,
"nombreCreador": "Juan",
"apellidoCreador": "Pérez",
"contenido": "¡Qué lindo perro!",
"fecha": "2024-03-20T15:30:00",
"img": "https://ejemplo.com/imagen.jpg",
"createdAt": "2024-03-20T15:30:00",
"updatedAt": "2024-03-20T15:30:00"
}Descripción: Actualiza un comentario existente.
Ejemplo Request:
{
"contenido": "¡Qué lindo perro! Me encanta",
"fecha": "2024-03-20T15:35:00",
"img": "https://ejemplo.com/nueva-imagen.jpg"
}Ejemplo Response:
{
"id": 1,
"postId": 1,
"creadorId": 1,
"nombreCreador": "Juan",
"apellidoCreador": "Pérez",
"contenido": "¡Qué lindo perro! Me encanta",
"fecha": "2024-03-20T15:35:00",
"img": "https://ejemplo.com/nueva-imagen.jpg",
"createdAt": "2024-03-20T15:30:00",
"updatedAt": "2024-03-20T15:35:00"
}Descripción: Elimina un comentario existente.
Ejemplo Response:
{
"mensaje": "Comentario eliminado con éxito"
}Descripción: Envía un nuevo mensaje de un usuario a otro.
Ejemplo Request:
{
"emisorId": 1,
"receptorId": 2,
"contenido": "¡Hola! ¿Cómo estás?"
}Ejemplo Response:
{
"id": 1,
"emisorId": 1,
"receptorId": 2,
"visto": false,
"contenido": "¡Hola! ¿Cómo estás?",
"fechaHora": "2024-03-20T15:30:00",
"createdAt": "2024-03-20T15:30:00",
"updatedAt": "2024-03-20T15:30:00"
}Notas:
- Si el emisor o receptor no existen, se devolverá un error 400 Bad Request
- El contenido del mensaje no puede exceder los 255 caracteres
Descripción: Obtiene la conversación completa entre dos usuarios específicos.
Ejemplo Response:
[
{
"id": 1,
"emisorId": 1,
"receptorId": 2,
"visto": true,
"contenido": "¡Hola! ¿Cómo estás?",
"fechaHora": "2024-03-20T15:30:00",
"createdAt": "2024-03-20T15:30:00",
"updatedAt": "2024-03-20T15:30:00"
},
{
"id": 2,
"emisorId": 2,
"receptorId": 1,
"visto": false,
"contenido": "¡Hola! Todo bien, gracias",
"fechaHora": "2024-03-20T15:31:00",
"createdAt": "2024-03-20T15:31:00",
"updatedAt": "2024-03-20T15:31:00"
}
]Descripción: Marca como vistos todos los mensajes enviados por un usuario a otro.
Ejemplo Response:
{
"message": "Mensajes marcados como vistos"
}Descripción: Obtiene todos los mensajes no vistos por un usuario específico.
Ejemplo Response:
[
{
"id": 2,
"emisorId": 2,
"receptorId": 1,
"visto": false,
"contenido": "¡Hola! Todo bien, gracias",
"fechaHora": "2024-03-20T15:31:00",
"createdAt": "2024-03-20T15:31:00",
"updatedAt": "2024-03-20T15:31:00"
}
]Descripción: Obtiene todos los mensajes enviados por un usuario específico.
Ejemplo Response:
[
{
"id": 1,
"emisorId": 1,
"receptorId": 2,
"visto": true,
"contenido": "¡Hola! ¿Cómo estás?",
"fechaHora": "2024-03-20T15:30:00",
"createdAt": "2024-03-20T15:30:00",
"updatedAt": "2024-03-20T15:30:00"
}
]Descripción: Obtiene todos los mensajes recibidos por un usuario específico.
Ejemplo Response:
[
{
"id": 2,
"emisorId": 2,
"receptorId": 1,
"visto": false,
"contenido": "¡Hola! Todo bien, gracias",
"fechaHora": "2024-03-20T15:31:00",
"createdAt": "2024-03-20T15:31:00",
"updatedAt": "2024-03-20T15:31:00"
}
]Descripción: Elimina toda la conversación entre dos usuarios específicos.
Ejemplo Response:
{
"message": "Conversación eliminada"
}Descripción: Obtiene todos los eventos existentes en el sistema.
Ejemplo Response:
[
{
"id": 1,
"nombre": "Adopción de mascotas",
"descripcion": "Evento de adopción de mascotas en el parque central",
"ubicacion": "Parque Central, Barcelona",
"fecha": "2024-04-15",
"creadorId": 1
}
]Descripción: Crea un nuevo evento en el sistema.
Parámetros URL:
- usuarioId: ID del usuario que será creador del evento (requerido)
Ejemplo Request:
{
"nombre": "Adopción de mascotas",
"descripcion": "Evento de adopción de mascotas en el parque central",
"ubicacion": "Parque Central, Barcelona",
"fecha": "2024-04-15"
}Ejemplo Response:
{
"id": 1,
"nombre": "Adopción de mascotas",
"descripcion": "Evento de adopción de mascotas en el parque central",
"ubicacion": "Parque Central, Barcelona",
"fecha": "2024-04-15",
"creadorId": 1
}Notas:
- El nombre del evento es obligatorio y no puede estar vacío
- Si el usuario no existe, se devolverá un error 400 Bad Request
- Si el nombre está vacío, se devolverá un error 400 Bad Request
- El usuario especificado en usuarioId será automáticamente asignado como creador del evento en la tabla usuario_evento
Descripción: Obtiene un evento específico por su ID.
Ejemplo Response:
{
"id": 1,
"nombre": "Adopción de mascotas",
"descripcion": "Evento de adopción de mascotas en el parque central",
"ubicacion": "Parque Central, Barcelona",
"fecha": "2024-04-15",
"creadorId": 1
}Notas:
- Si el evento no existe, se devolverá un error 404 Not Found
Descripción: Actualiza un evento existente.
Ejemplo Request:
{
"nombre": "Gran evento de adopción de mascotas",
"descripcion": "Evento de adopción de mascotas en el parque central con más de 50 mascotas",
"ubicacion": "Parque Central, Barcelona",
"fecha": "2024-04-15"
}Ejemplo Response:
{
"id": 1,
"nombre": "Gran evento de adopción de mascotas",
"descripcion": "Evento de adopción de mascotas en el parque central con más de 50 mascotas",
"ubicacion": "Parque Central, Barcelona",
"fecha": "2024-04-15",
"creadorId": 1
}Notas:
- Si el evento no existe, se devolverá un error 404 Not Found
- El nombre del evento es obligatorio y no puede estar vacío
Descripción: Elimina un evento existente.
Ejemplo Response:
Status: 204 No Content
Notas:
- Si el evento no existe, se devolverá un error 404 Not Found
- Si la eliminación es exitosa, se devolverá un status 204 sin contenido
- La eliminación del evento también eliminará todas sus relaciones con usuarios en la tabla usuario_evento
Descripción: Obtiene todos los grupos existentes en el sistema.
Ejemplo Response:
[
{
"id": 1,
"nombre": "Amantes de los Perros",
"descripcion": "Grupo para compartir experiencias sobre perros"
}
]Descripción: Crea un nuevo grupo y asigna al usuario como administrador.
Parámetros URL:
- usuarioId: ID del usuario que será administrador del grupo (requerido)
Ejemplo Request:
{
"nombre": "Amantes de los Perros",
"descripcion": "Grupo para compartir experiencias sobre perros"
}Ejemplo Response:
{
"id": 1,
"nombre": "Amantes de los Perros",
"descripcion": "Grupo para compartir experiencias sobre perros"
}Notas:
- El usuario especificado en usuarioId será automáticamente asignado como administrador del grupo
- El nombre del grupo es obligatorio
- Si el usuario no existe, se devolverá un error
Descripción: Obtiene un grupo específico por su ID.
Ejemplo Response:
{
"id": 1,
"nombre": "Amantes de los Perros",
"descripcion": "Grupo para compartir experiencias sobre perros"
}Descripción: Actualiza un grupo existente.
Ejemplo Request:
{
"nombre": "Amantes de los Perros y Gatos",
"descripcion": "Grupo para compartir experiencias sobre perros y gatos"
}Ejemplo Response:
{
"id": 1,
"nombre": "Amantes de los Perros y Gatos",
"descripcion": "Grupo para compartir experiencias sobre perros y gatos"
}Descripción: Elimina un grupo existente.
Ejemplo Response:
{
"mensaje": "Grupo eliminado correctamente"
}Descripción: Obtiene todas las mascotas asociadas a un usuario específico.
Ejemplo Response:
[
{
"id": 1,
"usuarioId": 1,
"nombre": "Toby",
"genero": "Macho",
"especie": "Labrador",
"foto": "/uploads/mascotas/2024/03/toby-123456.jpg"
}
]Notas:
- Si el usuario no existe, se devolverá un error 400 Bad Request
- Si el usuario no tiene mascotas, se devolverá una lista vacía
- La foto es opcional y puede ser null
Descripción: Crea una nueva mascota asociada a un usuario específico.
Content-Type: multipart/form-data
Parámetros:
- nombre: string (requerido)
- genero: string (requerido)
- especie: string (requerido)
- imagen: file (opcional)
Ejemplo Request (multipart/form-data):
nombre: "Toby"
genero: "Macho"
especie: "Labrador"
imagen: [archivo de imagen]
Ejemplo Response:
{
"id": 1,
"usuarioId": 1,
"nombre": "Toby",
"genero": "Macho",
"especie": "Labrador",
"foto": "/uploads/mascotas/2024/03/toby-123456.jpg"
}Notas:
- El nombre, género y especie son campos obligatorios
- El género debe tener un máximo de 10 caracteres
- El nombre y la especie deben tener un máximo de 50 caracteres
- Si el usuario no existe, se devolverá un error 400 Bad Request
- Para la imagen:
- Tipos permitidos: jpg, jpeg, png, gif
- Tamaño máximo: 5MB
- Se almacena en
uploads/mascotas/YYYY/MM/ - Las URLs son accesibles vía
/uploads/mascotas/YYYY/MM/nombre-archivo - La imagen es opcional
Descripción: Obtiene una mascota específica de un usuario por su ID.
Ejemplo Response:
{
"id": 1,
"usuarioId": 1,
"nombre": "Toby",
"genero": "Macho",
"especie": "Labrador",
"foto": "/uploads/mascotas/2024/03/toby-123456.jpg"
}Notas:
- Si la mascota no existe o no pertenece al usuario, se devolverá un error 404 Not Found
Descripción: Actualiza una mascota específica de un usuario.
Content-Type: multipart/form-data
Parámetros:
- nombre: string (requerido)
- genero: string (requerido)
- especie: string (requerido)
- imagen: file (opcional)
Ejemplo Request (multipart/form-data):
nombre: "Toby"
genero: "Macho"
especie: "Labrador Retriever"
imagen: [nuevo archivo de imagen]
Ejemplo Response:
{
"id": 1,
"usuarioId": 1,
"nombre": "Toby",
"genero": "Macho",
"especie": "Labrador Retriever",
"foto": "/uploads/mascotas/2024/03/nueva-imagen-789012.jpg"
}Notas:
- Si la mascota no existe o no pertenece al usuario, se devolverá un error 404 Not Found
- El nombre, género y especie son campos obligatorios
- El género debe tener un máximo de 10 caracteres
- El nombre y la especie deben tener un máximo de 50 caracteres
- Para la imagen:
- Tipos permitidos: jpg, jpeg, png, gif
- Tamaño máximo: 5MB
- Al actualizar con nueva imagen, la anterior se elimina automáticamente
- Se almacena en
uploads/mascotas/YYYY/MM/ - Las URLs son accesibles vía
/uploads/mascotas/YYYY/MM/nombre-archivo - La imagen es opcional
Descripción: Elimina una mascota específica de un usuario.
Ejemplo Response:
{
"mensaje": "Mascota eliminada con ID: 1"
}Notas:
- Si la mascota no existe o no pertenece al usuario, se devolverá un error 404 Not Found
- Si la eliminación es exitosa, se devolverá un mensaje de confirmación
- La imagen asociada a la mascota se elimina automáticamente del sistema de archivos
Descripción: Obtiene todas las notificaciones existentes en el sistema.
Ejemplo Response:
[
{
"id": 1,
"fecha": "2024-03-20T15:30:00"
}
]Notas:
- Si ocurre un error al obtener las notificaciones, se devolverá un error 500 Internal Server Error
- Si no hay notificaciones, se devolverá una lista vacía
Descripción: Obtiene una notificación específica por su ID.
Ejemplo Response:
{
"id": 1,
"fecha": "2024-03-20T15:30:00"
}Notas:
- Si la notificación no existe, se devolverá un error 404 Not Found
- Si ocurre un error al obtener la notificación, se devolverá un error 500 Internal Server Error
Descripción: Crea una nueva notificación en el sistema.
Ejemplo Request:
{
"fecha": "2024-03-20T15:30:00"
}Ejemplo Response:
{
"id": 1,
"fecha": "2024-03-20T15:30:00"
}Notas:
- La fecha es un campo obligatorio y debe ser una fecha válida
- El ID se genera automáticamente por el sistema
- La fecha debe estar en formato ISO 8601 (YYYY-MM-DDThh:mm:ss)
- Si ocurre un error al crear la notificación, se devolverá un error 500 Internal Server Error con un mensaje descriptivo
- La respuesta incluirá el ID generado automáticamente junto con la fecha proporcionada
Descripción: Actualiza una notificación existente.
Ejemplo Request:
{
"fecha": "2024-03-20T16:30:00"
}Ejemplo Response:
{
"id": 1,
"fecha": "2024-03-20T16:30:00"
}Notas:
- Si la notificación no existe, se devolverá un error 404 Not Found
- La fecha es un campo obligatorio
- Si ocurre un error al actualizar la notificación, se devolverá un error 500 Internal Server Error
Descripción: Elimina una notificación existente.
Ejemplo Response:
{
"mensaje": "Notificación eliminada correctamente"
}Notas:
- Si la notificación no existe, se devolverá un error 404 Not Found
- Si ocurre un error al eliminar la notificación, se devolverá un error 500 Internal Server Error
Descripción: Obtiene todos los usuarios que sigue un usuario específico.
Ejemplo Response:
[
{
"id": 1,
"usuarioQueSigueId": 1,
"usuarioQueEsSeguidoId": 2
},
{
"id": 2,
"usuarioQueSigueId": 1,
"usuarioQueEsSeguidoId": 3
}
]Notas:
- Si el usuario no existe, se devolverá un error 500 Internal Server Error
- Si el usuario no sigue a nadie, se devolverá una lista vacía
Descripción: Crea una relación de seguimiento entre dos usuarios.
Ejemplo Response:
{
"id": 1,
"usuarioQueSigueId": 1,
"usuarioQueEsSeguidoId": 2
}Notas:
- No se puede seguir al mismo usuario (usuarioId = usuarioASeguirId)
- El usuario que sigue debe existir
- El usuario a seguir debe existir
- No se puede seguir a un usuario que ya se está siguiendo
- Si alguna de estas validaciones falla, se devolverá un error 400 Bad Request con un mensaje descriptivo
Descripción: Crea una relación de seguimiento utilizando un DTO.
Ejemplo Request:
{
"usuarioQueSigueId": 1,
"usuarioQueEsSeguidoId": 2
}Ejemplo Response:
{
"id": 1,
"usuarioQueSigueId": 1,
"usuarioQueEsSeguidoId": 2
}Notas:
- El usuarioId de la ruta tiene prioridad sobre el usuarioQueSigueId del DTO
- No se puede seguir al mismo usuario
- El usuario que sigue debe existir
- El usuario a seguir debe existir
- No se puede seguir a un usuario que ya se está siguiendo
- Si alguna de estas validaciones falla, se devolverá un error 400 Bad Request con un mensaje descriptivo
Descripción: Elimina una relación de seguimiento entre dos usuarios.
Ejemplo Response:
{
"mensaje": "Has dejado de seguir al usuario con ID: 2"
}Notas:
- Si la relación de seguimiento no existe, se devolverá un error 404 Not Found
- Si ocurre un error al eliminar, se devolverá un error 500 Internal Server Error
Descripción: Obtiene todas las valoraciones existentes en el sistema.
Ejemplo Response:
[
{
"id": 1,
"autorId": 1,
"nombreAutor": "Juan",
"apellidoAutor": "Pérez",
"receptorId": 2,
"nombreReceptor": "María",
"apellidoReceptor": "García",
"puntuacion": "5",
"contenido": "Excelente servicio",
"fecha": "2024-03-20T15:30:00",
"createdAt": "2024-03-20T15:30:00",
"updatedAt": "2024-03-20T15:30:00"
}
]Notas:
- Si ocurre un error al obtener las valoraciones, se devolverá un error 400 Bad Request
- Si no hay valoraciones, se devolverá una lista vacía
Descripción: Obtiene una valoración específica por su ID.
Ejemplo Response:
{
"id": 1,
"autorId": 1,
"nombreAutor": "Juan",
"apellidoAutor": "Pérez",
"receptorId": 2,
"nombreReceptor": "María",
"apellidoReceptor": "García",
"puntuacion": "5",
"contenido": "Excelente servicio",
"fecha": "2024-03-20T15:30:00",
"createdAt": "2024-03-20T15:30:00",
"updatedAt": "2024-03-20T15:30:00"
}Notas:
- Si la valoración no existe, se devolverá un error 404 Not Found
- Si ocurre un error al obtener la valoración, se devolverá un error 400 Bad Request
Descripción: Crea una nueva valoración de un usuario hacia otro.
Ejemplo Request:
{
"puntuacion": "5",
"contenido": "Excelente servicio",
"fecha": "2024-03-20T15:30:00"
}Ejemplo Response:
{
"id": 1,
"autorId": 1,
"nombreAutor": "Juan",
"apellidoAutor": "Pérez",
"receptorId": 2,
"nombreReceptor": "María",
"apellidoReceptor": "García",
"puntuacion": "5",
"contenido": "Excelente servicio",
"fecha": "2024-03-20T15:30:00",
"createdAt": "2024-03-20T15:30:00",
"updatedAt": "2024-03-20T15:30:00"
}Notas:
- El autor y el receptor son obligatorios y deben existir
- La puntuación debe ser un valor entre 1 y 5
- El contenido es obligatorio
- La fecha es opcional, si no se proporciona se usará la fecha actual
- Si ocurre un error al crear la valoración, se devolverá un error 400 Bad Request
Descripción: Actualiza una valoración existente.
Ejemplo Request:
{
"puntuacion": "4",
"contenido": "Buen servicio, pero podría mejorar",
"fecha": "2024-03-20T16:30:00"
}Ejemplo Response:
{
"id": 1,
"autorId": 1,
"nombreAutor": "Juan",
"apellidoAutor": "Pérez",
"receptorId": 2,
"nombreReceptor": "María",
"apellidoReceptor": "García",
"puntuacion": "4",
"contenido": "Buen servicio, pero podría mejorar",
"fecha": "2024-03-20T16:30:00",
"createdAt": "2024-03-20T15:30:00",
"updatedAt": "2024-03-20T16:30:00"
}Notas:
- Si la valoración no existe, se devolverá un error 404 Not Found
- La puntuación debe ser un valor entre 1 y 5
- El contenido es obligatorio
- Si ocurre un error al actualizar la valoración, se devolverá un error 400 Bad Request
Descripción: Elimina una valoración existente.
Ejemplo Response:
{
"mensaje": "Valoración eliminada correctamente"
}Notas:
- Si la valoración no existe, se devolverá un error 404 Not Found
- Si ocurre un error al eliminar la valoración, se devolverá un error 400 Bad Request
Descripción: Obtiene todas las valoraciones recibidas por un usuario específico.
Ejemplo Response:
[
{
"id": 1,
"autorId": 1,
"nombreAutor": "Juan",
"apellidoAutor": "Pérez",
"receptorId": 2,
"nombreReceptor": "María",
"apellidoReceptor": "García",
"puntuacion": "5",
"contenido": "Excelente servicio",
"fecha": "2024-03-20T15:30:00",
"createdAt": "2024-03-20T15:30:00",
"updatedAt": "2024-03-20T15:30:00"
}
]Notas:
- Si el usuario no existe, se devolverá un error 400 Bad Request
- Si el usuario no tiene valoraciones recibidas, se devolverá una lista vacía
Descripción: Obtiene todas las valoraciones emitidas por un usuario específico.
Ejemplo Response:
[
{
"id": 1,
"autorId": 1,
"nombreAutor": "Juan",
"apellidoAutor": "Pérez",
"receptorId": 2,
"nombreReceptor": "María",
"apellidoReceptor": "García",
"puntuacion": "5",
"contenido": "Excelente servicio",
"fecha": "2024-03-20T15:30:00",
"createdAt": "2024-03-20T15:30:00",
"updatedAt": "2024-03-20T15:30:00"
}
]Notas:
- Si el usuario no existe, se devolverá un error 400 Bad Request
- Si el usuario no tiene valoraciones emitidas, se devolverá una lista vacía
Descripción: Obtiene todas las relaciones entre usuarios y comentarios.
Ejemplo Response:
[
{
"id": 1,
"usuarioId": 1,
"comentarioId": 1,
"like": true,
"fecha": "2024-03-20T15:30:00"
},
{
"id": 2,
"usuarioId": 2,
"comentarioId": 1,
"like": false,
"fecha": "2024-03-20T15:35:00"
}
]Notas:
- La fecha se genera automáticamente al crear la relación
- El campo 'like' indica si el usuario dio like (true) o dislike (false) al comentario
Descripción: Obtiene una relación específica entre usuario y comentario por su ID.
Ejemplo Response:
{
"id": 1,
"usuarioId": 1,
"comentarioId": 1,
"like": true,
"fecha": "2024-03-20T15:30:00"
}Notas:
- Si la relación no existe, se devolverá un error 404 Not Found
Descripción: Obtiene todas las relaciones de un usuario específico con comentarios.
Ejemplo Response:
[
{
"id": 1,
"usuarioId": 1,
"comentarioId": 1,
"like": true,
"fecha": "2024-03-20T15:30:00"
},
{
"id": 3,
"usuarioId": 1,
"comentarioId": 2,
"like": false,
"fecha": "2024-03-20T16:00:00"
}
]Notas:
- Si el usuario no existe, se devolverá un error 404 Not Found
- Si el usuario no tiene relaciones con comentarios, se devolverá una lista vacía
Descripción: Obtiene todas las relaciones de un comentario específico con usuarios.
Ejemplo Response:
[
{
"id": 1,
"usuarioId": 1,
"comentarioId": 1,
"like": true,
"fecha": "2024-03-20T15:30:00"
},
{
"id": 2,
"usuarioId": 2,
"comentarioId": 1,
"like": false,
"fecha": "2024-03-20T15:35:00"
}
]Notas:
- Si el comentario no existe, se devolverá un error 404 Not Found
- Si el comentario no tiene relaciones con usuarios, se devolverá una lista vacía
Descripción: Obtiene todas las relaciones de un post específico con usuarios.
Ejemplo Response:
[
{
"id": 1,
"postId": 1,
"usuarioId": 1,
"fecha": "2024-03-20T15:30:00"
},
{
"id": 3,
"postId": 1,
"usuarioId": 2,
"fecha": "2024-03-20T15:35:00"
}
]Notas:
- Si el post no existe, se devolverá un error 404 Not Found
- Si el post no tiene relaciones con usuarios, se devolverá una lista vacía
Descripción: Crea una nueva relación entre un usuario y un comentario.
Ejemplo Request:
{
"usuarioId": 1,
"comentarioId": 1,
"like": true
}Ejemplo Response:
{
"id": 1,
"usuarioId": 1,
"comentarioId": 1,
"like": true,
"fecha": "2024-03-20T15:30:00"
}Notas:
- Todos los campos son obligatorios
- No se puede crear una relación duplicada entre el mismo usuario y comentario
- El usuario y el comentario deben existir
- La fecha se genera automáticamente
- Si alguna validación falla, se devolverá un error 400 Bad Request
Descripción: Elimina una relación específica entre usuario y comentario.
Ejemplo Response:
Status: 204 No Content
Notas:
- Si la relación no existe, se devolverá un error 404 Not Found
- Si la eliminación es exitosa, se devolverá un status 204 sin contenido
Descripción: Elimina todas las relaciones de un usuario específico con comentarios.
Ejemplo Response:
Status: 204 No Content
Notas:
- Si el usuario no existe, se devolverá un error 404 Not Found
- Si la eliminación es exitosa, se devolverá un status 204 sin contenido
Descripción: Elimina todas las relaciones de un comentario específico con usuarios.
Ejemplo Response:
Status: 204 No Content
Notas:
- Si el comentario no existe, se devolverá un error 404 Not Found
- Si la eliminación es exitosa, se devolverá un status 204 sin contenido
Descripción: Obtiene todas las relaciones de un post específico con usuarios.
Ejemplo Response:
[
{
"id": 1,
"postId": 1,
"usuarioId": 1,
"fecha": "2024-03-20T15:30:00"
},
{
"id": 3,
"postId": 1,
"usuarioId": 2,
"fecha": "2024-03-20T15:35:00"
}
]Notas:
- Si el post no existe, se devolverá un error 404 Not Found
- Si el post no tiene relaciones, se devolverá una lista vacía
Descripción: Obtiene todas las relaciones entre usuarios y eventos.
Ejemplo Response:
[
{
"id": 1,
"usuarioId": 1,
"eventoId": 1,
"rol": "CREADOR"
},
{
"id": 2,
"usuarioId": 2,
"eventoId": 1,
"rol": "ASISTENTE"
}
]Notas:
- El campo 'rol' puede ser "CREADOR" o "ASISTENTE"
- Cada usuario puede tener un solo rol por evento
- La relación se crea automáticamente al crear un evento, asignando al usuario como "CREADOR"
Descripción: Obtiene una relación específica entre usuario y evento por su ID.
Ejemplo Response:
{
"id": 1,
"usuarioId": 1,
"eventoId": 1,
"rol": "CREADOR"
}Notas:
- Si la relación no existe, se devolverá un error 404 Not Found
Descripción: Obtiene todas las relaciones de un usuario específico con eventos.
Ejemplo Response:
[
{
"id": 1,
"usuarioId": 1,
"eventoId": 1,
"rol": "CREADOR"
},
{
"id": 3,
"usuarioId": 1,
"eventoId": 2,
"rol": "ASISTENTE"
}
]Notas:
- Si el usuario no existe, se devolverá un error 404 Not Found
- Si el usuario no tiene relaciones con eventos, se devolverá una lista vacía
Descripción: Obtiene todas las relaciones de un evento específico con usuarios.
Ejemplo Response:
[
{
"id": 1,
"usuarioId": 1,
"eventoId": 1,
"rol": "CREADOR"
},
{
"id": 2,
"usuarioId": 2,
"eventoId": 1,
"rol": "ASISTENTE"
}
]Notas:
- Si el evento no existe, se devolverá un error 404 Not Found
- Si el evento no tiene relaciones con usuarios, se devolverá una lista vacía
Descripción: Crea una nueva relación entre un usuario y un evento.
Ejemplo Request:
{
"usuarioId": 1,
"eventoId": 1,
"rol": "ASISTENTE"
}Ejemplo Response:
{
"id": 1,
"usuarioId": 1,
"eventoId": 1,
"rol": "ASISTENTE"
}Notas:
- Todos los campos son obligatorios
- El rol debe ser "CREADOR" o "ASISTENTE"
- No se puede crear una relación duplicada entre el mismo usuario y evento
- El usuario y el evento deben existir
- Si alguna validación falla, se devolverá un error 400 Bad Request
Descripción: Elimina una relación específica entre usuario y evento.
Ejemplo Response:
Status: 204 No Content
Notas:
- Si la relación no existe, se devolverá un error 404 Not Found
- Si la eliminación es exitosa, se devolverá un status 204 sin contenido
Descripción: Elimina todas las relaciones de un usuario específico con eventos.
Ejemplo Response:
Status: 204 No Content
Notas:
- Si el usuario no existe, se devolverá un error 404 Not Found
- Si la eliminación es exitosa, se devolverá un status 204 sin contenido
Descripción: Elimina todas las relaciones de un evento específico con usuarios.
Ejemplo Response:
Status: 204 No Content
Notas:
- Si el evento no existe, se devolverá un error 404 Not Found
- Si la eliminación es exitosa, se devolverá un status 204 sin contenido
Descripción: Elimina una relación específica entre un usuario y un evento.
Ejemplo Response:
Status: 204 No Content
Notas:
- Si la relación no existe, se devolverá un error 404 Not Found
- Si la eliminación es exitosa, se devolverá un status 204 sin contenido
Descripción: Obtiene todas las relaciones entre usuarios y grupos.
Ejemplo Response:
[
{
"id": 1,
"grupoId": 1,
"nombreGrupo": "Amantes de los Perros",
"usuarioId": 1,
"nombreUsuario": "Juan",
"apellidoUsuario": "Pérez",
"rol": "ADMINISTRADOR"
},
{
"id": 2,
"grupoId": 1,
"nombreGrupo": "Amantes de los Perros",
"usuarioId": 2,
"nombreUsuario": "María",
"apellidoUsuario": "García",
"rol": "MIEMBRO"
}
]Notas:
- El campo 'rol' puede ser "ADMINISTRADOR" o "MIEMBRO"
- Cada usuario puede tener un solo rol por grupo
Descripción: Crea una nueva relación entre un usuario y un grupo.
Ejemplo Request:
{
"usuarioId": 1,
"grupoId": 1,
"rol": "ADMINISTRADOR"
}Ejemplo Response:
{
"id": 1,
"grupoId": 1,
"nombreGrupo": "Amantes de los Perros",
"usuarioId": 1,
"nombreUsuario": "Juan",
"apellidoUsuario": "Pérez",
"rol": "ADMINISTRADOR"
}Notas:
- Todos los campos son obligatorios
- El rol debe ser "ADMINISTRADOR" o "MIEMBRO"
- No se puede crear una relación duplicada entre el mismo usuario y grupo
- El usuario y el grupo deben existir
- Si alguna validación falla, se devolverá un error 400 Bad Request
Descripción: Obtiene una relación específica entre usuario y grupo por su ID.
Ejemplo Response:
{
"id": 1,
"grupoId": 1,
"nombreGrupo": "Amantes de los Perros",
"usuarioId": 1,
"nombreUsuario": "Juan",
"apellidoUsuario": "Pérez",
"rol": "ADMINISTRADOR"
}Notas:
- Si la relación no existe, se devolverá un error 404 Not Found
Descripción: Actualiza una relación existente entre usuario y grupo.
Ejemplo Request:
{
"usuarioId": 1,
"grupoId": 1,
"rol": "MIEMBRO"
}Ejemplo Response:
{
"id": 1,
"grupoId": 1,
"nombreGrupo": "Amantes de los Perros",
"usuarioId": 1,
"nombreUsuario": "Juan",
"apellidoUsuario": "Pérez",
"rol": "MIEMBRO"
}Notas:
- Si la relación no existe, se devolverá un error 404 Not Found
- Todos los campos son obligatorios
- El rol debe ser "ADMINISTRADOR" o "MIEMBRO"
- El usuario y el grupo deben existir
Descripción: Elimina una relación específica entre usuario y grupo.
Ejemplo Response:
{
"mensaje": "Eliminado correctamente"
}Notas:
- Si la relación no existe, se devolverá un error 404 Not Found
- Si ocurre un error al eliminar, se devolverá un error 500 Internal Server Error
Descripción: Obtiene todos los grupos a los que pertenece un usuario específico.
Ejemplo Response:
[
{
"id": 1,
"grupoId": 1,
"nombreGrupo": "Amantes de los Perros",
"usuarioId": 1,
"nombreUsuario": "Juan",
"apellidoUsuario": "Pérez",
"rol": "ADMINISTRADOR"
},
{
"id": 3,
"grupoId": 2,
"nombreGrupo": "Amantes de los Gatos",
"usuarioId": 1,
"nombreUsuario": "Juan",
"apellidoUsuario": "Pérez",
"rol": "MIEMBRO"
}
]Notas:
- Si el usuario no existe, se devolverá un error 404 Not Found
- Si el usuario no tiene grupos, se devolverá una lista vacía
Descripción: Obtiene todos los usuarios que pertenecen a un grupo específico.
Ejemplo Response:
[
{
"id": 1,
"grupoId": 1,
"nombreGrupo": "Amantes de los Perros",
"usuarioId": 1,
"nombreUsuario": "Juan",
"apellidoUsuario": "Pérez",
"rol": "ADMINISTRADOR"
},
{
"id": 2,
"grupoId": 1,
"nombreGrupo": "Amantes de los Perros",
"usuarioId": 2,
"nombreUsuario": "María",
"apellidoUsuario": "García",
"rol": "MIEMBRO"
}
]Notas:
- Si el grupo no existe, se devolverá un error 404 Not Found
- Si el grupo no tiene usuarios, se devolverá una lista vacía
Descripción: Obtiene una relación específica entre un usuario y un grupo.
Ejemplo Response:
{
"id": 1,
"grupoId": 1,
"nombreGrupo": "Amantes de los Perros",
"usuarioId": 1,
"nombreUsuario": "Juan",
"apellidoUsuario": "Pérez",
"rol": "ADMINISTRADOR"
}Notas:
- Si la relación no existe, se devolverá un error 404 Not Found
- Si el usuario o el grupo no existen, se devolverá un error 404 Not Found
Descripción: Obtiene todas las relaciones entre usuarios y posts.
Ejemplo Response:
[
{
"id": 1,
"postId": 1,
"usuarioId": 1,
"fecha": "2024-03-20T15:30:00"
},
{
"id": 2,
"postId": 2,
"usuarioId": 1,
"fecha": "2024-03-20T16:00:00"
}
]Notas:
- La fecha se genera automáticamente al crear la relación
- Si no hay relaciones, se devolverá una lista vacía
Descripción: Obtiene una relación específica entre usuario y post por su ID.
Ejemplo Response:
{
"id": 1,
"postId": 1,
"usuarioId": 1,
"fecha": "2024-03-20T15:30:00"
}Notas:
- Si la relación no existe, se devolverá un error 404 Not Found
Descripción: Obtiene todas las relaciones de un usuario específico con posts.
Ejemplo Response:
[
{
"id": 1,
"postId": 1,
"usuarioId": 1,
"fecha": "2024-03-20T15:30:00"
},
{
"id": 2,
"postId": 2,
"usuarioId": 1,
"fecha": "2024-03-20T16:00:00"
}
]Notas:
- Si el usuario no existe, se devolverá un error 404 Not Found
- Si el usuario no tiene relaciones con posts, se devolverá una lista vacía
Descripción: Obtiene todas las relaciones de un post específico con usuarios.
Ejemplo Response:
[
{
"id": 1,
"postId": 1,
"usuarioId": 1,
"fecha": "2024-03-20T15:30:00"
},
{
"id": 3,
"postId": 1,
"usuarioId": 2,
"fecha": "2024-03-20T15:35:00"
}
]Notas:
- Si el post no existe, se devolverá un error 404 Not Found
- Si el post no tiene relaciones con usuarios, se devolverá una lista vacía
Descripción: Crea una nueva relación entre un usuario y un post.
Ejemplo Request:
{
"usuarioId": 1,
"postId": 1
}Ejemplo Response:
{
"id": 1,
"postId": 1,
"usuarioId": 1,
"fecha": "2024-03-20T15:30:00"
}Notas:
- Todos los campos son obligatorios
- No se puede crear una relación duplicada entre el mismo usuario y post
- El usuario y el post deben existir
- La fecha se genera automáticamente
- Si alguna validación falla, se devolverá un error 400 Bad Request
Descripción: Elimina una relación específica entre usuario y post.
Ejemplo Response:
Status: 204 No Content
Notas:
- Si la relación no existe, se devolverá un error 404 Not Found
- Si la eliminación es exitosa, se devolverá un status 204 sin contenido
Descripción: Elimina todas las relaciones de un usuario específico con posts.
Ejemplo Response:
Status: 204 No Content
Notas:
- Si el usuario no existe, se devolverá un error 404 Not Found
- Si la eliminación es exitosa, se devolverá un status 204 sin contenido
Descripción: Elimina todas las relaciones de un post específico con usuarios.
Ejemplo Response:
Status: 204 No Content
Notas:
- Si el post no existe, se devolverá un error 404 Not Found
- Si la eliminación es exitosa, se devolverá un status 204 sin contenido
Descripción: Obtiene todas las relaciones entre usuarios y comentarios/posts.
Ejemplo Response:
[
{
"id": 1,
"usuarioId": 1,
"comentarioId": 1,
"postId": null,
"like": true,
"fecha": "2024-03-20T15:30:00"
},
{
"id": 2,
"usuarioId": 2,
"comentarioId": null,
"postId": 1,
"like": false,
"fecha": "2024-03-20T15:35:00"
}
]Notas:
- La fecha se genera automáticamente al crear la relación
- El campo 'like' indica si el usuario dio like (true) o dislike (false)
- Cada interacción debe estar asociada a un comentario O un post, nunca a ambos
Descripción: Obtiene una relación específica entre usuario y comentario/post por su ID.
Ejemplo Response:
{
"id": 1,
"usuarioId": 1,
"comentarioId": 1,
"postId": null,
"like": true,
"fecha": "2024-03-20T15:30:00"
}Notas:
- Si la relación no existe, se devolverá un error 404 Not Found
Descripción: Obtiene todas las relaciones de un usuario específico con comentarios y posts.
Ejemplo Response:
[
{
"id": 1,
"usuarioId": 1,
"comentarioId": 1,
"postId": null,
"like": true,
"fecha": "2024-03-20T15:30:00"
},
{
"id": 3,
"usuarioId": 1,
"comentarioId": null,
"postId": 2,
"like": false,
"fecha": "2024-03-20T16:00:00"
}
]Notas:
- Si el usuario no existe, se devolverá un error 404 Not Found
- Si el usuario no tiene relaciones, se devolverá una lista vacía
Descripción: Obtiene todas las relaciones de un comentario específico con usuarios.
Ejemplo Response:
[
{
"id": 1,
"usuarioId": 1,
"comentarioId": 1,
"postId": null,
"like": true,
"fecha": "2024-03-20T15:30:00"
},
{
"id": 2,
"usuarioId": 2,
"comentarioId": 1,
"postId": null,
"like": false,
"fecha": "2024-03-20T15:35:00"
}
]Notas:
- Si el comentario no existe, se devolverá un error 404 Not Found
- Si el comentario no tiene relaciones, se devolverá una lista vacía
Descripción: Obtiene todas las relaciones de un post específico con usuarios.
Ejemplo Response:
[
{
"id": 1,
"usuarioId": 1,
"comentarioId": null,
"postId": 1,
"like": true,
"fecha": "2024-03-20T15:30:00"
},
{
"id": 2,
"usuarioId": 2,
"comentarioId": null,
"postId": 1,
"like": false,
"fecha": "2024-03-20T15:35:00"
}
]Notas:
- Si el post no existe, se devolverá un error 404 Not Found
- Si el post no tiene relaciones, se devolverá una lista vacía
Descripción: Crea una nueva relación entre un usuario y un comentario o post.
Ejemplo Request:
{
"usuarioId": 1,
"comentarioId": 1,
"postId": null,
"like": true
}o
{
"usuarioId": 1,
"comentarioId": null,
"postId": 1,
"like": true
}Ejemplo Response:
{
"id": 1,
"usuarioId": 1,
"comentarioId": 1,
"postId": null,
"like": true,
"fecha": "2024-03-20T15:30:00"
}Notas:
- El usuarioId es obligatorio
- Debe especificarse comentarioId O postId, pero no ambos
- El campo like es obligatorio
- No se puede crear una relación duplicada entre el mismo usuario y comentario/post
- El usuario, comentario (si se especifica) y post (si se especifica) deben existir
- La fecha se genera automáticamente
- Si alguna validación falla, se devolverá un error 400 Bad Request
Descripción: Elimina una relación específica entre usuario y comentario/post.
Ejemplo Response:
Status: 204 No Content
Notas:
- Si la relación no existe, se devolverá un error 404 Not Found
- Si la eliminación es exitosa, se devolverá un status 204 sin contenido
Descripción: Elimina todas las relaciones de un usuario específico con comentarios y posts.
Ejemplo Response:
Status: 204 No Content
Notas:
- Si el usuario no existe, se devolverá un error 404 Not Found
- Si la eliminación es exitosa, se devolverá un status 204 sin contenido
Descripción: Elimina todas las relaciones de un comentario específico con usuarios.
Ejemplo Response:
Status: 204 No Content
Notas:
- Si el comentario no existe, se devolverá un error 404 Not Found
- Si la eliminación es exitosa, se devolverá un status 204 sin contenido
Descripción: Elimina todas las relaciones de un post específico con usuarios.
Ejemplo Response:
Status: 204 No Content
Notas:
- Si el post no existe, se devolverá un error 404 Not Found
- Si la eliminación es exitosa, se devolverá un status 204 sin contenido
Crea una nueva mascota.
Parámetros:
nombre(string, requerido): Nombre de la mascotagenero(string, requerido): Género de la mascota (Macho/Hembra)especie(string, requerido): Especie de la mascotausuarioId(number, requerido): ID del usuario propietariofechaNacimiento(string, opcional): Fecha de nacimiento de la mascota en formato YYYY-MM-DDfoto(file, opcional): Foto de la mascota
Respuesta:
{
"id": 1,
"nombre": "Nombre de la mascota",
"genero": "Macho",
"especie": "Perro",
"usuarioId": 1,
"fechaNacimiento": "2020-01-01",
"foto": "/uploads/mascotas/nombre-archivo.jpg"
}Actualiza una mascota existente.
Parámetros:
nombre(string, requerido): Nombre de la mascotagenero(string, requerido): Género de la mascota (Macho/Hembra)especie(string, requerido): Especie de la mascotafechaNacimiento(string, opcional): Fecha de nacimiento de la mascota en formato YYYY-MM-DDfoto(file, opcional): Foto de la mascota
Respuesta:
{
"id": 1,
"nombre": "Nombre actualizado",
"genero": "Hembra",
"especie": "Gato",
"usuarioId": 1,
"fechaNacimiento": "2021-02-15",
"foto": "/uploads/mascotas/nuevo-archivo.jpg"
}Obtiene una mascota específica.
Respuesta:
{
"id": 1,
"nombre": "Nombre de la mascota",
"genero": "Macho",
"especie": "Perro",
"usuarioId": 1,
"fechaNacimiento": "2020-01-01",
"foto": "/uploads/mascotas/nombre-archivo.jpg"
}Elimina una mascota específica.
Respuesta:
- 204 No Content si la eliminación fue exitosa
- 404 Not Found si la mascota no existe