---
title: "Tribunal del Servicio Civil Resolutions Search"
method: POST
path: "/pe/servir-tsc/resolutions-search/v1"
tags: ["Peru", "Tribunal del Servicio Civil"]
---

# Tribunal del Servicio Civil Resolutions Search

`POST /pe/servir-tsc/resolutions-search/v1`

## Request

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

Search every resolution Peru's Tribunal del Servicio Civil (SERVIR) has issued since 2010, across both chambers. Free text matches the resolution number, the entity, the tribunal's summary and the full text. Filter by `chamber` (`primera_sala` or `segunda_sala`), `resolution_number`, `year` and the session date (`from_date`/`to_date`). Each result links to the document as published. Served by Croma (`as_of` says how current the data is).

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

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `query` string: Optional search terms matched against the resolution number, the entity, the summary and the full text.
  - `chamber` string: Optional chamber: `primera_sala` or `segunda_sala`.
  - `resolution_number` string: Optional resolution number, with or without its year, e.g. `05763-2025` or `5763`. Leading zeros are ignored.
  - `year` integer: Optional year of the resolution. 0 searches every year.
  - `from_date` string, date: Optional date filter in yyyy-mm-dd format.
  - `to_date` string, date: Optional date filter in yyyy-mm-dd format.
  - `page` integer: 1-based page number for paginated results.
  - `per_page` integer: Results per page (1-50).

## Response `200`

Successful response

- ServirTscResolutionsSearchResponse
  - `data` ServirTscResolutionsSearchData, required
    - `as_of` string, nullable, required: How current the data in this response is.
    - `query` string, required
    - `chamber` string, nullable, required
    - `resolution_number` number, nullable, required
    - `year` number, nullable, required
    - `from_date` string, nullable, required
    - `to_date` string, nullable, required
    - `total` number, required: Matches, counted up to 1000.
    - `total_is_exact` boolean, required: False when more than 1000 match: `total` is then 1000, and the pages go on.
    - `page` number, required
    - `per_page` number, required
    - `total_pages` number, required: Pages over `total`; there are more when `total_is_exact` is false.
    - `count` number, required
    - `results` object[], 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.

## 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)
