🕐
Observabilité & erreurs·Intermédiaire·6 min

Récupérer la timeline complète d'activité d'un transfert

Interrogez l'endpoint /v1/transfers/{id}/timeline pour obtenir, en un seul appel, tous les événements chronologiques d'un transfert : création, téléchargements, magic links, webhooks et entrées d'audit.

Télécharger en PDF

L'endpoint GET /v1/transfers/{id}/timeline agrège, en un seul appel, tous les événements survenus sur un transfert depuis sa création : création initiale, résultats de scan, téléchargements (avec IP et pays), émissions et utilisations de magic links, livraisons de webhooks mentionnant le transfert, et entrées du journal d'audit workspace. Les événements sont triés par horodatage décroissant (le plus récent en premier) et accompagnés d'un objet summary qui donne les compteurs agrégés sans avoir à parcourir toute la liste.

GET/v1/transfers/{id}/timelineRetourne la timeline chronologique complète d'un transfert : création, téléchargements, magic links, livraisons webhook et entrées d'audit. Triés par timestamp décroissant.GET/v1/transfers/{id}/repliesListe les réponses sécurisées reçues sur un transfert (50 dernières, ordre décroissant). Nécessite une authentification session utilisateur.

Authentification

Cet endpoint utilise l'authentification par clé API Coffrify. Transmettez votre clé dans l'en-tête Authorization au format Bearer. Le scope requis est transfers:read. Les clés de test ont le préfixe cof_test_…, les clés de production cof_live_…. En sandbox, utilisez le préfixe cof_sandbox_….

ParamètreEmplacementTypeRequisDescription
idpathstring (UUID)ouiIdentifiant du transfert à auditer.
limitqueryintegernonNombre maximum d'événements retournés. Valeur par défaut : 200. Minimum : 1, maximum : 1000.

Appel de l'endpoint

L'exemple ci-dessous récupère la timeline complète d'un transfert via son id. Choisissez votre langage.

curl -X GET "https://api.coffrify.com/v1/transfers/trf_01jx4ab2cd3ef/timeline?limit=50" \
-H "Authorization: Bearer cof_live_…"

Réponse

L'objet retourné contient trois clés racine : transfer (état courant du transfert), summary (compteurs agrégés), et data (tableau des événements triés par at décroissant). Le champ object vaut toujours "list".

{
"transfer": {
"id": "trf_01jx4ab2cd3ef",
"short_code": "XK7M2P",
"title": "Bilan comptable Q1 2026",
"status": "active",
"scan_status": "clean",
"total_downloads": 3,
"expires_at": "2026-07-01T00:00:00.000Z",
"created_at": "2026-06-01T09:14:22.000Z"
},
"summary": {
"total_events": 7,
"downloads_count": 3,
"magic_links_total": 1,
"magic_links_active": 1,
"webhook_fires_related": 2,
"last_download_at": "2026-06-05T14:30:11.000Z"
},
"object": "list",
"data": [
{
"at": "2026-06-05T14:30:11.000Z",
"kind": "download",
"summary": "Downloaded from France (Chrome) - 4.21 MB",
"metadata": {
"ip": "82.64.xxx.xxx",
"country": "FR",
"os": "macOS",
"browser": "Chrome"
}
},
{
"at": "2026-06-04T10:02:45.000Z",
"kind": "webhook_delivery",
"summary": "Webhook fired: transfer.downloaded → 200 (success)",
"metadata": {
"delivery_id": "wdel_99az01",
"event_type": "transfer.downloaded",
"status": "success",
"status_code": 200
}
},
{
"at": "2026-06-03T08:11:00.000Z",
"kind": "magic_link_created",
"summary": "Magic link issued (ml_eyJhbGci…), expires 2026-06-17T08:11:00.000Z",
"metadata": {
"token_prefix": "ml_eyJhbGci…",
"expires_at": "2026-06-17T08:11:00.000Z"
}
},
{
"at": "2026-06-01T09:14:22.000Z",
"kind": "created",
"summary": "Transfer XK7M2P created (\"Bilan comptable Q1 2026\")",
"metadata": {
"status": "active",
"encryption_mode": "aes256gcm",
"is_password_protected": false,
"expires_at": "2026-07-01T00:00:00.000Z"
}
}
]
}

Types d'événements

La timeline mélange plusieurs natures d'événements (kind). Le tableau ci-dessous récapitule chaque type et son déclencheur, pour vous aider à filtrer data.

kindDéclencheur
createdCréation du transfert. Présent une seule fois, toujours en fin de liste (le plus ancien).
downloadChaque téléchargement enregistré dans coffrify_download_logs, avec IP, pays, navigateur et taille.
magic_link_createdÉmission d'un magic link pour ce transfert.
magic_link_usedUtilisation effective d'un magic link (champ used_at renseigné).
webhook_deliveryLivraison webhook dont le payload référence ce transfert (transfer_id ou short_code).
password_changeEntrée d'audit dont l'action contient password (ajout, modification ou suppression du mot de passe).
email_sentEntrée d'audit dont l'action contient email (envoi du transfert par email).
auditToute autre entrée d'audit liée à ce transfert (resource_id = id du transfert).

Erreurs

Les erreurs portent sur un transfert introuvable ou un scope manquant. Le tableau ci-dessous indique la résolution.

HTTPcodeQuandRésolution
401missing_api_keyAucun en-tête Authorization fourni.Ajoutez Authorization: Bearer cof_live_… à vos requêtes.
401invalid_api_keyClé API malformée ou introuvable.Vérifiez la clé dans votre console Coffrify.
401expired_api_keyLa clé API a dépassé sa date d'expiration.Regénérez une nouvelle clé dans les paramètres du workspace.
401revoked_api_keyLa clé API a été révoquée manuellement.Créez une nouvelle clé avec le scope transfers:read.
403scope_missingLa clé ne possède pas le scope transfers:read.Réémettez une clé incluant ce scope.
404not_foundLe transfert n'existe pas ou n'appartient pas à ce workspace.Vérifiez l'identifiant et le workspace associé à votre clé.
429rate_limitedQuota d'appels dépassé sur les endpoints expensive (ce handler est classé expensive).Consultez les en-têtes X-RateLimit-Reset et Retry-After, puis réessayez.
500internal_errorErreur interne lors de la lecture des tables de logs ou de l'exécution du RPC d'audit.Réessayez. Si le problème persiste, contactez le support en fournissant X-Request-Id.

Voir aussi

  • Récupérer un transfert
  • Lister les téléchargements d'un transfert
  • Journal d'audit workspace
  • Événements et webhooks
  • Magic links : création et révocation
Continuer

Autres tutoriels à suivre