Saltearse al contenido

RGPD y Privacidad

Privacidad desde el diseño

qr3.app está diseñado desde cero para cumplir con el RGPD:

  • Seudonimización de IP — Las direcciones IP se convierten inmediatamente en seudónimos diarios UTC HMAC-SHA-256 en el Edge Worker. La IP original nunca se almacena; el seudónimo sigue siendo un dato personal.
  • Minimización de datos — Solo se recopilan los datos estrictamente necesarios para el funcionamiento.

API de Privacidad

Resumen de datos (Art. 15 del RGPD)

GET /v1/account/privacy — Devuelve un resumen de todos los datos almacenados.

Ventana de terminal
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" }
]
}
}
}

Exportación de datos (Art. 20 del RGPD — Portabilidad de datos)

GET /v1/account/export — Descarga todos los datos como un archivo JSON.

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

La exportación contiene:

  • Todos los códigos QR (incluidos los eliminados)
  • Estadísticas de escaneo agregadas (sin hashes de IP sin procesar)
  • Marcas de tiempo de creación y modificación

Eliminar cuenta (Art. 17 del RGPD — Derecho al olvido)

DELETE /v1/account — Eliminación irrevocable de todos los datos.

Ventana de terminal
curl -X DELETE https://qr3.app/v1/account \
-H "Authorization: Bearer qr3_sk_..."

Qué sucede:

  1. Todos los códigos QR se eliminan de forma lógica (se archivan)
  2. Todos los registros de escaneo se eliminan de forma permanente (PII)
  3. Todas las claves de API se revocan
  4. Se invalida la caché de KV

Gestionar consentimientos

GET /v1/account/privacy/consents — Obtener los consentimientos actuales.

POST /v1/account/privacy/consents — Actualizar los consentimientos.

Ventana de terminal
# 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 consentimiento:

CampoPredeterminadoDescripción
marketing_emailsfalseBoletines informativos y correos electrónicos promocionales
analyticstrueEstadísticas de uso agregadas
product_updatestrueNovedades de productos y registros de cambios

Implementación técnica del RGPD

Seudonimización de IP (Art. 25 del RGPD)

Solicitud HTTP → Cloudflare Edge Worker
Cabecera CF-Connecting-IP → HMAC-SHA-256(IP_HASH_SALT, finalidad, día UTC, IP)
ip_hash (seudónimo diario) → base de datos D1
La IP original nunca se almacena

IP_HASH_SALT es un secreto maestro de larga duración; la finalidad y el día UTC derivan automáticamente seudónimos diarios separados. Los seudónimos de distintos días UTC no son directamente iguales, pero quien posee el secreto puede recalcular un candidato de IP conocido para un día concreto. No se usa sal diaria en KV ni rotación manual diaria.

Retención de datos (automatizada)

PlanRetención
Todos los planes90 días

DPA de subencargados del tratamiento

Cloudflare, Inc. procesa los datos como encargado del tratamiento. El DPA está disponible en cloudflare.com/cloudflare-customer-dpa.

Cloudflare procesa los datos en servidores de la UE (Fráncfort). Las Cláusulas Contractuales Estándar (SCC) de conformidad con el Art. 46 del RGPD están vigentes.


Contacto