Skip to main content

Apéndice de la Web API

Referencia rápida de las convenciones transversales de la Web API de Crono. El detalle está en La Web API en detalle.

Tipo de medio

La API produce y consume exclusivamente:

application/vnd.crono.v1+json

Envía siempre las cabeceras Accept y Content-Type con ese valor; en caso contrario recibirás 415 Unsupported Media Type.

Autenticación

Todas las peticiones usan el esquema de autenticación Api y se autorizan por permiso ([Permiso(...)]). Ver Autenticación.

Códigos de estado

CódigoSignificado
200 OKOperación correcta; devuelve el DTO.
400 Bad RequestError inesperado / solicitud mal formada.
401 UnauthorizedSin credencial válida.
403 ForbiddenAutenticado pero sin permiso.
404 Not FoundRecurso no encontrado.
409 ConflictConflicto con el estado actual.
412 Precondition FailedPrecondición no cumplida.
415 Unsupported Media TypeFalta o es incorrecto el tipo de medio.
422 Unprocessable EntityEl cuerpo no supera la validación de modelo.

Modelo de errores

Los errores se devuelven de forma uniforme como problem details, a partir del tipo de error del dominio (ErrorTipo) que se traduce al código HTTP correspondiente. En una acción:

return Problema(new Error(ErrorTipo.Validacion, "El rango de fechas no es válido."));

Versionado

La versión va en la ruta (api/v1/...) y cada acción declara la versión con MapToApiVersion. Cada grupo de la documentación declara sus versiones. Ver Cambios de versión.

Grupos de documentación

Los grupos disponibles (WebApiGrupoNombres) son: finanzas, comun, configuracion, contenido, identidad, persona, prestamo, recursoshumanos, usuario, venta y plataforma. Cada controlador se asigna a uno con [WebApiGrupo(...)] para aparecer en su documento OpenAPI.

Convenciones de nombres

  • Rutas en kebab-case y en plural cuando aplica: rutas-cobranza, paradas/estado.
  • DTOs de entrada/salida con sufijo Dto (RutaCobranzaDto, FuncionRutaDto).
  • Métodos asíncronos con CancellationToken como último parámetro.
  • Respuestas tipadas documentadas con [ProducesResponseType(typeof(...), Status200OK)].

Para un recorrido completo por un recurso real, ver el ejemplo de rutas de cobranza.