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.
Files changed (43) hide show
  1. package/README.md +33 -3
  2. package/README.pt-BR.md +33 -3
  3. package/dist/config.d.ts +1 -1
  4. package/dist/config.d.ts.map +1 -1
  5. package/dist/config.js +6 -1
  6. package/dist/config.js.map +1 -1
  7. package/dist/provenance.d.ts +1 -1
  8. package/dist/server.js +2 -2
  9. package/dist/sidra-agregados.d.ts +93 -0
  10. package/dist/sidra-agregados.d.ts.map +1 -0
  11. package/dist/sidra-agregados.js +189 -0
  12. package/dist/sidra-agregados.js.map +1 -0
  13. package/dist/tools/censo.d.ts.map +1 -1
  14. package/dist/tools/censo.js +11 -8
  15. package/dist/tools/censo.js.map +1 -1
  16. package/dist/tools/comparar.d.ts.map +1 -1
  17. package/dist/tools/comparar.js +8 -9
  18. package/dist/tools/comparar.js.map +1 -1
  19. package/dist/tools/datasaude.d.ts.map +1 -1
  20. package/dist/tools/datasaude.js +11 -20
  21. package/dist/tools/datasaude.js.map +1 -1
  22. package/dist/tools/deep-research.d.ts.map +1 -1
  23. package/dist/tools/deep-research.js +10 -1
  24. package/dist/tools/deep-research.js.map +1 -1
  25. package/dist/tools/indicadores.d.ts.map +1 -1
  26. package/dist/tools/indicadores.js +11 -12
  27. package/dist/tools/indicadores.js.map +1 -1
  28. package/dist/tools/sidra-tabelas.d.ts +1 -0
  29. package/dist/tools/sidra-tabelas.d.ts.map +1 -1
  30. package/dist/tools/sidra-tabelas.js +39 -11
  31. package/dist/tools/sidra-tabelas.js.map +1 -1
  32. package/dist/tools/sidra.d.ts.map +1 -1
  33. package/dist/tools/sidra.js +15 -7
  34. package/dist/tools/sidra.js.map +1 -1
  35. package/dist/tools/vizinhos.d.ts.map +1 -1
  36. package/dist/tools/vizinhos.js +6 -7
  37. package/dist/tools/vizinhos.js.map +1 -1
  38. package/dist/types.d.ts +1 -1
  39. package/dist/vocabulario.d.ts +116 -0
  40. package/dist/vocabulario.d.ts.map +1 -0
  41. package/dist/vocabulario.js +218 -0
  42. package/dist/vocabulario.js.map +1 -0
  43. 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://apisidra.ibge.gov.br/values";
27
+ readonly SIDRA: "https://servicodados.ibge.gov.br/api/v3/agregados";
28
28
  };
