---
title: "Tribunal Supremo de Justicia de Bolivia Ruling"
method: POST
path: "/bo/tsj-bo/ruling/v1"
tags: ["Bolivia", "Tribunal Supremo de Justicia de Bolivia"]
---

# Tribunal Supremo de Justicia de Bolivia Ruling

`POST /bo/tsj-bo/ruling/v1`

## Request

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

Retrieve one resolution of Bolivia's Tribunal Supremo de Justicia by its `id` from a search result (e.g. `11378`) or its `official_url`: its full text, the resolution and case numbers, the chamber, the kind of resolution and how it was resolved, the area of law, the reporting justice, the court's jurisprudence notes, the document as the court published it, and a link to the resolution on the court's own site. 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

- TsjBoRulingResponse
  - `data` TsjBoRulingData, 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 in the Tribunal Supremo de Justicia's jurisprudence system, e.g. "11378". Each chamber numbers its own resolutions, so the resolution number is not unique.
      - `registration_number` string, nullable, required: The resolution number as the court prints it, e.g. "AS/0001/2010", "SE/0001/2023", "AS/1922/2023-RA". Null when the court's record carries none.
      - `case_number` string, nullable, required: The case file number (expediente) as the court prints it, e.g. "P-07-09-A".
      - `ruling_date` string, nullable, required: `yyyy-mm-dd` the court handed the resolution down.
      - `year` number, required: The year of the resolution.
      - `chamber` string, nullable, required: The chamber that decided, as the court names it, e.g. "Sala Civil", "Sala Penal 1", "Sala Plena", "Sala Social Liquidadora".
      - `type` 'auto_supremo' | 'sentencia' | 'resolucion', nullable, required: The kind of resolution: `auto_supremo`, `sentencia` or `resolucion`.
      - `type_label` string, nullable, required: The kind of resolution as the court names it, e.g. "Auto Supremo".
      - `subtype` string, nullable, required: The subtype the court records, e.g. "Auto Supremo de Fondo", "Auto Supremo de Admisión".
      - `outcome` string, nullable, required: How the court resolved (forma de resolución), e.g. "Infundado", "Casa", "Rechaza", "Improcedente".
      - `subject` string, nullable, required: The area of law (materia), e.g. "Civil", "Penal", "Familia", "Social", "Agrario".
      - `proceeding` string, nullable, required: The proceeding the case was, as the court records it, e.g. "Resolución de Contrato". Often empty.
      - `department` string, nullable, required: The department the case came from, e.g. "La Paz", "Santa Cruz", "Potosi".
      - `reporting_judge` string, nullable, required: The reporting justice (magistrado relator).
      - `jurisprudence` object[], required: The court's jurisprudence notes on the resolution: each a topic with its restrictor, ratio decidendi, maxim, summary and precedent. Empty when the court wrote none.
        - `kind` string, nullable, required: The kind of line the note records, as the court labels it, e.g. "Fundadora", "Modificadora", "Reiterativa".
        - `descriptor` string, nullable, required: Where the note sits in the court's topic tree, e.g. "Derecho Civil / Derecho Procesal Civil / Recursos".
        - `restrictor` string, nullable, required: The narrowing of the topic the note decides.
        - `ratio_decidendi` string, nullable, required: The reasoning the decision rests on, in the court's words.
        - `maxim` string, nullable, required: The rule the note draws from the resolution (máxima).
        - `summary` string, nullable, required: The court's summary of the resolution (síntesis).
        - `precedent` string, nullable, required: The precedent the note states or follows.
      - `descriptors` string[], required: The topics of the notes, in order, each once.
      - `text_status` 'ok' | 'scanned' | 'missing', required: `ok` when the full text is here; `scanned` when the court published the resolution only as a scan with no text in it; `missing` when it published no readable text.
      - `document_kind` 'scan' | 'rendering' | 'none', required: `scan` when the document is the court's scan of the signed resolution, `rendering` when it is the court's PDF of the text, `none` when there is no document.
      - `official_url` string, required: The resolution's page on the court's jurisprudence site.
      - `document_url` string, nullable, required: Croma's copy of the resolution's document (PDF), byte for byte as the court served it: the scan of the signed resolution when the court published one, otherwise the court's PDF of the text. It stays available whatever happens to the court's own link. Null when the court publishes no document for the resolution.
      - `source_document_url` string, nullable, required: Where the court publishes the document: the scan's own link, or the resolution's page on the court's site for the court's PDF of the text. Null when the court publishes none.
      - `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)
