Saltar al contenido principal

Documentation Index

Fetch the complete documentation index at: https://docs-attestly.code4source.com/llms.txt

Use this file to discover all available pages before exploring further.

Un ruleset es un documento JSON que describe:
  1. Qué sources consultar (y cómo filtrarlos).
  2. Qué valores computar (counts, áreas, distancias).
  3. Qué condiciones deben cumplirse para que el resultado sea compliant.
Envía el ruleset inline en cada /v1/evaluate, o guárdalo una vez en el catálogo y referencia por name@version después.

Anatomía

{
  "name": "br-rural-credit",
  "version": 1,
  "description": "Elegibilidad de crédito rural por Resolução BCB 4.943",

  "sets": {
    "indigenous_overlap": {
      "source": "br:funai:indigenous-territories",
      "join": { "op": "intersects", "target": "$input" }
    },
    "embargo_overlap": {
      "source": "br:ibama:embargoed-areas",
      "join": { "op": "intersects", "target": "$input" }
    }
  },

  "projections": {
    "indigenous_area": {
      "set": "$indigenous_overlap",
      "terminal": { "type": "total_area_m2" }
    }
  },

  "checks": [
    {
      "id": "no_indigenous_overlap",
      "severity": "critical",
      "predicate": { "type": "exists", "set": "$indigenous_overlap" }
    },
    {
      "id": "no_embargo_overlap",
      "severity": "high",
      "predicate": { "type": "exists", "set": "$embargo_overlap" }
    }
  ]
}

Los tres bloques

sets — qué features considerar

Un set está anclado a un source y se cruza contra $input (la geometría/identificador de la request) u otro set. Operadores de join disponibles:
  • intersects — solapamiento de geometría
  • contains / within — contención total
  • dwithin — dentro de un buffer
  • disjoint — sin solapamiento
  • subject_match — match por identificador (para subject registers)
También puedes construir sets vía operaciones de conjunto:
{
  "any_protected": {
    "from_set_op": {
      "op": "union",
      "operands": ["$indigenous_overlap", "$conservation_overlap"]
    }
  }
}

projections — qué computar

Las projections producen valores numéricos o geométricos. Terminales comunes:
  • count — número de features coincidentes
  • total_area_m2, total_perimeter_m
  • overlap_ratio — fracción del input cubierta
  • min_distance_m, max_distance_m
  • aggregate — sum / avg / min / max de una propiedad de la feature
  • merge — geometría unificada (para visualización)
Las projections no disparan el verdict — solo producen valores.

checks — qué debe cumplirse

Los checks tienen una severity y un predicate:
{
  "id": "max_3_overlaps",
  "severity": "medium",
  "predicate": {
    "type": "threshold",
    "projection": "total_overlap_count",
    "op": "<=",
    "value": 3
  }
}
Severities, de la más fuerte a la más débil: critical, high, medium, low, info. Ver Verdicts para entender cómo mapean a outcomes.

Atajo inline

Caso común — count + threshold en un único check. El parser acepta:
{
  "id": "at_least_one_car",
  "severity": "high",
  "predicate": {
    "type": "count",
    "set": "$car_overlap",
    "op": ">=",
    "value": 1
  }
}
La projection del threshold queda implícita por el predicate.

Filtros

Restringe un set con filter:
{
  "recent_embargoes": {
    "source": "br:ibama:embargoed-areas",
    "join": { "op": "intersects", "target": "$input" },
    "filter": {
      "type": "temporal_relative",
      "property": "embargo_date",
      "op": "within_days",
      "value": 365
    }
  }
}

Política de verdict personalizada

Sobrescribe el mapeo default de severity con una política explícita:
{
  "verdict_policy": {
    "kind": "severity_mapping",
    "rules": {
      "critical": "non_compliant",
      "high":     "non_compliant",
      "medium":   "warning",
      "low":      "warning",
      "info":     "compliant"
    }
  }
}

Límites

Para mantener respuestas predecibles, la API impone:
LímiteDefault
Máximo de sets20
Máximo de checks50
Máximo de projections20
Profundidad máxima5
Distancia máxima de buffer50 km
Área máxima del input1 000 km²
Máximo de evidence por check20
Exceder cualquiera devuelve 422 PROGRAM_VALIDATION_ERROR.

A continuación

  • Ejemplos — rulesets completos para políticas comunes.
  • Catálogo — guarda y versiona tu ruleset.