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

# Función Pública

> Busque no Gestor Normativo, o registro curado das normas que regem a administração pública colombiana, e leia qualquer uma delas na íntegra.

O Departamento Administrativo de la Función Pública mantém o Gestor Normativo:
40.000 normas que regem a administração pública colombiana, de uma ordenança de
1620 à circular desta semana. Não é um diário oficial nem uma relatoria. É onde
uma norma é publicada com seu aparato editorial: os temas sob os quais está
classificada, as normas posteriores que o gestor registra como adições,
modificações ou revogações, e o texto consolidado.

Leis, decretos, atos legislativos, sentenças do Consejo de Estado e os milhares
de conceptos com que a Función Pública responde como as regras se aplicam estão
no mesmo registro, e ambos os endpoints percorrem todos de uma vez.

## Buscar no gestor

`POST /co/funcion-publica/norms-search/v1` Uma única busca sobre o texto completo de todas as normas do gestor, algo que o site do Gestor Normativo não oferece: pagina de dez em dez e para em dez mil resultados.

| Campo           | Tipo    | Notas                                                                                                                                                                                                                          |
| --------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `query`         | string  | Palavras opcionais buscadas na citação da norma, na descrição de uma linha do gestor e no texto completo da norma.                                                                                                             |
| `document_type` | string  | Tipo de instrumento opcional: `ley`, `decreto`, `concepto`, `sentencia`, `acuerdo`, `resolucion`, `circular-externa`, `decreto-ley`, `acto-legislativo`, `constitucion-politica` e outros. Maiúsculas e acentos são ignorados. |
| `year`          | integer | Ano opcional na designação da norma (o 2008 de `Ley 1266 de 2008`). É assim que o gestor a classifica, e nem sempre é o ano em que foi expedida. 0 busca em todos os anos. Por padrão `0`.                                     |
| `number`        | string  | Número exato opcional. Os zeros à esquerda são opcionais: `7` e `007` encontram a mesma norma.                                                                                                                                 |
| `entity`        | string  | Entidade expedidora opcional, buscada a partir do início do nome: `congreso` encontra o Congreso de la República. `nivel-nacional` é como o gestor rotula as normas do executivo nacional.                                     |
| `subject`       | string  | Tema opcional sob o qual o gestor classifica a norma, tal como o publica, p. ex. `HABEAS DATA`, `CARRERA ADMINISTRATIVA`. Os `subjects[]` de qualquer resultado são valores válidos.                                           |
| `issued_from`   | string  | Opcional: só normas expedidas nesta data ou depois, `yyyy-mm-dd`.                                                                                                                                                              |
| `issued_to`     | string  | Opcional: só normas expedidas nesta data ou antes, `yyyy-mm-dd`.                                                                                                                                                               |
| `page`          | integer | Número da página, começa em 1. Por padrão `1`.                                                                                                                                                                                 |
| `per_page`      | integer | Resultados por página (1-50). Por padrão `20`.                                                                                                                                                                                 |

```bash theme={"dark"}
curl https://api.croma.run/co/funcion-publica/norms-search/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "query": "habeas data", "document_type": "ley" }'
```

<Note>
  A fonte inteira, organizada e pronta para consultar: este endpoint responde em milissegundos, a qualquer hora e sempre igual. Cada resposta traz `as_of`: o quão atuais são os dados.
</Note>

Retorna `as_of` (o quão atuais são os dados), os filtros aplicados, `total`
(correspondências em todas as páginas), `page`, `per_page`, `total_pages`,
`count` e `results[]`, da mais recente à mais antiga. Cada resultado traz `id`, `title` (como a norma é citada), `document_type` e
`document_type_key`, `number` e `number_key` (o mesmo número sem zeros à
esquerda), `year` (o ano na designação da norma), `entity` e `entity_key` (quem a
expediu), `summary` (a descrição de uma linha que o gestor publica), `issued_at`,
`effective_at`, `published_in`, `subjects[]` e `topics[]` (do que trata, segundo
a classificação do gestor), `amendments[]` (normas posteriores que o gestor
registra como adições, modificações ou revogações desta, cada uma com seu
`norm_id` para consultá-la), `official_url` e `document_url`.

<Note>
  Os resultados da busca não incluem o texto da norma: uma única norma pode ter
  centenas de milhares de caracteres. `query` busca dentro dele, então uma frase
  que aparece em um artigo encontra a norma; para ler o texto use o endpoint
  Función Pública Norm.
</Note>

## Uma norma, completa

`POST /co/funcion-publica/norm/v1`

| Campo     | Tipo    | Notas                                                                                                                                                                 |
| --------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `norm_id` | string  | **Obrigatório.** O `id` dos resultados da busca, p. ex. `34488` para a Ley 1266 de 2008. O `norm_id` dentro do `amendments[]` de outra norma é o mesmo identificador. |
| `offset`  | integer | Primeiro caractere do texto a retornar. Envie o `next_offset` da resposta anterior para continuar lendo. Por padrão `0`.                                              |
| `limit`   | integer | Quantos caracteres do texto retornar. A maioria das normas cabe em uma resposta; as mais longas passam de um milhão de caracteres. Por padrão `200000`.               |

```bash theme={"dark"}
curl https://api.croma.run/co/funcion-publica/norm/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "norm_id": "34488" }'
```

<Note>
  A fonte inteira, organizada e pronta para consultar: este endpoint responde em milissegundos, a qualquer hora e sempre igual. Cada resposta traz `as_of`: o quão atuais são os dados.
</Note>

Retorna `as_of`, `found`, `norm_id` e `norm`, que traz tudo o que a busca
retorna mais `content`: uma janela sobre o texto da norma, com `text`,
`offset`, `total_length`, `has_more` e `next_offset`. Cada resultado traz `id`, `title` (como a norma é citada), `document_type` e
`document_type_key`, `number` e `number_key` (o mesmo número sem zeros à
esquerda), `year` (o ano na designação da norma), `entity` e `entity_key` (quem a
expediu), `summary` (a descrição de uma linha que o gestor publica), `issued_at`,
`effective_at`, `published_in`, `subjects[]` e `topics[]` (do que trata, segundo
a classificação do gestor), `amendments[]` (normas posteriores que o gestor
registra como adições, modificações ou revogações desta, cada uma com seu
`norm_id` para consultá-la), `official_url` e `document_url`.

<Note>
  As normas mais longas do gestor passam de um milhão de caracteres, então o
  texto é lido por intervalos: envie `offset` e `limit`, depois passe o
  `next_offset` da resposta como `offset` até que `has_more` seja falso.
  `content` é null nas poucas normas que o gestor publica sem corpo, e nas normas cujo
  texto ele não entrega, que são raras nos anos recentes e mais frequentes quanto
  mais antiga é a norma.
</Note>

<Note>
  Um id que o gestor não contém retorna `found: false` com HTTP 200, não um erro.
  Isso inclui um id para o qual o `amendments[]` de outra norma aponta: o gestor
  às vezes cita uma norma que já não publica.
</Note>

<Card title="Referência completa" icon="code" href="/pt/api-reference/overview">
  Esquemas, todos os campos de resposta e um playground interativo.
</Card>
