Skip to content

APDP — Conformité Droit à l'Oubli

Conformité avec la loi APDP du Bénin (protection des données personnelles).


Principe

Un abonné peut demander la suppression de ses données personnelles. RGZ dispose de 90 jours pour s'y conformer. L'anonymisation est automatique via la tâche Celery rgz.apdp.purge_expired.

Flow APDP

Abonné → POST /api/v1/apdp/deletion-request

deletion_requested_at = NOW() (dans subscribers table)

[90 jours de délai légal]

Task Celery: rgz.apdp.purge_expired (daily 05:00 UTC)

UPDATE subscribers SET msisdn="ANONYMIZED_uuid", full_name="Anonyme"
DELETE FROM subscriber_devices WHERE subscriber_id = id

INSERT INTO immutable_logs (event_type="APDP_ANONYMIZATION", ...)

Champs Anonymisés vs Conservés

ChampActionRaison
msisdn✅ AnonymiséDonnée personnelle
full_name✅ AnonymiséDonnée personnelle
id_document_hash✅ AnonymiséDonnée personnelle
subscriber_devices✅ SuppriméMACs = données personnelles
subscriber_ref⚠️ ConservéRéférence comptable (ARCEP)
total_sessions⚠️ ConservéStats agrégées ARCEP
total_data_mb⚠️ ConservéStats agrégées ARCEP
created_at⚠️ ConservéObligation légale

Endpoints APDP

bash
# Demande de suppression
curl -X POST -H "Authorization: Bearer $JWT" \
  https://api-rgz.duckdns.org/api/v1/apdp/deletion-request \
  -d '{"subscriber_id": "uuid"}'

# Vérifier le statut
curl -H "Authorization: Bearer $JWT" \
  https://api-rgz.duckdns.org/api/v1/apdp/status/{subscriber_id}

# Alerte: demandes > 85 jours non traitées (buffer avant 90j)
docker exec rgz-db psql -U rgz_admin -c \
  "SELECT COUNT(*) FROM subscribers
   WHERE forget_requested_at < NOW() - INTERVAL '85 days'
   AND anonymized_at IS NULL;"

Consentement

python
# Consentement enregistré à l'inscription (Outil #11)
subscribers.consent_given_at = datetime.utcnow()

# API consentement
POST /api/v1/apdp/consent {"subscriber_id": "uuid", "consent": true}

Dernière mise à jour: 2026-02-21

PROJET MOSAÏQUE — 81 outils, 22 conteneurs, 500+ revendeurs WiFi Zone