Arquitetura multi-veículo
O Typedit foi desenhado desde o início para grupos de mídia — não para um veículo só. Isso aparece tanto no produto (uma plataforma, vários portais) quanto na arquitetura (isolamento técnico por tenant). Esta página documenta o modelo de tenants (chamados aqui de "workspaces" ou "veículos") e o que é compartilhado vs isolado.
Modelo de workspaces
Cada veículo da casa é um workspace. Workspaces têm:
- Configuração de estilo editorial (tom, lead, intertítulos, disclaimers).
- Conexão WordPress própria (OAuth + token armazenado por workspace).
- Permissões e papéis próprios (editor, redator, jornalista, observador).
- Audit trail editorial isolado — eventos de um veículo não vazam para outro.
- Métricas e analytics próprios.
- Política editorial de IA versionada por veículo.
Organization (grupo)
Workspaces ficam agrupados em uma Organization (o grupo de mídia). A Organization tem:
- Billing consolidado — uma fatura para todos os workspaces do grupo.
- Diretores de redação com visão consolidada (cross-workspace).
- Métricas agregadas — volume editorial, custo por matéria, performance por veículo.
- Audit trail consolidado para compliance e auditoria externa.
- Configuração de SSO (SAML / OIDC) compartilhada.
Permissões
Permissões seguem o princípio do menor privilégio. Editores de um veículo só veem o que é deles. Diretores de redação podem ter visão cross-workspace explicitamente concedida — não automática.
- Workspace-level: editor, redator, jornalista, observador.
- Org-level: diretor de redação (multi-workspace), admin (configuração e billing), auditor (read-only de audit trails).
Isolamento de dados
- Toda query no banco é escopada por workspace_id — não há fallback para 'todos os workspaces'.
- Tokens de API são tied a workspace ou Organization — nunca globais.
- Backups e exports são por workspace.
- Em caso de offboarding, o workspace pode ser exportado e excluído sem afetar outros do grupo.
Headers de workspace na API
Toda chamada à API do Typedit deve passar o header X-Workspace-Id (ou X-Org-Id para chamadas cross-workspace de admins). A ausência do header em chamadas que dependem de contexto retorna 400.