Skip to main content

Requisitos

La Web API de Crono expone datos y operaciones a sistemas de terceros mediante una API REST versionada. La provee el módulo Crono.WebApi, que se apoya en el mismo catálogo de módulos que la aplicación web, de modo que cada módulo puede publicar sus propios endpoints.

Qué se necesita

  • El módulo Crono.WebApi instalado. Es un módulo del grupo Api (nombre de sistema Crono.WebApi) que aporta la infraestructura REST: versionado, documentación OpenAPI/Swagger y el pipeline de autenticación y errores. Se instala desde el Administrador de módulos como cualquier otro (ver Primeros pasos con módulos).
  • Un host que cargue los módulos. La API vive en el mismo proceso que carga el catálogo de módulos, porque los controladores de API residen en los módulos (por ejemplo, el controlador de rutas de cobranza vive en Crono.RutasCobranza, no en Crono.WebApi).
  • Una credencial de API válida. Cada llamada se autentica con el esquema de autenticación Api y se autoriza por permiso (ver Autenticación).
  • Cliente que hable JSON. La API produce y consume el tipo de medio application/vnd.crono.v1+json; enviar o aceptar otro tipo provoca un 415 Unsupported Media Type.

Dependencias que trae el módulo

Crono.WebApi declara como referencias privadas las librerías de documentación y serialización que necesita:

  • Swashbuckle.AspNetCore (Swagger, SwaggerGen, SwaggerUI, Annotations) para la documentación interactiva.
  • Microsoft.OpenApi para el modelo OpenAPI.
  • Markdig para renderizar descripciones en Markdown dentro de la documentación.

El versionado de la API lo aporta Asp.Versioning, que llega transitivamente a los módulos que exponen endpoints.

Endpoints en un módulo

Cualquier módulo puede publicar endpoints referenciando Crono.Web.Comun (que trae CronoApiController y WebApiGrupoAttribute) y Asp.Versioning. El patrón de ruta es api/v{version}/...:

[WebApiGrupo(WebApiGrupoNombres.Prestamo)]
[ApiVersion("1")]
[Route("api/v{version:apiVersion}/rutas-cobranza")]
public class RutasCobranzaController : CronoApiController
{
// ...
}

Los detalles del controlador base, el versionado y el modelo de errores están en La Web API en detalle.

info

La API es de datos, no de contenido: sirve para que sistemas externos consulten y operen sobre entidades de Crono (por ejemplo, la ruta diaria de un asesor de cobranza), siempre acotado a lo que la credencial autenticada tiene permitido.