Suscripciones - bootcamp-uchile-2026/grupo-4-backend GitHub Wiki
Suscripciones
Servicio encargado de administrar todo lo que concierne a las suscripciones de cada cliente.
El servicio permite ingresar, consultar, modificar y eliminar suscripciones de la página.
Endpoints
GET (/suscripciones)- Obtener suscripcionesPOST(/suscripciones)- Crear suscripciónPATCH (/suscripciones/{id})- Modificar suscripciónPUT(/suscripciones/{id})- Modificar datos de suscripciónDELETE (/suscripciones/{id})- Deshabilitar suscripción
Modelo
Suscripcion
Representa una suscripción disponible para clientes
| Campo | Tipo | Descripción |
|---|---|---|
| id | number | Identificador único de la suscripción |
| descripcion | string | Descripción de la suscripción |
| nombre | string | Nombre de la suscripción |
| precio | number | Precio de la suscripción |
| productosId | number[] | Id de productos incluidos en la suscripción |
| activa | boolean | Estado de suscripción |
DTOs
CreateSuscripcionDTO
DTO utilizado para crear una nueva suscripción
Campos
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
| descripcion | string | si | Descripción de la suscripción |
| nombre | string | si | Nombre de la suscripción |
| precio | number | si | Precio de la suscripción |
| productosId | number[] | si | Id de productos incluidos en la suscripción |
Ejemplo de Request Body
{
"descripcion": "Esta nueva caja satisfacerá...",
"nombre": "Básico",
"precio": 19990,
"productosId": [1,7,4,10,20]
}
UpdateSuscripcionDTO
DTO utilizado para actualizar parcialmente una suscripción existente.
Hereda los campos de CreateSuscripcionDTO, pero todos son opcionales.
Ejemplo de Request Body
{
"nombre": "Esencial"
}
Endpoints detallados
GET /suscripciones
Obtiene la lista de suscripciones, opcionalmente filtrado por activa y/o por id.
Query Parameters
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| activa | boolean | No | Busca suscripciones que coincidan con el estado descrito |
| id | number | No | Busca la suscripción con el Identificador único entregado |
Ejemplo de solicitud
GET /suscripciones?activa=true
Response — 200 OK
[
{
"id": 1,
"descripcion": "descripción test 01",
"nombre": "Básico",
"precio": 19990,
"productosId":[1,2,3,4,5],
"activa": true
},
{
"id": 2,
"descripcion": "descripción test 02",
"nombre": "Equilibrado",
"precio": 39990,
"productosId":[1,2,3,4,5],
"activa": true
}
]
POST /suscripciones
Crea una nueva suscripción
Request Body
Utiliza CreateSuscripcionDTO.
{
"descripcion": "Esta nueva caja satisfacerá...",
"nombre": "Básico",
"precio": 19990,
"productosId": [1,7,4,10,20]
}
Response — 201 Created
{
"id":1,
"descripcion": "Esta nueva caja satisfacerá...",
"nombre": "Básico",
"precio": 19990,
"productosId": [1,7,4,10,20],
"activa": true
}
Response — 400 Bad Request
Los datos enviados no son válidos.
{
"statusCode": 400,
"message": "Los datos de la suscripción no son válidos."
}
Response — 409 Conflict
Ya existe una suscripción con el nombre y/o productos indicados.
{
"statusCode": 409,
"message": "Ya existe una suscripción con el nombre y/o productos indicados"
}
PATCH /suscripciones/{id}
Actualiza parcialmente los datos de una suscripción existente.
Path Parameters
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| id | number | Sí | Identificador único de la suscripción |
Request Body
Utiliza UpdateSuscripcionDTO. Todos los campos son opcionales.
{
"nombre": "Esencial"
}
Response — 200 OK
{
"id":1,
"descripcion": "Esta nueva caja satisfacerá...",
"nombre": "Esencial",
"precio": 19990,
"productosId": [1,7,4,10,20],
"activa": true
}
Response — 400 Bad Request
El id o los datos enviados no son válidos.
{
"statusCode": 400,
"message": "El id o los datos de la suscripción no son válidos."
}
Response — 404 Not Found
La suscripción no existe.
{
"statusCode": 404,
"message": "Suscripción no encontrada."
}
Response — 409 Conflict
Ya existe una suscripción con el nombre indicado.
{
"statusCode": 409,
"message": "Ya existe una suscripción con el nombre indicado."
}
DELETE /suscripciones/{id}
Deshabilita la suscripción
Path Parameters
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| id | number | Si | Identificador único de la suscripción |
Ejemplo de solicitud
DELETE /suscripciones/1
Response — 204 No Content
La suscripción fue deshabilitada correctamente.
No se retorna un cuerpo en la respuesta.
Response — 400 Bad Request
El ID proporcionado no es válido.
{
"statusCode": 400,
"message": "El id de la suscripción no es válido."
}
Response — 404 Not Found
La suscripción no existe.
{
"statusCode": 404,
"message": "Suscripción no encontrada."
}