Le journal d'audit consigne, de façon immuable et horodatée, chaque action significative de votre espace de travail : connexions, transferts créés ou téléchargés, invitations de membres, changements de rôle, exports, accès aux coffres, appels d'API. Vous l'interrogez avec GET /v1/audit et vous en générez une copie complète, prête pour la conformité, avec POST /v1/audit/export. Toutes les données restent hébergées en Union européenne. Cette page décrit comment lister les entrées, filtrer, paginer, comprendre la structure d'une entrée, puis exporter.
/v1/auditListe les entrées du journal d'audit de l'espace de travail, de la plus récente à la plus ancienne, avec filtres et pagination par curseur.Toutes les requêtes ciblent la base https://api.coffrify.com/v1 et s'authentifient avec l'en-tête Authorization: Bearer <clé>. Le journal est automatiquement restreint à l'espace de travail de la clé : vous ne voyez jamais les entrées d'un autre espace.
Les paramètres de requête suivants sont disponibles. Tous sont facultatifs : sans filtre, vous obtenez les entrées les plus récentes.
| Paramètre | Type | Description |
|---|---|---|
action | string | Filtre sur un type d'action exact, par exemple transfer.created ou member.role_changed. |
actor_id | string | Restreint aux actions d'un acteur précis (identifiant de membre). |
resource_type | string | Filtre par type de ressource, par exemple transfer, member, domain. |
since | string (ISO 8601) | Borne basse : ne renvoie que les entrées créées à partir de cette date. |
until | string (ISO 8601) | Borne haute : ne renvoie que les entrées créées jusqu'à cette date. |
limit | entier | Taille de page, jusqu'à 500 (100 par défaut sur ce point de terminaison). |
cursor | string | Jeton de pagination renvoyé par l'appel précédent (next_cursor). |
Structure d'une entrée
Chaque entrée décrit qui a fait quoi, sur quelle ressource, depuis où, avec quel résultat. Le champ metadata est un objet libre dont le contenu dépend de l'action (par exemple le nom d'un transfert, l'ancien et le nouveau rôle d'un membre).
| Champ | Type | Description |
|---|---|---|
id | string | Identifiant unique de l'entrée. |
actor_type | string | Origine de l'action : user, api_key, api_token, system ou webhook. |
actor_id | string | null | Identifiant de l'acteur, lorsqu'il est connu. |
actor_label | string | null | Libellé lisible de l'acteur (nom, e-mail ou nom de clé). |
action | string | Type d'action, par exemple member.invited, transfer.created. |
resource_type | string | null | Type de ressource concernée (transfer, member, domain…). |
resource_id | string | null | Identifiant de la ressource concernée. |
status | string | Issue de l'action : success, failure ou denied. |
ip_address | string | null | Adresse IP d'origine de la requête. |
country_code | string | null | Code pays déduit de l'adresse IP. |
metadata | objet | Détails additionnels propres à l'action. |
created_at | string (ISO 8601) | Horodatage de l'entrée. |
Pagination par curseur
La réponse est une liste paginée par curseur : object vaut "list", data contient les entrées, has_more indique s'il reste des pages et next_cursor fournit le jeton à passer en cursor pour la suite. La pagination par curseur reste stable même lorsque de nouvelles entrées sont écrites entre deux appels, contrairement à un simple décalage.
Pour parcourir l'intégralité du journal sans gérer le curseur à la main, le SDK fournit un itérateur asynchrone auto-paginé iterate. Il accepte aussi des durées relatives comme since: '7d'.
Cas d'usage : conformité et sécurité
Côté sécurité, filtrez sur les actions sensibles pour détecter les comportements anormaux : suivez member.role_changed et member.removed pour les changements de privilèges, surveillez les entrées dont le status vaut denied pour repérer les tentatives d'accès non autorisées, ou isolez un acteur suspect avec actor_id. Pour la traçabilité d'un dossier, filtrez par resource_type afin de reconstituer l'historique complet d'un transfert ou d'un coffre.
Côté conformité, le journal sert de preuve : combiné à l'export, il documente qui a accédé à quelles données et quand, ce qui répond aux exigences de redevabilité du RGPD et aux contrôles d'audit. Vous pouvez recevoir certains de ces évènements en temps réel via les webhooks (par exemple audit.exported).
Exporter le journal
POST/v1/audit/exportGénère un export complet du journal d'audit (CSV ou JSON) et renvoie une URL de téléchargement valable 24 heures.L'export produit un fichier de qualité conformité, hébergé en France, et renvoie une URL de téléchargement temporaire. Le corps de la requête accepte format (json par défaut, ou csv), ainsi que les bornes facultatives since et until. C'est une opération lourde : réservez-la aux exports périodiques plutôt qu'aux appels à haute fréquence.