Lookup osce · penalidades by RUC
https://api.latinfo.dev/pe/osce/penalidades/ruc/{ruc}
A contract penalty, identified by contract and publication attributes. Coverage: Published contractual penalties for legal-entity suppliers. Lookup by ruc as a string, preserving leading zeros. Accepted syntax and normalization are defined by the contract below. Amounts are PEN strings and can use decimal commas; preserve contract context. 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
- OSCE / OECE, Peru
- Coverage
- Published contractual penalties for legal-entity suppliers.
- Record meaning
- A contract penalty, identified by contract and publication attributes.
- 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
- Amounts are PEN strings and can use decimal commas; preserve contract context.
Parameters
rucstringpathrequiredRUC in the source's normalized format. Keep identifiers as strings; preserve leading zeros.
Example: 20100017491
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.
Request example
curl https://api.latinfo.dev/pe/osce/penalidades/ruc/20100017491 \
-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-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/jsonResponse fields
[].ruc string requiredLookup by ruc as a string, preserving leading zeros. Accepted syntax and normalization are defined by the contract below.
[].id_contrato string requiredOSCE contract identifier.
[].tipo_penalidad string requiredPublished penalty category, including late delivery and other penalties.
[].objeto_contrato string requiredPublished contract subject/category.
[].entidad_contratante string requiredPublic buyer that applied the penalty; not the supplier name.
[].fecha_penalidad string requiredPublished fecha penalidad date. Format: DD/MM/YY.
[].descripcion string requiredPublished penalty reason.
[].monto string requiredPublished contractual penalty amount; decimal commas are retained. Unit: PEN.
PEN
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."
},
"id_contrato": {
"type": "string",
"description": "OSCE contract identifier.",
"x-latinfo-meaning": "identifier"
},
"tipo_penalidad": {
"type": "string",
"description": "Published penalty category, including late delivery and other penalties.",
"x-latinfo-meaning": "text"
},
"objeto_contrato": {
"type": "string",
"description": "Published contract subject/category.",
"x-latinfo-meaning": "text"
},
"entidad_contratante": {
"type": "string",
"description": "Public buyer that applied the penalty; not the supplier name.",
"x-latinfo-meaning": "text"
},
"fecha_penalidad": {
"type": "string",
"description": "Published fecha penalidad date. Format: DD/MM/YY.",
"x-latinfo-meaning": "date"
},
"descripcion": {
"type": "string",
"description": "Published penalty reason.",
"x-latinfo-meaning": "text"
},
"monto": {
"type": "string",
"description": "Published contractual penalty amount; decimal commas are retained. Unit: PEN.",
"x-latinfo-meaning": "amount",
"x-latinfo-unit": "PEN"
}
},
"required": [
"ruc",
"id_contrato",
"tipo_penalidad",
"objeto_contrato",
"entidad_contratante",
"fecha_penalidad",
"descripcion",
"monto"
],
"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.
Example JSON
Illustrative schema example. This is not a live response.
[
{
"ruc": "string",
"id_contrato": "string",
"tipo_penalidad": "string",
"objeto_contrato": "string",
"entidad_contratante": "string",
"fecha_penalidad": "string",
"descripcion": "string",
"monto": "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.