ibge-br-mcp 5.0.0 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -3
- package/README.pt-BR.md +33 -3
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +6 -1
- package/dist/config.js.map +1 -1
- package/dist/provenance.d.ts +1 -1
- package/dist/server.js +2 -2
- package/dist/sidra-agregados.d.ts +93 -0
- package/dist/sidra-agregados.d.ts.map +1 -0
- package/dist/sidra-agregados.js +189 -0
- package/dist/sidra-agregados.js.map +1 -0
- package/dist/tools/censo.d.ts.map +1 -1
- package/dist/tools/censo.js +11 -8
- package/dist/tools/censo.js.map +1 -1
- package/dist/tools/comparar.d.ts.map +1 -1
- package/dist/tools/comparar.js +8 -9
- package/dist/tools/comparar.js.map +1 -1
- package/dist/tools/datasaude.d.ts.map +1 -1
- package/dist/tools/datasaude.js +11 -20
- package/dist/tools/datasaude.js.map +1 -1
- package/dist/tools/deep-research.d.ts.map +1 -1
- package/dist/tools/deep-research.js +10 -1
- package/dist/tools/deep-research.js.map +1 -1
- package/dist/tools/indicadores.d.ts.map +1 -1
- package/dist/tools/indicadores.js +11 -12
- package/dist/tools/indicadores.js.map +1 -1
- package/dist/tools/sidra-tabelas.d.ts +1 -0
- package/dist/tools/sidra-tabelas.d.ts.map +1 -1
- package/dist/tools/sidra-tabelas.js +39 -11
- package/dist/tools/sidra-tabelas.js.map +1 -1
- package/dist/tools/sidra.d.ts.map +1 -1
- package/dist/tools/sidra.js +15 -7
- package/dist/tools/sidra.js.map +1 -1
- package/dist/tools/vizinhos.d.ts.map +1 -1
- package/dist/tools/vizinhos.js +6 -7
- package/dist/tools/vizinhos.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/vocabulario.d.ts +116 -0
- package/dist/vocabulario.d.ts.map +1 -0
- package/dist/vocabulario.js +218 -0
- package/dist/vocabulario.js.map +1 -0
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -96,7 +96,7 @@ aggregates are computed server-side from the raw IBGE values.
|
|
|
96
96
|
| Tool | Description |
|
|
97
97
|
|:-----|:------------|
|
|
98
98
|
| `ibge_sidra` | Query SIDRA tables (Census, PNAD, GDP, etc.) |
|
|
99
|
-
| `ibge_sidra_tabelas` | List and search available SIDRA tables |
|
|
99
|
+
| `ibge_sidra_tabelas` | List and search available SIDRA tables (accent-insensitive; everyday Portuguese resolved to the IBGE's wording, and the response says so) |
|
|
100
100
|
| `ibge_sidra_metadados` | Get table metadata (variables, periods, levels) |
|
|
101
101
|
| `ibge_pesquisas` | List IBGE research surveys and their tables |
|
|
102
102
|
|
|
@@ -187,6 +187,37 @@ With 23 tools, several can touch the same topic. Quick guide for the common over
|
|
|
187
187
|
|
|
188
188
|
Discover → inspect → query: `ibge_pesquisas` / `ibge_sidra_tabelas` (find a table) → `ibge_sidra_metadados` (its structure) → `ibge_sidra` (query). For common data, the wrappers above (`ibge_censo`, `ibge_indicadores`, `ibge_comparar`, `ibge_cidades`) are usually easier.
|
|
189
189
|
|
|
190
|
+
### Ask in your words, not the IBGE's
|
|
191
|
+
|
|
192
|
+
The IBGE names its tables in official statistical Portuguese, and `ibge_sidra_tabelas` matched
|
|
193
|
+
your words against the table name as a plain substring, accents included — so `populacao`
|
|
194
|
+
(no tilde, as anyone types it) returned *nothing at all*, and so did the everyday word for a
|
|
195
|
+
concept the IBGE names differently. Measured over the 9,336 tables of the Aggregates API
|
|
196
|
+
(2026-09-16), fixed since 5.1.0: both sides are normalised, every word must match (AND), and
|
|
197
|
+
the everyday word is expanded to the IBGE's own — the response says so in `notas_vocabulario`,
|
|
198
|
+
and zero results come with a way out.
|
|
199
|
+
|
|
200
|
+
| you ask | hits before | the IBGE writes | hits |
|
|
201
|
+
| --- | ---: | --- | ---: |
|
|
202
|
+
| `populacao`, `ocupacao`, `instrucao`, `saude`, `area`, `agua` | 0 | população, ocupação, instrução, saúde, área, água | 520, 364, 698, 518, 956, 256 |
|
|
203
|
+
| `desemprego` | 4 | desocupação | 33 |
|
|
204
|
+
| `renda` | 72 | rendimento | 1,126 |
|
|
205
|
+
| `inflação` | 0 | IPCA, INPC, preços | 37, 15, 75 |
|
|
206
|
+
| `moradia`, `casa` | 14, 101 | domicílio | 3,606 |
|
|
207
|
+
| `cidade` | 110 | município | 455 |
|
|
208
|
+
| `natalidade`, `mortes` | 0, 1 | nascidos vivos, óbitos | 84, 33 |
|
|
209
|
+
| `gênero` | 40 | sexo | 2,020 |
|
|
210
|
+
| `negros` | 0 | cor ou raça | 1,134 |
|
|
211
|
+
| `universidade`, `faculdade` | 0 | ensino superior | 12 |
|
|
212
|
+
| `luz`, `fábrica`, `tabagismo`, `convênio`, `idosos` | 0 | energia elétrica, indústria, fumante, plano de saúde, 60 anos | 43, 248, 94, 101, 89 |
|
|
213
|
+
|
|
214
|
+
Only measured pairs enter the table (`src/vocabulario.ts`, counts in the header): the word you ask
|
|
215
|
+
with absent from the catalogue, the IBGE's word present. What the IBGE does not publish as an
|
|
216
|
+
aggregate stays out and still returns zero — `turismo`, `aposentadoria`, `frota` — because an alias
|
|
217
|
+
for data that does not exist promises what the source does not have. The same table feeds the
|
|
218
|
+
Deep Research `search` index, which gets the everyday word as a keyword of the table whose name
|
|
219
|
+
carries the IBGE's word.
|
|
220
|
+
|
|
190
221
|
### Maps (meshes)
|
|
191
222
|
|
|
192
223
|
| You want… | Use |
|
|
@@ -513,8 +544,7 @@ ibge_datasaude(indicador="listar")
|
|
|
513
544
|
|
|
514
545
|
- **Localities**: `servicodados.ibge.gov.br/api/v1/localidades`
|
|
515
546
|
- **Names**: `servicodados.ibge.gov.br/api/v2/censos/nomes`
|
|
516
|
-
- **Aggregates/SIDRA**: `servicodados.ibge.gov.br/api/v3/agregados`
|
|
517
|
-
- **SIDRA API**: `apisidra.ibge.gov.br/values`
|
|
547
|
+
- **Aggregates/SIDRA**: `servicodados.ibge.gov.br/api/v3/agregados` (SIDRA tables are read here with `view=flat`; `apisidra.ibge.gov.br` has been behind a browser-only Cloudflare challenge since 2026-09-15)
|
|
518
548
|
- **Meshes**: `servicodados.ibge.gov.br/api/v3/malhas`
|
|
519
549
|
- **News**: `servicodados.ibge.gov.br/api/v3/noticias`
|
|
520
550
|
- **Population**: `servicodados.ibge.gov.br/api/v1/projecoes/populacao`
|
package/README.pt-BR.md
CHANGED
|
@@ -93,7 +93,7 @@ calculados no servidor a partir dos valores brutos do IBGE.
|
|
|
93
93
|
| Ferramenta | Descrição |
|
|
94
94
|
|:-----------|:----------|
|
|
95
95
|
| `ibge_sidra` | Consulta tabelas SIDRA (Censo, PNAD, PIB, etc.) |
|
|
96
|
-
| `ibge_sidra_tabelas` | Lista e busca tabelas SIDRA disponíveis |
|
|
96
|
+
| `ibge_sidra_tabelas` | Lista e busca tabelas SIDRA disponíveis (sem distinção de acento; a palavra de todo dia é traduzida para a do IBGE, e a resposta diz que traduziu) |
|
|
97
97
|
| `ibge_sidra_metadados` | Obtém metadados de tabelas (variáveis, períodos, níveis) |
|
|
98
98
|
| `ibge_pesquisas` | Lista pesquisas do IBGE e suas tabelas |
|
|
99
99
|
|
|
@@ -184,6 +184,37 @@ Com 23 ferramentas, várias podem tocar no mesmo assunto. Guia rápido para as s
|
|
|
184
184
|
|
|
185
185
|
Descobrir → inspecionar → consultar: `ibge_pesquisas` / `ibge_sidra_tabelas` (achar a tabela) → `ibge_sidra_metadados` (sua estrutura) → `ibge_sidra` (consultar). Para dados comuns, os atalhos acima (`ibge_censo`, `ibge_indicadores`, `ibge_comparar`, `ibge_cidades`) costumam ser mais fáceis.
|
|
186
186
|
|
|
187
|
+
### Pergunte com as suas palavras, não com as do IBGE
|
|
188
|
+
|
|
189
|
+
O IBGE nomeia as tabelas no português estatístico oficial, e `ibge_sidra_tabelas` casava o que
|
|
190
|
+
você escreveu contra o nome da tabela por substring pura, acento incluído — então `populacao`
|
|
191
|
+
(sem til, como todo mundo digita) devolvia **zero**, e a palavra de todo dia para um conceito que
|
|
192
|
+
o IBGE chama de outro nome também. Medido nos 9.336 agregados da API de Agregados (16/09/2026)
|
|
193
|
+
e consertado na 5.1.0: os dois lados são normalizados, toda palavra precisa casar (AND) e a
|
|
194
|
+
palavra de todo dia é expandida para a do IBGE — a resposta diz isso em `notas_vocabulario`, e
|
|
195
|
+
zero resultado vem com a saída.
|
|
196
|
+
|
|
197
|
+
| você pergunta | achava | o IBGE escreve | acha |
|
|
198
|
+
| --- | ---: | --- | ---: |
|
|
199
|
+
| `populacao`, `ocupacao`, `instrucao`, `saude`, `area`, `agua` | 0 | população, ocupação, instrução, saúde, área, água | 520, 364, 698, 518, 956, 256 |
|
|
200
|
+
| `desemprego` | 4 | desocupação | 33 |
|
|
201
|
+
| `renda` | 72 | rendimento | 1.126 |
|
|
202
|
+
| `inflação` | 0 | IPCA, INPC, preços | 37, 15, 75 |
|
|
203
|
+
| `moradia`, `casa` | 14, 101 | domicílio | 3.606 |
|
|
204
|
+
| `cidade` | 110 | município | 455 |
|
|
205
|
+
| `natalidade`, `mortes` | 0, 1 | nascidos vivos, óbitos | 84, 33 |
|
|
206
|
+
| `gênero` | 40 | sexo | 2.020 |
|
|
207
|
+
| `negros` | 0 | cor ou raça | 1.134 |
|
|
208
|
+
| `universidade`, `faculdade` | 0 | ensino superior | 12 |
|
|
209
|
+
| `luz`, `fábrica`, `tabagismo`, `convênio`, `idosos` | 0 | energia elétrica, indústria, fumante, plano de saúde, 60 anos | 43, 248, 94, 101, 89 |
|
|
210
|
+
|
|
211
|
+
Só entra par **medido** (`src/vocabulario.ts`, com as contagens no cabeçalho): a palavra
|
|
212
|
+
perguntada ausente do catálogo, a palavra do IBGE presente. O que o IBGE não publica como
|
|
213
|
+
agregado fica de fora e segue devolvendo zero — `turismo`, `aposentadoria`, `frota` — porque
|
|
214
|
+
apelido para dado inexistente promete o que a fonte não tem. A mesma tabela alimenta o índice de
|
|
215
|
+
`search` (Deep Research), que recebe a palavra de todo dia como keyword da tabela cujo nome traz
|
|
216
|
+
a palavra do IBGE.
|
|
217
|
+
|
|
187
218
|
### Mapas (malhas)
|
|
188
219
|
|
|
189
220
|
| Você quer… | Use |
|
|
@@ -511,8 +542,7 @@ ibge_datasaude(indicador="listar")
|
|
|
511
542
|
|
|
512
543
|
- **Localidades**: `servicodados.ibge.gov.br/api/v1/localidades`
|
|
513
544
|
- **Nomes**: `servicodados.ibge.gov.br/api/v2/censos/nomes`
|
|
514
|
-
- **Agregados/SIDRA**: `servicodados.ibge.gov.br/api/v3/agregados`
|
|
515
|
-
- **API SIDRA**: `apisidra.ibge.gov.br/values`
|
|
545
|
+
- **Agregados/SIDRA**: `servicodados.ibge.gov.br/api/v3/agregados` (as tabelas do SIDRA são lidas aqui com `view=flat`; o `apisidra.ibge.gov.br` está atrás de um desafio do Cloudflare só para navegador desde 15/09/2026)
|
|
516
546
|
- **Malhas**: `servicodados.ibge.gov.br/api/v3/malhas`
|
|
517
547
|
- **Notícias**: `servicodados.ibge.gov.br/api/v3/noticias`
|
|
518
548
|
- **População**: `servicodados.ibge.gov.br/api/v1/projecoes/populacao`
|
package/dist/config.d.ts
CHANGED
|
@@ -24,7 +24,7 @@ export declare const API_ENDPOINTS: {
|
|
|
24
24
|
readonly PAISES: "https://servicodados.ibge.gov.br/api/v1/paises";
|
|
25
25
|
readonly PESQUISAS: "https://servicodados.ibge.gov.br/api/v1/pesquisas";
|
|
26
26
|
};
|
|
27
|
-
readonly SIDRA: "https://
|
|
27
|
+
readonly SIDRA: "https://servicodados.ibge.gov.br/api/v3/agregados";
|
|
28
28
|
};
|
|
29
29
|
/**
|
|
30
30
|
* Brazilian states (UF) codes
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,oFAAoF;AACpF,eAAO,MAAM,0BAA0B,QAAS,CAAC;AAEjD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QAK3B,CAAC;AAML,eAAO,MAAM,aAAa;aAExB,IAAI;iBACF,WAAW,EAAE,qDAAqD;iBAClE,KAAK,EAAE,sDAAsD;iBAC7D,SAAS,EAAE,mDAAmD;iBAC9D,MAAM,EAAE,gDAAgD;iBAOxD,WAAW,EAAE,+CAA+C;iBAC5D,QAAQ,EAAE,kDAAkD;iBAC5D,SAAS,EAAE,6DAA6D;iBACxE,IAAI,EAAE,8CAA8C;iBACpD,UAAU,EAAE,oDAAoD;iBAChE,MAAM,EAAE,gDAAgD;iBACxD,SAAS,EAAE,mDAAmD;;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/config.js
CHANGED
|
@@ -43,7 +43,12 @@ export const API_ENDPOINTS = {
|
|
|
43
43
|
PAISES: "https://servicodados.ibge.gov.br/api/v1/paises",
|
|
44
44
|
PESQUISAS: "https://servicodados.ibge.gov.br/api/v1/pesquisas",
|
|
45
45
|
},
|
|
46
|
-
SIDRA
|
|
46
|
+
// O SIDRA é lido pela API de Agregados v3 (o mesmo host de AGREGADOS)
|
|
47
|
+
// desde 16/09/2026: o `apisidra.ibge.gov.br` ficou atrás de um desafio do
|
|
48
|
+
// Cloudflare que nenhum cliente programático passa. Os caminhos na
|
|
49
|
+
// gramática do apisidra são traduzidos em src/sidra-agregados.ts; esta
|
|
50
|
+
// constante é o endpoint de proveniência da fonte "SIDRA".
|
|
51
|
+
SIDRA: "https://servicodados.ibge.gov.br/api/v3/agregados",
|
|
47
52
|
};
|
|
48
53
|
// ============================================================================
|
|
49
54
|
// Geographic Codes
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E,oFAAoF;AACpF,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC;AAEjD;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAAE;IAC9C,MAAM,GAAG,GAAG,OAAO,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1F,IAAI,CAAC,GAAG;QAAE,OAAO,0BAA0B,CAAC;IAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,0BAA0B,CAAC;AACrF,CAAC,CAAC,EAAE,CAAC;AAEL,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,YAAY;IACZ,IAAI,EAAE;QACJ,WAAW,EAAE,qDAAqD;QAClE,KAAK,EAAE,sDAAsD;QAC7D,SAAS,EAAE,mDAAmD;QAC9D,MAAM,EAAE,gDAAgD;QACxD,yEAAyE;QACzE,kEAAkE;QAClE,wEAAwE;QACxE,mEAAmE;QACnE,gEAAgE;QAChE,cAAc;QACd,WAAW,EAAE,+CAA+C;QAC5D,QAAQ,EAAE,kDAAkD;QAC5D,SAAS,EAAE,6DAA6D;QACxE,IAAI,EAAE,8CAA8C;QACpD,UAAU,EAAE,oDAAoD;QAChE,MAAM,EAAE,gDAAgD;QACxD,SAAS,EAAE,mDAAmD;KAC/D;IACD,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/provenance.d.ts
CHANGED
|
@@ -59,7 +59,7 @@ export declare const FONTES_IBGE: {
|
|
|
59
59
|
};
|
|
60
60
|
readonly SIDRA: {
|
|
61
61
|
readonly name: "IBGE — SIDRA (Banco de Tabelas Estatísticas)";
|
|
62
|
-
readonly endpoint: "https://
|
|
62
|
+
readonly endpoint: "https://servicodados.ibge.gov.br/api/v3/agregados";
|
|
63
63
|
};
|
|
64
64
|
readonly AGREGADOS: {
|
|
65
65
|
readonly name: "IBGE — API de Agregados (SIDRA)";
|
package/dist/server.js
CHANGED
|
@@ -245,7 +245,7 @@ Examples:
|
|
|
245
245
|
- Population by state: tabela="6579", nivel_territorial="3"
|
|
246
246
|
- Census 2022 by municipality: tabela="9514", nivel_territorial="6", localidades="3550308"
|
|
247
247
|
|
|
248
|
-
Statistics mode: for **largest/smallest/mean/median/distribution/ranking** questions ("which municipality has the largest population?", "median GDP by state") use estatisticas=true — it computes min/max/mean/median/std-dev/labeled percentiles over ALL data rows BEFORE pagination and returns top/bottom rankings (default 10, cap 100 via topN), so one call answers what would otherwise require paging thousands of records. With agruparPor="<column label>" (e.g. "Unidade da Federação", "Ano") it ranks groups by descending sum, each with its own mini-distribution. Queries mixing several variables auto-group by "Variável" (units differ). SIDRA absence markers ("-", "..", "...", "X") are excluded from n. In this mode pagina/campos/formato are ignored and registros comes empty.
|
|
248
|
+
Statistics mode: for **largest/smallest/mean/median/distribution/ranking** questions ("which municipality has the largest population?", "median GDP by state") use estatisticas=true — it computes min/max/mean/median/std-dev/labeled percentiles over ALL data rows BEFORE pagination and returns top/bottom rankings (default 10, cap 100 via topN), so one call answers what would otherwise require paging thousands of records. With agruparPor="<column label>" (e.g. "Unidade da Federação", "Ano") it ranks groups by descending sum, each with its own mini-distribution. Queries mixing several variables auto-group by "Variável" (units differ). SIDRA absence markers ("-", "..", "...", "X") are excluded from n. In this mode pagina/campos/formato are ignored and registros comes empty. Very large queries are refused by the source (since 2026-09-16 SIDRA tables are read through the Aggregates API, whose ceiling is lower than SIDRA's old 100,000-value cap: all municipalities × 12 yearly periods fails, × 8 works) — narrow periodos (e.g. "last 4") or raise nivel_territorial.
|
|
249
249
|
|
|
250
250
|
ibge_sidra is the low-level engine. Prefer a friendlier wrapper when it fits:
|
|
251
251
|
- Census themes (1970–2022) → ibge_censo
|
|
@@ -324,7 +324,7 @@ Behavior: read-only and idempotent — a live GET against the public IBGE Notíc
|
|
|
324
324
|
|
|
325
325
|
Features:
|
|
326
326
|
- List all SIDRA tables (aggregates)
|
|
327
|
-
- Search by table name
|
|
327
|
+
- Search by table name: every word must match (AND), accents and case ignored, and everyday Portuguese is resolved to the IBGE's own wording (renda→rendimento, desemprego→desocupação, cidade→município, gênero→sexo); when that happens the response says so in notas_vocabulario
|
|
328
328
|
- Filter by survey (Census, PNAD, GDP, etc.)
|
|
329
329
|
- Shows code and name of each table
|
|
330
330
|
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SIDRA pela API de Agregados v3 — o mesmo banco, por outra porta.
|
|
3
|
+
*
|
|
4
|
+
* POR QUE EXISTE. Em 15/09/2026 (entre o último smoke verde, 14/09 22:11 UTC,
|
|
5
|
+
* e o primeiro vermelho, 16/09 01:12 UTC) o IBGE pôs `apisidra.ibge.gov.br`
|
|
6
|
+
* atrás de um desafio gerenciado do Cloudflare (`cf-mitigated: challenge`, a
|
|
7
|
+
* página "Just a moment..."). Medido em 16/09/2026: 60 de 60 requisições
|
|
8
|
+
* feitas com o `fetch` do Node voltaram 403, com qualquer User-Agent — o
|
|
9
|
+
* desafio exige executar JavaScript de navegador, e nenhum cliente
|
|
10
|
+
* programático passa: nem o Worker em produção, nem o CI, nem o stdio. As
|
|
11
|
+
* seis ferramentas que liam o SIDRA por lá (`ibge_sidra`, `ibge_censo`,
|
|
12
|
+
* `ibge_comparar`, `ibge_datasaude`, `ibge_indicadores`, `ibge_vizinhos`)
|
|
13
|
+
* emudeceram de uma vez.
|
|
14
|
+
*
|
|
15
|
+
* A API de Agregados v3 (`servicodados.ibge.gov.br/api/v3/agregados`) serve
|
|
16
|
+
* as MESMAS tabelas do SIDRA — é a API que o próprio site do SIDRA consome —
|
|
17
|
+
* e com `view=flat` responde no formato idêntico ao do apisidra: a primeira
|
|
18
|
+
* linha é o cabeçalho (NC, NN, MC, MN, V, D1C, D1N, …) e as demais são os
|
|
19
|
+
* dados, código de unidade inclusive. Conferido em 16/09/2026 para tabela
|
|
20
|
+
* anual, mensal (rótulo "outubro 2019"), classificação múltipla, município e
|
|
21
|
+
* consulta sem dado (só o cabeçalho, como no apisidra). Por isso este módulo
|
|
22
|
+
* só TRADUZ o caminho: as ferramentas continuam montando o caminho do SIDRA
|
|
23
|
+
* (`/t/6579/n3/all/v/allxp/p/last`), que é a gramática que a documentação
|
|
24
|
+
* delas publica, e o que muda é a URL que vai para a rede — e que vai para a
|
|
25
|
+
* proveniência, porque a citação tem de apontar para onde o dado veio.
|
|
26
|
+
*
|
|
27
|
+
* O que NÃO é igual: o erro. O apisidra respondia 400 com a frase que resolve
|
|
28
|
+
* o caso ("Parâmetro N3 (Nível territorial) incompatível com a tabela"); a v3
|
|
29
|
+
* responde 500 "Internal server error" a tabela, variável, nível ou
|
|
30
|
+
* localidade inválidos, sem dizer qual. `explicarFalha` pergunta aos
|
|
31
|
+
* metadados da tabela (uma chamada, em cache de um dia) e recompõe a frase,
|
|
32
|
+
* para o chamador não voltar a tentar combinações às cegas — a razão de ser
|
|
33
|
+
* do `UpstreamError`.
|
|
34
|
+
*/
|
|
35
|
+
import { type RetryOptions } from "./retry.js";
|
|
36
|
+
/**
|
|
37
|
+
* Retry para a v3: igual ao padrão, MENOS o 500. O apisidra respondia 400 a
|
|
38
|
+
* parâmetro inválido, e 400 nunca foi retentado; a v3 responde 500 ao mesmo
|
|
39
|
+
* erro, que é determinístico — retentá-lo quatro vezes com espera exponencial
|
|
40
|
+
* (2 s, 4 s, 8 s, 16 s) faria uma tabela digitada errado levar meio minuto
|
|
41
|
+
* para responder. 502/503/504 e 429 continuam sendo o que são: transitórios.
|
|
42
|
+
* Quem chama pode sobrepor (`ibge_vizinhos` usa o preset rápido), e a
|
|
43
|
+
* exclusão do 500 se mantém por baixo.
|
|
44
|
+
*/
|
|
45
|
+
export declare const RETRY_SIDRA: RetryOptions;
|
|
46
|
+
/** Uma consulta do SIDRA, lida do caminho `/t/…/n…/…/v/…/p/…[/c…/…]`. */
|
|
47
|
+
export interface CaminhoSidra {
|
|
48
|
+
tabela: string;
|
|
49
|
+
/** Só o número do nível territorial (`3` para `n3`). */
|
|
50
|
+
nivel: string;
|
|
51
|
+
/** `all`, um código ou lista separada por vírgula, como no caminho. */
|
|
52
|
+
localidades: string;
|
|
53
|
+
/** `all`, `allxp`, um código ou lista separada por vírgula. */
|
|
54
|
+
variaveis: string;
|
|
55
|
+
/** Como veio no caminho (`last`, `last 4`, `all`, `2022`, `2010-2020`, `2010,2020`). */
|
|
56
|
+
periodos: string;
|
|
57
|
+
classificacoes: Array<{
|
|
58
|
+
id: string;
|
|
59
|
+
categorias: string;
|
|
60
|
+
}>;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Lê o caminho na gramática do apisidra: pares `chave/valor` em qualquer
|
|
64
|
+
* ordem — `t`, `n<nível>`, `v`, `p`, `c<classificação>` — mais as opções de
|
|
65
|
+
* formatação `f`, `h` e `d`, que são ignoradas: a v3 com `view=flat` já
|
|
66
|
+
* devolve código e rótulo de toda dimensão, que é o que as ferramentas leem.
|
|
67
|
+
* Caminho sem tabela, nível, variável ou período é erro de programação, não
|
|
68
|
+
* da fonte, e lança.
|
|
69
|
+
*/
|
|
70
|
+
export declare function lerCaminhoSidra(caminho: string): CaminhoSidra;
|
|
71
|
+
/**
|
|
72
|
+
* Período na gramática da v3: `last` é `-1`, `last N` é `-N`; `all`, `first`,
|
|
73
|
+
* ano, intervalo (`2010-2020`) e lista (`2010,2020`) passam como estão —
|
|
74
|
+
* conferido em 16/09/2026 que a v3 aceita os quatro.
|
|
75
|
+
*/
|
|
76
|
+
export declare function periodosAgregados(periodos: string): string;
|
|
77
|
+
/** A URL da v3 que reproduz a consulta, já com `view=flat`. */
|
|
78
|
+
export declare function urlAgregados(consulta: CaminhoSidra): string;
|
|
79
|
+
/** Caminho do SIDRA → URL da v3, num passo só. */
|
|
80
|
+
export declare function traduzirCaminhoSidra(caminho: string): string;
|
|
81
|
+
/** O que `fetchSidra` devolve: a URL que foi de fato consultada vai para a proveniência. */
|
|
82
|
+
export interface RespostaSidra<T> {
|
|
83
|
+
url: string;
|
|
84
|
+
chaveCache: string;
|
|
85
|
+
data: T;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Busca uma consulta do SIDRA pela v3, com cache e retry iguais aos de
|
|
89
|
+
* `cachedFetch`. Falha da fonte sem explicação (5xx) passa por
|
|
90
|
+
* `explicarFalha` antes de subir.
|
|
91
|
+
*/
|
|
92
|
+
export declare function fetchSidra<T = Record<string, string>[]>(caminho: string, ttlMinutes?: number, retryOptions?: RetryOptions): Promise<RespostaSidra<T>>;
|
|
93
|
+
//# sourceMappingURL=sidra-agregados.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidra-agregados.d.ts","sourceRoot":"","sources":["../src/sidra-agregados.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAIH,OAAO,EAAgC,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAE7E;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,EAAE,YAGzB,CAAC;AAEF,yEAAyE;AACzE,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,WAAW,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,SAAS,EAAE,MAAM,CAAC;IAClB,wFAAwF;IACxF,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC3D;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CA4B7D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAI1D;AAED,+DAA+D;AAC/D,wBAAgB,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAU3D;AAED,kDAAkD;AAClD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,4FAA4F;AAC5F,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,CAAC,CAAC;CACT;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAC3D,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAiB3B"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SIDRA pela API de Agregados v3 — o mesmo banco, por outra porta.
|
|
3
|
+
*
|
|
4
|
+
* POR QUE EXISTE. Em 15/09/2026 (entre o último smoke verde, 14/09 22:11 UTC,
|
|
5
|
+
* e o primeiro vermelho, 16/09 01:12 UTC) o IBGE pôs `apisidra.ibge.gov.br`
|
|
6
|
+
* atrás de um desafio gerenciado do Cloudflare (`cf-mitigated: challenge`, a
|
|
7
|
+
* página "Just a moment..."). Medido em 16/09/2026: 60 de 60 requisições
|
|
8
|
+
* feitas com o `fetch` do Node voltaram 403, com qualquer User-Agent — o
|
|
9
|
+
* desafio exige executar JavaScript de navegador, e nenhum cliente
|
|
10
|
+
* programático passa: nem o Worker em produção, nem o CI, nem o stdio. As
|
|
11
|
+
* seis ferramentas que liam o SIDRA por lá (`ibge_sidra`, `ibge_censo`,
|
|
12
|
+
* `ibge_comparar`, `ibge_datasaude`, `ibge_indicadores`, `ibge_vizinhos`)
|
|
13
|
+
* emudeceram de uma vez.
|
|
14
|
+
*
|
|
15
|
+
* A API de Agregados v3 (`servicodados.ibge.gov.br/api/v3/agregados`) serve
|
|
16
|
+
* as MESMAS tabelas do SIDRA — é a API que o próprio site do SIDRA consome —
|
|
17
|
+
* e com `view=flat` responde no formato idêntico ao do apisidra: a primeira
|
|
18
|
+
* linha é o cabeçalho (NC, NN, MC, MN, V, D1C, D1N, …) e as demais são os
|
|
19
|
+
* dados, código de unidade inclusive. Conferido em 16/09/2026 para tabela
|
|
20
|
+
* anual, mensal (rótulo "outubro 2019"), classificação múltipla, município e
|
|
21
|
+
* consulta sem dado (só o cabeçalho, como no apisidra). Por isso este módulo
|
|
22
|
+
* só TRADUZ o caminho: as ferramentas continuam montando o caminho do SIDRA
|
|
23
|
+
* (`/t/6579/n3/all/v/allxp/p/last`), que é a gramática que a documentação
|
|
24
|
+
* delas publica, e o que muda é a URL que vai para a rede — e que vai para a
|
|
25
|
+
* proveniência, porque a citação tem de apontar para onde o dado veio.
|
|
26
|
+
*
|
|
27
|
+
* O que NÃO é igual: o erro. O apisidra respondia 400 com a frase que resolve
|
|
28
|
+
* o caso ("Parâmetro N3 (Nível territorial) incompatível com a tabela"); a v3
|
|
29
|
+
* responde 500 "Internal server error" a tabela, variável, nível ou
|
|
30
|
+
* localidade inválidos, sem dizer qual. `explicarFalha` pergunta aos
|
|
31
|
+
* metadados da tabela (uma chamada, em cache de um dia) e recompõe a frase,
|
|
32
|
+
* para o chamador não voltar a tentar combinações às cegas — a razão de ser
|
|
33
|
+
* do `UpstreamError`.
|
|
34
|
+
*/
|
|
35
|
+
import { IBGE_API } from "./types.js";
|
|
36
|
+
import { cacheKey, CACHE_TTL, cachedFetch } from "./cache.js";
|
|
37
|
+
import { RETRY_PRESETS, UpstreamError } from "./retry.js";
|
|
38
|
+
/**
|
|
39
|
+
* Retry para a v3: igual ao padrão, MENOS o 500. O apisidra respondia 400 a
|
|
40
|
+
* parâmetro inválido, e 400 nunca foi retentado; a v3 responde 500 ao mesmo
|
|
41
|
+
* erro, que é determinístico — retentá-lo quatro vezes com espera exponencial
|
|
42
|
+
* (2 s, 4 s, 8 s, 16 s) faria uma tabela digitada errado levar meio minuto
|
|
43
|
+
* para responder. 502/503/504 e 429 continuam sendo o que são: transitórios.
|
|
44
|
+
* Quem chama pode sobrepor (`ibge_vizinhos` usa o preset rápido), e a
|
|
45
|
+
* exclusão do 500 se mantém por baixo.
|
|
46
|
+
*/
|
|
47
|
+
export const RETRY_SIDRA = {
|
|
48
|
+
...RETRY_PRESETS.DEFAULT,
|
|
49
|
+
retryableStatusCodes: [408, 429, 502, 503, 504],
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Lê o caminho na gramática do apisidra: pares `chave/valor` em qualquer
|
|
53
|
+
* ordem — `t`, `n<nível>`, `v`, `p`, `c<classificação>` — mais as opções de
|
|
54
|
+
* formatação `f`, `h` e `d`, que são ignoradas: a v3 com `view=flat` já
|
|
55
|
+
* devolve código e rótulo de toda dimensão, que é o que as ferramentas leem.
|
|
56
|
+
* Caminho sem tabela, nível, variável ou período é erro de programação, não
|
|
57
|
+
* da fonte, e lança.
|
|
58
|
+
*/
|
|
59
|
+
export function lerCaminhoSidra(caminho) {
|
|
60
|
+
const partes = caminho
|
|
61
|
+
.split("/")
|
|
62
|
+
.filter(Boolean)
|
|
63
|
+
.map((p) => decodeURIComponent(p));
|
|
64
|
+
let tabela;
|
|
65
|
+
let nivel;
|
|
66
|
+
let localidades;
|
|
67
|
+
let variaveis;
|
|
68
|
+
let periodos;
|
|
69
|
+
const classificacoes = [];
|
|
70
|
+
for (let i = 0; i + 1 < partes.length; i += 2) {
|
|
71
|
+
const chave = partes[i];
|
|
72
|
+
const valor = partes[i + 1];
|
|
73
|
+
if (chave === "t")
|
|
74
|
+
tabela = valor;
|
|
75
|
+
else if (/^n\d+$/i.test(chave)) {
|
|
76
|
+
nivel = chave.slice(1);
|
|
77
|
+
localidades = valor;
|
|
78
|
+
}
|
|
79
|
+
else if (chave === "v")
|
|
80
|
+
variaveis = valor;
|
|
81
|
+
else if (chave === "p")
|
|
82
|
+
periodos = valor;
|
|
83
|
+
else if (/^c\d+$/i.test(chave))
|
|
84
|
+
classificacoes.push({ id: chave.slice(1), categorias: valor });
|
|
85
|
+
}
|
|
86
|
+
if (!tabela || nivel === undefined || !localidades || !variaveis || !periodos) {
|
|
87
|
+
throw new Error(`Caminho SIDRA incompleto (precisa de t, n, v e p): ${caminho}`);
|
|
88
|
+
}
|
|
89
|
+
return { tabela, nivel, localidades, variaveis, periodos, classificacoes };
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Período na gramática da v3: `last` é `-1`, `last N` é `-N`; `all`, `first`,
|
|
93
|
+
* ano, intervalo (`2010-2020`) e lista (`2010,2020`) passam como estão —
|
|
94
|
+
* conferido em 16/09/2026 que a v3 aceita os quatro.
|
|
95
|
+
*/
|
|
96
|
+
export function periodosAgregados(periodos) {
|
|
97
|
+
const m = /^last(?:\s+(\d+))?$/i.exec(periodos.trim());
|
|
98
|
+
if (m)
|
|
99
|
+
return `-${m[1] ?? "1"}`;
|
|
100
|
+
return periodos.trim();
|
|
101
|
+
}
|
|
102
|
+
/** A URL da v3 que reproduz a consulta, já com `view=flat`. */
|
|
103
|
+
export function urlAgregados(consulta) {
|
|
104
|
+
let url = `${IBGE_API.AGREGADOS}/${consulta.tabela}` +
|
|
105
|
+
`/periodos/${periodosAgregados(consulta.periodos)}` +
|
|
106
|
+
`/variaveis/${consulta.variaveis}` +
|
|
107
|
+
`?localidades=N${consulta.nivel}[${consulta.localidades}]`;
|
|
108
|
+
if (consulta.classificacoes.length > 0) {
|
|
109
|
+
url += `&classificacao=${consulta.classificacoes.map((c) => `${c.id}[${c.categorias}]`).join("|")}`;
|
|
110
|
+
}
|
|
111
|
+
return `${url}&view=flat`;
|
|
112
|
+
}
|
|
113
|
+
/** Caminho do SIDRA → URL da v3, num passo só. */
|
|
114
|
+
export function traduzirCaminhoSidra(caminho) {
|
|
115
|
+
return urlAgregados(lerCaminhoSidra(caminho));
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Busca uma consulta do SIDRA pela v3, com cache e retry iguais aos de
|
|
119
|
+
* `cachedFetch`. Falha da fonte sem explicação (5xx) passa por
|
|
120
|
+
* `explicarFalha` antes de subir.
|
|
121
|
+
*/
|
|
122
|
+
export async function fetchSidra(caminho, ttlMinutes, retryOptions) {
|
|
123
|
+
const consulta = lerCaminhoSidra(caminho);
|
|
124
|
+
const url = urlAgregados(consulta);
|
|
125
|
+
const chaveCache = cacheKey(url);
|
|
126
|
+
try {
|
|
127
|
+
const data = await cachedFetch(url, chaveCache, ttlMinutes, {
|
|
128
|
+
...RETRY_SIDRA,
|
|
129
|
+
...retryOptions,
|
|
130
|
+
});
|
|
131
|
+
return { url, chaveCache, data };
|
|
132
|
+
}
|
|
133
|
+
catch (erro) {
|
|
134
|
+
if (erro instanceof UpstreamError && erro.status >= 500) {
|
|
135
|
+
const explicado = await explicarFalha(consulta, erro);
|
|
136
|
+
if (explicado)
|
|
137
|
+
throw explicado;
|
|
138
|
+
}
|
|
139
|
+
throw erro;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Recompõe, a partir dos metadados da tabela, a frase que o apisidra dava de
|
|
144
|
+
* graça. Só afirma o que os metadados provam: tabela que não existe, variável
|
|
145
|
+
* ou classificação fora da tabela, nível territorial que ela não publica.
|
|
146
|
+
* Quando tudo isso confere, a causa que sobra é a localidade (código que não
|
|
147
|
+
* existe naquele nível) ou o período, e a frase diz isso sem escolher.
|
|
148
|
+
* Devolve `undefined` se os próprios metadados não puderem ser lidos por
|
|
149
|
+
* outro motivo — aí o erro original é a melhor informação que há.
|
|
150
|
+
*/
|
|
151
|
+
async function explicarFalha(consulta, original) {
|
|
152
|
+
const urlMeta = `${IBGE_API.AGREGADOS}/${consulta.tabela}/metadados`;
|
|
153
|
+
let meta;
|
|
154
|
+
try {
|
|
155
|
+
meta = await cachedFetch(urlMeta, cacheKey(urlMeta), CACHE_TTL.STATIC, RETRY_SIDRA);
|
|
156
|
+
}
|
|
157
|
+
catch (erro) {
|
|
158
|
+
if (erro instanceof UpstreamError) {
|
|
159
|
+
return new UpstreamError(400, "Bad Request", `Tabela ${consulta.tabela}: tabela inválida`);
|
|
160
|
+
}
|
|
161
|
+
return undefined;
|
|
162
|
+
}
|
|
163
|
+
const niveis = Object.values(meta.nivelTerritorial ?? {}).flatMap((lista) => lista ?? []);
|
|
164
|
+
if (niveis.length > 0 && !niveis.includes(`N${consulta.nivel}`)) {
|
|
165
|
+
return new UpstreamError(400, "Bad Request", `Parâmetro N${consulta.nivel} (Nível territorial) incompatível com a tabela ${consulta.tabela}. ` +
|
|
166
|
+
`Níveis que ela publica: ${niveis.join(", ")}`);
|
|
167
|
+
}
|
|
168
|
+
if (!/^all(xp)?$/i.test(consulta.variaveis)) {
|
|
169
|
+
const conhecidas = new Set((meta.variaveis ?? []).map((v) => String(v.id)));
|
|
170
|
+
const estranhas = consulta.variaveis.split(",").filter((v) => !conhecidas.has(v.trim()));
|
|
171
|
+
if (conhecidas.size > 0 && estranhas.length > 0) {
|
|
172
|
+
return new UpstreamError(400, "Bad Request", `Parâmetro V (Variável) com código ${estranhas.join(", ")} inexistente na tabela ${consulta.tabela}. ` +
|
|
173
|
+
`Variáveis que ela tem: ${[...conhecidas].join(", ")}`);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
const classes = new Set((meta.classificacoes ?? []).map((c) => String(c.id)));
|
|
177
|
+
const semClasse = consulta.classificacoes.filter((c) => !classes.has(c.id));
|
|
178
|
+
if (semClasse.length > 0) {
|
|
179
|
+
return new UpstreamError(400, "Bad Request", `Parâmetro C${semClasse.map((c) => c.id).join(", C")} (Classificação) inexistente na tabela ${consulta.tabela}` +
|
|
180
|
+
(classes.size > 0 ? `. Classificações que ela tem: ${[...classes].join(", ")}` : ""));
|
|
181
|
+
}
|
|
182
|
+
return new UpstreamError(original.status, original.statusText, `A fonte recusou a consulta sem dizer por quê. Tabela ${consulta.tabela}, ` +
|
|
183
|
+
`variável ${consulta.variaveis} e nível N${consulta.nivel} existem; ` +
|
|
184
|
+
`o que resta conferir é a localidade (${consulta.localidades}) — existe nesse nível? — ` +
|
|
185
|
+
`e o período (${consulta.periodos}). A fonte também recusa assim consulta GRANDE demais ` +
|
|
186
|
+
`(medido em 16/09/2026: todos os municípios × 12 períodos anuais falha, × 8 passa); ` +
|
|
187
|
+
`se pediu muitas localidades e períodos, reduza o período (ex.: last 4) ou suba o nível territorial.`);
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=sidra-agregados.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidra-agregados.js","sourceRoot":"","sources":["../src/sidra-agregados.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAqB,MAAM,YAAY,CAAC;AAE7E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,WAAW,GAAiB;IACvC,GAAG,aAAa,CAAC,OAAO;IACxB,oBAAoB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;CAChD,CAAC;AAgBF;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,MAAM,MAAM,GAAG,OAAO;SACnB,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,IAAI,MAA0B,CAAC;IAC/B,IAAI,KAAyB,CAAC;IAC9B,IAAI,WAA+B,CAAC;IACpC,IAAI,SAA6B,CAAC;IAClC,IAAI,QAA4B,CAAC;IACjC,MAAM,cAAc,GAA8C,EAAE,CAAC;IAErE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5B,IAAI,KAAK,KAAK,GAAG;YAAE,MAAM,GAAG,KAAK,CAAC;aAC7B,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACvB,WAAW,GAAG,KAAK,CAAC;QACtB,CAAC;aAAM,IAAI,KAAK,KAAK,GAAG;YAAE,SAAS,GAAG,KAAK,CAAC;aACvC,IAAI,KAAK,KAAK,GAAG;YAAE,QAAQ,GAAG,KAAK,CAAC;aACpC,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IACjG,CAAC;IAED,IAAI,CAAC,MAAM,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9E,MAAM,IAAI,KAAK,CAAC,sDAAsD,OAAO,EAAE,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;AAC7E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,MAAM,CAAC,GAAG,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACvD,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;IAChC,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,YAAY,CAAC,QAAsB;IACjD,IAAI,GAAG,GACL,GAAG,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,MAAM,EAAE;QAC1C,aAAa,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;QACnD,cAAc,QAAQ,CAAC,SAAS,EAAE;QAClC,iBAAiB,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,WAAW,GAAG,CAAC;IAC7D,IAAI,QAAQ,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,GAAG,IAAI,kBAAkB,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACtG,CAAC;IACD,OAAO,GAAG,GAAG,YAAY,CAAC;AAC5B,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,OAAO,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;AAChD,CAAC;AASD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,OAAe,EACf,UAAmB,EACnB,YAA2B;IAE3B,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,WAAW,CAAI,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE;YAC7D,GAAG,WAAW;YACd,GAAG,YAAY;SAChB,CAAC,CAAC;QACH,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IACnC,CAAC;IAAC,OAAO,IAAI,EAAE,CAAC;QACd,IAAI,IAAI,YAAY,aAAa,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;YACxD,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACtD,IAAI,SAAS;gBAAE,MAAM,SAAS,CAAC;QACjC,CAAC;QACD,MAAM,IAAI,CAAC;IACb,CAAC;AACH,CAAC;AAQD;;;;;;;;GAQG;AACH,KAAK,UAAU,aAAa,CAC1B,QAAsB,EACtB,QAAuB;IAEvB,MAAM,OAAO,GAAG,GAAG,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,MAAM,YAAY,CAAC;IACrE,IAAI,IAAuB,CAAC;IAC5B,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,WAAW,CACtB,OAAO,EACP,QAAQ,CAAC,OAAO,CAAC,EACjB,SAAS,CAAC,MAAM,EAChB,WAAW,CACZ,CAAC;IACJ,CAAC;IAAC,OAAO,IAAI,EAAE,CAAC;QACd,IAAI,IAAI,YAAY,aAAa,EAAE,CAAC;YAClC,OAAO,IAAI,aAAa,CAAC,GAAG,EAAE,aAAa,EAAE,UAAU,QAAQ,CAAC,MAAM,mBAAmB,CAAC,CAAC;QAC7F,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAC1F,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;QAChE,OAAO,IAAI,aAAa,CACtB,GAAG,EACH,aAAa,EACb,cAAc,QAAQ,CAAC,KAAK,kDAAkD,QAAQ,CAAC,MAAM,IAAI;YAC/F,2BAA2B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACjD,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5E,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACzF,IAAI,UAAU,CAAC,IAAI,GAAG,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,OAAO,IAAI,aAAa,CACtB,GAAG,EACH,aAAa,EACb,qCAAqC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,QAAQ,CAAC,MAAM,IAAI;gBACpG,0BAA0B,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACzD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9E,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5E,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,aAAa,CACtB,GAAG,EACH,aAAa,EACb,cAAc,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,0CAA0C,QAAQ,CAAC,MAAM,EAAE;YAC7G,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,iCAAiC,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACvF,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,aAAa,CACtB,QAAQ,CAAC,MAAM,EACf,QAAQ,CAAC,UAAU,EACnB,wDAAwD,QAAQ,CAAC,MAAM,IAAI;QACzE,YAAY,QAAQ,CAAC,SAAS,aAAa,QAAQ,CAAC,KAAK,YAAY;QACrE,wCAAwC,QAAQ,CAAC,WAAW,4BAA4B;QACxF,gBAAgB,QAAQ,CAAC,QAAQ,wDAAwD;QACzF,qFAAqF;QACrF,qGAAqG,CACxG,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"censo.d.ts","sourceRoot":"","sources":["../../src/tools/censo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"censo.d.ts","sourceRoot":"","sources":["../../src/tools/censo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,OAAO,EACL,KAAK,oBAAoB,EAI1B,MAAM,kBAAkB,CAAC;AAoB1B;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAChC,MAAM,EACN,MAAM,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAyLtD,CAAC;AAuBF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA4DtB,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAErD,gFAAgF;AAChF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAW5B,CAAC;AAOH;;GAEG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAqMhF"}
|
package/dist/tools/censo.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { IBGE_API } from "../types.js";
|
|
3
|
-
import {
|
|
3
|
+
import { CACHE_TTL } from "../cache.js";
|
|
4
|
+
import { fetchSidra } from "../sidra-agregados.js";
|
|
4
5
|
import { withMetrics } from "../metrics.js";
|
|
5
6
|
import { createMarkdownTable } from "../utils/index.js";
|
|
6
7
|
import { parseHttpError, ValidationErrors } from "../errors.js";
|
|
@@ -319,7 +320,7 @@ export async function ibgeCenso(input) {
|
|
|
319
320
|
// Static catalog maintained in code — no upstream fetch (no cache key/dataset).
|
|
320
321
|
provenance: provenienciaIbge({
|
|
321
322
|
fonte: "SIDRA",
|
|
322
|
-
url: IBGE_API.
|
|
323
|
+
url: IBGE_API.AGREGADOS,
|
|
323
324
|
pesquisa: "catálogo de temas do Censo mantido pelo servidor",
|
|
324
325
|
}),
|
|
325
326
|
};
|
|
@@ -380,12 +381,14 @@ export async function ibgeCenso(input) {
|
|
|
380
381
|
};
|
|
381
382
|
// Build SIDRA query
|
|
382
383
|
try {
|
|
383
|
-
const
|
|
384
|
-
//
|
|
385
|
-
|
|
384
|
+
const caminho = buildSidraPath(tabelaInfo.tabela, nivel, input.localidades ?? "all", periodos);
|
|
385
|
+
// Pela API de Agregados v3 (ver src/sidra-agregados.ts). Cache de 1 hora:
|
|
386
|
+
// o dado muda pouco, as consultas variam. `url` é a consultada de fato.
|
|
387
|
+
let url = "";
|
|
388
|
+
let key = "";
|
|
386
389
|
let data;
|
|
387
390
|
try {
|
|
388
|
-
data = await
|
|
391
|
+
({ url, chaveCache: key, data } = await fetchSidra(caminho, CACHE_TTL.MEDIUM));
|
|
389
392
|
}
|
|
390
393
|
catch (error) {
|
|
391
394
|
if (error instanceof Error && error.message.includes("400")) {
|
|
@@ -470,12 +473,12 @@ export async function ibgeCenso(input) {
|
|
|
470
473
|
}
|
|
471
474
|
});
|
|
472
475
|
}
|
|
473
|
-
function
|
|
476
|
+
function buildSidraPath(tabela, nivel, localidades, periodos) {
|
|
474
477
|
let path = `/t/${tabela}`;
|
|
475
478
|
path += `/n${nivel}/${localidades}`;
|
|
476
479
|
path += `/v/allxp`;
|
|
477
480
|
path += `/p/${periodos}`;
|
|
478
|
-
return
|
|
481
|
+
return path;
|
|
479
482
|
}
|
|
480
483
|
function formatCensoTable(data) {
|
|
481
484
|
if (data.length === 0)
|