⚖️
Sécurité & conformité·Avancé·8 min

Gérer les consentements et droits d'accès RGPD via l'API

Interrogez le journal de consentements de votre espace de travail, vérifiez l'état d'acceptation de vos documents juridiques et déposez une demande d'accès RGPD (Art. 15) directement via l'API Coffrify.

Télécharger en PDF

L'API Coffrify expose trois routes dédiées à la conformité RGPD au sein d'un espace de travail. `GET /v1/gdpr/consents` retourne le journal d'audit filtré sur les événements consent.*, ce qui vous permet de prouver qu'un consentement a bien été recueilli et à quelle date. `GET /v1/gdpr/acceptances` croise ce journal avec la liste des documents juridiques publiés (CGU, politique de confidentialité, etc.) pour indiquer si chaque document a été accepté dans sa version courante. Enfin, `POST /v1/gdpr/access` dépose une demande de droit d'accès (Art. 15) dans la console DSAR de Coffrify : une entrée de type access est créée dans coffrify_gdpr_requests et l'équipe dispose de 30 jours pour y répondre. Ces trois endpoints sont réservés aux clés Ultra disposant des scopes appropriés.

GET/v1/gdpr/consentsRetourne le journal d'audit filtré sur les actions consent.* pour l'espace de travail (endpoint coûteux, quota expensive).GET/v1/gdpr/acceptancesRetourne la liste des documents juridiques publiés avec, pour chacun, la version et la date d'acceptation enregistrées dans l'audit log.POST/v1/gdpr/accessDépose une demande de droit d'accès RGPD (Art. 15) dans la console DSAR. Renvoie 202 et une référence de suivi.

Authentification

Les trois endpoints nécessitent une clé API passée dans l'en-tête Authorization: Bearer <clé>. Utilisez une clé de production (cof_live_…) ou de sandbox (cof_sandbox_…) selon votre environnement. En test, cof_test_… est accepté. - GET /v1/gdpr/consents et GET /v1/gdpr/acceptances requièrent le scope gdpr:export. - POST /v1/gdpr/access requiert le scope gdpr:request. Ces scopes sont disponibles uniquement sur le plan Ultra. Toute requête avec une clé sans le scope adéquat reçoit 403 scope_missing.

Paramètres de requête (GET /v1/gdpr/consents)

La lecture du journal de consentements accepte des filtres et la pagination. Le tableau ci-dessous détaille les paramètres acceptés.

ParamètreTypeDéfautDescription
limitinteger100Nombre maximum d'entrées retournées. Valeur min : 1, max : 500.

Exemples d'appel

Les exemples ci-dessous lisent les consentements, vérifient les acceptations, puis déposent une demande de droit d'accès. Choisissez votre langage.

# Journal de consentements
curl -s https://api.coffrify.com/api/v1/gdpr/consents?limit=50 \
-H "Authorization: Bearer cof_live_xxxxxxxxxxxxxxxxxxxx"
 
# État des acceptations juridiques
curl -s https://api.coffrify.com/api/v1/gdpr/acceptances \
-H "Authorization: Bearer cof_live_xxxxxxxxxxxxxxxxxxxx"
 
# Déposer une demande de droit d'accès (Art. 15)
curl -s -X POST https://api.coffrify.com/api/v1/gdpr/access \
-H "Authorization: Bearer cof_live_xxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json"

Réponses

Voici les formes de réponse réelles retournées par chaque endpoint.

// GET /v1/gdpr/consents
{
"object": "list",
"data": [
{
"id": "aud_01HXYZ",
"action": "consent.granted",
"actor_id": "usr_abc",
"resource_type": "workspace",
"metadata": { "purpose": "marketing" },
"created_at": "2026-05-20T14:32:00.000Z"
}
],
"limit": 50
}
 
// GET /v1/gdpr/acceptances
{
"object": "list",
"data": [
{
"slug": "terms-of-service",
"title": "Conditions Générales d'Utilisation",
"current_version": "3.0",
"effective_date": "2026-04-01",
"accepted_version": "3.0",
"accepted_at": "2026-04-05T09:10:00.000Z",
"up_to_date": true
},
{
"slug": "privacy-policy",
"title": "Politique de Confidentialité",
"current_version": "2.1",
"effective_date": "2026-05-15",
"accepted_version": "2.0",
"accepted_at": "2026-03-01T11:00:00.000Z",
"up_to_date": false
}
],
"summary": {
"total_documents": 2,
"accepted_up_to_date": 1,
"acceptance_outdated": 1,
"never_accepted": 0
}
}
 
// POST /v1/gdpr/access → HTTP 202
{
"object": "gdpr_access_request",
"workspace_id": "ws_01HXYZ",
"workspace_name": "Acme Corp",
"requested_at": "2026-06-06T10:00:00.000Z",
"due_at": "2026-07-06T10:00:00.000Z",
"next_steps": [
"Your request has been recorded and assigned a reference",
"A copy of your personal data will be provided within 30 days",
"You can also retrieve a structured export immediately via /v1/gdpr/export",
"Questions : contact legal@coffrify.com"
],
"dpo_email": "legal@coffrify.com"
}

Erreurs

Les erreurs portent surtout sur le scope manquant ou un endpoint coûteux dépassant le quota (expensive). Le tableau ci-dessous indique la résolution.

Code HTTPCode erreurQuandRésolution
401missing_api_keyEn-tête Authorization absent.Ajoutez Authorization: Bearer cof_live_… à chaque requête.
401invalid_api_keyClé malformée ou inconnue.Vérifiez que la clé commence par cof_live_, cof_sandbox_ ou cof_test_.
401revoked_api_keyClé révoquée depuis la console.Régénérez une clé dans Coffrify > Paramètres > Clés API.
403scope_missingLa clé ne possède pas le scope gdpr:export ou gdpr:request.Régénérez ou mettez à jour la clé avec le scope manquant (plan Ultra requis).
404not_foundL'espace de travail ou son propriétaire est introuvable.Vérifiez que la clé appartient bien à un workspace actif.
429rate_limitedQuota de la classe expensive (consents/acceptances) ou write (access) dépassé.Consultez l'en-tête Retry-After et relancez la requête après ce délai.
500internal_errorErreur interne, l'RPC d'audit peut être indisponible.Réessayez ; pour /consents, l'API répond data: [] si l'RPC est absent.

Voir aussi

  • Export de données RGPD (Art. 20)
  • Demande de suppression RGPD (Art. 17)
  • Journal d'audit de l'espace de travail
  • Référence complète RGPD
  • Gestion des clés API et des scopes
Continuer

Autres tutoriels à suivre