Recursos

Diccionario · Versión 1.0

Diccionario de datos del API

Campos de entrada y salida del API de MéTRIK Valida, tipos, formato esperado, valores aceptados y ejemplos. Documento para tu equipo de integración técnica.

Última actualización: 15 de mayo de 2026Audiencia: equipo técnico, área de integraciónSpec OpenAPI interactivo →
Descargar PDF

1. Introducción

MéTRIK Valida expone un API REST sobre HTTPS para consulta SARLAFT contra listas vinculantes y de referencia. Este documento describe cada endpoint, los campos esperados en cada request, los campos retornados en cada response, los valores aceptados por cada enum y los códigos de error.

  • Base URL: https://api.valida.metrik.com.co
  • Versión vigente: v1
  • Formato: JSON sobre HTTPS
  • Codificación: UTF-8
  • Zona horaria de timestamps: UTC ISO 8601 (2026-05-15T14:32:00Z)

Para spec interactivo con ejecución desde el navegador, ver /docs. Para esquema crudo OpenAPI 3.1.0, ver /api/openapi.json.

2. Autenticación

Bearer api_key

Todas las rutas /v1/ requieren Authorization: Bearer <api_key>. Las api_keys se emiten por cliente (workspace ONE o externo) con hash SHA-256 en base de datos. Si pierdes la clave en texto plano, se rota — no se puede recuperar.

Header requerido en cada request:

Authorization: Bearer valida_<64chars>
Content-Type: application/json

Las operaciones /admin/ usan un token distinto (VALIDA_ADMIN_TOKEN) reservado para operaciones internas de MéTRIK.

3. Endpoints

Resumen de endpoints públicos del API.

MétodoPathDescripciónAuth
POST/api/v1/validateConsulta puntual contra todas las listas activas
POST/api/v1/reporte-loteGenera PDF agregado de un cargue masivo
GET/api/v1/reporte/{consulta_id}Descarga PDF del reporte auditable
GET/api/v1/consultasLista las consultas históricas del cliente
GET/api/v1/healthEstado del servicio (público)público

4. Schemas — Request

ValidateRequest · POST /api/v1/validate

CampoTipoReq.DescripciónValores
tipoenumTipo de sujeto a validar.natural · juridica
nombrestringNombre completo (natural) o razón social (jurídica). Mínimo 2 caracteres.
documento.tipoenumTipo de documento. Si se incluye y hay match por documento, severidad escala automáticamente.CC · CE · NIT · PAS
documento.numerostringNúmero de documento (sin guiones ni espacios). Mínimo 3 caracteres.
fecha_nacimientodateYYYY-MM-DD. Opcional para personas naturales.1985-03-15
paisstringCódigo país ISO 3166-1 alpha-2 (2 letras).CO · US · MX · ES …
{
  "tipo": "natural",
  "nombre": "Juan Pérez Gómez",
  "documento": { "tipo": "CC", "numero": "1077089147" },
  "fecha_nacimiento": "1985-03-15",
  "pais": "CO"
}

ReporteLoteRequest · POST /api/v1/reporte-lote

CampoTipoReq.DescripciónValores
consulta_idsarray<uuid>UUID de las consultas previamente ejecutadas. Máximo 500 por lote.
titulostringTítulo del cargue (queda en el header del PDF). Máximo 200 caracteres."Cargue CDA mayo 2026"
{
  "consulta_ids": [
    "4f8e2a91-…",
    "7b2c1d83-…"
  ],
  "titulo": "Cargue CDA mayo 2026"
}

5. Schemas — Response

ValidateResponse · 200 OK

CampoTipoReq.DescripciónValores
consulta_iduuidIdentificador interno de la consulta. Persiste 5 años (Ley 1581/2012).
severidadenumSeveridad global derivada de los matches.alto · medio · bajo · informativo · sin_hallazgo
total_matchesintegerCantidad de coincidencias encontradas.0+
matchesarray<MatchItem>Detalle de coincidencias. Ver schema MatchItem.
hash_reportestringSHA-256 hex del reporte. Usable para verificación independiente.64 chars hex
fecha_reportedatetimeTimestamp de la consulta en UTC.2026-05-15T14:32:00Z
clientestringNombre del cliente emisor (workspace o externo).
{
  "consulta_id": "4f8e2a91-…",
  "severidad": "sin_hallazgo",
  "total_matches": 0,
  "matches": [],
  "hash_reporte": "a3f8d92e4b1c…",
  "fecha_reporte": "2026-05-15T14:32:00Z",
  "cliente": "AFI International Group"
}

