📝
Sécurité & conformité·Intermédiaire·8 min

Exporter les logs d'audit pour conformité RGPD

Générez un export complet de votre journal d'audit (CSV ou JSON) via l'API Coffrify, récupérez l'URL de téléchargement sécurisée, et déclenchez en parallèle l'export portabilité RGPD (Art. 20).

Télécharger en PDF

L'endpoint POST /v1/audit/export génère un export de votre journal d'audit, limité à 50 000 entrées, dans le format CSV ou JSON de votre choix. Le fichier est automatiquement stocké sur Scaleway Object Storage (région fr-par) et vous recevez une URL de téléchargement présignée valable 24 heures, après quoi le fichier est purgé. Pour les obligations de portabilité des données personnelles (RGPD Art. 20), l'endpoint POST /v1/gdpr/export produit un paquet complet incluant profil, transferts, fichiers (métadonnées), webhooks et clés API : il crée également une entrée de suivi DSAR dans votre espace d'administration.

POST/v1/audit/exportGénère un export du journal d'audit workspace (CSV ou JSON). Opération coûteuse : limitée par la classe de taux `expensive`. Retourne une URL de téléchargement présignée valable 24 h sur Scaleway (fr-par).POST/v1/gdpr/exportDéclenche un export de portabilité RGPD (Art. 20) pour le propriétaire du workspace : profil, transferts, fichiers (métadonnées uniquement), logs d'audit (5 000 entrées), webhooks, clés API, branding et préférences de notification. Crée une entrée DSAR automatique dans la console d'administration. Opération coûteuse : délai d'attente 60 s.

Authentification

Les deux endpoints nécessitent une clé API transmise dans l'en-tête Authorization: Bearer <clé>. Pour POST /v1/audit/export, la clé doit porter le scope audit:export. Pour POST /v1/gdpr/export, le scope requis est gdpr:export. Les deux scopes sont de classe expensive : ils consomment plus de quota de taux. Utilisez une clé préfixée cof_live_… en production et cof_test_… en environnement de test.

Corps de la requête, /v1/audit/export

L'export du journal d'audit déclare le format (CSV ou JSON) et la plage de dates. Le tableau ci-dessous liste les champs acceptés.

ChampTypeRequisDescription
formatstringNonFormat du fichier exporté : csv ou json (défaut : json).
sincestring (ISO 8601)NonDate de début de la plage temporelle, ex. 2025-01-01T00:00:00Z. Si omis, aucune borne inférieure n'est appliquée.
untilstring (ISO 8601)NonDate de fin de la plage temporelle, ex. 2026-01-01T00:00:00Z. Si omis, aucune borne supérieure n'est appliquée.

Corps de la requête, /v1/gdpr/export

Aucun corps de requête n'est attendu pour POST /v1/gdpr/export. L'export est entièrement déterminé par le workspace associé à la clé API. Envoyez simplement une requête POST avec un corps vide ou {}.

Exemples d'appel

Les exemples ci-dessous déclenchent un export d'audit, puis un export de portabilité RGPD. Choisissez votre langage.

# Export audit (JSON, plage janvier 2025)
curl -s -X POST https://api.coffrify.com/v1/audit/export \
-H "Authorization: Bearer cof_live_VOTRE_CLE" \
-H "Content-Type: application/json" \
-d '{"format":"json","since":"2025-01-01T00:00:00Z","until":"2026-01-01T00:00:00Z"}'
 
# Export RGPD portabilite (Art. 20)
curl -s -X POST https://api.coffrify.com/v1/gdpr/export \
-H "Authorization: Bearer cof_live_VOTRE_CLE" \
-H "Content-Type: application/json" \
-d '{}'

Réponse, /v1/audit/export

La réponse renvoie une URL de téléchargement temporaire, le format et le nombre de lignes (row_count). Récupérez le fichier sans tarder : l'URL expire après 24 heures.

