Todos os artigos
FT-DSR-EXPORT-V1· 1.0.0Segurança & 2FA

DSR export — direito à portabilidade (LGPD/GDPR)

Super admins podem baixar um ZIP com todos os dados de uma empresa (tenant) — 1 JSON por tabela, formato estruturado, com manifest legal. Audit log registra cada export.

Atualizado em 8/6/2026
Quando uma empresa cliente exerce o direito à portabilidade (LGPD Art. 18 V / GDPR Art. 20), o Lefia entrega todos os dados que mantemos sobre ela em formato inter-operável e legível por máquina. Hoje isso virou 1 click — ferramenta interna que substitui o trabalho manual de exportar tabela por tabela.

Como usar



Endpoint super_admin only:

POST /api/admin/tenant-dsr-export
Content-Type: application/json
{ "tenantId": "uuid-da-empresa" }


Resposta: Content-Type: application/zip com download direto. Filename: tenant-{slug}-dsr-{YYYY-MM-DD}.zip.

O que está dentro do ZIP



  • manifest.json — schema_version, tenant_id, tenant_name, generated_at, legal_basis (LGPD Art. 18 V / GDPR Art. 20), lista de tabelas com counts e redactions, notas legais
  • 1 arquivo <tabela>.json por tabela tenant-scoped:
- tenants.json (1 row — info da empresa)
- user_tenants.json (memberships)
- environments.json - integrations.json - connections.json (com encrypted_credentials redactado)
- message_types.json, mappings.json - messages.json, message_logs.json - audit_events.json, audit_log.json - integration_executions.json - document_flows.json, tickets.json - partner_invitations.json, webhook_subscriptions.json - transport_log.json, diagnoses.json - ai_settings.json, tenant_alerts_fired.json

O que NÃO está



Tabelas internas/operacionais não fazem parte do export — não são "dado do cliente":
  • ai_usage_events / ai_usage_monthly_history (telemetria de bilhetagem)
  • app_errors (logs de erro do produto)
  • connection_test_logs (logs operacionais de teste)
  • activation_events (funil de produto)


Redaction de credenciais



encrypted_credentials (em connections) e webhook_secret (em integrations) NÃO podem ser exportados em texto limpo — vazaria credencial pra cliente que pediu o export. Aparecem como:

"encrypted_credentials": "[Redacted - DSR export]"


A coluna permanece pra preservar o schema. Se cliente solicitar credenciais especificamente, processo é manual e separado.

Audit trail



Cada export gera um audit_events com:
  • action: "tenant.dsr_exported"
  • actor_id (super_admin que baixou)
  • tenant_id (empresa exportada)
  • metadata: tabelas, counts, total_rows, zip_size_bytes, legal_basis


Visível em /admin/audit — DPO pode auditar histórico de exports.

Limites



  • Tabela com >100k rows é truncada (truncated: true no manifest). Pra dataset completo de tabela enorme, use $filter por data.
  • ZIP é gerado em memória — limite prático ~500MB por export. Maior que isso pede streaming separado (não implementado).
  • maxDuration: 300 (5min) na route. Tenants gigantes podem precisar aumento.

Histórico de versões

  • 1.0.0

    DSR export automatizado: super_admin baixa ZIP com 1 JSON por tabela tenant-scoped + manifest legal. Credenciais redactadas. Audit tenant.dsr_exported registra cada export pra DPO trail.

    5/7/2026 · new