DESCRIPTION Title and Description, and
added a web reference to the API in the Description.tce_catalog(),
tce_endpoint(), tce_params(),
tce_fields(), tce_cache_clear(),
tce_cache_info()) so they run during automatic checks.\dontrun{} examples
explaining that they reach the live, Brazil-geofenced API and cannot run
on CRAN.sistemas.tcepe.tc.br. The previous host
sistemas.tce.pe.gov.br has been retired by TCE-PE and now
returns empty responses. All built-in endpoints and the catalog have
been updated.Latin-1 query encoding. The TCE-PE backend
matches values as ISO-8859-1 bytes, so accented Portuguese inputs
previously returned zero rows. tce_request() now transcodes
UTF-8 inputs to Latin-1 and percent-encodes byte-by-byte.
tce_municipalities(municipio = "São José da Coroa Grande")
now matches as expected.
Verbose mode rewritten.
verbose = TRUE now prints a structured block with the
endpoint, full URL, parameters list (long values truncated), and after
the response: HTTP status, content-type, body size, and elapsed
time.
Cache hit log. Cached results now report age and
row count (Cache hit (12s old, 1334 rows).) when
tceper.progress is on.
Friendlier errors. HTTP, JSON-parse, API-status,
DNS, TLS, and timeout failures now produce structured
cli::cli_abort() messages with the URL, response body
excerpt (where applicable), and an actionable next-step hint. The API’s
mensagem field is surfaced when present.
Empty results explain themselves. When
tamanhoResultado is 0 the warning suggests relaxing or
removing filters.
100k record limit warning now spells out that rows are likely missing and suggests common narrowing filters.
New ## Network access and rewritten
## Encoding sections in ?tce_request cover
geo-restriction (Brazilian IPs only) and the Latin-1
round-trip.
Vignettes carry a callout noting that requests require a
Brazilian IP, and use purl = FALSE so
R CMD check does not try to extract and run API-bound
chunks.
cran-comments.md documents both the geo-restriction
(CRAN policy 1.1) and the encoding handling for the CRAN
reviewer.
inst/WORDLIST added for
spelling::spell_check_package().
_pkgdown.yml URL corrected (placeholder
BigDataPE -> tceper); site rebuilt with the
new content.
Removed duplicate .tce_catalog()
definition. The function was defined in both
catalog.R (with in-memory caching) and
introspection.R (without caching). The uncached version in
introspection.R was loaded second and silently overrode the
cached version, causing the JSON catalog to be re-parsed on every call.
Now only the cached version in catalog.R is used.
Fixed double .tce_map_params() call in
tce_cache_key(). Parameter names were being mapped
twice, which was harmless but wasteful.
Rewrote README.md with complete sections: quick
start, catalog exploration, verbose mode, cache, parameter validation,
options table, and API limits.
Improved tceper-package.R with full package-level
documentation including workflow, parameter names, and options.
Fixed vignette getting-started: corrected record
limit from 10,000 to 100,000 and typo “municapality” →
“municipality”.
Updated _pkgdown.yml: added print methods and
tceper-package to the reference index.
Fixed DESCRIPTION: replaced placeholder pkgdown URL
with the actual site URL.
Updated NEWS.md to reflect the current API
(parameter names without leading dots, no translated parameter
names).
httr2::req_url_path_append() was percent-encoding the
! character in Struts2-style URLs
(Contratos!json → Contratos%21json), causing
the API server to ignore all query parameters and return unfiltered
results. The URL is now constructed directly via paste0()
and passed to httr2::request(), preserving the literal
! separator (#1).In-memory cache for all 71 wrapper functions
with parameter-aware cache keys. Each unique combination of endpoint +
parameters gets its own cache entry. For example,
tce_contracts(codigo_efisco_ug = "510101") and
tce_contracts(codigo_efisco_ug = "510102") are cached
separately.
options(tceper.cache_ttl = <seconds>).tce_cache_clear() — clear all or pattern-matched cached
entries.tce_cache_info() — inspect current cache contents and
age.cache = FALSE to force a fresh
request.verbose parameter on all functions.
When TRUE, prints the final API URL (with all query
parameters) before making the request. Also shows helper commands for
tce_params() and tce_fields(). Can be set
globally via options(tceper.verbose = TRUE).
Endpoint catalog and introspection. New functions for discovering the API without leaving R:
tce_catalog() — list all endpoints with search
support.tce_endpoint() — get metadata for a single
endpoint.tce_params() — list input parameters with
api_name and r_name.tce_fields() — list output fields.Parameter validation and mapping. Query
parameters are validated against the catalog. Invalid parameter names
trigger a helpful error listing all allowed parameters. Users can pass
snake_case names (e.g. codigo_efisco_ug) which
are automatically mapped to the API’s expected names
(e.g. CodigoEfiscoUG).