RGPD desde el diseño, y cada compromiso probado

Una dirección es un dato personal. Esta página enumera exactamente qué registra, almacena y nunca conserva Addrova. Cada afirmación tiene un identificador y está vinculada a una prueba automática que se ejecuta con cada modificación del código.

Ver la documentación técnica

Los compromisos de cero registros

En estas tablas, «dirección» designa cualquier dato introducido por el cliente: texto libre, componentes, coordenadas solicitadas, archivos por lotes. La fuente de referencia es la especificación de cero registros de la API, en francés; esta página la traduce sin alterar su sentido.

Versión de la especificación del 2026-10-19

Qué se registra (lista exhaustiva)

IdAfirmaciónPrueba automática
ZL-01Una línea por solicitud HTTP, con exactamente: método, plantilla de ruta (/v1/geocode, nunca la URL real ni la cadena de consulta), estado, duración, inquilino seudonimizado, identificador de solicitud aleatorio. Sin dirección IP, sin user-agent, sin clave de API.api/tests/test_zerolog.py::test_access_log_exact_fields
ZL-02Los únicos demás mensajes que emite el código de Addrova son los del inventario siguiente; sus parámetros son identificadores de trabajo, contadores, estados o nombres de tipos de excepción.api/tests/test_privacy_claims.py::test_log_inventory_matches_code
ZL-03El inquilino se seudonimiza en todas partes (registros, trazas): 16 caracteres hexadecimales de un SHA-256 con sal de su identificador; el identificador en claro nunca aparece.api/tests/test_observability.py::test_tenant_hash_is_stable_and_opaqueapi/tests/test_zerolog.py::test_access_log_exact_fields

Qué nunca se registra ni se traza

IdAfirmaciónPrueba automática
ZL-10Ninguna dirección, ninguna coordenada solicitada ni ninguna clave de API aparece en los registros, en todas las rutas (geocodificación, inversa, autocompletado, reparación, lotes, compatibilidad con Google y Nominatim), incluso en caso de error (motor caído, entrada rechazada, parámetro no válido, clave errónea, ruta desconocida).api/tests/test_zerolog.py::test_canary_never_logged
ZL-11Los mensajes de las bibliotecas de terceros se neutralizan: parámetros ocultos, cadena de consulta borrada, excepción reducida a su tipo (sin mensaje ni traza).api/tests/test_zerolog.py::test_third_party_logger_args_and_query_redacted
ZL-12Las respuestas de error no devuelven el valor erróneo ni el mensaje interno del motor.api/tests/test_api.py::test_geocode_invalid_paramsapi/tests/test_api.py::test_engine_errors_do_not_echo_query
ZL-13Las trazas de OpenTelemetry solo llevan atributos de una lista permitida (método, plantilla de ruta, estado, inquilino seudonimizado, operación del motor, país, número de resultados, precisión del primer resultado), sin eventos; ni dirección, ni coordenada, ni clave, ni identificador de inquilino en claro.api/tests/test_observability.py::test_spans_carry_only_allowlisted_attributesapi/tests/test_observability.py::test_span_content
ZL-15Consola: la dirección de correo electrónico, los tokens de enlace mágico y los tokens de sesión no aparecen en ningún registro.api/tests/test_console.py::test_email_and_tokens_never_logged
ZL-16Demostración pública del sitio (/demo/v1): ni la dirección introducida ni la dirección IP del visitante aparecen en los registros; la IP nunca se almacena, solo una huella HMAC con secreto diario (inutilizable tras la rotación) sirve para contar las solicitudes.api/tests/test_demo.py::test_demo_never_logs_address_or_ipapi/tests/test_demo.py::test_fingerprint_rotates_daily_and_hides_ipapi/tests/test_demo.py::test_redis_mode_shares_secret_and_counters
ZL-14Las métricas de Prometheus solo tienen etiquetas con valores acotados; una ruta desconocida se cuenta como <unmatched>.api/tests/test_observability.py::test_metrics_labels_are_boundedapi/tests/test_observability.py::test_spans_carry_only_allowlisted_attributes

