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 ​