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 suscripciones
  • POST(/suscripciones) - Crear suscripción
  • PATCH (/suscripciones/{id}) - Modificar suscripción
  • PUT(/suscripciones/{id}) - Modificar datos de suscripción
  • DELETE (/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."
}