> ## Documentation Index
> Fetch the complete documentation index at: https://docs.usecroma.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Tribunal Supremo de Justicia de Bolivia Rulings Search

> Search the jurisprudencia of Bolivia's Tribunal Supremo de Justicia: every auto supremo, sentencia and resolución its chambers have published since 2001. Free text matches the resolution and case numbers, the chamber, the area of law, the outcome, the court's jurisprudence notes and the full text. Filter by `chamber`, `type`, `subject`, `outcome`, `registration_number`, `case_number`, `reporting_judge`, `department`, `year` and the ruling date (`from_date`/`to_date`). Each result carries the document, kept by Croma, and a link to the resolution on the court's own site. Served by Croma (`as_of` says how current the data is).

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



## OpenAPI

````yaml /api-reference/openapi.json post /bo/tsj-bo/rulings-search/v1
openapi: 3.1.0
info:
  title: Croma Marketplace API
  version: 1.0.0
  description: >-
    Government-data APIs for Colombia, Peru, Mexico, United States, Brazil, El
    Salvador, and Bolivia, plus global web search. Croma normalizes
    public-sector data into structured JSON for product teams and AI agents.


    Every operation is a POST with a JSON body and an organization API key as a
    bearer token; every operation is an idempotent lookup and accepts an
    optional `Idempotency-Key` header. Paths carry their major version (`/v1`);
    the versioning and deprecation policy, including the `Deprecation` and
    `Sunset` headers a retiring endpoint sends, is at
    https://docs.usecroma.com/versioning. Rate limits are per organization and
    reported on every response (`RateLimit-Policy`, `X-RateLimit-*`):
    https://docs.usecroma.com/rate-limits.
  termsOfService: https://usecroma.com/en/terms
  contact:
    name: Croma support
    url: https://usecroma.com/en/support
    email: support@usecroma.com
servers:
  - url: https://api.croma.run
