Pular para o conteúdo

RGPD & Proteção de Dados

Privacidade por Design

O qr3.app foi desenvolvido de raiz em conformidade com o RGPD:

  • Anonimização de IP — Os endereços IP são imediatamente convertidos em hashes SHA-256 (com um salt rotativo diário) no Edge Worker. O IP original nunca chega à base de dados.
  • Políticas de retenção — Os dados de leitura são eliminados automaticamente de acordo com o prazo do plano (Free: 7 dias, Pro: 90 dias, Business: 1 ano).
  • 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.

Terminal window
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",
"contact": "[email protected]"
},
"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.

Terminal window
curl https://qr3.app/v1/account/export \
-H "Authorization: Bearer qr3_sk_..." \
-o meine-daten.json

A 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.

Terminal window
curl -X DELETE https://qr3.app/v1/account \
-H "Authorization: Bearer qr3_sk_..."

O que acontece:

  1. Todos os códigos QR são eliminados de forma lógica (arquivados)
  2. Todos os registos de leitura são eliminados permanentemente (PII)
  3. Todas as chaves de API são revogadas
  4. O cache KV é invalidado

Gerir consentimentos

GET /v1/account/privacy/consents — Obter os consentimentos atuais.

POST /v1/account/privacy/consents — Atualizar os consentimentos.

Terminal window
# Aktuelle Einwilligungen abrufen
curl https://qr3.app/v1/account/privacy/consents \
-H "Authorization: Bearer qr3_sk_..."
# Marketing-E-Mails deaktivieren
curl -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:

CampoPredefiniçãoDescrição
marketing_emailsfalseNewsletter e e-mails promocionais
analyticstrueEstatísticas de utilização agregadas
product_updatestrueNovidades do produto e registos de alterações (changelogs)

Implementação técnica do RGPD

Anonimização de IP (Art. 25.º do RGPD)

HTTP Request → Cloudflare Edge Worker
CF-Connecting-IP Header → SHA-256(IP + täglicher Salt)
ip_hash (nicht reversibel) → D1 Datenbank
Original-IP wird NIEMALS gespeichert

O salt roda diariamente à meia-noite UTC. Desta forma, mesmo que o salt seja conhecido, não é possível correlacionar IPs entre dias diferentes.

Retenção de dados (automatizada)

Uma tarefa cron executada diariamente (purgeOldScans) elimina os dados de leitura após o prazo dependente do plano:

PlanoRetenção
Free7 dias
Pro90 dias
Business / Agency1 ano
EnterprisePersonalizado (SLA)

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