discricionarias is new: discretionary
and legal transfers, the module that absorbed SICONV, published on the
API host in October 2026 as the first of the four stages the government
has announced. 12 tables and about 11.8 million rows — more than the
other four modules together — covering proposals (1.16 million, plus
45,607 cancelled), proponents, programs, the physical schedule, the
detailed application of funds (5.05 million rows, the largest table in
these APIs), and the Novo PAC selection process, which until now was not
traceable through any of these APIs. tg_discricionarias()
joins the other module shortcuts, and "siconv" and
"discricionarias_e_legais" resolve as aliases. 86 tables,
1,300 columns and 1,308 parameters in all, against 74, 1,045 and
1,059.propostas and propostas-canceladas a malformed
list filter answers HTTP 500 rather than the 400 the other endpoints use
(the package’s client-side validation means a well-formed query never
hits this); apoiadores-emendas-programas answers 500 to its
valor_repasse_proposta_apoiadores_emendas filter for every
value probed; and propostas_canceladas holds at least one
row the service cannot serialize — as of 2026-10-29, any page containing
its 71st row is a 500, so fetching that table from the start fails at
the default page size. A smaller .page_size, an
.offset past the row, or a filter that excludes it are the
workarounds until it is fixed upstream.vignette("joining-tables") covers ted, the
five tables published in September 2026, and joining through list
filters. Every link it draws was checked against the data, including the
ones the government’s data models do not document yet.The package now targets the public API host,
api-publica.transferegov.gestao.gov.br. That host serves a
different kind of service from the ‘PostgREST’ one the package was built
against, so this release rewrites the client rather than extending it.
Code written against 0.1.0 will need changing.
parcerias is new: partnership
management, 17 tables, including about 89,000 partnerships and their
proposals, budget commitments, payment orders and bank statements. It
has no equivalent in the previous release.especiais replaces
transferenciasespeciais, and grows from 14 tables
to 23. The additions are the financial ones: transaction entries,
sub-entries, account balances, beneficiaries, returned funds, management
report analyses and settlement documents, and three history tables.fundoafundo stays, at 20 tables
against the previous 21, with several child tables folded into their
parents as nested columns.ted stays, moved to the public host
with the others: 14 tables against the previous 13. Its table and column
names follow the new service, which mostly means plurals —
evento is now eventos, plano_acao
is planos_acao, and trf is
programacoes_financeiras_trf — so code written against
0.1.0 needs its table names checked. tg_ted() is kept."transferenciasespeciais" still resolves, as an alias
for "especiais". tg_transferencias_especiais()
is removed, and tg_parcerias() and
tg_especiais() join tg_fundo_a_fundo() and
tg_ted().74 tables and 1,045 columns in all, against 48 and 599.
tg_params() lists what each
table accepts, with the permitted values of the enumerated ones.eq(), neq(), gt(),
gte(), lt(), lte(),
like(), ilike(), re_match(),
re_imatch(), in_(), is_null(),
is_true(), is_false(), not() and
tg_operators(). These services compare for equality, with
“is one of” only on the identifiers described below.200 with the whole table, so a typo would return a
plausible, unfiltered result. Names are checked against the frozen
schema before the request is made, and a near miss is suggested.tg_params() marks them as
multiple and gives the most each accepts in
max_values — 100 in especiais, 200 elsewhere.
The OpenAPI documents do not say which parameters these are, so the
schema builder asks the service.especiais and
parcerias, 1000 for fundoafundo and
ted. .page_size defaults to that cap, and
tg_modules() reports it. .limit still counts
rows and .offset still counts rows, including when the
offset falls inside a page..order and .select are
removed. These APIs publish no ordering or column-selection
parameter.tg_updated_at() reports when a module’s data was last
loaded, from the /data-atualizacao endpoint each module
publishes. It is the only freshness signal these APIs give.tg_fields() gains a nested argument,
describing the columns of the objects inside a list column. 22 columns
across fundoafundo, parcerias and
ted arrive as list columns because the API folds a child
table into its parent.tg_fields() reports api_type rather than
pg_type, and no longer reports a primary key: these
documents declare none.tg_tables() gains path, the endpoint a
table maps to, and params, how many filters it accepts. A
table may be named with either a hyphen or an underscore.format, so int32 and int64 cannot be told apart, and
identifiers here genuinely exceed .Machine$integer.max —
cd_parceria reaches 202500037062.First release.
transferenciasespeciais), fund-to-fund transfers
(fundoafundo) and decentralized credit (ted) —
and the forty-eight tables they published.tg_get() and tg_count() queried any table;
tg_ted(), tg_fundo_a_fundo() and
tg_transferencias_especiais() fixed the module.tg_operators() listed the fifteen comparison operators the
services accepted.tg_modules(), tg_tables() and
tg_fields() described the APIs offline, from a copy of
their OpenAPI documents frozen into the package..limit asked for,
in pages of at most 1000 — the service’s own cap, which it applied
silently. Every request carried an explicit order, so pages could not
overlap or skip rows.