Direcciones - bootcamp-uchile-2026/grupo-2-backend GitHub Wiki

Direcciones

Funcionalidad

Permite al usuario autenticado consultar, agregar y eliminar las direcciones de envío asociadas a su cuenta.


Objetivo

Proporcionar al usuario la capacidad de consultar y gestionar las direcciones de envío asociadas a su cuenta.


Responsabilidad del Backend

El backend deberá:

  1. Entregar al usuario autenticado las direcciones de envío asociadas a su cuenta.
  2. Validar y almacenar nuevas direcciones proporcionadas por el usuario.
  3. Permitir la eliminación de direcciones pertenecientes al usuario autenticado.
  4. Verificar que las operaciones sobre direcciones correspondan exclusivamente al usuario autenticado.

Contrato de API

Endpoint asociado:

GET /usuarios/me/direcciones

POST /usuarios/me/direcciones

DELETE /usuarios/me/direcciones/{direccionId}

DTO de entrada:

DireccionNuevaDto

DTO de salida:

DireccionDto[]

La definición completa del método HTTP, query parameters y respuestas se encuentra centralizada en Endpoints.

La estructura completa de los datos devueltos se encuentra centralizada en DTOs.


Reglas de negocio

  • El usuario debe estar autenticado para consultar, agregar o eliminar direcciones.
  • Cada dirección debe estar asociada a un único usuario.
  • Una dirección debe contener, como mínimo, calle/dirección, número, comuna y ciudad.
  • Un usuario podrá almacenar como máximo 3 direcciones.
  • Un usuario solo podrá consultar y eliminar sus propias direcciones.
  • No se podrá agregar una nueva dirección cuando el usuario ya tenga 3 direcciones almacenadas.

Relación con Página de Mi Cuenta

flowchart TD
    A[Cuenta de Usuario] --> B[Direcciones]

    B --> C[Consultar direcciones]
    B --> D[Agregar dirección]
    B --> E[Eliminar dirección]

    C --> F[GET /usuarios/me/direcciones]
    D --> G[POST /usuarios/me/direcciones]
    E --> H[DELETE /usuarios/me/direcciones/:direccionId]

    F --> I[DireccionDto]
    G -->|Body| J[DireccionNuevaDto]
    J --> K[Dirección agregada]
    H --> L[Dirección eliminada]