---
title: "Función Pública Norm"
method: POST
path: "/co/funcion-publica/norm/v1"
tags: ["Colombia", "Función Pública"]
---

# Función Pública Norm

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

## Request

- Base URL: `https://api.croma.run`
- URL: `https://api.croma.run/co/funcion-publica/norm/v1`
- Auth: HTTP bearer

Retrieve one norm of the Gestor Normativo by its `norm_id` from the search results: its consolidated text, the dates it was issued and entered into force, where it was officially published, the subjects the register files it under, and the later norms it records as having added to, modified or repealed it. The text comes back a character range at a time (`offset`, `limit`), because the longest norms run past a million characters; 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
  - `norm_id` string, required: Norm identifier from the search results (`id`), e.g. `34488`.
  - `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

- FuncionPublicaNormResponse
  - `data` FuncionPublicaNormData, required
    - `as_of` string, nullable, required: How current the data in this response is.
    - `found` boolean, required
    - `norm_id` string, required
    - `norm` object, nullable, required
      - `id` string, required: The register's own identifier for the norm, e.g. `34488`.
      - `title` string, required: How the norm is cited, e.g. "Ley 1266 de 2008".
      - `document_type` string, required: The kind of instrument, as the register writes it: "Ley", "Decreto", "Concepto", "Sentencia", "Acuerdo", "Circular Externa", "Acto Legislativo" and twenty more.
      - `document_type_key` string, required: The kind in canonical form: lowercased, unaccented, spaces hyphenated ("Circular Externa" becomes "circular-externa"). Filter on this so a caller need not reproduce the register's capitalisation, which is not consistent.
      - `number` string, required: The norm's number as the register prints it: "1266", "100-010", "2017-00230".
      - `number_key` string, required: The number in canonical form: lowercased, leading zeros dropped, anything but letters and digits collapsed to a hyphen ("007" becomes "7", "100-010" becomes "100-10").
      - `year` number, required: The year in the norm's own designation (the 2008 of `Ley 1266 de 2008`). This is what the register files it under, and it is not always the year it was issued in.
      - `entity` string, nullable, required: Who issued the norm, as the register names it: "Congreso de la República", "Departamento Administrativo de la Función Pública", "Consejo de Estado", or "Nivel Nacional" for a norm of the national executive.
      - `entity_key` string, nullable, required: The issuer in canonical form ("congreso-de-la-republica"). Filter on this by prefix, so "ministerio-de-hacienda" also matches the full ministry name.
      - `summary` string, nullable, required: The register's one-line description of what the norm does. Null on the many entries it publishes without one.
      - `issued_at` string, nullable, required: `yyyy-mm-dd` the norm was issued. Null when the register prints no date, which it marks with a placeholder rather than leaving blank.
      - `effective_at` string, nullable, required: `yyyy-mm-dd` the norm entered into force, when the register states one.
      - `published_in` string, nullable, required: Where the norm was officially published, as the register writes it, e.g. "Diario Oficial 47.219 de diciembre 31 de 2008." Null for the many instruments that are not gazetted, such as conceptos.
      - `subjects` string[], required: The subject headings the register files the norm under, for filtering. `topics` carries the same headings with their subheadings and editorial notes.
      - `topics` object[], required: What the norm is about, as the register classifies it. Empty when it files no subject.
        - `topic` string, required: The subject heading, e.g. "HABEAS DATA".
        - `subtopic` string, nullable, required: The subheading under it, e.g. "Regulación y Reglamentación", or null.
        - `note` string, nullable, required: What the register says the norm does on this subject, in its own editorial words. Null when it files the norm under the subject without a note.
      - `amendments` object[], required: Later norms that added to, modified or repealed this one, as the register records them. Empty when it records none; this is the register's own editorial tracking, not a guarantee that the norm is in force.
        - `description` string, required: The change in the register's own words, e.g. "Adicionado por Ley 2157 de 2021" on the norm that was changed, or "Adiciona Ley 1266 de 2008" on the one that changed it.
        - `norm_id` string, required: Identifier of the other norm, to look it up in turn. The register occasionally points at an id it no longer serves, so a lookup can come back `found: false`.
      - `official_url` string, required: The register page for this norm.
      - `document_url` string, required: The register's PDF of the norm.
      - `content` object, nullable, required: A range of the norm's text, or null when the register published no body.
        - `text` string, required: The requested character range of the norm'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/74c745980c60?raw)
