Dominios
IAM
User, Organization, Role, Permission, Membership, Invitation
Billing
Plan, Subscription, Invoice, Cost, Fee, Token, Coupon, Voucher, Payment Method, Billing Threshold, Webhook, Exchange Rate
Lead
Lead, ChannelIdentity, LeadOrganization, Event, Memory, Feature
No dominio IAM, Role, Permission, Membership e Invitation sao 100% proxied do WorkOS — nao sao armazenados como tabelas no banco de dados da aplicacao. Os esquemas aqui refletem o formato retornado pela API do WorkOS.
Fluxo de Dados
Os dominios da plataforma se comunicam seguindo um fluxo bem definido:- IAM e o dominio fundacional — todo usuario e organizacao comecam aqui. O
organizationIdgerado no IAM e a chave que conecta todos os outros dominios. - Billing depende do IAM para identificar a organizacao e vincular assinaturas, faturas e custos ao tenant correto. A criacao de uma Organization dispara a criacao do customer no Stripe via Saga.
- Lead utiliza o
organizationIddo IAM para isolar dados de leads por tenant. Eventos e memorias sao acumulados porLeadOrganization, que faz a ponte entre o lead global e a organizacao especifica.
Convencoes
- IDs: UUIDv7 — UUIDs ordenados por tempo que habilitam paginacao baseada em cursor
- Valores monetarios: Armazenados como inteiros em centavos (ex:
4900= R$49,00) - Moedas:
USD,BRL,EUR - Timestamps: ISO 8601, armazenados em UTC
- Soft deletes: campos
deletedAt/deletedByquando aplicavel - Trilha de auditoria:
createdBy,updatedBy,deletedBypara entidades principais - Refs externas: campos
externalRefarmazenam identificadores de provedores externos, vinculando entidades internas aos seus equivalentes em sistemas de terceiros