{
  "schema": "https://extrato.digital/api/fontes.json",
  "versao": 1,
  "atualizado": "2026-08-30",
  "aviso": "Cada fonte é um sistema público oficial consultado pela IA do próprio usuário — nada passa por este site. Leia as limitações de cada uma antes de interpretar qualquer número.",
  "saude": "https://extrato.digital/endpoints-health.json",
  "total": 17,
  "porTier": {
    "core": 7,
    "condicional": 1,
    "extended": 9
  },
  "fontes": [
    {
      "id": "camara-dadosabertos",
      "nome": "Câmara dos Deputados — Dados Abertos",
      "curto": "Câmara",
      "escopo": "federal",
      "playbook": "deputado-federal",
      "tier": "core",
      "base": "https://dadosabertos.camara.leg.br/api/v2",
      "chave": false,
      "cobre": "deputados, despesas CEAP (nota fiscal), proposições, votações nominais, orientações, eventos, comissões, discursos, aderência à orientação de bancada (governismo), partido-na-data (/historico), detalhe de votação (ementa/resultado), andamento da proposição (statusProposicao), autoria efetiva vs. adesão (/autores proponente), temas",
      "limitacoes": "busca literal por nome; /votacoes janela máx. 3 meses; /despesas com vazio intermitente; eventos ≠ frequência oficial",
      "validado": "2026-08-30"
    },
    {
      "id": "senado-dadosabertos",
      "nome": "Senado Federal — Dados Abertos + Transparência",
      "curto": "Senado",
      "escopo": "federal",
      "playbook": "senador",
      "tier": "core",
      "base": "https://legis.senado.leg.br/dadosabertos",
      "chave": false,
      "cobre": "senadores, exercício (Exercicios), autorias, votações, comissões, discursos, licenças; CEAPS via CSV",
      "limitacoes": "XML-first; truncamento silencioso de discursos >1 ano; presença em sessão não publicada; CSV Latin-1",
      "validado": "2026-08-30"
    },
    {
      "id": "cldf-ckan",
      "nome": "CLDF — Dados Abertos (CKAN) + PLe",
      "curto": "CLDF",
      "escopo": "distrital",
      "playbook": "distrital",
      "tier": "core",
      "base": "https://dados.cl.df.gov.br",
      "chave": false,
      "cobre": "relação nominal, verba indenizatória (datastore), remuneração, diárias, sancionadas; proposições via PLe",
      "limitacoes": "dataset de verbas parcial na origem (4-11 de 24 gabinetes); busca sensível a acento; votações só em PDF; PLe com filtro-fantasma",
      "validado": "2026-08-30"
    },
    {
      "id": "gdf-transparencia",
      "nome": "GDF — Transparência (emendas)",
      "curto": "GDF",
      "escopo": "distrital",
      "playbook": "distrital",
      "tier": "core",
      "base": "https://www.transparencia.df.gov.br/api",
      "chave": false,
      "cobre": "emendas parlamentares por autor (execução: autorizado/empenhado/liquidado/pago)",
      "limitacoes": "API interna de SPA (contrato sem garantia); lenta (~40s 1ª resposta); lista de autores com grafias duplicadas",
      "validado": "2026-08-30"
    },
    {
      "id": "cgu-transparencia",
      "nome": "Portal da Transparência federal (CGU)",
      "curto": "CGU",
      "escopo": "federal",
      "playbook": "deputado-federal",
      "tier": "condicional",
      "base": "https://api.portaldatransparencia.gov.br/api-de-dados",
      "chave": true,
      "cobre": "emendas parlamentares por autor; CEIS/CNEP (sancionadas)",
      "limitacoes": "exige chave gratuita do usuário (cadastro por e-mail); bulk CSV atrás de CAPTCHA",
      "validado": "2026-07-15"
    },
    {
      "id": "ibge-localidades",
      "nome": "IBGE — Localidades",
      "curto": "IBGE",
      "escopo": "municipal",
      "playbook": "municipal",
      "tier": "core",
      "base": "https://servicodados.ibge.gov.br/api/v1/localidades",
      "chave": false,
      "cobre": "código IBGE ↔ nome ↔ UF (chave-mestra municipal)",
      "limitacoes": "só cadastro territorial",
      "validado": "2026-08-30"
    },
    {
      "id": "siconfi",
      "nome": "SICONFI — Tesouro Nacional",
      "curto": "SICONFI",
      "escopo": "municipal",
      "playbook": "municipal",
      "tier": "core",
      "base": "https://apidatalake.tesouro.gov.br/ords/siconfi",
      "chave": false,
      "cobre": "execução orçamentária (RREO/RGF/DCA) e CNPJ do ente, para os ~5.570 municípios",
      "limitacoes": "só o balanço anual (DCA) é amplo; RREO/RGF faltam em municípios pequenos; entes?id_ente ignorado",
      "validado": "2026-08-30"
    },
    {
      "id": "pncp",
      "nome": "PNCP — Contratações Públicas",
      "curto": "PNCP",
      "escopo": "municipal",
      "playbook": "municipal",
      "tier": "core",
      "base": "https://pncp.gov.br/api/consulta/v1",
      "chave": false,
      "cobre": "contratos e licitações por ente (Lei 14.133)",
      "limitacoes": "cobertura cresce de 2021+; municípios pequenos publicam pouco; 204 = zero contratos (não erro)",
      "validado": "2026-08-30"
    },
    {
      "id": "almg",
      "nome": "ALMG — Dados Abertos (piloto estadual)",
      "curto": "ALMG",
      "escopo": "estadual",
      "playbook": "lab:estadual-almg",
      "tier": "extended",
      "base": "https://dadosabertos.almg.gov.br/api/v2",
      "chave": false,
      "cobre": "deputados, verba por nota fiscal, votação nominal de Plenário, presença em comissão",
      "limitacoes": "booleanos s/n; numeroOrdemAutor inexistente; idDeputado filtro-fantasma; sem presença de Plenário",
      "validado": "2026-08-30"
    },
    {
      "id": "compras-gov",
      "nome": "Compras.gov.br — contratos por órgão (Executivo federal)",
      "curto": "Compras.gov",
      "escopo": "federal",
      "playbook": "lab:executivo-federal",
      "tier": "extended",
      "base": "https://dadosabertos.compras.gov.br/modulo-contratos",
      "chave": false,
      "cobre": "contratos por código de órgão: UG, CNPJ do fornecedor, objeto, modalidade, valor, processo",
      "limitacoes": "tamanhoPagina 10–500; dupla contagem com o PNCP pós-2021 (dedup por numeroControlePncp)",
      "validado": "2026-08-30"
    },
    {
      "id": "alepe",
      "nome": "ALEPE — Dados Abertos (PE)",
      "curto": "ALEPE",
      "escopo": "estadual",
      "playbook": "estadual-alepe-pe (laboratório)",
      "tier": "extended",
      "base": "https://dadosabertos.alepe.pe.gov.br/api/v1",
      "chave": false,
      "cobre": "parlamentares (49), proposições (autor filtrado no cliente), verba por nota com CNPJ",
      "limitacoes": "XML-first; `?autor=` é filtro-fantasma; votações/presença só em PDF; barra final obrigatória",
      "validado": "2026-08-30"
    },
    {
      "id": "alep",
      "nome": "ALEP — Transparência (PR)",
      "curto": "ALEP",
      "escopo": "estadual",
      "playbook": "estadual-alep-pr (laboratório)",
      "tier": "extended",
      "base": "https://transparencia.assembleia.pr.leg.br/api",
      "chave": false,
      "cobre": "remuneração, diárias, presença nominal (JSON), votações (PDF extraível); proposições via webservices (só HTTP)",
      "limitacoes": "API exige header X-Requested-With; webservices de proposições só em HTTP; verba de gabinete extinta no mandato atual",
      "validado": "2026-08-30"
    },
    {
      "id": "sapl-pb",
      "nome": "SAPL — ALPB (padrão Interlegis, PB)",
      "curto": "SAPL-PB",
      "escopo": "estadual",
      "playbook": "estadual-sapl-generico (laboratório)",
      "tier": "extended",
      "base": "https://sapl.al.pb.leg.br/api",
      "chave": false,
      "cobre": "legislaturas, mandatos, autoria de matérias, presença e voto nominal em plenário (casa PLENA)",
      "limitacoes": "host respondendo ≠ dados vivos (checar data da última sessão); despesas fora do SAPL",
      "validado": "2026-08-30"
    },
    {
      "id": "sapl-ro",
      "nome": "SAPL — ALE-RO (padrão Interlegis, RO)",
      "curto": "SAPL-RO",
      "escopo": "estadual",
      "playbook": "estadual-sapl-generico (laboratório)",
      "tier": "extended",
      "base": "https://sapl.al.ro.leg.br/api",
      "chave": false,
      "cobre": "legislaturas, mandatos, autoria, presença e voto nominal (casa PLENA)",
      "limitacoes": "idem SAPL-PB; instâncias SAPL dão 503 transitório com frequência (PI em 30/08)",
      "validado": "2026-08-30"
    },
    {
      "id": "gdf-servidores",
      "nome": "GDF — Transparência (servidores e estrutura)",
      "curto": "GDF-serv",
      "escopo": "distrital",
      "playbook": "executivo-gdf-ocupante-cargo (laboratório — retirado do ar até pós-diplomação)",
      "tier": "extended",
      "base": "https://www.transparencia.df.gov.br/api",
      "chave": false,
      "cobre": "órgãos (179), estrutura de cargos comissionados por órgão/símbolo (agregado, sem nome), folha agregada por órgão (grafico/evolucao), domínios de remuneração",
      "limitacoes": "API interna de SPA (exige x-client-id); sem filtro de órgão na query (filtrar no cliente por descricaoEmpresa); relatórios nominais fora de uso por desenho",
      "validado": "2026-08-30"
    },
    {
      "id": "dodf",
      "nome": "DODF — Diário Oficial do DF (busca)",
      "curto": "DODF",
      "escopo": "distrital",
      "playbook": "executivo-gdf-ocupante-cargo (laboratório — retirado do ar até pós-diplomação)",
      "tier": "extended",
      "base": "https://dodf.df.gov.br/dodf/materia/busca",
      "chave": false,
      "cobre": "busca textual de atos (nomeações/exonerações) com URL citável; datas em ISO",
      "limitacoes": "HTML (202), semiestruturado; filtros de seção isolados → 400; OCR pode ter falso-negativo",
      "validado": "2026-08-30"
    },
    {
      "id": "querido-diario",
      "nome": "Querido Diário — índice de diários oficiais municipais (OKBR, sociedade civil)",
      "curto": "QD (índice)",
      "escopo": "municipal",
      "playbook": "municipal",
      "tier": "extended",
      "base": "https://api.queridodiario.ok.org.br",
      "chave": false,
      "cobre": "índice full-text dos diários oficiais de ~1.000 municípios; aponta o PDF da edição oficial (a citação canônica é sempre o Diário original)",
      "limitacoes": "não é fonte oficial (índice da sociedade civil); cobertura idiossincrática por publicador; OCR com falso-negativo; indisponível (404 em todas as rotas) em 30/08/2026 — camada condicional no Playbook 04",
      "validado": "2026-08-30"
    }
  ]
}
