> ## Documentation Index
> Fetch the complete documentation index at: https://docs.switchbord.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Proteção de Dados e GDPR

> Como a Switchbord trata dados pessoais, implementa os direitos do titular dos dados do GDPR, pseudonimiza PII para IA e gerencia relacionamentos com subprocessadores.

## Quais PII a Switchbord Armazena

A Switchbord processa dados pessoais em nome de suas organizações tenant (controladoras de dados). As categorias de dados pessoais processados incluem:

| Categoria de Dado          | Exemplos                                                      | Local de Armazenamento               |
| -------------------------- | ------------------------------------------------------------- | ------------------------------------ |
| Identificadores de contato | Números de telefone (formato E.164), nomes                    | tabela `contacts`                    |
| Conteúdo de mensagens      | Corpos de mensagens do WhatsApp recebidas e enviadas          | tabela `messages`                    |
| Metadados de contato       | Campos personalizados, tags, notas adicionadas por operadores | tabelas `contacts`, `contact_fields` |
| Identificadores de usuário | Endereços de e-mail dos membros do workspace                  | Supabase Auth                        |
| Registros de auditoria     | IDs de ator, tipos de ação, referências a entidades           | tabela `audit_logs`                  |

<Warning>
  Os operadores da Switchbord são responsáveis por garantir que possuem base legal sob o GDPR Art.6 (e, quando aplicável, sob a LGPD) para o tratamento dos dados pessoais de seus contatos por meio da plataforma.
</Warning>

## Retenção de Dados

Cada workspace configura sua própria política de retenção de dados por meio da configuração `data_retention_days` (padrão: **730 dias / 2 anos**).

* Contatos e mensagens mais antigos que a janela de retenção ficam elegíveis para exclusão automatizada
* A janela de retenção se aplica por workspace e pode ser ajustada por owners e admins do workspace
* Campos de exclusão suave (`deleted_at`, `deletion_requested_at`) rastreiam o ciclo de vida da exclusão

```typescript theme={null}
// Configurações de workspace — configurável por tenant
const workspace = {
  data_retention_days: 730, // padrão, configurável por workspace
};
```

## Direitos do Titular dos Dados sob o GDPR

### Direito de Acesso e Portabilidade (Art. 15 / Art. 20)

Os contatos podem solicitar uma exportação completa de todos os dados pessoais mantidos sobre eles. Isso é implementado por meio de:

```
GET /api/contacts/{contactId}/gdpr
```

**Autorização:** Requer papel `admin` ou `owner` no workspace do contato.

**Resposta:** Um payload JSON contendo todos os campos de PII associados ao contato, incluindo:

* Registro de contato (telefone, nome, campos personalizados)
* Todo o histórico de mensagens vinculado ao contato
* Quaisquer entradas de log de auditoria que façam referência ao contato

Esse endpoint satisfaz a obrigação de fornecer os dados em um formato estruturado, de uso comum e legível por máquina (Art.20).

### Direito ao Esquecimento (Art. 17)

Os contatos podem solicitar a exclusão de seus dados pessoais. Isso é implementado por meio de:

```
DELETE /api/contacts/{contactId}/gdpr
```

**Autorização:** Requer papel `admin` ou `owner` no workspace do contato.

**O que acontece na exclusão:**

1. Os campos de PII no registro de `contacts` são sobrescritos com valores anonimizados de espaço reservado
2. Os corpos de mensagens vinculados ao contato são anonimizados no próprio local
3. O registro de contato recebe exclusão suave (`deleted_at` definido para o timestamp atual)
4. Uma entrada de log de auditoria é gravada registrando a exclusão, o ator e o timestamp

```typescript theme={null}
// Anonimização no próprio local — os dados são sobrescritos, não excluídos
await db.update(contacts)
  .set({
    phoneNumber: `ERASED-${contactId}`,
    name: null,
    email: null,
    deletedAt: new Date(),
  })
  .where(eq(contacts.id, contactId));

// Corpos de mensagens anonimizados
await db.update(messages)
  .set({ body: '[Content erased per GDPR Art.17 request]' })
  .where(eq(messages.contactId, contactId));

// Trilha de auditoria
await writeAuditLog({
  action: 'gdpr_erasure',
  entityType: 'contact',
  entityId: contactId,
  actorUserId: userId,
  workspaceId,
});
```

<Note>
  As entradas de log de auditoria para operações de exclusão são **retidas** após a exclusão para demonstrar conformidade com a própria solicitação de exclusão. O log de auditoria registra o fato da exclusão, não a PII excluída.
</Note>

## Pseudonimização de PII para IA

Quando dados de contato são passados a um modelo de IA para geração de rascunhos ou análise, a Switchbord pseudonimiza a PII antes que ela saia da plataforma.

### Como Funciona

O utilitário `pii-redactor.ts` (`packages/ai/src/pii-redactor.ts`) fornece duas funções:

```typescript theme={null}
// Substitui PII por tokens reversíveis antes de enviar à IA
const { redactedText, tokenMap } = redactPII(originalText, mode);

// Restaura os valores originais na resposta da IA
const restoredText = restorePII(aiResponse, tokenMap);
```

### Modos de Pseudonimização

| Modo                     | O que é Substituído                            | Formato do Token                                            |
| ------------------------ | ---------------------------------------------- | ----------------------------------------------------------- |
| **Conservador** (padrão) | Números de telefone, endereços de e-mail       | `[PHONE-1]`, `[EMAIL-1]`                                    |
| **Agressivo**            | Números de telefone, e-mails, nomes detectados | `[PHONE-1]`, `[EMAIL-1]`, `[NAME-1]`                        |
| **Desabilitado**         | Nada — PII bruta enviada à IA                  | Permitido somente com provider auto-hospedado (self-hosted) |

