Skip to main content

Modelo de dados

O Kortex Insight usa multi-tenancy logico: todos os tenants compartilham o mesmo banco de dados, mas os dados sao isolados por tenantId em cada tabela.
Tenant
  └── Account(s)
        └── User(s)
        └── WhatsApp Instance(s)
  └── Lead(s)
        └── Message(s)
  └── Template(s)

Tenant

Representa uma organizacao. Cada tenant possui:
  • slug unico (ex: empresa-xyz)
  • apiKey gerada automaticamente para endpoints publicos
  • Configuracao de rate limit de WhatsApp opcional

Account

Agrupamento logico dentro de um tenant. Cada account pode ter:
  • Multiplos usuarios
  • Multiplas instancias WhatsApp
  • Uma instancia WhatsApp default

Isolamento

Todos os endpoints autenticados extraem o tenantId automaticamente do JWT. Nao e necessario passar o tenant em nenhuma requisicao autenticada.
O isolamento e garantido em todas as camadas:
CamadaMecanismo
APItenantId extraido do JWT pelo guard
ServiceFiltro por tenantId em todas as queries
DatabaseIndices compostos com tenantId

Endpoints publicos

Para endpoints publicos (/public/* e /webhooks/*), o tenant e identificado pelo header x-tenant-key, que mapeia para a apiKey do tenant.