RGPD & Proteção de Dados
Privacidade por Design
O qr3.app foi desenvolvido de raiz em conformidade com o RGPD:
- Pseudonimização de IP — Os endereços IP são imediatamente convertidos em pseudónimos HMAC-SHA-256 do dia UTC no Edge Worker. O IP original nunca é armazenado; o pseudónimo continua a ser um dado pessoal.
- Minimização de dados — Apenas são recolhidos os dados estritamente necessários para o funcionamento.
Privacy-API
Resumo dos dados (Art. 15.º do RGPD)
GET /v1/account/privacy — Devolve uma visão geral de todos os dados guardados.
curl https://qr3.app/v1/account/privacy \ -H "Authorization: Bearer qr3_sk_..."Response:
{ "data": { "workspace_id": "ws_xxx", "stored_data": { "qr_codes": { "count": 42, "oldest_at": "2026-03-01T..." }, "scan_records": { "count": 15000, "oldest_at": "2026-03-01T..." }, "api_keys": { "count": 2 }, "webhooks": { "count": 1 } }, "your_rights": { "access": "GET /v1/account/export", "erasure": "DELETE /v1/account", }, "data_processing": { "legal_basis": "Contract performance (Art. 6(1)(b) GDPR)", "sub_processors": [ { "name": "Cloudflare, Inc.", "purpose": "CDN, edge computing, database" } ] } }}Exportação de dados (Art. 20.º do RGPD — Portabilidade dos dados)
GET /v1/account/export — Descarrega todos os dados como um ficheiro JSON.
curl https://qr3.app/v1/account/export \ -H "Authorization: Bearer qr3_sk_..." \ -o meine-daten.jsonA exportação contém:
- Todos os códigos QR (incluindo os eliminados)
- Estatísticas de leitura agregadas (sem hashes de IP originais)
- Carimbos de data/hora de criação e alteração
Eliminar conta (Art. 17.º do RGPD — Direito ao esquecimento)
DELETE /v1/account — Eliminação irreversível de todos os dados.
curl -X DELETE https://qr3.app/v1/account \ -H "Authorization: Bearer qr3_sk_..."O que acontece:
- Todos os códigos QR são eliminados de forma lógica (arquivados)
- Todos os registos de leitura são eliminados permanentemente (PII)
- Todas as chaves de API são revogadas
- O cache KV é invalidado
Gerir consentimentos
GET /v1/account/privacy/consents — Obter os consentimentos atuais.
POST /v1/account/privacy/consents — Atualizar os consentimentos.
# Aktuelle Einwilligungen abrufencurl https://qr3.app/v1/account/privacy/consents \ -H "Authorization: Bearer qr3_sk_..."
# Marketing-E-Mails deaktivierencurl -X POST https://qr3.app/v1/account/privacy/consents \ -H "Authorization: Bearer qr3_sk_..." \ -H "Content-Type: application/json" \ -d '{ "marketing_emails": false, "analytics": true, "product_updates": true }'Campos de consentimento:
| Campo | Predefinição | Descrição |
|---|---|---|
marketing_emails | false | Newsletter e e-mails promocionais |
analytics | true | Estatísticas de utilização agregadas |
product_updates | true | Novidades do produto e registos de alterações (changelogs) |
Implementação técnica do RGPD
Pseudonimização de IP (Art. 25.º do RGPD)
Pedido HTTP → Cloudflare Edge Worker ↓Cabeçalho CF-Connecting-IP → HMAC-SHA-256(IP_HASH_SALT, finalidade, dia UTC, IP) ↓ip_hash (pseudónimo diário) → base de dados D1 ↓O IP original nunca é armazenadoIP_HASH_SALT é um segredo mestre de longa duração; a finalidade e o dia UTC derivam automaticamente pseudónimos diários distintos. Os pseudónimos de dias UTC diferentes não são diretamente iguais, mas o detentor do segredo pode recalcular um candidato de IP conhecido para um dia específico. Não é usado sal diário em KV nem rotação manual diária.
Retenção de dados (automatizada)
| Plano | Retenção |
|---|---|
| Todos os planos | 90 dias |
DPA de Subprocessadores
A Cloudflare, Inc. processa dados como subcontratante. O DPA está disponível em cloudflare.com/cloudflare-customer-dpa.
A Cloudflare processa dados em servidores da UE (Frankfurt). As Cláusulas Contratuais-Tipo (SCCs) nos termos do Art. 46.º do RGPD estão em vigor.
Contacto
- Encarregado de Proteção de Dados: [email protected]
- Acordo de Processamento de Dados (DPA): [email protected] (sob consulta)
- Política de Privacidade: qr3.app/de/legal/datenschutz