Peru · pe_osce_penalidades_ruc
OpenAPI

Lookup osce · penalidades by RUC

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

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: 20100017491
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/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-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.

[].id_contrato string required

OSCE contract identifier.

[].tipo_penalidad string required

Published penalty category, including late delivery and other penalties.

[].objeto_contrato string required

Published contract subject/category.

[].entidad_contratante string required

Public buyer that applied the penalty; not the supplier name.

[].fecha_penalidad string required

Published fecha penalidad date. Format: DD/MM/YY.

[].descripcion string required

Published penalty reason.

[].monto string required

Published 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.
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",
    "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.