---
title: Organizações
description: Crie uma equipe, convide membros e defina funções.
sidebar:
  order: 1
---

O Siglata organiza arquivos e permissões de acesso por organização. Todos os ativos de um projeto — incluindo arquivos, reservas de upload, cotas de armazenamento, listas de membros, convites e concessões do Model Context Protocol (MCP) — são particionados pelo identificador da organização. Um usuário pode pertencer a múltiplas organizações e alternar entre elas. Cada organização mantém seus próprios dados e permissões.

## Arquitetura Multi-Inquilino [#multi-tenant-architecture]

No Siglata, uma **organização** é o limite fundamental de segurança e retenção de dados:

```
┌────────────────────────────────────────────────────────────────────────┐
│                           Conta Siglata                                │
│                         (alex@exemplo.com)                             │
└──────────────────────────────────┬─────────────────────────────────────┘
                                   │
         ┌─────────────────────────┴─────────────────────────┐
         ▼                                                   ▼
┌─────────────────────────────────┐         ┌─────────────────────────────────┐
│     Acme Corp (org_1a2b3c)      │         │     Dev Studio (org_9z8y7x)     │
├─────────────────────────────────┤         ├─────────────────────────────────┤
│ • Função: Proprietário (Owner)  │         │ • Função: Membro (Member)       │
│ • Cota: 10 GiB Dedicada         │         │ • Cota: 10 GiB Dedicada         │
│ • Arquivos Privados e Lixeira   │         │ • Arquivos Privados e Lixeira   │
│ • Membros e Convites Próprios   │         │ • Membros e Convites Próprios   │
│ • Concessões OAuth MCP Próprias │         │ • Concessões OAuth MCP Próprias │
└─────────────────────────────────┘         └─────────────────────────────────┘
```

- **Particionamento Estrito de Dados**: Todas as consultas ao banco de dados e caminhos de armazenamento de objetos incluem o `organizationId`. O vazamento de dados entre inquilinos é impedido tanto no esquema do banco quanto nas camadas de aplicação.
- **Cotas de Armazenamento Independentes**: Cada organização possui sua própria cota base de 10 GiB (`limitBytes`), que não é afetada pelo armazenamento de arquivos em outras organizações.
- **Integrações Delimitadas**: Clientes MCP conectados e concessões OAuth vinculam-se estritamente a uma organização por vez. O MCP de produto também exige entitlement de piloto nessa organização antes de emitir tokens ou executar ferramentas.

## Controle de Acesso Baseado em Funções (RBAC) [#rbac]

O Siglata define três funções organizacionais com hierarquia rígida e fundamentadas no princípio do menor privilégio:

| Capacidade | `owner` | `admin` | `member` |
| :-- | :-: | :-: | :-: |
| **Visualizar, enviar, baixar e renomear arquivos** | ✓ | ✓ | ✓ |
| **Mover arquivos para lixeira e restaurar em 30 dias** | ✓ | ✓ | ✓ |
| **Consultar métricas de armazenamento da organização** | ✓ | ✓ | ✓ |
| **Conectar clientes MCP pessoais** | ✓ | ✓ | ✓ |
| **Convidar novos membros e atribuir funções** | ✓ | ✓ | — |
| **Cancelar convites pendentes** | ✓ | ✓ | — |
| **Atualizar funções de membros** | ✓ | ✓ | — |
| **Remover membros da organização** | ✓ | ✓ | — |
| **Atualizar nome e slug de URL da organização** | ✓ | ✓ | — |
| **Promover membros a Proprietário ou excluir organização** | ✓ | — | — |

Proprietários excluem uma organização com confirmação pelo nome no console, a operação CallScript `organization_delete` (entrada vazia; ligada ao grant) ou `POST /auth/organization/delete`. A exclusão limpa o plano de arquivos da organização antes de remover membros, convites e a linha da organização.

### Proteções e Invariantes de Função

- **Proteção ao Proprietário Exclusivo**: Uma organização deve sempre possuir pelo menos um proprietário ativo. Um proprietário exclusivo não pode ser rebaixado ou removido até que outro membro seja promovido a proprietário.
- **Delegação de Administradores**: Administradores podem convidar membros, atribuir funções de membro/administrador e remover colaboradores, mas não podem rebaixar ou remover proprietários existentes.
- **Validação de Políticas em Tempo Real**: As verificações de função (`requireRoleForScopes`) ocorrem dinamicamente a cada requisição de API e operação MCP. Mudanças de função surtem efeito imediato sem exigir que os usuários saiam da sessão.

