2026-08-05 11:18:03 +00:00
# Convención de Nombres de Schemas DTO
2025-08-11 17:49:52 +00:00
2026-08-05 11:18:03 +00:00
Guía específica de naming para schemas DTO. Complementa, pero no sustituye, a [DTOS - GUÍA DE DISEÑO.md ](./DTOS - GUÍA DE DISEÑO.md ), que sigue siendo la referencia principal de diseño.
2025-08-11 17:49:52 +00:00
2026-08-05 11:18:03 +00:00
## Alcance
2025-08-11 17:49:52 +00:00
2026-08-05 11:18:03 +00:00
Usa este documento cuando la duda sea cómo nombrar un schema. Si la duda es de semántica, tipado, opcionalidad o modelado del contrato, usa antes la guía general de DTOs.
2025-08-11 17:49:52 +00:00
2026-08-05 11:18:03 +00:00
## Reglas base
2025-08-11 17:49:52 +00:00
2026-08-05 11:18:03 +00:00
1. Usar singular para el nombre base de la entidad: `Customer` , `Product` , `Proforma` .
2. En operaciones sobre recurso único, el verbo va primero.
3. En listados, el sustantivo principal va primero: `CustomerList` , nunca `ListCustomer` .
4. Mantener sufijos estables según el rol del schema.
5. No mezclar convenciones distintas para la misma familia de endpoints.
2025-08-11 17:49:52 +00:00
2026-08-05 11:18:03 +00:00
## Patrones recomendados
2025-08-11 17:49:52 +00:00
2026-08-05 11:18:03 +00:00
### Recurso único
2025-08-11 17:49:52 +00:00
2026-08-05 11:18:03 +00:00
```text
< Verb > < Entity > < Condition > < SchemaRole >
```
2025-08-11 17:49:52 +00:00
2026-08-05 11:18:03 +00:00
Ejemplos:
2025-08-11 17:49:52 +00:00
2026-08-05 11:18:03 +00:00
- `GetCustomerByIdParamsSchema`
- `DeleteCustomerByIdParamsSchema`
- `UpdateIssuedInvoiceByIdCommandSchema`
2025-08-11 17:49:52 +00:00
2026-08-05 11:18:03 +00:00
### Colecciones
2025-08-11 17:49:52 +00:00
2026-08-05 11:18:03 +00:00
```text
< Entity > List< CriteriaOrFilter > < SchemaRole >
```
2025-08-11 17:49:52 +00:00
2026-08-05 11:18:03 +00:00
Ejemplos:
2025-08-11 17:49:52 +00:00
2026-08-05 11:18:03 +00:00
- `CustomerListCriteriaSchema`
- `ProformaListResponseSchema`
- `IssuedInvoiceListQuerySchema`
2025-08-11 17:49:52 +00:00
2026-08-05 11:18:03 +00:00
## Sufijos estables
2025-08-11 17:49:52 +00:00
2026-08-05 11:18:03 +00:00
### Request
2025-08-11 17:49:52 +00:00
2026-08-05 11:18:03 +00:00
- `CommandSchema` : body de create, update o patch
- `ParamsSchema` : route params
- `QuerySchema` : query string raw
- `CriteriaSchema` : query normalizada con patrón Criteria
2025-08-11 17:49:52 +00:00
2026-08-05 11:18:03 +00:00
### Response
2025-08-11 17:49:52 +00:00
2026-08-05 11:18:03 +00:00
- `SummarySchema` : item de listado
- `ResourceSchema` : representación completa del recurso
- `DetailResponseSchema` : response de detalle
- `ListResponseSchema` : response de listado
- `CreatedResponseSchema` : confirmación o payload de creación
- `DeletedResponseSchema` : confirmación explícita de borrado cuando no se usa `204`
2025-08-11 17:49:52 +00:00
2026-08-05 11:18:03 +00:00
## Ejemplos
2025-08-11 17:49:52 +00:00
2026-08-05 11:18:03 +00:00
### Customers
2025-08-11 17:49:52 +00:00
2026-08-05 11:18:03 +00:00
- `CreateCustomerCommandSchema`
- `GetCustomerByIdParamsSchema`
- `CustomerListCriteriaSchema`
- `CustomerSummarySchema`
- `CustomerResourceSchema`
- `CustomerListResponseSchema`
2025-08-11 17:49:52 +00:00
2026-08-05 11:18:03 +00:00
### Proformas
2025-08-11 17:49:52 +00:00
2026-08-05 11:18:03 +00:00
- `CreateProformaCommandSchema`
- `UpdateProformaByIdParamsSchema`
- `ProformaListCriteriaSchema`
- `ProformaSummarySchema`
- `ProformaDetailResponseSchema`
2025-08-11 17:49:52 +00:00
2026-08-05 11:18:03 +00:00
## Errores a evitar
2025-08-11 17:49:52 +00:00
2026-08-05 11:18:03 +00:00
- `ListCustomerCriteriaSchema`
- `CustomersListResponseSchema`
- `UpdateCustomerCommandByIdSchema`
- `ProductGetByIdParamsSchema`
2025-08-11 17:49:52 +00:00
2026-08-05 11:18:03 +00:00
## Relación con la guía general
2025-08-11 17:49:52 +00:00
2026-08-05 11:18:03 +00:00
La guía de DTOs define:
2025-08-11 17:49:52 +00:00
2026-08-05 11:18:03 +00:00
- organización por carpetas
- tipado semántico
- manejo de `null` , `optional()` y colecciones
- diseño de `create` , `update` , `list` y `detail`
2025-08-11 17:49:52 +00:00
2026-08-05 11:18:03 +00:00
Este documento solo fija el naming.