RGPD & Protection des données
Privacy by Design
qr3.app est conçu dès le départ pour être conforme au RGPD :
- Pseudonymisation des IP — Les adresses IP sont immédiatement converties en pseudonymes HMAC-SHA-256 du jour UTC dans le Worker Edge. L’adresse IP d’origine n’est jamais stockée ; le pseudonyme reste une donnée personnelle.
- Minimisation des données — Seules les données nécessaires au fonctionnement sont collectées.
API Privacy
Résumé des données (Art. 15 RGPD)
GET /v1/account/privacy — Retourne un aperçu de toutes les données stockées.
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" } ] } }}Export des données (Art. 20 RGPD — Portabilité des données)
GET /v1/account/export — Télécharge toutes les données sous forme de fichier JSON.
curl https://qr3.app/v1/account/export \ -H "Authorization: Bearer qr3_sk_..." \ -o meine-daten.jsonL’export contient :
- Tous les QR Codes (y compris ceux supprimés)
- Des statistiques de scan agrégées (pas de hachages IP bruts)
- Les horodatages de création et de modification
Supprimer le compte (Art. 17 RGPD — Droit à l’oubli)
DELETE /v1/account — Suppression irréversible de toutes les données.
curl -X DELETE https://qr3.app/v1/account \ -H "Authorization: Bearer qr3_sk_..."Ce qui se passe :
- Tous les QR Codes sont soft-deleted (archivés)
- Tous les enregistrements de scan sont définitivement supprimés (PII)
- Toutes les clés API sont révoquées
- Le cache KV est invalidé
Gérer les consentements
GET /v1/account/privacy/consents — Récupérer les consentements actuels.
POST /v1/account/privacy/consents — Mettre à jour les consentements.
# 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 }'Champs de consentement :
| Champ | Par défaut | Description |
|---|---|---|
marketing_emails | false | Newsletter et e-mails promotionnels |
analytics | true | Statistiques d’utilisation agrégées |
product_updates | true | Nouveautés produits et changelogs |
Implémentation technique du RGPD
Pseudonymisation des IP (Art. 25 RGPD)
Requête HTTP → Cloudflare Edge Worker ↓En-tête CF-Connecting-IP → HMAC-SHA-256(IP_HASH_SALT, finalité, jour UTC, IP) ↓ip_hash (pseudonyme quotidien) → base de données D1 ↓L'adresse IP d'origine n'est jamais stockéeIP_HASH_SALT est un secret maître de longue durée ; la finalité et le jour UTC dérivent automatiquement des pseudonymes quotidiens distincts. Les pseudonymes de jours UTC différents ne sont pas directement identiques, mais le détenteur du secret peut recalculer un candidat d’adresse IP connu pour un jour donné. Aucun sel quotidien KV ni rotation manuelle quotidienne n’est utilisé.
Rétention des données (automatisée)
| Plan | Rétention |
|---|---|
| Tous les forfaits | 90 jours |
DPA sous-traitant
Cloudflare, Inc. traite les données en tant que sous-traitant. L’accord de traitement des données (DPA) est disponible sur cloudflare.com/cloudflare-customer-dpa.
Cloudflare traite les données sur des serveurs situés dans l’UE (Francfort). Les clauses contractuelles types (CCT) conformément à l’Art. 46 RGPD sont en vigueur.
Contact
- Délégué à la protection des données : [email protected]
- Accord de traitement des données (DPA) : [email protected] (sur demande)
- Politique de confidentialité : qr3.app/de/legal/datenschutz