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.