Skip to content

Chaves de API

Toda integração programática com o GCM se autentica com uma chave de API. O Zapier usa uma. Seu backend personalizado usa uma. Seu pipeline de data warehouse usa uma. Esta página explica como criá-las, definir o escopo e aposentá-las com segurança.

Gerencie as chaves em Integrations → Zapier → API Keys. (Apesar da URL, isso não é só para o Zapier — qualquer chamador externo da API do GCM usa chaves daqui.)

Aba de chaves de API

Criar uma chave

Clique em New key. Dê a ela um rótulo que nomeie o que vai usar a chave, não quem a criou:

  • Zapier — Production — para os Zaps.
  • ETL data warehouse — para sua exportação noturna.
  • Site interno de diretório — para uma intranet só para funcionários que lista membros.

Quando você clica em criar, o GCM exibe a chave bruta uma única vez.

Diálogo de exibição única da chave

Copie-a imediatamente e guarde-a em um gerenciador de segredos de verdade — 1Password, AWS Secrets Manager, Doppler, Vault, a plataforma de sua escolha. Não a cole no Slack, em e-mail ou em uma página de wiki.

WARNING

Não armazenamos a chave bruta. O banco de dados guarda apenas um hash, mais um prefixo de 6 caracteres que você pode usar para identificar qual chave é qual sem revelar o segredo. Se você perder a chave bruta, sua única opção é revogar e emitir uma nova.

Formato da chave

As chaves se parecem com gcm_live_<32 caracteres aleatórios> ou gcm_test_<32 caracteres aleatórios> dependendo do ambiente em que foram emitidas. O prefixo é visível na lista de chaves para que você possa dizer rapidamente qual é de produção e qual é de staging sem nunca ver o segredo.

gcm_live_a1b2c3d4e5f6...
└─┬─┘└─┬─┘└──────┬──────┘
  │    │         └── 32 caracteres de entropia CSPRNG
  │    └── ambiente
  └── produto (sempre `gcm`)

Escopos

Cada chave carrega uma lista de escopos que restringem o que ela pode fazer. O padrão para chaves criadas pela interface do Zapier é read:* — acesso somente leitura a todos os recursos.

EscopoConcede
read:*Listar e ler todos os recursos públicos
read:membersApenas membros
read:donationsApenas doações
write:membersCriar / atualizar membros
write:donationsRegistrar doações (para integrações contábeis)
subscriptions:manageCriar / excluir assinaturas de webhook
*Acesso completo — equivalente a admin. Use com parcimônia.

Os escopos são aplicados pelo gateway da API, não pela lógica da aplicação — uma chave read:* chamando um endpoint de escrita recebe um 403 imediatamente, nunca chega ao RPC subjacente.

TIP

Comece toda nova integração com read:*. Só amplie o escopo quando tiver provado que o caminho de leitura funciona e tiver um requisito real de escrita. Chaves com escopo excessivo são como exploits viram catástrofes.

Usando uma chave

Envie a chave como token Bearer em toda requisição:

bash
curl https://api.geniuschurchmanager.com/v1/members \
  -H "Authorization: Bearer gcm_live_..."

É isso. Sem dança de OAuth, sem assinatura por requisição — apenas o bearer. Combinado com HTTPS, isso é suficiente para as integrações para as quais a API foi projetada.

Cada requisição é registrada com o prefixo da chave, o endpoint chamado e o status da resposta. Você pode ver o timestamp do último uso na chave na interface do GCM — útil para identificar chaves que não foram usadas há meses (boas candidatas para rotação ou revogação).

Rotação

Você deve fazer rotação das chaves de API:

  • Por cronograma — a cada 12 meses no mínimo.
  • Na saída de funcionários — qualquer pessoa que teve acesso à chave bruta não deve poder usá-la depois de sair.
  • Em suspeita de comprometimento — se uma chave aparecer em um commit Git, em uma mensagem do Slack ou em uma captura de tela, trate-a como comprometida.

Procedimento de rotação:

  1. Emita uma nova chave com os mesmos escopos.
  2. Implante a nova chave no consumidor (conexão do Zapier, variável de ambiente, gerenciador de segredos).
  3. Verifique se o consumidor está usando a nova chave observando o timestamp last_used se mover.
  4. Revogue a chave antiga.

O GCM não suporta atualmente janelas de rotação sobrepostas — a chave antiga funciona até você revogá-la, e a nova chave funciona a partir do momento da criação. Planeje sua transição.

Revogação

Clique no ícone de lixeira ao lado de qualquer chave. A chave é marcada com revoked_at imediatamente; a próxima requisição com ela recebe um 401.

WARNING

Revogar uma chave em produção quebra instantaneamente qualquer consumidor que a esteja usando. Os Zaps param, sua tarefa de ETL lança erro, o site interno de diretório fica em branco. Coordene a rotação, depois revogue.

Chaves revogadas permanecem na lista (acinzentadas) para que você possa auditar quando foram emitidas, quando foram usadas pela última vez e quando foram aposentadas. Para apagar permanentemente uma chave revogada antiga, contate o suporte da plataforma — auditores geralmente preferem revogações a exclusões.

Auditando o uso

A lista de chaves mostra para cada chave:

  • Timestamp de criação.
  • Timestamp do último uso (rolante — atualiza em segundos após uma requisição).
  • Escopos.
  • Timestamp de revogação, se revogada.

Para auditoria mais profunda — contagens por endpoint, distribuição de códigos de resposta, detecção de abuso — admins da plataforma têm acesso à tabela api_request_log nas exportações do BigQuery. Entre em contato se precisar de um recorte específico.

Limites

LimitePadrão
Chaves por organização20
Requisições por segundo por chave60
Requisições por hora por chave10.000
Requisições simultâneas por chave20

Esses limites são deliberadamente generosos para integrações legítimas e apertados o suficiente para tornar a enumeração por força bruta impraticável. Se você atingir um limite, provavelmente tem um loop descontrolado em algum lugar.

O que uma chave de API não pode fazer

Por segurança, as chaves de API deliberadamente não podem:

  • Fazer login interativamente (sem sessão, sem acesso à interface).
  • Gerenciar outras chaves de API (apenas a interface do Zapier pode, e apenas admins chegam lá).
  • Personificar usuários (o sistema JWT que controla a personificação de admin da plataforma é separado).
  • Burlar a segurança em nível de linha — toda consulta ainda fica restrita a current_org_id() derivada da organização da chave.

Esses são guarda-corpos, não recursos: mesmo uma chave comprometida não pode escalar além da organização que a possui.

Referências cruzadas