Guía
Consulta el índice jurídico por API
La API REST /v1 devuelve disposiciones, versiones y procedencia desde el acervo observado. Es de sólo lectura, requiere HTTPS y una clave API de tu organización con el permiso legislation:read.
- Entra y elige tu organización.
- Abre «Claves API», crea una con permiso de lectura y guárdala una sola vez.
- Envía la clave en el encabezado
X-API-Keyen cada solicitud. - Una respuesta sin resultados no significa que una norma no exista: sólo que no está cubierta.
Autenticación
Todas las consultas a /v1 usan la clave en el encabezado X-API-Key. No aceptamos tokens en la URL ni claves compartidas. Si la clave falta, es inválida o está vencida, la API responde 401 con el reto WWW-Authenticate: ApiKey header="X-API-Key".
HTTP · encabezadoX-API-Key: TU_CLAVE
Endpoints de consulta
| Método | Ruta | Descripción |
|---|---|---|
| GET | /v1/search | Búsqueda léxica de disposiciones; por defecto consulta el acervo observado. |
| GET | /v1/instruments/resolve | Resuelve un instrumento por clave, slug, título o alias. |
| GET | /v1/changes | Eventos jurídicos observados. |
| GET | /v1/facets | Facetas normativas por función. |
| POST | /v1/coverage | Compuertas de cobertura «answerability». |
| POST | /v1/context-pack | Pack de contexto por utilidad de pasaje. |
| POST | /v1/citations/validate | Verifica que una cita o postura exista en el acervo. |
| POST | /v1/route | Router de intención de consulta. |
| POST | /v1/judge | Juicio tipado de una cláusula contra una provisión del corpus (banda experimental). |
Acervo observado y fechas
/v1/search usa status=observed por defecto: sin as_of busca también en versiones observadas anteriores, no sólo en la observación más reciente. El parámetro limit sigue acotando los resultados. Consulta expression_id, las fechas y la procedencia de cada resultado; observado no significa vigente.
status=vigente es un filtro estricto opt-in: sin as_of usa la fecha de hoy y puede devolver un resultado vacío cuando no hay fechas efectivas registradas. Con as_of, la búsqueda exige una ventana efectiva que cubra esa fecha, sin recurrir al texto actual si falta cobertura (fail-closed).
/v1/context-pack recupera del acervo observado (excluye observaciones sustituidas y claves retiradas del catálogo) y no ofrece los filtros temporales de /v1/search. Cada snippet incluye en provenance la identidad de su fuente: instrument_id, expression_id, version, canonical_sha256 y fechas conocidas (con raw_sha256 e indexed_at cuando hay manifestación; campos desconocidos se omiten). Una misma stable_key puede corresponder a más de una expresión; el score mide utilidad y no vigencia, el snippet es un recorte y no el texto íntegro, y los identificadores no certifican validez jurídica ni aseguran actualidad.
Referencias de provisión
GET /v1/instruments/{id}/provisions/{stable_key} y POST /v1/citations/validate resuelven la clave estable completa (por ejemplo book:1/title:1/article:22) o una referencia simple (article:22) cuando es única dentro de la expresión consultada. Si hay ambigüedad, la API responde 409 con las claves candidatas: nunca adivina. Esta regla no se aplica a /v1/judge, cuyo provision_ref se describe abajo.
Ejemplos con curl
Buscar disposicionescurl -sS "https://contextlexmx.asteroitt.com/v1/search?q=datos%20personales" \
-H "X-API-Key: TU_CLAVE"
Resolver un instrumentocurl -sS "https://contextlexmx.asteroitt.com/v1/instruments/resolve?q=C%C3%B3digo%20Civil%20Federal" \
-H "X-API-Key: TU_CLAVE"
Validar una citacurl -sS -X POST "https://contextlexmx.asteroitt.com/v1/citations/validate" \
-H "X-API-Key: TU_CLAVE" -H "Content-Type: application/json" \
-d '{"instrument": "mx-federal-ccf", "provision": "article:22"}'
Juzgar una cláusula (experimental)
POST /v1/judge compara una cláusula tuya contra una disposición del acervo. Sólo acepta la referencia de la provisión (provision_ref: la provision_key única global o una clave estable única entre los instrumentos servidos); el texto se resuelve contra el corpus y nunca se toma del cliente, para que la cita sea verificable. Devuelve verdict (contradiction, no_contradiction o needs_context), confidence, band, la citation (instrumento, provisión, versión) y una rationale ensamblada por código.
No es consejo legal ni afirma vigencia. La band (auto, review, discard) y sus umbrales son experimentales: derivan de un PoC de 14 parejas y sólo orientan la revisión humana. Una provision_ref inexistente responde 404; sin proveedor de juicios, 503 honesto.
Juzgar una cláusulacurl -sS -X POST "https://contextlexmx.asteroitt.com/v1/judge" \
-H "X-API-Key: TU_CLAVE" -H "Content-Type: application/json" \
-d '{"claim_text": "La capacidad jurídica de las personas físicas se adquiere por el nacimiento y se pierde por la muerte.",
"provision_ref": "book:1/title:1/article:22"}'
Errores
Los errores devuelven JSON con la forma {"code": "...", "message": "..."}. Las validaciones de parámetros responden 422 con code=validation_error; un recurso no observado se reporta explícitamente y nunca se finge cobertura.
- 401
- Clave ausente, inválida, vencida, revocada o sin el alcance requerido.
- 403
- La organización no aplica o tu sesión no tiene el alcance requerido.
- 404
- El recurso solicitado no está observado en el acervo.
- 409
- Referencia de provisión ambigua: repite la consulta con la clave completa de las candidatas.
- 429
- Se excedió el límite de consultas; respeta el encabezado
Retry-After. - 503
- Servicio o proveedor externo no disponible; no es un resultado vacío.
Límites de uso
Cada clave consume una cubeta con recarga por minuto y ráfaga. El plan por defecto permite 60 consultas por minuto con una ráfaga de 20; tu plan de negocio puede ajustar esas cotas. Cada respuesta de /v1 autenticada con clave incluye RateLimit-Limit, RateLimit-Remaining y RateLimit-Reset; al excederse responde 429 con Retry-After.
TLS y versionado
El servicio exige HTTPS y responde con Strict-Transport-Security. La superficie pública está versionada bajo /v1; los cambios incompatibles se publicarán en una versión nueva en lugar de alterar la existente.