Skip to main content
The Departamento Administrativo de la Función Pública keeps the Gestor Normativo: 40,000 norms that govern Colombian public administration, from a 1620 ordinance to this week’s circular. It is not a gazette and not a court reporter. It is where a norm is published with its editorial apparatus: the subjects it is filed under, the later norms recorded as having added to, modified or repealed it, and the consolidated text. Laws, decrees, acts of Congress, rulings of the Consejo de Estado and the thousands of conceptos in which Función Pública answers how the rules apply are all in the same register, and both endpoints reach across all of them at once.

Search the register

POST /co/funcion-publica/norms-search/v1 One search over the full text of every norm in the register, which the Gestor Normativo’s own site does not offer: it pages ten at a time and stops at ten thousand results.
The whole source, organized and ready to query: this endpoint answers in milliseconds, at any hour, the same way every time. Every response carries as_of: how current the data is.
Returns as_of (how current the data is), the applied filters, total (matches across every page), page, per_page, total_pages, count and results[], most recent first. Every result carries id, title (how the norm is cited), document_type and document_type_key, number and number_key (the same number with leading zeros dropped), year (the year in the norm’s own designation), entity and entity_key (who issued it), summary (the register’s one-line description of what it does), issued_at, effective_at, published_in, subjects[] and topics[] (what it is about, as the register classifies it), amendments[] (later norms it records as having added to, modified or repealed this one, each with the norm_id to look up in turn), official_url and document_url.
Search results leave out the norm’s body: a single norm can run to hundreds of thousands of characters. query still matches against it, so a search for a phrase buried in an article finds the norm; read the text itself with the Función Pública Norm endpoint.

One norm, in full

POST /co/funcion-publica/norm/v1
The whole source, organized and ready to query: this endpoint answers in milliseconds, at any hour, the same way every time. Every response carries as_of: how current the data is.
Returns as_of, found, norm_id and norm, which carries everything the search returns plus content: a window onto the norm’s text, with text, offset, total_length, has_more and next_offset. Every result carries id, title (how the norm is cited), document_type and document_type_key, number and number_key (the same number with leading zeros dropped), year (the year in the norm’s own designation), entity and entity_key (who issued it), summary (the register’s one-line description of what it does), issued_at, effective_at, published_in, subjects[] and topics[] (what it is about, as the register classifies it), amendments[] (later norms it records as having added to, modified or repealed this one, each with the norm_id to look up in turn), official_url and document_url.
The register’s longest norms run past a million characters, so the body is read a range at a time: send offset and limit, then pass the response’s next_offset back as offset until has_more is false. content is null on the few norms the register publishes without a body, and on the roughly one in seven whose text it does not serve.
An id the register does not carry returns found: false with HTTP 200, not an error. That includes an id another norm’s amendments[] points at: the register occasionally cites a norm it no longer serves.

Full reference

Schemas, all response fields, and an interactive playground.