🏦
Data Rooms & Collections·Intermédiaire·8 min

Créer une Data Room M&A avec membres et permissions

Créez une Data Room sécurisée, invitez vos contreparties avec des rôles précis et gérez leur accès via un lien magique, le tout en quelques appels API.

Télécharger en PDF

Une Data Room M&A sur Coffrify est un espace partagé persistant attaché à votre workspace. Elle centralise les transferts de fichiers (coffrify_transfers.room_id), les échanges internes et la liste des membres invités. Chaque membre reçoit un lien magique (https://files.coffrify.com/room/{slug}?t=…) qui lui ouvre l'accès sans création de compte. L'expiration, la protection par mot de passe, le filigrane et le téléchargement sont configurables à la création ou par PATCH ultérieur.

POST/v1/roomsCrée une nouvelle Data Room dans le workspace authentifié.POST/v1/rooms/{id}/membersInvite un membre (email + rôle) et retourne son lien magique d'accès.
DELETE/v1/rooms/{id}/members?id={memberId}Révoque l'accès d'un membre (pose un revoked_at, non-destructif).

Authentification

Toutes les opérations d'écriture (création, invitation, révocation, mise à jour, suppression) requièrent le scope rooms:manage. La lecture seule (liste des rooms, détail, liste des membres) requiert le scope rooms:read. Passez votre clé dans l'en-tête Authorization: Bearer cof_live_… (ou cof_test_… en environnement de test, cof_sandbox_… pour les démonstrations).

Corps de la requête

POST /v1/rooms : création de la Data Room.

ChampTypeRequisDescription
namestringOuiNom de la Data Room (affiché aux invités).
descriptionstringNonDescription libre, visible dans l'interface.
expires_in_daysintegerNonDurée de vie en jours (1-365, défaut : 30).
passwordstringNonMot de passe optionnel. Hashé en SHA-256 côté serveur avant stockage.
watermark_enabledbooleanNonActive le filigrane sur les fichiers visualisés (défaut : true).
allow_downloadbooleanNonAutorise le téléchargement des fichiers (défaut : true).

POST /v1/rooms/{id}/members : invitation d'un membre.

ChampTypeRequisDescription
emailstringOuiAdresse e-mail du membre invité (normalisée en minuscules).
rolestringNonRôle attribué : viewer (défaut) ou editor. Transmis dans l'e-mail d'invitation.

Exemple complet : créer une room, inviter deux membres

# 1. Créer la Data Room
curl -X POST https://api.coffrify.com/v1/rooms \
-H "Authorization: Bearer cof_live_votreclé" \
-H "Content-Type: application/json" \
-d '{
"name": "Acquisition Altaïr SAS - Due Diligence 2026",
"description": "Dossier confidentiel, Équipe Juridique & Finance",
"expires_in_days": 90,
"watermark_enabled": true,
"allow_download": false
}'
 
# Résultat : récupérez room.id (ex: room_xxxxxxxx)
ROOM_ID="room_xxxxxxxx"
 
# 2. Inviter le conseil juridique (viewer)
curl -X POST https://api.coffrify.com/v1/rooms/${ROOM_ID}/members \
-H "Authorization: Bearer cof_live_votreclé" \
-H "Content-Type: application/json" \
-d '{"email": "avocat@cabinet-legis.fr", "role": "viewer"}'
 
# 3. Inviter le directeur financier (editor)
curl -X POST https://api.coffrify.com/v1/rooms/${ROOM_ID}/members \
-H "Authorization: Bearer cof_live_votreclé" \
-H "Content-Type: application/json" \
-d '{"email": "daf@acquéreur.com", "role": "editor"}'

Réponses

POST /v1/rooms retourne HTTP 201 avec l'objet room créé :

{
"id": "c3f8a1b2-4d5e-4f6a-9b0c-1d2e3f4a5b6c",
"slug": "a1b2c3d4",
"name": "Acquisition Altaïr SAS - Due Diligence 2026",
"description": "Dossier confidentiel, Équipe Juridique & Finance",
"expires_at": "2026-09-04T12:00:00.000Z",
"is_password_protected": false,
"allow_download": false,
"watermark_enabled": true,
"created_at": "2026-06-06T12:00:00.000Z",
"share_url": "https://files.coffrify.com/room/a1b2c3d4"
}

POST /v1/rooms/{id}/members retourne HTTP 201 avec l'identifiant du membre et son lien magique :

{
"id": "d4e5f6a7-8b9c-4d0e-a1b2-c3d4e5f6a7b8",
"email": "avocat@cabinet-legis.fr",
"role": "viewer",
"magic_link": "https://files.coffrify.com/room/a1b2c3d4?t=opaque_token_xyz"
}

GET /v1/rooms/{id} retourne le détail enrichi avec les compteurs agrégés :

{
"id": "c3f8a1b2-4d5e-4f6a-9b0c-1d2e3f4a5b6c",
"slug": "a1b2c3d4",
"name": "Acquisition Altaïr SAS - Due Diligence 2026",
"description": "Dossier confidentiel, Équipe Juridique & Finance",
"expires_at": "2026-09-04T12:00:00.000Z",
"is_password_protected": false,
"allow_download": false,
"watermark_enabled": true,
"status": "active",
"created_at": "2026-06-06T12:00:00.000Z",
"members_count": 2,
"messages_count": 0,
"transfers_count": 0,
"share_url": "https://files.coffrify.com/room/a1b2c3d4"
}

DELETE /v1/rooms/{id}/members?id={memberId} retourne HTTP 200 :

{ "ok": true }

Erreurs

Code HTTPcodeQuandRésolution
400validation_errorname absent à la création de room, email invalide lors d'une invitation, id absent en query param lors d'une révocation, ou PATCH envoyé sans aucun champ modifiable.Vérifiez le corps de la requête et les paramètres obligatoires.
401missing_api_key / invalid_api_keyClé absente, mal formée ou appartenant à un autre environnement.Utilisez une clé cof_live_… en production ou cof_test_… en test.
403scope_missingLa clé ne possède pas le scope rooms:manage (ou rooms:read pour un GET).Régénérez la clé en ajoutant les scopes nécessaires dans la console.
404not_foundIdentifiant de room inexistant ou n'appartenant pas au workspace.Vérifiez l'id retourné lors de la création de la room.
429rate_limitedQuota par minute dépassé sur les endpoints d'écriture.Respectez l'en-tête Retry-After ou passez sur un plan supérieur.
500internal_errorErreur base de données inattendue.Réessayez avec un Idempotency-Key ; si l'erreur persiste, contactez le support.

Voir aussi

Continuer

Autres tutoriels à suivre