DocsSurveillanceJournal d'audit

Journal d'audit

Interrogez le journal d'audit immuable de votre espace de travail avec GET /v1/audit (filtres, pagination par curseur) et générez des exports de conformité avec POST /v1/audit/export.

Surveillance3 min de lectureMis à jour le 10 juin 2026
Télécharger en PDF

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.

GET/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ètreTypeDescription
actionstringFiltre sur un type d'action exact, par exemple transfer.created ou member.role_changed.
actor_idstringRestreint aux actions d'un acteur précis (identifiant de membre).
resource_typestringFiltre par type de ressource, par exemple transfer, member, domain.
sincestring (ISO 8601)Borne basse : ne renvoie que les entrées créées à partir de cette date.
untilstring (ISO 8601)Borne haute : ne renvoie que les entrées créées jusqu'à cette date.
limitentierTaille de page, jusqu'à 500 (100 par défaut sur ce point de terminaison).
cursorstringJeton de pagination renvoyé par l'appel précédent (next_cursor).
import { Coffrify } from '@coffrify/sdk';
 
const coffrify = new Coffrify({ apiKey: process.env.COFFRIFY_API_KEY });
 
const { entries } = await coffrify.audit.list({
action: 'transfer.downloaded',
since: '2026-06-01T00:00:00Z',
limit: 50,
});
 
for (const e of entries) {
console.log(e.created_at, e.action, e.actor_label, e.status);
}

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).

ChampTypeDescription
idstringIdentifiant unique de l'entrée.
actor_typestringOrigine de l'action : user, api_key, api_token, system ou webhook.
actor_idstring | nullIdentifiant de l'acteur, lorsqu'il est connu.
actor_labelstring | nullLibellé lisible de l'acteur (nom, e-mail ou nom de clé).
actionstringType d'action, par exemple member.invited, transfer.created.
resource_typestring | nullType de ressource concernée (transfer, member, domain…).
resource_idstring | nullIdentifiant de la ressource concernée.
statusstringIssue de l'action : success, failure ou denied.
ip_addressstring | nullAdresse IP d'origine de la requête.
country_codestring | nullCode pays déduit de l'adresse IP.
metadataobjetDétails additionnels propres à l'action.
created_atstring (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.

{
"object": "list",
"data": [
{
"id": "aud_3kP9x2",
"actor_type": "user",
"actor_id": "mem_4Qa7",
"actor_label": "camille@exemple.fr",
"action": "transfer.downloaded",
"resource_type": "transfer",
"resource_id": "trf_8Hd2",
"status": "success",
"ip_address": "185.12.34.56",
"country_code": "FR",
"metadata": { "filename": "contrat.pdf" },
"created_at": "2026-06-09T14:21:08Z"
}
],
"has_more": true,
"next_cursor": "eyJ0cyI6Ij...",
"limit": 50
}

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'.

// Parcourt toutes les pages, des 7 derniers jours, et alerte sur les refus.
for await (const e of coffrify.audit.iterate({ since: '7d' })) {
if (e.status === 'denied') {
console.warn('Accès refusé:', e.action, 'par', e.actor_label);
}
}

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.

const export_ = await coffrify.audit.export({
format: 'csv',
since: '2026-01-01T00:00:00Z',
until: '2026-06-30T23:59:59Z',
});
 
console.log(export_.row_count, 'entrées');
console.log('Télécharger avant', export_.expires_at);
console.log(export_.download_url);
{
"object": "audit_export",
"format": "csv",
"row_count": 12840,
"filename": "coffrify-audit-ws_7Hq2-2026-06-10.csv",
"download_url": "https://coffrify-transfer.s3.fr-par.scw.cloud/_exports/...",
"expires_at": "2026-06-11T09:02:44Z",
"range": { "since": "2026-01-01T00:00:00Z", "until": "2026-06-30T23:59:59Z" }
}
Cette page vous a-t-elle aidé ?
Anonyme, dédupliqué 24h par signature locale.