Peru · pe_oefa_sanctions_ruc
OpenAPI

Lookup oefa · sanctions by RUC

GET 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.

Source contract

Publisher
OEFA, Peru
Coverage
Published environmental enforcement cases for legal-entity RUCs.
Record meaning
A sanctioned-entity case/resolution; one company can have multiple records.
Identifier
Lookup by ruc as a string, preserving leading zeros. Accepted syntax and normalization are defined by the contract below.
Accepted pattern
^\d{11}$
Cardinality
many
License
Reuse permission has not been verified. Public access is not a reuse license.

Known limitations

  • multa_expediente is in UIT, not PEN; narrative detail is truncated to 500 characters.

Machine-readable source contract · Source documentation

Authentication required. REST requests use a Latinfo API key. The interactive console builds the authorization header and does not store the key.

Parameters

rucstringpathrequired

RUC in the source's normalized format. Keep identifiers as strings; preserve leading zeros.

Example: 20165230974
limitintegerquery

Optional page size. Supplying limit or offset enables explicit pagination; default page size is 100.

offsetintegerquery

Row offset, default 0. Keep the same source generation while collecting pages.

generationstringquery

Opaque source-generation guard, automatically included in the next-page Link. A changed generation returns 409; restart retrieval.

Request example

curl https://api.latinfo.dev/pe/oefa/sanctions/ruc/20165230974 \
  -H "Authorization: Bearer $LATINFO_API_KEY"

Responses

200Published source records. Missing data is not a clearance or a negative finding.

Response headers

X-Latinfo-Imported-At

Import time, not the date of the government observation.

X-Source-Updated-At

Publisher update time, when known.

X-Latest-Observation-At

Latest date in returned records, when known.

X-Freshness-Status

string

CURRENT · DELAYED · STALE · UNKNOWN
X-Credits-Cost

Actual credits charged for this request.

X-Source-Generation

Opaque immutable source generation. Follow the guarded next-page Link when collecting a history.

X-Total-Count

Exact row count for this identifier when pagination is requested.

X-Page-Offset

integer

X-Page-Limit

integer

Link

Next page URL, rel=next. Absent at the end.

Content-Type: application/json

Response fields

[].ruc string required

Lookup by ruc as a string, preserving leading zeros. Accepted syntax and normalization are defined by the contract below.

[].nombre string required

Published entity name.

[].subsector string required

Published economic subsector; a dash may represent unavailable data.

[].departamento string required

Published department name.

[].nro_expediente string required

Environmental enforcement case identifier.

[].nro_rd string required

Directorate resolution identifier.

[].fecha_rd string required

Published fecha rd date. Format: YYYYMMDD.

[].tipo_sancion string required

Published sanction type, such as MULTA or AMONESTACION.

[].tipo_infraccion string required

Published formal infraction severity; not a Latinfo score.

[].medida_dictada string required

Published ordered measure.

[].detalle_infraccion string required

Published infraction narrative; truncated to 500 characters by the importer.

[].multa_expediente string required

Total fine for the environmental case, in UIT. Unit: UIT.

UIT

Response schema
{
  "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.
No response body documented.
401Missing or invalid API key. Authenticate before retrying.
No response body documented.
404No published record, or identifier outside the legal-entity scope. Not proof that the company does not exist.
No response body documented.
409Source generation changed during paginated retrieval. Restart from offset 0.
No response body documented.
429Rate or credit limit exceeded. Inspect the response and rate-limit headers before retrying.
No response body documented.
503Source unavailable. Report unavailable, not an empty result.
No response body documented.
Example JSON

Illustrative schema example. This is not a live response.

[
  {
    "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"
  }
]

Provenance and limitations

Coverage varies by country and public source. A missing field is not evidence that the underlying fact does not exist. Public registries may be delayed or contain source errors; inspect the returned evidence and source date before relying on a result.