---
title: "Tribunal Constitucional Plurinacional de Bolivia Ruling"
method: POST
path: "/bo/tcp-bo/ruling/v1"
tags: ["Bolivia", "Tribunal Constitucional Plurinacional de Bolivia"]
---

# Tribunal Constitucional Plurinacional de Bolivia Ruling

`POST /bo/tcp-bo/ruling/v1`

## Request

- Base URL: `https://api.croma.run`
- URL: `https://api.croma.run/bo/tcp-bo/ruling/v1`
- Auth: HTTP bearer

Retrieve one resolution of Bolivia's Tribunal Constitucional Plurinacional by its `id` from a search result (e.g. `202697`) or its `official_url`: its full text, the resolution number, the chamber, the reporting justice, the constitutional action, the department, the case files, the original document as the court published it, and the link to its page at the court. The text comes back a character range at a time (`offset`, `limit`); follow `next_offset` until `has_more` is false.

**Dataset endpoint**: answers from the whole source in milliseconds and carries `as_of`.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `ruling_id` string, required: The resolution's `id` from a search result. Its `official_url` works too.
  - `offset` integer: First character of the range to return. Pass the previous response's `next_offset` to continue reading.
  - `limit` integer: Maximum characters to return (1000-1000000).

## Response `200`

Successful response

- TcpBoRulingResponse
  - `data` TcpBoRulingData, required
    - `as_of` string, nullable, required: How current the data in this response is.
    - `found` boolean, required
    - `ruling_id` string, required
    - `ruling` object, nullable, required
      - `id` string, required: The resolution's permanent number at the Tribunal Constitucional Plurinacional, e.g. "202697". Votes share the number of the ruling they accompany, so the resolution number is not unique.
      - `registration_number` string, nullable, required: The resolution number as the court prints it, e.g. "0049/2024-S2", "0092/2024-CA", "0741/2003-R". Null for a vote the court left unnumbered.
      - `type` 'sentencia' | 'auto' | 'declaracion' | 'voto_disidente' | 'voto_aclaratorio' | 'decreto', nullable, required: The kind of resolution: `sentencia` (SC, SCP), `auto` (AC, ACP, autos of the Comisión de Admisión), `declaracion` (DCP), `voto_disidente`, `voto_aclaratorio` or `decreto`. Null when the court does not say.
      - `type_label` string, nullable, required: The kind of resolution as the court records it, e.g. "SENTENCIA", "AUTO CONST. P.", "VOTO DISIDENTE".
      - `ruling_date` string, required: `yyyy-mm-dd` the court handed the resolution down, Bolivian time.
      - `year` number, required: The year of the resolution.
      - `chamber` string, nullable, required: The chamber that decided, as the resolution names it, e.g. "SALA SEGUNDA", "SALA PLENA", "COMISIÓN DE ADMISIÓN", "SALA LIQUIDADORA TRANSITORIA".
      - `proceeding_type` string, nullable, required: The constitutional action or proceeding, e.g. "Acción de Amparo Constitucional", "Acción de Libertad", "Acción de Inconstitucionalidad Concreta", "Recurso de Habeas Corpus".
      - `reporting_judge` string, nullable, required: The reporting justice (magistrado relator) as the resolution names them; for a vote, the justice or justices who signed it.
      - `department` string, nullable, required: The department the case came from, e.g. "La Paz", "Santa Cruz", "Cochabamba".
      - `case_numbers` string[], required: The case files (expedientes) the resolution decides, as the court numbers them, e.g. ["52034-2022-105-AL"]. Joined cases list several.
      - `text_status` 'ok' | 'scanned' | 'missing', required: `ok` when the full text is here; `scanned` when the court published the resolution's document with no text alongside it; `missing` when it published neither.
      - `official_url` string, required: The resolution's page at the Tribunal Constitucional Plurinacional.
      - `document_url` string, nullable, required: Croma's copy of the resolution's original document (PDF), byte for byte as the court published it. It stays available whatever happens to the court's own site. Null when the court publishes no document for the resolution.
      - `source_document_url` string, nullable, required: The document's own link at the court. Always null: the court serves its documents from the resolution's page, with no link of their own.
      - `content` object, nullable, required: A range of the resolution's text, or null when `text_status` is not `ok`.
        - `text` string, required: The requested character range of the resolution's text.
        - `offset` number, required: First character of the range, which is where the reading actually started.
        - `total_length` number, required: Length of the whole text in characters, however much of it this response carries.
        - `has_more` boolean, required: Whether the text continues past this range.
        - `next_offset` number, nullable, required: Pass this back as `offset` to read the next range. Null at the end of the text.

## Other responses

- `400`: Invalid request body
- `401`: Missing or invalid API key
- `429`: Rate limit exceeded
- `500`: Internal error
- `502`: Upstream source returned an error

---

[API](https://skmtc.dev/usecroma/apis/croma-marketplace-api.md) · [All operations](https://skmtc.dev/usecroma/apis/croma-marketplace-api/llms.txt) · [OpenAPI document](https://skmtc.dev/usecroma/apis/croma-marketplace-api/revisions/df016cdb29d7?raw)