Qué se almacena, y durante cuánto tiempo

IdAfirmaciónPrueba automática
ZL-20Las claves de API se almacenan únicamente como huella SHA-256 (más 12 caracteres de prefijo para mostrarlas).api/tests/test_tenancy_persistent.py::test_keys_are_hashed_and_revocable
ZL-21La base de datos no contiene ninguna solicitud ni ningún resultado: solo inquilinos, claves (huellas) y contadores de uso (inquilino, día, punto de acceso, cantidad).api/tests/test_privacy_claims.py::test_schema_has_no_content_columns
ZL-22Lotes: el archivo de entrada se elimina en cuanto termina el tratamiento; el resultado y los metadatos del trabajo se eliminan al final de la retención (1 hora tras terminar por defecto, configurable) o de inmediato con DELETE; un trabajo que nunca se trató se purga a las 24 horas.api/tests/test_batch.py::test_csv_roundtrip_usage_and_input_purgeapi/tests/test_batch.py::test_isolation_delete_and_expiryapi/tests/test_batch.py::test_result_purged_after_retention
ZL-23Los metadatos de un trabajo por lotes no contienen ninguna fila del archivo (contadores, fechas, nombres de columnas, país por defecto).api/tests/test_privacy_claims.py::test_batch_metadata_has_no_row_content
ZL-25Consola: el único dato personal almacenado es la dirección de correo electrónico de la cuenta (y la de un enlace de acceso en curso, válido 15 minutos, de un solo uso); los tokens de enlace y de sesión se almacenan únicamente como huella SHA-256.api/tests/test_privacy_claims.py::test_schema_has_no_content_columnsapi/tests/test_console.py::test_link_is_single_use_and_logout
ZL-26Una organización no ve ni las claves ni el uso de otra; una clave revocada o caducada (rotación) es rechazada.api/tests/test_console.py::test_org_isolationapi/tests/test_console.py::test_keys_lifecycle_and_plan_limit
ZL-27Webhook de fin de lote: la carga útil solo contiene el identificador, el estado, los contadores y los enlaces del trabajo, nunca una fila del archivo ni una dirección; la URL y el secreto del webhook nunca se registran.api/tests/test_batch_stream.py::test_webhook_delivery_signed_without_addresses_and_retried
ZL-28Idempotencia (Idempotency-Key): solo se conserva durante 24 horas una huella SHA-256 de la solicitud (y, para un lote, el identificador del trabajo), nunca la dirección enviada ni la respuesta.api/tests/test_idempotency_versioning.py::test_idempotency_never_stores_addressapi/tests/test_idempotency_versioning.py::test_in_progress_conflict_and_stores_keep_no_content
ZL-29Ninguna salida de red no declarada: denegación por defecto en el namespace; el sitio web no tiene salidas; la API solo llega al DNS del clúster, a sus bases de datos (PostgreSQL, Redis), al recolector OTel interno y, para los webhooks, a HTTPS hacia Internet público (rangos privados, locales y de metadatos excluidos). Ninguna herramienta de análisis de terceros puede recibir una petición.api/tests/test_k8s_hardening.py::test_egress_is_limited_to_declared_flowsapi/tests/test_k8s_hardening.py::test_namespace_is_restricted_and_denies_by_default
ZL-24El trabajo por lotes de un cliente es invisible para los demás clientes.api/tests/test_batch.py::test_isolation_delete_and_expiry

Qué no existe (todavía)