### Padrão com Privacidade em Primeiro Lugar

O modo padrão é a **pseudonimização conservadora — habilitada por padrão para todos os workspaces**. Desabilitar a pseudonimização só é permitido quando o workspace configurou um provider de IA auto-hospedado (Ollama ou vLLM), garantindo que a PII nunca saia da infraestrutura do operador.

```
Configurações → Providers de IA → Privacidade e Proteção de Dados
```

<Warning>
  Desabilitar a pseudonimização de PII ao usar um provider de IA em nuvem (OpenAI, Anthropic, OpenRouter) é bloqueado no nível da aplicação. A opção ficará indisponível até que um provider auto-hospedado seja configurado e testado.
</Warning>

### IA Auto-Hospedada: Mantendo a PII On-Premises

Para organizações que não podem permitir que a PII saia de sua infraestrutura (saúde, jurídico, serviços financeiros), a Switchbord oferece suporte a dois providers de IA auto-hospedados:

<CardGroup cols={2}>
  <Card title="Ollama" icon="server">
    Executa localmente na sua infraestrutura. Nenhum dado sai da sua rede. Adequado para servidores CPU/GPU e ambientes de desenvolvimento.
  </Card>

  <Card title="vLLM" icon="microchip">
    Implantação em cluster GPU de alta vazão com API compatível com OpenAI. Adequado para cargas de trabalho de produção que exigem inferência rápida.
  </Card>
</CardGroup>

Ambos os providers são configurados em **Configurações → Providers de IA** e incluem um teste de conexão para verificar a acessibilidade antes da ativação.

## Subprocessadores

A Switchbord depende dos seguintes subprocessadores para o tratamento de dados:

| Subprocessador     | Papel                                  | Dados Processados                          | Localização                   |
| ------------------ | -------------------------------------- | ------------------------------------------ | ----------------------------- |
| **Supabase**       | Banco de dados, Auth, Storage, Vault   | Todos os dados estruturados, segredos      | UE (região configurável)      |
| **Vercel**         | Hospedagem web e de API                | Requisição/resposta HTTP, logs             | CDN Global (primário nos EUA) |
| **Railway**        | Hospedagem de workers em background    | Payloads de jobs, logs                     | Região configurável           |
| **Meta Cloud API** | Entrega de mensagens do WhatsApp       | Números de telefone, conteúdo de mensagens | Infraestrutura da Meta        |
| **OpenAI**         | Geração de rascunhos por IA (opcional) | Texto pseudonimizado (se habilitado)       | EUA                           |
| **Anthropic**      | Geração de rascunhos por IA (opcional) | Texto pseudonimizado (se habilitado)       | EUA                           |
| **OpenRouter**     | Roteamento de IA (opcional)            | Texto pseudonimizado (se habilitado)       | EUA                           |
| **Sentry**         | Monitoramento de erros                 | Stack traces, metadados de requisição      | EUA/UE                        |
| **Better Stack**   | Agregação de logs                      | Logs de aplicação                          | Configurável                  |

<Note>
  Os providers de IA em nuvem (OpenAI, Anthropic, OpenRouter) só recebem texto pseudonimizado, salvo desabilitação explícita pelo admin do workspace com um provider auto-hospedado configurado. Providers auto-hospedados (Ollama, vLLM) nunca transmitem dados externamente.
</Note>

## Acordos de Tratamento de Dados

Organizações sujeitas ao GDPR (e/ou à LGPD) devem garantir que exista um Acordo de Tratamento de Dados (DPA) em vigor com a Switchbord e com cada subprocessador relevante. Principais considerações:

* A **Supabase** fornece um DPA padrão que cobre as obrigações do GDPR Art.28
* A **Vercel** fornece um DPA para clientes enterprise
* A **Meta** exige a aceitação de seus Termos de Plataforma, que incluem termos de tratamento de dados
* Os providers de IA em nuvem oferecem DPAs; revise suas políticas de retenção de dados e de treinamento de modelos antes do uso

Para implantações auto-hospedadas, o operador atua tanto como controlador de dados quanto como processador de dados, o que simplifica o cenário de DPAs.

## Mapeamento de Conformidade

| Padrão | Artigo/Controle                             | Implementação                                                                                             |
| ------ | ------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
| GDPR   | Art.5 — Princípios do tratamento            | Minimização de dados, limitação de finalidade aplicadas por design                                        |
| GDPR   | Art.6 — Base legal                          | Responsabilidade do operador; a plataforma oferece suporte a interesse legítimo e fluxos de consentimento |
| GDPR   | Art.15 — Direito de acesso                  | `GET /api/contacts/[id]/gdpr`                                                                             |
| GDPR   | Art.17 — Direito ao esquecimento            | `DELETE /api/contacts/[id]/gdpr` com anonimização no próprio local                                        |
| GDPR   | Art.20 — Direito à portabilidade            | Exportação JSON legível por máquina via endpoint do Art.15                                                |
| GDPR   | Art.25 — Privacidade desde a concepção      | Pseudonimização de PII habilitada por padrão; IA auto-hospedada para cargas de trabalho sensíveis         |
| GDPR   | Art.28 — Obrigações do processador          | Framework de DPA com subprocessadores                                                                     |
| GDPR   | Art.32 — Segurança do tratamento            | Criptografia, controles de acesso, registro de auditoria                                                  |
| NIS2   | Art.21 — Medidas de risco de cibersegurança | Controles de tratamento de PII, resposta a incidentes (planejado BORD-166)                                |

<Tip>
  Para o mapeamento completo de controles de conformidade, veja a [Matriz de Conformidade](/pt-BR/security/compliance-matrix).
</Tip>