{
"object": "audit_export",
"format": "csv",
"row_count": 3842,
"filename": "coffrify-audit-ws_01HZXYZ-2025-12-31.csv",
"download_url": "https://coffrify-transfer.s3.fr-par.scw.cloud/_exports/ws_01HZXYZ/audit/1735689600000-coffrify-audit-ws_01HZXYZ-2025-12-31.csv?X-Amz-Algorithm=AWS4-HMAC-SHA256&...",
"expires_at": "2026-01-02T00:00:00.000Z",
"range": {
"since": "2025-01-01T00:00:00Z",
"until": "2026-01-01T00:00:00Z"
},
"note": "Le fichier est conservé 24 h puis automatiquement purgé. Téléchargez-le rapidement."
}

Réponse, /v1/gdpr/export

L'export RGPD renvoie l'archive de portabilité du workspace (profil, transferts, métadonnées de fichiers). C'est la réponse à fournir lors d'une demande Art. 20.

{
"object": "gdpr_export",
"exported_at": "2026-06-06T10:00:00.000Z",
"workspace": {
"id": "ws_01HZXYZ",
"owner_id": "usr_01HZABC",
"name": "Mon Entreprise",
"plan": "pro",
"created_at": "2024-03-15T08:00:00.000Z"
},
"profile": {
"id": "usr_01HZABC",
"email": "contact@example.com",
"full_name": "Marie Dupont",
"language": "fr"
},
"transfers": [
{
"id": "tr_01HZABC",
"short_code": "abcd1234",
"transfer_title": "Contrat Q1",
"status": "active",
"expires_at": "2026-07-01T00:00:00.000Z",
"max_downloads": 5,
"total_downloads": 2,
"scan_status": "clean",
"encryption_mode": "aes256gcm",
"created_at": "2026-01-10T09:30:00.000Z"
}
],
"files": [
{
"id": "fi_01HZDEF",
"transfer_id": "tr_01HZABC",
"file_name": "contrat.pdf",
"file_size": 204800,
"file_type": "application/pdf",
"created_at": "2026-01-10T09:30:00.000Z"
}
],
"audit_log": [
{
"id": "al_01HZGHI",
"created_at": "2026-06-05T14:22:00.000Z",
"action": "transfer.created",
"actor_id": "usr_01HZABC",
"resource_type": "transfer",
"resource_id": "tr_01HZABC"
}
],
"webhooks": [],
"api_keys": [
{
"id": "ak_01HZJKL",
"name": "Intégration ERP",
"key_prefix": "cof_live_",
"key_type": "live",
"scopes": ["transfers:read", "audit:read"],
"environment": "live",
"is_active": true,
"created_at": "2025-09-01T00:00:00.000Z",
"revoked_at": null
}
],
"branding": null,
"notifications": null
}

Erreurs

Les erreurs portent sur un scope manquant, un volume trop important ou un appel trop fréquent (expensive). Le tableau ci-dessous indique la résolution.

Code HTTPCode erreurQuandRésolution
401unauthorizedClé API absente ou invalide.Vérifiez que l'en-tête Authorization: Bearer cof_live_… est correctement transmis.
403forbiddenLa clé API ne possède pas le scope audit:export (ou gdpr:export).Régénérez la clé avec le scope requis dans les paramètres de votre workspace.
429rate_limitedQuota de la classe expensive dépassé.Attendez la fenêtre de renouvellement indiquée dans l'en-tête Retry-After.
500internal_errorErreur interne lors de la requête à la base de données.Réessayez quelques secondes plus tard. Si l'erreur persiste, contactez le support.
502internal_errorL'upload vers Scaleway Object Storage a échoué (HTTP 502).Réessayez. Il peut s'agir d'une indisponibilité transitoire de Scaleway fr-par.
503internal_errorLes credentials Scaleway ne sont pas configurés côté serveur.Contactez le support Coffrify : ce problème est côté infrastructure.

Voir aussi

  • Consulter le journal d'audit en temps réel
  • Droits RGPD : accès et suppression
  • Gérer vos clés API et leurs scopes
  • Configurer un Webhook pour les événements de sécurité
  • Référence complète de l'API Coffrify
Continuer

Autres tutoriels à suivre