IdAfirmaciónPrueba automática
ZL-30El respaldo asíncrono de /v1/repair (LLM) está desactivado: ninguna llamada externa, ninguna dirección sale del servicio.api/tests/test_repair.py::test_repair_unrepairable_and_async_disabled
ZL-32En v0 no se envía realmente ningún correo (bandeja de salida en memoria) y no hay conectado ningún proveedor de facturación real (proveedor ficticio).api/tests/test_privacy_claims.py::test_no_external_transport_by_default
ZL-31No hay caché de resultados en v0 (la caché HMAC con secreto rotatorio de la ADR 0005 aún no está implementada).api/tests/test_privacy_claims.py::test_no_result_cache_in_v0

Inventario de mensajes de registro

Estos son los únicos mensajes que emite el código, en su formato exacto. Una prueba falla si el código y esta lista divergen.

%s %s %d %.1fms tenant=%s rid=%s
job %s queued rows=%d
job %s %s rows=%d matched=%d
job %s failed: %s
engine loaded: %s
addrova_engine not installed, using the fake engine
usage flush failed: %s
index preloaded: %d bytes
webhook job %s attempt %d status %s
engine contract violation: candidate without source
engine failure: %s

Fuera del alcance de estas pruebas

Estos puntos se verifican de otra manera, y lo decimos:

  • Ingress / proxy: su registro de accesos debe estar desactivado en las rutas de la API (ADR 0004); configuración de infraestructura, por verificar en infra/ y en el clúster.
  • Motor (addrova_engine): se compromete a no registrar las solicitudes (ADR 0002); sus propias pruebas lo verifican.
  • Exportación de trazas: solo si ADDROVA_OTLP_ENDPOINT está definido, hacia un colector alojado en la UE; sin este ajuste, ninguna traza sale del proceso.
  • Almacenamiento de los archivos por lotes: v0 en el disco local del contenedor (permisos 0600); almacenamiento de objetos cifrado en la UE previsto para producción (ADR 0006, ADR 0009).

Como no se conserva nada, nada se reutiliza

Addrova no utiliza sus solicitudes para entrenar modelos, constituir conjuntos de datos ni enriquecer su índice, y el código lo concreta: las consultas y los resultados nunca se registran (ZL-10), la base de datos no contiene ninguna solicitud ni resultado (ZL-21), los archivos por lotes se eliminan tras el tratamiento (ZL-22), no hay caché de resultados (ZL-31) y ninguna dirección se envía a un servicio externo (ZL-30).

Todavía no declarado

  • Alojamiento exclusivamente en la UE: el proveedor de alojamiento y la región aún no se han publicado. [À VÉRIFIER]
  • Subencargados y contrato de encargo del tratamiento (DPA): se publicarán, con firma en línea, antes del lanzamiento. [À VÉRIFIER]
  • Certificaciones: ninguna declarada. ISO 27001 está prevista en una etapa posterior.

Fuentes de datos y licencias

Nos apoyamos en datos abiertos oficiales con licencias abiertas (para Francia, Licence Ouverte 2.0). Cada respuesta de la API incluye una lista de atribución con sus fuentes. Los datos con licencia de compartir igual, como OpenStreetMap, permanecen en un índice separado y nunca se fusionan con el índice oficial.

Preguntas sobre la conformidad

¿Puedo verificar estos compromisos?

Cada compromiso nombra la prueba automática que lo verifica. Las pruebas se ejecutan con cada modificación; una de ellas falla si desaparece una prueba citada o si el inventario de registros ya no coincide con el código. El acceso al conjunto de pruebas para una auditoría está por definir. [À VÉRIFIER]

¿Registran mi dirección IP?

La aplicación no: su registro de accesos no contiene dirección IP, ni user-agent, ni clave de API (ZL-01). El ingress situado delante también debe tener desactivado su registro de accesos; es un ajuste de infraestructura, indicado arriba como fuera del alcance de las pruebas.

¿Cuánto tiempo se conservan los resultados de un lote?

Una hora después de terminar por defecto, o hasta que elimine el trabajo (ZL-22). El archivo de entrada se elimina en cuanto termina el tratamiento.