security: []
paths:
  /bo/tsj-bo/rulings-search/v1:
    post:
      tags:
        - Bolivia
        - Tribunal Supremo de Justicia de Bolivia
      summary: Tribunal Supremo de Justicia de Bolivia Rulings Search
      description: >-
        Search the jurisprudencia of Bolivia's Tribunal Supremo de Justicia:
        every auto supremo, sentencia and resolución its chambers have published
        since 2001. Free text matches the resolution and case numbers, the
        chamber, the area of law, the outcome, the court's jurisprudence notes
        and the full text. Filter by `chamber`, `type`, `subject`, `outcome`,
        `registration_number`, `case_number`, `reporting_judge`, `department`,
        `year` and the ruling date (`from_date`/`to_date`). Each result carries
        the document, kept by Croma, and a link to the resolution on the court's
        own site. Served by Croma (`as_of` says how current the data is).


        **Dataset endpoint**: answers from the whole source in milliseconds and
        carries `as_of`.
      operationId: tsj_bo_rulings_search
      parameters:
        - $ref: '#/components/parameters/IdempotencyKey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: []
              properties:
                query:
                  type: string
                  maxLength: 300
                  default: ''
                  description: >-
                    Optional search terms matched against the resolution number,
                    the case number, the chamber, the jurisprudence notes
                    (descriptor, restrictor, ratio decidendi) and the full text.
                chamber:
                  type: string
                  maxLength: 120
                  default: ''
                  description: >-
                    Optional chamber as `chamber` names it, e.g. `Sala Civil`,
                    `Sala Penal`, `Sala Plena` or `Sala Contenciosa`, matched
                    from the start. Case and accents are ignored.
                type:
                  type: string
                  enum:
                    - ''
                    - auto_supremo
                    - sentencia
                    - resolucion
                  default: ''
                  description: >-
                    Optional kind of resolution: `auto_supremo`, `sentencia` or
                    `resolucion`.
                subject:
                  type: string
                  maxLength: 120
                  default: ''
                  description: >-
                    Optional area of law as `subject` names it, e.g. `Civil`,
                    `Penal`, `Familia`, `Social`, `Agrario`, matched from the
                    start. Case and accents are ignored.
                outcome:
                  type: string
                  maxLength: 120
                  default: ''
                  description: >-
                    Optional outcome as `outcome` names it, e.g. `Infundado`,
                    `Casa`, `Improcedente`, `Anula`, matched from the start.
                    Case and accents are ignored.
                registration_number:
                  type: string
                  maxLength: 80
                  default: ''
                  description: >-
                    Optional resolution number as the court prints it, e.g.
                    `AS/0001/2013` or `SE/0001/2023`. Each chamber numbers its
                    own resolutions, so a number can return several; add
                    `chamber` to narrow it. Case, spaces and punctuation are
                    ignored.
                case_number:
                  type: string
                  maxLength: 80
                  default: ''
                  description: >-
                    Optional case file number (expediente) as the court prints
                    it. Case, spaces and punctuation are ignored.
                reporting_judge:
                  type: string
                  maxLength: 160
                  default: ''
                  description: >-
                    Optional reporting justice (magistrado relator) as
                    `reporting_judge` names them, matched from the start of the
                    name. Case and accents are ignored.
                department:
                  type: string
                  maxLength: 60
                  default: ''
                  description: >-
                    Optional department the case came from, e.g. `La Paz`,
                    `Santa Cruz`, `Chuquisaca`, matched from the start. Case and
                    accents are ignored.
                year:
                  type: integer
                  minimum: 0
                  maximum: 2100
                  default: 0
                  description: Optional year of the resolution. 0 searches every year.
                from_date:
                  type: string
                  format: date
                  default: ''
                  description: Optional date filter in yyyy-mm-dd format.
                to_date:
                  type: string
                  format: date
                  default: ''
                  description: Optional date filter in yyyy-mm-dd format.
                page:
                  type: integer
                  minimum: 1
                  maximum: 1000
                  default: 1
                  description: 1-based page number for paginated results.
                per_page:
                  type: integer
                  minimum: 1
                  maximum: 50
                  default: 20
                  description: Results per page (1-50).
              additionalProperties: false
            example:
              query: nulidad de contrato
              chamber: Sala Civil
              type: auto_supremo
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            Idempotency-Key:
              $ref: '#/components/headers/Idempotency-Key'
            Deprecation:
              $ref: '#/components/headers/Deprecation'
            Sunset:
              $ref: '#/components/headers/Sunset'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
            X-Cache:
              $ref: '#/components/headers/X-Cache'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TsjBoRulingsSearchResponse'
        '400':
          description: Invalid request body
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            Idempotency-Key:
              $ref: '#/components/headers/Idempotency-Key'
            Deprecation:
              $ref: '#/components/headers/Deprecation'
            Sunset:
              $ref: '#/components/headers/Sunset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '401':
          description: Missing or invalid API key
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            Idempotency-Key:
              $ref: '#/components/headers/Idempotency-Key'
            Deprecation:
              $ref: '#/components/headers/Deprecation'
            Sunset:
              $ref: '#/components/headers/Sunset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '429':
          description: Rate limit exceeded
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            Idempotency-Key:
              $ref: '#/components/headers/Idempotency-Key'
            Deprecation:
              $ref: '#/components/headers/Deprecation'
            Sunset:
              $ref: '#/components/headers/Sunset'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
            Retry-After:
              $ref: '#/components/headers/Retry-After'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '500':
          description: Internal error
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            Idempotency-Key:
              $ref: '#/components/headers/Idempotency-Key'
            Deprecation:
              $ref: '#/components/headers/Deprecation'
            Sunset:
              $ref: '#/components/headers/Sunset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '502':
          description: Upstream source returned an error
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            Idempotency-Key:
              $ref: '#/components/headers/Idempotency-Key'
            Deprecation:
              $ref: '#/components/headers/Deprecation'
            Sunset:
              $ref: '#/components/headers/Sunset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
      security:
        - bearerAuth: []
      externalDocs:
        description: Interactive documentation and examples
        url: https://docs.usecroma.com/guides/bolivia/tsj
