---
title: "Tribunal del Servicio Civil Resolution"
method: POST
path: "/pe/servir-tsc/resolution/v1"
tags: ["Peru", "Tribunal del Servicio Civil"]
---

# Tribunal del Servicio Civil Resolution

`POST /pe/servir-tsc/resolution/v1`

## Request

- Base URL: `https://api.croma.run`
- URL: `https://api.croma.run/pe/servir-tsc/resolution/v1`
- Auth: HTTP bearer

Retrieve one resolution of Peru's Tribunal del Servicio Civil by its `id` from a search result (e.g. `7586381`) or its `page_url`: its full text, the number, the chamber, the session date, the entity, the case file, the employment regime, the subject and the tribunal's summary. 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
  - `resolution_id` string, required: The resolution's `id` from a search result, e.g. `7586381`. Its `page_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

- ServirTscResolutionResponse
  - `data` ServirTscResolutionData, required
    - `as_of` string, nullable, required: How current the data in this response is.
    - `found` boolean, required
    - `resolution_id` string, required
    - `resolution` object, nullable, required
      - `id` string, required: The resolution's permanent identifier, e.g. "7586381".
      - `resolution_number` number, nullable, required: The resolution's number, without leading zeros. Null when the tribunal published it under a title that carries none.
      - `resolution_year` number, nullable, required: The year the resolution's number belongs to, which is not always the year it was published in.
      - `chamber` 'primera_sala' | 'segunda_sala', required: The chamber that issued it: `primera_sala` or `segunda_sala`.
      - `resolution_key` string, nullable, required: How the resolution is cited: number, year and chamber, e.g. "5763-2025-primera_sala".
      - `title` string, required: The resolution's title as the tribunal publishes it.
      - `resolution_date` string, required: `yyyy-mm-dd` of the session the resolution belongs to.
      - `entity` string, nullable, required: The public entity the case is against, as the resolution's own heading gives it. Null when the document carries no text.
      - `expediente` string, nullable, required: The case file number the tribunal assigned. Null when the document carries no text.
      - `regime` string, nullable, required: The employment regime the case falls under, e.g. "Decreto Legislativo 276". Null when the document carries no text.
      - `subject` string, nullable, required: What the appeal is about, e.g. "Régimen disciplinario". Null when the document carries no text.
      - `summary` string, nullable, required: The tribunal's own one-paragraph summary (sumilla). Null when the document carries no text.
      - `text_status` 'ok' | 'scanned' | 'missing', required: `ok` when the full text is here; `scanned` when the tribunal published the resolution as an image with no text in it; `missing` when it published no readable document.
      - `document_url` string, nullable, required: The resolution's document, as published. Null when none is linked.
      - `page_url` string, required: The resolution's page, as published.
      - `uploaded_at` string, nullable, required: `yyyy-mm-dd` the document was last published, which can be days after the session it belongs to.
      - `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)
