Estado global: o produto inteiro está em Preview — sem SLA público e sem certificação de nuvem; nenhum conector é anunciado como disponibilidade geral. Métricas de nuvem: NÃO MEDIDO. Isso não significa que todo conector esteja com acesso restrito: a tabela abaixo diz, conector a conector, quais dá para cadastrar e usar hoje e quais o produto recusa configurar.
Fichas por conector:
conectores/fichas.md— uma página por conector, com campos, credenciais, limites e erros comuns.Leia antes:
README.md(vocabulário de estado + template dos 9 campos). Esta página é o mapa de estados público dos conectores — o passo a passo operacional detalhado vive no runbook operacional interno, não é duplicado aqui.
Dois vocabulários, e por que os dois existem#
Confundir os dois foi o que produziu a contradição entre a página inicial e esta página: a primeira mostrava Disponível e a segunda dizia Preview para o mesmo conector. São eixos diferentes, e ambos continuam valendo.
| Eixo | Valores | O que responde |
|---|---|---|
| Estado público (o selo do site e da tela de conexões) | Disponível · Acesso limitado · Planejado | Dá para eu usar isto hoje? |
| Maturidade (vocabulário interno de engenharia) | GA-candidato · Preview · Roadmap | Quanta prova existe por trás? |
Regras que valem nas duas superfícies, sem exceção:
- "Disponível" = usável hoje, no fluxo normal do produto, com a credencial da
sua origem. Não quer dizer disponibilidade geral, SLA nem certificação: o
teto de maturidade do produto é
GA-candidato, e nada é anunciado como GA. - "Acesso limitado" sempre vem com a condição concreta escrita na página do conector — "acesso limitado" sem condição seria claim vazio.
- "Planejado" é o que ainda não existe. Nenhuma superfície oferece botão de "usar hoje" para esses.
Estado do catálogo (a verdade do produto)#
O estado público de cada conector é derivado do catálogo, não redigitado.
disponivel → Disponível; estrutura → Acesso limitado; roadmap →
Planejado. A coluna "Configuração" diz se o produto recusa cadastrar a
fonte hoje — e essa recusa é o único caso em que usar depende de falar com o
suporte.
| Conector | id | Estado público | Maturidade | Configuração | Auth |
|---|---|---|---|---|---|
| PostgreSQL | postgresql | Disponível | GA-candidato | aceita | usuário/senha (rede: IP, SSH, Cloud SQL, VPN) |
| MySQL | mysql | Disponível | GA-candidato | aceita | usuário/senha |
| SQL Server | sqlserver | Disponível | GA-candidato | aceita | usuário/senha |
| Oracle | oracle | Disponível | GA-candidato | aceita | usuário/senha |
| BigQuery | bigquery | Disponível | GA-candidato | aceita | conta de serviço |
| CSV · JSON · Parquet | csv json parquet | Disponível | GA-candidato | aceita | envio para a área de recebimento |
| Google Sheets | google_sheets | Disponível | GA-candidato | aceita | conta de serviço |
| Meta Ads (Facebook/Instagram) | meta_ads | Acesso limitado | Preview | aceita | OAuth2 |
| Google Ads | google_ads | Acesso limitado | Preview | aceita | OAuth2 |
| Omie ERP | omie | Acesso limitado | Preview | aceita | apiKey (App Key/Secret) |
| Tiny ERP | tiny | Acesso limitado | Preview | aceita | token (API v2) |
| NF-e (SEFAZ) | nfe | Acesso limitado | Preview | aceita | certificado A1 (.pfx) |
| Salesforce | salesforce | Acesso limitado | Preview | aceita | OAuth2 |
| Bling ERP | bling | Acesso limitado | Preview | recusada ¹ | OAuth2 |
| Conta Azul | conta_azul | Acesso limitado | Preview | recusada ¹ | OAuth2 |
| HubSpot | hubspot | Acesso limitado | Preview | recusada ¹ | OAuth2/token |
| Azure Blob Storage | azure_blob | Acesso limitado | Preview | recusada ² | chave/SAS do container |
| Amazon S3 | s3 | Planejado | Roadmap | recusada ³ | — |
| Google Cloud Storage | gcs | Planejado | Roadmap | recusada ³ | — |
¹ A rotação do refresh token (OAuth) não é persistida ponta a ponta; sem ela a conexão pararia na primeira renovação. O produto recusa salvar em vez de deixar quebrar depois. Fale com o suporte para participar da liberação.
² A leitura do container existe, mas ainda não está ligada ao fluxo de fontes.
³ Puxar de um bucket seu não está implementado. O caminho hoje é enviar os arquivos para a área de recebimento do seu ambiente, que segue o mesmo fluxo de camadas.
Quatro conectores em Preview e dois Planejados têm a configuração RECUSADA pelo produto — a tela não deixa salvar e explica por quê. Os demais não dependem de nenhuma liberação caso a caso: dependem da credencial da sua origem e de o ambiente de nuvem do seu workspace estar configurado (sem ele a execução falha, com mensagem, em vez de fingir sucesso).
O runner R/Python de scripts continua indisponível por isolamento não provado. Ele não é um conector: é execução de script isolada.
Ficha por família (template dos 9 campos)#
Conectores ERP/Fiscal BR — Omie, Bling, Conta Azul, Tiny, NF-e
- Estado — Acesso limitado os cinco (maturidade
Preview). Omie, Tiny e NF-e aceitam cadastro hoje; Bling e Conta Azul têm a configuração RECUSADA pelo produto enquanto a rotação do refresh token não for persistida. Nenhum deles é anunciado como disponibilidade geral. - O que faz — extraem tabelas de negócio (pedidos, produtos, financeiro, NF-e) da API do ERP e carregam na camada Bronze do workspace.
- Como funciona — cada conector é só um adaptador sobre o SDK comum de conectores: auth normalizada, paginação com teto, checkpoint de retomada, retry com
Retry-After, redaction e métricas vêm de graça. A mesma bateria de contrato roda contra os cinco. - Plano · Permissão — núcleo do produto · verificação de acesso (workspace ativo) · chave de desligamento execução de ingestão por capacidade. Extração real exige credencial cifrada da fonte.
- Custo — extração em si é chamada de API do ERP (R$0 na plataforma); a carga Bronze consome processamento de carga no datalake (cobrável) — ver
custo-limites-seguranca.md. Custo faturado real em nuvem =NÃO MEDIDO. - Limites — paginação com teto duro (default 10.000 páginas / 5.000.000 linhas); carga SaaS default
batchSize 5.000,maxRows 200.000. - Segurança — segredo (App Secret, refresh token, senha do certificado) entra na redação de segredos; nenhum erro sai com token. Escopo por workspace na carga.
- Como validar — no console, em ETL/ELT → Conexões, use "Testar conexão" com a credencial da fonte e confirme que a descoberta lista as tabelas esperadas; após uma carga, verifique na camada Bronze do seu workspace as linhas ingeridas. O catálogo mostra o estado ("Preview até certificação com credencial real").
- Estado real / claim permitido — "<Conector> em Acesso limitado — a condição de uso está escrita na página do conector."
Conectores de Anúncios — Meta Ads e Google Ads
- Estado — Acesso limitado (maturidade
Preview); os dois aceitam cadastro. Meta Ads depende de App Review Meta (ads_read) para uso amplo; Google Ads, do developer token basic→standard. - O que faz — Meta Ads lê o endpoint de Insights (uma linha por dia,
time_increment=1) em 3 tabelas Bronze (meta_ads_campanhas/_conjuntos/_anuncios). Google Ads lê relatórios de desempenho (campanha/grupo/palavra-chave). - Como funciona — adaptadores sobre o SDK comum, com transporte com retry (429/5xx +
Retry-After) e checkpoint. O Google Ads recusa a ingestão em produção enquanto o developer token não estiver aprovado (nunca finge sucesso). - Plano · Permissão — núcleo · verificação de acesso · execução de ingestão.
- Custo — chamadas às APIs de Ads (R$0 plataforma) + carga Bronze cobrável. Métricas de nuvem =
NÃO MEDIDO. - Limites — janelas de data configuráveis (7/14/30/90 dias, mês atual/passado); mesmos tetos de paginação do SDK.
- Segurança — access token / client secret / developer token / refresh token redigidos em todo erro.
- Como validar — no console, conecte a conta de anúncios e rode "Testar conexão"; confirme que as tabelas de Insights/relatórios aparecem na descoberta e, após uma carga, na Bronze do seu workspace. Enquanto o app não é aprovado, a ingestão em produção é recusada com aviso claro.
- Estado real / claim permitido — Acesso limitado (maturidade
Preview), o mesmo rótulo que a landing e o produto usam: não existe selo "em breve" em lugar nenhum. Subir de estado depende de App Review (Meta) e de developer token aprovado (Google).
Google Sheets
- Estado — Disponível (maturidade
GA-candidato): dá para cadastrar e usar hoje, sem liberação caso a caso. Como todo o produto, ainda sem SLA público nem certificação de nuvem. - O que faz — lê abas de uma planilha (colunas reais, cabeçalho configurável) e carrega na Bronze.
- Como funciona — adaptador com paginação por janela de linhas e checkpoint (
{linha, columns}); "Testar conexão" indica o e-mail da conta de serviço a autorizar. - Plano · Permissão — núcleo · verificação de acesso · execução de ingestão.
- Custo — leitura da planilha R$0; carga Bronze cobrável. Nuvem =
NÃO MEDIDO. - Limites — tetos do SDK; uma aba renomeada não derruba as demais (erro fica na tabela, o laço segue).
- Segurança — JSON da conta de serviço (e sua
private_key) redigidos; escopo por workspace. - Como validar — no console, autorize o e-mail da conta de serviço na planilha, rode "Testar conexão" e confirme que as abas/colunas aparecem; após a carga, veja as linhas na Bronze.
- Estado real / claim permitido — "Google Sheets Disponível — cadastro e extração no fluxo normal; sem SLA público."
Salesforce · HubSpot · Azure Blob
- Estado — Acesso limitado (maturidade
Preview). Salesforce aceita cadastro; HubSpot e Azure Blob têm a configuração RECUSADA hoje (HubSpot pela rotação de refresh token, Azure Blob porque a extração ainda não está ligada ao fluxo de fontes). - O que faz — Salesforce/HubSpot leem objetos/entidades do CRM; Azure Blob lê arquivos de um container.
- Como funciona — adaptadores sobre o SDK comum (Azure Blob tem retomada por nome de blob: blob ≤ último processado é pulado, não reprocessa).
- Plano · Permissão — núcleo · verificação de acesso · execução de ingestão.
- Custo — API/leitura R$0; carga Bronze cobrável. Nuvem =
NÃO MEDIDO. - Limites — tetos do SDK.
- Segurança — credenciais redigidas; escopo por workspace.
- Como validar — no console, conecte a fonte, rode "Testar conexão" e confirme a descoberta das entidades/arquivos; após a carga, veja as linhas na Bronze do seu workspace.
- Estado real / claim permitido — "<Conector> em Acesso limitado — a condição de uso está escrita na página do conector."
O SDK comum (por que "novo conector = adaptador + suíte de contrato")#
O SDK comum de conectores é puro (sem I/O próprio; o transporte de rede é
injetado). Um conector novo só escreve testar/descobrir/extrair; o resto vem da
fábrica de adaptadores:
| Peça | Garantia |
|---|---|
| Auth | credencial normalizada; o SDK sabe extrair o material sensível para redigir |
| Paginação | generator com teto duro e guarda anti-loop (cursor que não avança encerra) |
| Checkpoint | contrato injetável; lê antes de extrair, grava a cada lote, limpa ao concluir (próxima execução recomeça do zero) |
| Retry | backoff exponencial + jitter determinístico, respeita Retry-After; re-tenta só 429/5xx e erro de rede |
| Redaction | todo erro/log passa pela redação de segredos (cru, URL-encoded, JSON) |
| Métricas | uma linha de telemetria por operação (linhas/bytes/ms/ok) — telemetria nunca derruba a extração |
Contract suite: a mesma bateria prova, para cada adaptador, que erro lançado é sempre redigido, métricas sempre emitidas e checkpoint retoma sem duplicar nem perder linha.
Schema drift e observabilidade#
- Schema drift: compara baseline salvo × schema descoberto. Coluna/tabela nova →
info; coluna removida / tipo mudado / tabela removida →atencao(quebra o mart). É lógica pura; onde o baseline é persistido é decisão do chamador. - Observabilidade: agrega os eventos em execuções, taxa de erro, p50/p95, freshness. Limiares: erro ≥ 20% → degradado; p95 > 30 s → degradado; sem rodar > 26 h → degradado, > 72 h → parado.
Certificação (o "GA nunca é automático")#
A certificação roda sondas vivas (transporte injetado, sem rede) contra o
adaptador real: status honesto no catálogo · adaptador conformante · discover com
≥1 tabela · redaction ativa (planta um segredo-sentinela e exige que não vaze) ·
checkpoint suportado. Os itens humanos (30 dias com credencial real,
reconciliação contra relatórios do provedor, rotação de token, quotas com tráfego
real) são sempre pendentes — por isso a prontidão para GA é sempre false.