Lookup oefa · sanctions by RUC
https://api.latinfo.dev/pe/oefa/sanctions/ruc/{ruc}
A sanctioned-entity case/resolution; one company can have multiple records. Coverage: Published environmental enforcement cases for legal-entity RUCs. Lookup by ruc as a string, preserving leading zeros. Accepted syntax and normalization are defined by the contract below. multa_expediente is in UIT, not PEN; narrative detail is truncated to 500 characters. Returns all records as an array. Import time is not observation time; inspect freshness headers. Add limit (1–500) and offset to retrieve an explicit page; without them the complete original array is returned. X-Total-Count gives the exact row count; follow Link rel=next to retrieve all pages.
Contrato de la fuente
- Publicador
- OEFA, Peru
- Cobertura
- Published environmental enforcement cases for legal-entity RUCs.
- Qué representa un registro
- A sanctioned-entity case/resolution; one company can have multiple records.
- Identificador
- Lookup by ruc as a string, preserving leading zeros. Accepted syntax and normalization are defined by the contract below.
- Patrón admitido
^\d{11}$- Cantidad de registros
many- Licencia
- No se ha verificado el permiso de reutilización. El acceso público no equivale a una licencia de reutilización.
Limitaciones conocidas
- multa_expediente is in UIT, not PEN; narrative detail is truncated to 500 characters.
Contrato de la fuente para agentes · Documentación de la fuente
Parámetros
rucstringpathobligatorioRUC in the source's normalized format. Keep identifiers as strings; preserve leading zeros.
Example: 20165230974
limitintegerqueryOptional page size. Supplying limit or offset enables explicit pagination; default page size is 100.
offsetintegerqueryRow offset, default 0. Keep the same source generation while collecting pages.
generationstringqueryOpaque source-generation guard, automatically included in the next-page Link. A changed generation returns 409; restart retrieval.
Ejemplo de solicitud
curl https://api.latinfo.dev/pe/oefa/sanctions/ruc/20165230974 \
-H "Authorization: Bearer $LATINFO_API_KEY"
Respuestas
200Published source records. Missing data is not a clearance or a negative finding.
Encabezados de la respuesta
X-Latinfo-Imported-AtImport time, not the date of the government observation.
X-Source-Updated-AtPublisher update time, when known.
X-Latest-Observation-AtLatest date in returned records, when known.
X-Freshness-Statusstring
CURRENT · DELAYED · STALE · UNKNOWNX-Credits-CostActual credits charged for this request.
X-Source-GenerationOpaque immutable source generation. Follow the guarded next-page Link when collecting a history.
X-Total-CountExact row count for this identifier when pagination is requested.
X-Page-Offsetinteger
X-Page-Limitinteger
LinkNext page URL, rel=next. Absent at the end.
application/jsonCampos de la respuesta
[].ruc string obligatorioLookup by ruc as a string, preserving leading zeros. Accepted syntax and normalization are defined by the contract below.
[].nombre string obligatorioPublished entity name.
[].subsector string obligatorioPublished economic subsector; a dash may represent unavailable data.
[].departamento string obligatorioPublished department name.
[].nro_expediente string obligatorioEnvironmental enforcement case identifier.
[].nro_rd string obligatorioDirectorate resolution identifier.
[].fecha_rd string obligatorioPublished fecha rd date. Format: YYYYMMDD.
[].tipo_sancion string obligatorioPublished sanction type, such as MULTA or AMONESTACION.
[].tipo_infraccion string obligatorioPublished formal infraction severity; not a Latinfo score.
[].medida_dictada string obligatorioPublished ordered measure.
[].detalle_infraccion string obligatorioPublished infraction narrative; truncated to 500 characters by the importer.
[].multa_expediente string obligatorioTotal fine for the environmental case, in UIT. Unit: UIT.
UIT
Esquema de respuesta
{
"type": "array",
"items": {
"type": "object",
"properties": {
"ruc": {
"type": "string",
"description": "Lookup by ruc as a string, preserving leading zeros. Accepted syntax and normalization are defined by the contract below."
},
"nombre": {
"type": "string",
"description": "Published entity name.",
"x-latinfo-meaning": "text"
},
"subsector": {
"type": "string",
"description": "Published economic subsector; a dash may represent unavailable data.",
"x-latinfo-meaning": "text"
},
"departamento": {
"type": "string",
"description": "Published department name.",
"x-latinfo-meaning": "text"
},
"nro_expediente": {
"type": "string",
"description": "Environmental enforcement case identifier.",
"x-latinfo-meaning": "identifier"
},
"nro_rd": {
"type": "string",
"description": "Directorate resolution identifier.",
"x-latinfo-meaning": "identifier"
},
"fecha_rd": {
"type": "string",
"description": "Published fecha rd date. Format: YYYYMMDD.",
"x-latinfo-meaning": "date"
},
"tipo_sancion": {
"type": "string",
"description": "Published sanction type, such as MULTA or AMONESTACION.",
"x-latinfo-meaning": "text"
},
"tipo_infraccion": {
"type": "string",
"description": "Published formal infraction severity; not a Latinfo score.",
"x-latinfo-meaning": "text"
},
"medida_dictada": {
"type": "string",
"description": "Published ordered measure.",
"x-latinfo-meaning": "text"
},
"detalle_infraccion": {
"type": "string",
"description": "Published infraction narrative; truncated to 500 characters by the importer.",
"x-latinfo-meaning": "text"
},
"multa_expediente": {
"type": "string",
"description": "Total fine for the environmental case, in UIT. Unit: UIT.",
"x-latinfo-meaning": "amount",
"x-latinfo-unit": "UIT"
}
},
"required": [
"ruc",
"nombre",
"subsector",
"departamento",
"nro_expediente",
"nro_rd",
"fecha_rd",
"tipo_sancion",
"tipo_infraccion",
"medida_dictada",
"detalle_infraccion",
"multa_expediente"
],
"additionalProperties": false
}
}400Invalid identifier or query. Correct the input before retrying.
401Missing or invalid API key. Authenticate before retrying.
404No published record, or identifier outside the legal-entity scope. Not proof that the company does not exist.
409Source generation changed during paginated retrieval. Restart from offset 0.
429Rate or credit limit exceeded. Inspect the response and rate-limit headers before retrying.
503Source unavailable. Report unavailable, not an empty result.
Ejemplo JSON
Ejemplo ilustrativo del esquema. No es una respuesta en vivo.
[
{
"ruc": "string",
"nombre": "string",
"subsector": "string",
"departamento": "string",
"nro_expediente": "string",
"nro_rd": "string",
"fecha_rd": "string",
"tipo_sancion": "string",
"tipo_infraccion": "string",
"medida_dictada": "string",
"detalle_infraccion": "string",
"multa_expediente": "string"
}
]Procedencia y limitaciones
La cobertura varía por país y fuente pública. Un campo ausente no demuestra que el hecho no exista. Los registros públicos pueden tener retrasos o errores; revisa la evidencia y la fecha de la fuente antes de usar un resultado.