MatchItem · elemento del array matches

CampoTipoReq.DescripciónValores
listastringSlug único de la lista. Estable a lo largo del tiempo.onu_consolidated · csn_colombia · pep_colombia · ofac_sdn · eu_consolidated …
lista_nombrestringNombre legible de la lista.
tierenumTier normativo. Determina la consecuencia legal.1_vinculante · 2_obligatoria · 3_referencia · 4_kyc_nacional
vinculante_colombiabooleanTrue si la consulta es legalmente exigible en Colombia.true · false
nombre_coincidenciastringNombre o alias de la entrada en lista que generó el match.
scorenumberScore combinado Jaro-Winkler 70% + Levenshtein 30%. 0.0 a 1.0.0.0 ≤ x ≤ 1.0
resultadoenumTipo de coincidencia.exacto (≥ 0.95) · posible (0.70 - 0.95)
fundamento_legalstringReferencia o programa que justifica la inclusión del nombre en la lista."UN Resolution 1267" · "OFAC SDN narco" · null

ConsultaResumen · elemento de GET /api/v1/consultas

CampoTipoReq.DescripciónValores
consulta_iduuidIdentificador de la consulta.
nombre_consultadostringNombre original consultado.
documento_consultadostringDocumento concatenado (tipo+número)."CC 1077089147" · null
severidadenumSeveridad global de la consulta.alto · medio · bajo · informativo · sin_hallazgo
total_matchesintegerTotal de coincidencias.0+
creada_endatetimeTimestamp UTC.

6. Enums y valores aceptados

Severidad global

altoCoincidencia exacta en lista vinculante (Tier 1). Bloqueo + ROS UIAF.
medioCoincidencia exacta en lista obligatoria (Tier 2: PEP) o no vinculante (Tier 3: OFAC/UE).
bajoCoincidencia posible (puntaje 0.70 - 0.95). Sin coincidencia exacta.
informativoCoincidencia solo en referencia internacional sin vinculancia local.
sin_hallazgoSin coincidencias.

Tier (clasificación normativa de la lista)

1_vinculanteListas vinculantes legalmente en Colombia (ONU, CSN Colombia).
2_obligatoriaListas obligatorias sin fuente única (PEP Colombia via SIGEP).
3_referenciaListas no vinculantes — estándar de facto (OFAC, EU, INTERPOL).
4_kyc_nacionalCapa de debida diligencia colombiana (módulo v2).

Tipo de documento

CCCédula de Ciudadanía (personas naturales colombianas).
CECédula de Extranjería.
NITNúmero de Identificación Tributaria (personas jurídicas).
PASPasaporte.

Resultado del match

exactoPuntaje ≥ 0.95. Coincidencia con muy alta probabilidad.
posiblePuntaje 0.70 - 0.95. Requiere análisis manual del oficial de cumplimiento.

7. Códigos de error

El API devuelve códigos HTTP estándar más un cuerpo JSON con la estructura { "error": "<codigo>", "message": "<descripcion>" }.

HTTPerrorDescripción y cómo corregir
400validation_errorPayload inválido. Revisa el campo issues del cuerpo de respuesta para detalle por campo.
401invalid_api_keyAPI key faltante, mal formada o revocada. Verifica el header Authorization. Si se rotó, solicita una nueva.
403permiso_denegadoAPI key válida pero sin permisos para la operación. Reservado para operaciones admin.
404not_foundRecurso no encontrado o no pertenece al cliente autenticado.
429rate_limitExcediste el límite de consultas del plan. Reintenta tras el período indicado en el header Retry-After.
500db_errorError de persistencia. Reintentar luego. Si persiste, contactar a soporte.
503upstream_unavailableServicio downstream (Supabase, fuente de lista) temporalmente caído.