Consumo tecnico

API publica

Contrato inicial para consumir informacion publica normalizada por CR Inteligente. La version actual requiere API key vinculada a una organizacion y a un usuario registrado.

Versionado

Los endpoints publicos empiezan en `/api/v1`. Los cambios incompatibles deben publicarse en una version nueva para no romper consumidores existentes. Los cambios aditivos pueden entrar en v1 y los cambios deprecados deben anunciarse con al menos 90 dias. El contrato esta disponible en `/api/openapi.json`.

Fuentes

Cada registro mantiene `officialUrl` y metadatos de fuente para que el consumidor pueda regresar al documento oficial.

Futuro comercial

Cada llave `cri_...` pertenece a una organizacion con usuario dueño, plan y cuota para preparar contratos comerciales.

Endpoints v1

Respuestas JSON estables para consultar publicaciones, cambios, fuentes y categorias.

GET

/api/openapi.json

Contrato OpenAPI 3.1 para integraciones, clientes tecnicos y documentacion externa.

Probar
GET

/api/v1/publications

Publicaciones visibles con filtros por texto, seccion, categoria, fuente, institucion, estado y fechas.

Probar
GET

/api/v1/publications/{slug}

Detalle serializado de una publicacion visible por slug.

Probar
GET

/api/v1/search

Busqueda publica versionada sobre publicaciones visibles con filtros por seccion y los mismos filtros principales.

Probar
GET

/api/v1/changes

Cambios destacados visibles, filtrables por texto, fuente o categoria.

Probar
GET

/api/v1/changes/{id}

Detalle de un cambio visible con articulo relacionado y fuente oficial.

Probar
GET

/api/v1/categories

Categorias editoriales con conteos visibles, cambios destacados y links de portal/feed.

Probar
GET

/api/v1/categories/{slug}

Detalle de categoria con muestra de publicaciones, publicationCount y alertCount.

Probar
GET

/api/v1/sections

Secciones editoriales del portal con estado activo o planeado y conteos visibles.

Probar
GET

/api/v1/sections/{slug}

Detalle de una seccion con fuentes configuradas y publicaciones visibles.

Probar
GET

/api/v1/institutions

Instituciones normalizadas con conteo visible y links hacia portal/filtros.

Probar
GET

/api/v1/institutions/{slug}

Detalle de institucion con muestra de publicaciones, publicationCount y alertCount.

Probar
GET

/api/v1/suppliers

Proveedores normalizados con busqueda, paginacion, adjudicaciones visibles y monto agregado.

Probar
GET

/api/v1/suppliers/{slug}

Detalle de proveedor con adjudicaciones visibles, institucion y publicacion relacionada.

Probar
GET

/api/v1/sources

Catalogo de fuentes configuradas con estado, publicationCount visible y links.

Probar
GET

/api/v1/sources/{slug}

Detalle de fuente con frescura, muestra reciente, publicationCount y alertCount.

Probar
GET

/api/v1/feeds

Indice de feeds RSS globales, por seccion, por categoria, por fuente y filtros reutilizables.

Probar
GET

/api/v1/health

Estado tecnico del servicio, fuentes, publicaciones totales, publicaciones visibles y consumo API del mes.

Probar

Contrato base

{
  "ok": true,
  "version": "v1",
  "stability": {
    "status": "stable-local-production",
    "breakingChanges": "new_version_required",
    "additiveChanges": "allowed_in_v1",
    "deprecationNoticeDays": 90
  },
  "count": 10,
  "authenticated": true,
  "organization": "demo-api",
  "quota": {
    "monthlyQuota": 1000,
    "usedThisMonth": 12,
    "remainingThisMonth": 988
  },
  "pagination": {
    "limit": 10,
    "offset": 0,
    "nextOffset": 10
  },
  "data": []
}

Los limites actuales aceptan `limit` de 1 a 100 y `offset` desde 0. Cuando una pagina viene llena, `pagination.nextOffset` indica la siguiente pagina disponible. Los endpoints v1 requieren `Authorization: Bearer cri_...`; el consumo queda asociado a una organizacion con usuario dueño cuando la llave existe y esta activa, y la respuesta incluye `quota` con uso mensual. Las publicaciones pueden incluir un objeto `procurement` con institucion, montos, moneda, estado y fecha de cierre cuando la fuente lo permite. Con `API_ENFORCE_QUOTAS=true`, una llave valida que excede su cuota mensual recibe `429`.

Descargar OpenAPI

Autenticacion requerida

Authorization: Bearer cri_...

Sin llave valida, `/api/v1` responde `401`. Con llave valida, el consumo queda asociado a una organizacion para cuotas, reportes y contratos comerciales.

Paginacion

?limit=25&offset=50

Las listas versionadas usan `limit`, `offset`, `count`, `pagination.total` y `pagination.nextOffset` cuando aplica.

Feeds RSS

`/api/v1/feeds` lista canales globales, por seccion, por categoria y por fuente. El feed global acepta `section`, `category`, `source` y `q`; el feed de cambios acepta `category`, `source` y `q`.

Agrupadores

Categorias, instituciones, fuentes y proveedores incluyen `links` hacia portal, feeds o filtros relacionados. Cuando aplica, `publicationCount` y `alertCount` reflejan datos visibles, aunque el detalle devuelva solo una muestra reciente.