Skip to main content
Na maioria das integrações você não precisa pensar em tenant explicitamente. A autenticação e o roteamento já carregam o contexto do tenant, e a API filtra os dados por baixo dos panos. Esta página explica o modelo, mostra como o tenant é resolvido em cada request e documenta as poucas exceções em que o Customer aparece na sua frente.

O conceito: por que multi-tenant

A Cativa é uma plataforma multi-tenant: uma única instância da API serve milhares de comunidades diferentes, e cada uma tem os dados completamente isolados das demais. Uma chamada feita no contexto de um tenant nunca enxerga nem afeta dados de outro. Pense num prédio de apartamentos. A estrutura (elevador, encanamento, fachada) é compartilhada, mas cada apartamento tem porta e chave próprias. Ninguém entra no seu apartamento com a chave do vizinho. Na Cativa, a “estrutura” é a API e a infraestrutura; o “apartamento” é o tenant; a “chave” é a credencial que você usa.

Customer e tenant são a mesma coisa

No produto, Customer e tenant são o mesmo conceito, vistos de ângulos diferentes:
  • Customer é o nome comercial/administrativo. Aparece em faturamento, no fluxo OIDC ({customerName}) e no campo customer das respostas.
  • Tenant é o nome técnico. É a unidade de isolamento de dados.
Trate os dois como sinônimos. Cada Customer tem um slug único (por exemplo, makersday), que também é o subdomínio público da comunidade.

Como o tenant é resolvido em cada request

Você quase nunca envia o tenant “na mão”. O contexto é deduzido pela forma como a requisição chega. Entender isso ajuda a debugar respostas vazias ou 403.

A API Key embute o tenant

A chave de parceiro segue o formato:
Como o segmento do meio identifica o Customer, uma chave só opera dentro de um tenant. Você não precisa (nem consegue) apontar uma chave para outro tenant. Se você integra várias comunidades, guarde uma chave por tenant e escolha a certa em cada chamada.
A API Key é um segredo. Guarde em variável de ambiente ou cofre de segredos, nunca no código-fonte ou no front-end. Nos exemplos usamos cativa_live_... e YOUR_API_KEY como espaço reservado.

Como descobrir o customer atual

Se você precisa saber a qual customer sua chave pertence (para logs, auditoria ou sanity check no onboarding), chame GET /auth/me. O campo customer traz o slug do tenant.
Resposta ilustrativa (campos abreviados):
Os JSON de exemplo nesta página são ilustrativos. O schema autoritativo campo a campo fica na aba API Reference (tag Auth).

Quando você lida com o Customer explicitamente

Na maior parte das integrações o tenant é invisível. Estas são as exceções.
Os endpoints SSO usam o slug do customer no path:
O customerName é o subdomínio público da comunidade. Alinhe esse valor com o admin do tenant no onboarding. Veja Login com a Cativa para o passo a passo.
Se o mesmo endpoint recebe webhooks de mais de um tenant (comum em apps que servem várias comunidades), o payload traz CustomerId na raiz para você rotear.
Salve o mapeamento customerId -> conta_externa no onboarding do cliente. Não tente deduzir isso a cada evento. O shape de cada evento está documentado na página do webhook (ex.: user_received_badge).
Se você está construindo um app estilo Zapier que conecta a Cativa a outras ferramentas e serve várias comunidades diferentes, o fluxo correto é o OAuth Marketplace:
1

Instalação

Cada comunidade (tenant) instala seu app uma vez.
2

Token por tenant

A Cativa emite um token OAuth escopado para aquele tenant.
3

Uso

Você guarda um token por tenant e usa o token certo em cada chamada.
Se o seu caso é “uma integração para um cliente específico”, use uma API Key: é mais simples. OAuth Marketplace é para distribuir o app a terceiros.
Endpoints de operador da plataforma (/tenants/v1/admin/...) exigem credenciais de operador e JWT de admin da plataforma. Se você é integrador externo via API Key, ignore essa categoria: ela não é exposta publicamente a parceiros.

Erros comuns de contexto de tenant

A credencial está ausente, malformada ou revogada. Confira o header Authorization: Bearer cativa_live_... e se a chave é do ambiente certo (live vs test).
A credencial é válida, mas não tem permissão para o recurso, ou você está tentando acessar dado de outro tenant. Lembre: uma chave opera só dentro do próprio tenant. Chame GET /auth/me e confira o campo customer.
Quase sempre é resolução de tenant errada em produção (domínio ou header Cativa-Origin incorreto), então a API filtra e devolve o conjunto vazio daquele tenant. Confirme o subdomínio/origin da requisição.
Veja Erros e limites de taxa para o contrato completo de erros.

Próximos passos

Identidade e usuários

O modelo User e como ligá-lo ao seu sistema externo.

Webhooks

Como receber eventos da Cativa, incluindo o campo CustomerId.