components:
  parameters:
    IdempotencyKey:
      name: Idempotency-Key
      in: header
      required: false
      description: >-
        Optional client-chosen key for this request (any string up to 255
        characters, e.g. a UUID). Every Croma operation is an idempotent lookup:
        repeating a request with the same body returns the same result and
        creates nothing, so retrying after a timeout or network failure is
        always safe. The key is echoed back in the `Idempotency-Key` response
        header so you can correlate a retry with its first attempt. Each attempt
        that reaches the API counts against the rate limit.
      schema:
        type: string
        maxLength: 255
        example: 0f8e9a42-6b7c-4d1e-9a3f-2c5d7e8f9a0b
  headers:
    X-Request-Id:
      description: Unique id for the request (req_…). Include it in support reports.
      schema:
        type: string
    RateLimit-Policy:
      description: >-
        Quota policy for this endpoint as an IETF RateLimit-Policy structured
        field, e.g. `"default";q=100;w=86400` (100 requests per 86400-second
        window per organization). Endpoints with an extra hourly ceiling list
        both policies, e.g. `"webSearch";q=100;w=3600, "default";q=100;w=86400`.
        Present on every response, including 401 and 429.
      schema:
        type: string
        example: '"default";q=100;w=86400'
    Idempotency-Key:
      description: >-
        The `Idempotency-Key` the request carried, echoed back unchanged. Absent
        when the request sent none.
      schema:
        type: string
    Deprecation:
      description: >-
        Present only on an endpoint version scheduled for removal: the date the
        deprecation took effect (RFC 9745). A `Sunset` header and a `Link` with
        `rel="successor-version"` accompany it. Policy:
        https://docs.usecroma.com/versioning
      schema:
        type: string
        example: '@1767225600'
    Sunset:
      description: >-
        Present only on an endpoint version scheduled for removal: the date
        after which it answers 410 (RFC 8594). Announced in the changelog at
        least 90 days ahead.
      schema:
        type: string
        format: date-time
        example: Wed, 01 Apr 2026 00:00:00 GMT
    X-RateLimit-Limit:
      description: Requests allowed in the current window.
      schema:
        type: integer
    X-RateLimit-Remaining:
      description: Requests left before you are throttled.
      schema:
        type: integer
    X-RateLimit-Reset:
      description: ISO 8601 timestamp when the window resets.
      schema:
        type: string
        format: date-time
    X-Cache:
      description: >-
        HIT or MISS. Cached hits spend no credits, but still count toward an
        hourly ceiling.
      schema:
        type: string
        enum:
          - HIT
          - MISS
    Retry-After:
      description: Seconds to wait before retrying.
      schema:
        type: integer
  schemas:
    TsjBoRulingsSearchResponse:
      type: object
      required:
        - data
      properties:
        data:
          $ref: '#/components/schemas/TsjBoRulingsSearchData'
    ApiError:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - type
            - code
            - message
          properties:
            type:
              type: string
              description: >-
                Broad category: invalid_request_error, authentication_error,
                not_found_error, rate_limit_error, upstream_error, api_error.
            code:
              type: string
              description: Machine-readable specific code.
            message:
              type: string
              description: Human-readable explanation, safe to surface in UI.
            param:
              type: string
              description: Field that triggered the error. Present on validation errors.
            details:
              type: object
              description: Free-form structured detail.
    TsjBoRulingsSearchData:
      type: object
      properties:
        as_of:
          anyOf:
            - type: string
            - type: 'null'
          description: How current the data in this response is.
        query:
          type: string
        chamber:
          anyOf:
            - type: string
            - type: 'null'
        type:
          anyOf:
            - type: string
            - type: 'null'
        subject:
          anyOf:
            - type: string
            - type: 'null'
        outcome:
          anyOf:
            - type: string
            - type: 'null'
        registration_number:
          anyOf:
            - type: string
            - type: 'null'
        case_number:
          anyOf:
            - type: string
            - type: 'null'
        reporting_judge:
          anyOf:
            - type: string
            - type: 'null'
        department:
          anyOf:
            - type: string
            - type: 'null'
        year:
          anyOf:
            - type: number
            - type: 'null'
        from_date:
          anyOf:
            - type: string
            - type: 'null'
        to_date:
          anyOf:
            - type: string
            - type: 'null'
        total:
          type: number
          description: Matches, counted up to 1000.
        total_is_exact:
          type: boolean
          description: >-
            False when more than 1000 match: `total` is then 1000, and the pages
            go on.
        page:
          type: number
        per_page:
          type: number
        total_pages:
          type: number
          description: Pages over `total`; there are more when `total_is_exact` is false.
        count:
          type: number
        results:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: >-
                  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:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  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:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The case file number (expediente) as the court prints it, e.g.
                  "P-07-09-A".
              ruling_date:
                anyOf:
                  - type: string
                  - type: 'null'
                description: '`yyyy-mm-dd` the court handed the resolution down.'
              year:
                type: number
                description: The year of the resolution.
              chamber:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The chamber that decided, as the court names it, e.g. "Sala
                  Civil", "Sala Penal 1", "Sala Plena", "Sala Social
                  Liquidadora".
              type:
                anyOf:
                  - type: string
                    enum:
                      - auto_supremo
                      - sentencia
                      - resolucion
                  - type: 'null'
                description: >-
                  The kind of resolution: `auto_supremo`, `sentencia` or
                  `resolucion`.
              type_label:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The kind of resolution as the court names it, e.g. "Auto
                  Supremo".
              subtype:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The subtype the court records, e.g. "Auto Supremo de Fondo",
                  "Auto Supremo de Admisión".
              outcome:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  How the court resolved (forma de resolución), e.g.
                  "Infundado", "Casa", "Rechaza", "Improcedente".
              subject:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The area of law (materia), e.g. "Civil", "Penal", "Familia",
                  "Social", "Agrario".
              proceeding:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The proceeding the case was, as the court records it, e.g.
                  "Resolución de Contrato". Often empty.
              department:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The department the case came from, e.g. "La Paz", "Santa
                  Cruz", "Potosi".
              reporting_judge:
                anyOf:
                  - type: string
                  - type: 'null'
                description: The reporting justice (magistrado relator).
              jurisprudence:
                type: array
                items:
                  type: object
                  properties:
                    kind:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: >-
                        The kind of line the note records, as the court labels
                        it, e.g. "Fundadora", "Modificadora", "Reiterativa".
                    descriptor:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: >-
                        Where the note sits in the court's topic tree, e.g.
                        "Derecho Civil / Derecho Procesal Civil / Recursos".
                    restrictor:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: The narrowing of the topic the note decides.
                    ratio_decidendi:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: >-
                        The reasoning the decision rests on, in the court's
                        words.
                    maxim:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: The rule the note draws from the resolution (máxima).
                    summary:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: The court's summary of the resolution (síntesis).
                    precedent:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: The precedent the note states or follows.
                  required:
                    - kind
                    - descriptor
                    - restrictor
                    - ratio_decidendi
                    - maxim
                    - summary
                    - precedent
                description: >-
                  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.
              descriptors:
                type: array
                items:
                  type: string
                description: The topics of the notes, in order, each once.
              text_status:
                type: string
                enum:
                  - ok
                  - scanned
                  - missing
                description: >-
                  `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:
                type: string
                enum:
                  - scan
                  - rendering
                  - none
                description: >-
                  `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:
                type: string
                description: The resolution's page on the court's jurisprudence site.
              document_url:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  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:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  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.
            required:
              - id
              - registration_number
              - case_number
              - ruling_date
              - year
              - chamber
              - type
              - type_label
              - subtype
              - outcome
              - subject
              - proceeding
              - department
              - reporting_judge
              - jurisprudence
              - descriptors
              - text_status
              - document_kind
              - official_url
              - document_url
              - source_document_url
      required:
        - as_of
        - query
        - chamber
        - type
        - subject
        - outcome
        - registration_number
        - case_number
        - reporting_judge
        - department
        - year
        - from_date
        - to_date
        - total
        - total_is_exact
        - page
        - per_page
        - total_pages
        - count
        - results
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'Use Authorization: Bearer YOUR_API_KEY'

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.