29
29
  /**
30
30
  * Brazilian states (UF) codes
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
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: "https://apisidra.ibge.gov.br/values",
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
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
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,sEAAsE;IACtE,0EAA0E;IAC1E,mEAAmE;IACnE,uEAAuE;IACvE,2DAA2D;IAC3D,KAAK,EAAE,mDAAmD;CAClD,CAAC;AAEX,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAA2B;IAC9C,QAAQ;IACR,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,WAAW;IACX,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,UAAU;IACV,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,MAAM;IACN,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,eAAe;IACf,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;CACP,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAA2B,MAAM,CAAC,WAAW,CACjE,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAC/D,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAA2B;IAC9C,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,UAAU;IACd,EAAE,EAAE,OAAO;IACX,EAAE,EAAE,OAAO;IACX,EAAE,EAAE,OAAO;IACX,EAAE,EAAE,kBAAkB;IACtB,EAAE,EAAE,gBAAgB;IACpB,EAAE,EAAE,OAAO;IACX,EAAE,EAAE,UAAU;IACd,EAAE,EAAE,cAAc;IAClB,EAAE,EAAE,oBAAoB;IACxB,EAAE,EAAE,aAAa;IACjB,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,YAAY;IAChB,EAAE,EAAE,OAAO;IACX,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,gBAAgB;IACpB,EAAE,EAAE,qBAAqB;IACzB,EAAE,EAAE,UAAU;IACd,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,mBAAmB;IACvB,EAAE,EAAE,gBAAgB;IACpB,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,WAAW;CAChB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAA2B;IAClD,CAAC,EAAE,CAAC,EAAE,QAAQ;IACd,EAAE,EAAE,CAAC,EAAE,WAAW;IAClB,EAAE,EAAE,CAAC,EAAE,UAAU;IACjB,CAAC,EAAE,CAAC,EAAE,MAAM;IACZ,EAAE,EAAE,CAAC,EAAE,eAAe;CACvB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAA2B;IAClD,CAAC,EAAE,OAAO;IACV,CAAC,EAAE,UAAU;IACb,CAAC,EAAE,SAAS;IACZ,CAAC,EAAE,KAAK;IACR,CAAC,EAAE,cAAc;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAA6B;IACxD,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,QAAQ;IACvD,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,WAAW;IACtE,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,UAAU;IACvC,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM;IAC7B,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,eAAe;CAC7C,CAAC;AAEF,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,EAAE,EAAE,GAAG;IACP,SAAS,EAAE,GAAG;IACd,oBAAoB,EAAE,GAAG;IACzB,WAAW,EAAE,GAAG;IAChB,YAAY,EAAE,GAAG;IACjB,QAAQ,EAAE,IAAI;IACd,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,IAAI;IACb,IAAI,EAAE,IAAI;IACV,kBAAkB,EAAE,IAAI;IACxB,eAAe,EAAE,IAAI;IACrB,oBAAoB,EAAE,IAAI;IAC1B,kBAAkB,EAAE,KAAK;IACzB,YAAY,EAAE,KAAK;IACnB,oBAAoB,EAAE,KAAK;IAC3B,cAAc,EAAE,KAAK;IACrB,SAAS,EAAE,KAAK;CACR,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAA2B;IAC7D,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,sBAAsB;IAC3B,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,sBAAsB;IAC3B,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,cAAc;IACnB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,aAAa;IACnB,IAAI,EAAE,2BAA2B;IACjC,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,oBAAoB;IAC1B,IAAI,EAAE,4BAA4B;IAClC,IAAI,EAAE,iCAAiC;IACvC,KAAK,EAAE,uBAAuB;IAC9B,KAAK,EAAE,iBAAiB;IACxB,KAAK,EAAE,sBAAsB;IAC7B,KAAK,EAAE,gBAAgB;IACvB,KAAK,EAAE,WAAW;CACnB,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAA2B;IAC9D,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,sBAAsB;IAC3B,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,cAAc;IACnB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,aAAa;IACnB,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,oBAAoB;IAC1B,IAAI,EAAE,4BAA4B;IAClC,IAAI,EAAE,iCAAiC;IACvC,KAAK,EAAE,uBAAuB;IAC9B,KAAK,EAAE,iBAAiB;IACxB,KAAK,EAAE,sBAAsB;IAC7B,KAAK,EAAE,gBAAgB;IACvB,KAAK,EAAE,WAAW;CACnB,CAAC;AAEF,6DAA6D;AAC7D,MAAM,CAAC,MAAM,sBAAsB,GAAa,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AAEtF;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAe;IAClD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,wBAAwB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrF,OAAO,iCAAiC,IAAI,EAAE,CAAC;AACjD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAe;IAClD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,wBAAwB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnF,CAAC;AAED,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E,MAAM,CAAC,MAAM,WAAW,GAA2B;IACjD,QAAQ,EAAE,CAAC;IACX,OAAO,EAAE,CAAC;IACV,cAAc,EAAE,CAAC;IACjB,QAAQ,EAAE,CAAC;IACX,KAAK,EAAE,CAAC;IACR,QAAQ,EAAE,CAAC;CACZ,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAA2B;IACjD,CAAC,EAAE,UAAU;IACb,CAAC,EAAE,SAAS;IACZ,CAAC,EAAE,gBAAgB;IACnB,CAAC,EAAE,UAAU;IACb,CAAC,EAAE,OAAO;IACV,CAAC,EAAE,UAAU;CACd,CAAC;AAEF,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,aAAa;IACb,oBAAoB,EAAE,MAAM;IAC5B,oBAAoB,EAAE,MAAM;IAC5B,0BAA0B,EAAE,KAAK;IACjC,UAAU;IACV,YAAY,EAAE,MAAM;IACpB,cAAc,EAAE,MAAM;IACtB,gBAAgB,EAAE,MAAM;IACxB,qBAAqB,EAAE,MAAM;IAC7B,QAAQ;IACR,gBAAgB,EAAE,MAAM;IACxB,gBAAgB,EAAE,MAAM;IACxB,SAAS;IACT,WAAW,EAAE,MAAM;IACnB,cAAc,EAAE,MAAM;IACtB,gBAAgB;IAChB,aAAa,EAAE,MAAM;IACrB,UAAU,EAAE,MAAM;CACV,CAAC;AAEX,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,mBAAmB,EAAE,SAAS;IAC9B,YAAY,EAAE,SAAS;IACvB,gBAAgB,EAAE,SAAS;IAC3B,kBAAkB,EAAE,SAAS;IAC7B,OAAO,EAAE,uBAAuB;IAChC,SAAS,EAAE,qBAAqB;IAChC,QAAQ,EAAE,qBAAqB;IAC/B,SAAS,EAAE,wBAAwB;CAC3B,CAAC;AAEX,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,UAAU,EAAE;QACV,IAAI,EAAE,CAAC;QACP,SAAS,EAAE,EAAE;QACb,aAAa,EAAE,GAAG;KACnB;IACD,SAAS,EAAE;QACT,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,WAAW;QAC5B,MAAM,EAAE,EAAE,EAAE,SAAS;QACrB,KAAK,EAAE,EAAE,EAAE,aAAa;QACxB,QAAQ,EAAE,CAAC,EAAE,WAAW;KACzB;IACD,OAAO,EAAE;QACP,YAAY,EAAE,GAAG;QACjB,eAAe,EAAE,GAAG;KACrB;CACO,CAAC;AAEX,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,EAAU;IAClC,OAAO,EAAE,CAAC,WAAW,EAAE,IAAI,QAAQ,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,EAAU;IAClC,OAAO,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,IAAI;SACR,WAAW,EAAE;SACb,IAAI,EAAE;SACN,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,SAAS,CAAC,KAAK,CAAC;SAChB,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAA2B,MAAM,CAAC,WAAW,CACxE,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAC9E,CAAC;AAQF;;;;;;;;;GASG;AACH,MAAM,UAAU,SAAS,CAAC,KAAsB;IAC9C,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IACjC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IAEtB,IAAI,KAAyB,CAAC;IAE9B,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,gCAAgC;QAChC,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IACvC,CAAC;SAAM,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,WAAW,EAAE,IAAI,QAAQ,EAAE,CAAC;QAC7D,oBAAoB;QACpB,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,gCAAgC;QAChC,KAAK,GAAG,gBAAgB,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,EAAU;IACxC,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;IACjC,KAAK,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACpE,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,OAAO,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAK3C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAExC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACpD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACzC,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,mBAAmB,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3E,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACrC,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,mBAAmB,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAClF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IAC5C,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,mBAAmB,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACjF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAC3C,CAAC;IAED,OAAO;QACL,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,yBAAyB,IAAI,yFAAyF;KAChI,CAAC;AACJ,CAAC"}
@@ -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://apisidra.ibge.gov.br/values";
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. The query itself still respects SIDRA's official cap of 100,000 values.
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":"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"}
@@ -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;AAOxB,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,CA8LhF"}
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"}
@@ -1,6 +1,7 @@
1
1
  import { z } from "zod";
2
2
  import { IBGE_API } from "../types.js";
3
- import { cacheKey, CACHE_TTL, cachedFetch } from "../cache.js";
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.SIDRA,
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 url = buildSidraUrl(tabelaInfo.tabela, nivel, input.localidades ?? "all", periodos);
384
- // Use cache for census data (1 hour TTL - data doesn't change often but queries vary)
385
- const key = cacheKey(url);
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 cachedFetch(url, key, CACHE_TTL.MEDIUM);
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 buildSidraUrl(tabela, nivel, localidades, periodos) {
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 `${IBGE_API.SIDRA}${path}`;
481
+ return path;
479
482
  }
480
483
  function formatCensoTable(data) {
481
484
  if (data.length === 0)