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

DTOs

Los Data Transfer Objects (DTOs) definen los contratos de datos utilizados para las solicitudes y respuestas de BuenOrigen. Los DTOs vigentes siguen nombres y propiedades en inglés, conforme a la normalización integrada en el PR #50.

Alcance documental: contratos descritos en la Wiki previamente compartida y cambios aprobados hasta el 13 de octubre de 2026 (incluido PR #59). Esta página no reemplaza la especificación OpenAPI generada desde la rama develop. Los nombres internos de código siguen la convención en inglés; las rutas HTTP conservan el contrato publicado.

Organización

Los DTOs se encuentran organizados en src/dto/; los modelos de dominio en src/models/. No utilizar las rutas heredadas src/model/ ni src/model/dtos/ como referencias actuales.

DTOs identificados en antecedentes del código

DTO Uso principal
ProductSearchDto Resumen de resultados de búsqueda
ProductOfferDto Productos en oferta
BestSellingProductDto Productos más vendidos
NewProductSummaryDto Novedades del catálogo
ProductDetailDto Detalle del producto
ProductGreenFootprintDto Huella Verde del producto
ProductReviewDto Valoraciones públicas
RelatedProductDto Productos relacionados
ProductSummaryDto Resumen reutilizable de productos

Los nombres anteriores aparecen en los imports de ProductsService compartidos durante la revisión del backend. Para describir propiedades, tipos, nullable y obligatoriedad exactos, el contenido de las clases DTO en develop es la fuente determinante. Evitamos copiar atributos obsoletos de los DTOs antiguos en español.

Contratos de emprendedores y subcategorías

Los servicios y controllers de estos dominios proporcionan consultas públicas y DTOs de respuesta. Los nombres precisos de todas sus clases DTO actuales no se encuentran completamente confirmados en los antecedentes recuperados; deben documentarse desde src/dto/ sin traducir denominaciones del Hito 1.

Conceptos importantes

  • Un DTO representa el contrato de transferencia, no necesariamente todas las propiedades de su modelo interno.
  • @ApiProperty() documenta propiedades en OpenAPI.
  • class-validator y los pipes aplicables realizan validaciones; Swagger no las ejecuta por sí mismo.
  • Una propiedad opcional y una propiedad que admite null no son equivalentes.
  • Un DTO de salida no implica automáticamente que exista un endpoint de escritura o autenticación.

DTOs pendientes definidos a nivel funcional

Los requerimientos de usuarios, carrito, favoritos, pagos, envíos, compras, direcciones, devoluciones, Puntos Verdes y administración de emprendedores no autorizan a afirmar que existen clases DTO concretas. Sus esquemas se incorporarán cuando el equipo apruebe e implemente los contratos.

Documentación relacionada