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