## Ciclo de Vida de Convite de Membros [#invitation-lifecycle]

Convide colaboradores para o seu espaço de trabalho com segurança por meio de convites por e-mail localizados:

```
1. Admin envia convite ──> E-mail de convite localizado (pt-BR / en-US) ──> Token salvo
        │
        ▼
2. Destinatário abre link ──> Login com link mágico sem senha ──> Aceita convite
        │
        ▼
3. Registro de membro criado ──> Organização surge no seletor ──> Acesso ativo
```

### 1. Enviar um Convite

Administradores e proprietários podem convidar novos membros da equipe pela operação CallScript `invitation_create` dentro de um script MCP `execute` ou pelo endpoint `POST /auth/organization/invite-member`:

- Informe o **endereço de e-mail** do destinatário.
- Escolha a **função** a ser atribuída (`owner`, `admin` ou `member`).
- Escolha a **preferência de idioma** (`pt-BR` ou `en-US`) pelo cabeçalho `x-siglata-locale` para garantir que os e-mails transacionais sejam entregues no idioma nativo do destinatário.

### 2. Gerenciar Convites Pendentes

- Convites pendentes são retornados pela operação CallScript `invitations_list` ou por `GET /auth/organization/list-invitations`.
- Reenvie um convite pendente com `invitation_resend` (mesmo e-mail e função do create).
- Liste convites endereçados a você em outras organizações com `invitations_mine`.
- Os convites permanecem válidos por 7 dias.
- Um administrador pode cancelar um convite pendente a qualquer momento antes da aceitação (`invitation_cancel`), o que invalida imediatamente o token correspondente.

### 3. Aceitação e Integração

- O destinatário clica no link seguro contido no e-mail, ou usa `invitation_accept` / `invitation_reject` vinculados à concessão quando o convite é da organização da concessão OAuth.
- Aceitar e rejeitar recusam convites de outras organizações (`INVITATION_ORG_MISMATCH`); entrar em outra organização exige aceite no console e uma nova concessão OAuth.
- Saia da organização vinculada à concessão com `organization_leave`; a próxima chamada MCP falha por falta de associação.
- Caso ainda não possua uma conta no Siglata, ele se autentica instantaneamente por meio de um link mágico sem senha — nenhuma criação de senha é exigida.
- Ao confirmar o convite, sua conta é vinculada como membro ativo e a organização passa a ser exibida no seletor de espaços de trabalho.

## Alternar Espaços de Trabalho [#switching-workspaces]

Usuários que pertencem a múltiplas organizações podem alternar de contexto:

- **Console Siglata**: Durante o login e a autorização MCP, a etapa de seleção da organização define o espaço de trabalho ativo.
- **Clientes de IA via MCP**: Cada concessão de conexão MCP vincula-se a uma organização específica. Confirme o vínculo com a operação CallScript `principal_get` dentro de um script `execute` (`organizationId`, função, escopos); chame `organization_get` quando precisar do nome ou do slug. Para conectar um agente de IA a múltiplas organizações, autorize conexões de servidor individuais para cada espaço de trabalho.

## Remoção de Membro e Revogação Imediata [#revocation]

Quando um colaborador deixa a equipe ou seu acesso é revogado:

1. Um administrador remove o usuário pela operação CallScript `member_remove` ou pelo endpoint `POST /auth/organization/remove-member`.
2. O registro de `member` do usuário no banco de dados é excluído atomicamente.
3. Qualquer token MCP ativo detido por esse usuário para a organização é rejeitado na próxima chamada com:
   ```json
   {
     "code": "ORGANIZATION_MEMBERSHIP_REQUIRED",
     "message": "Current organization membership is required"
   }
   ```
4. Downloads binários autenticados e requisições à API são bloqueados de imediato, garantindo que não haja retenção indevida de dados. [Conecte um cliente MCP](/docs/agents/mcp) ou [gerencie arquivos](/docs/workspace/files).
