Requête exemple
Réponse exemple
POST/v1/workspace/dataroomsCrée une data room, attache des documents et envoie les invitations viewers en lot.Crée une nouvelle data room M&A dans le workspace courant. En une seule requête, l'endpoint peut aussi attacher une liste de documents (documents) et inviter une liste de viewers (viewers) : pour chaque viewer valide, un token de consultation est généré et un email d'invitation est envoyé via le template dataroom-invitation. La reference de la data room est générée automatiquement (avec retry en cas de collision unique). Les opérations sur les documents et les viewers sont best-effort : un échec d'insertion ou d'envoi n'annule pas la création de la data room. Chaque action est journalisée dans coffrify_audit_log (dataroom.created, dataroom.viewer_invited).
Authentification
Requiert une session Supabase valide (cookies) et non une clé API à scope : clé API valide, aucun scope spécifique. L'appelant doit en outre être membre actif du workspace avec un rôle gestionnaire : owner, admin ou member. Les rôles viewer et auditor reçoivent une erreur 403. Le workspace ciblé est résolu via le cookie cf-workspace-id, ou à défaut le premier workspace actif de l'utilisateur.
Corps de la requête
| Champ | Type | Requis | Description |
|---|---|---|---|
| name | string | Oui | Nom de la data room. Tronqué à 200 caractères ; vide ou absent renvoie 400. |
| target_company | string | Non | Société cible de l'opération. Tronqué à 200 caractères. |
| description | string | Non | Description libre. Tronquée à 2000 caractères. |
| nda_required | boolean | Non | Exige un NDA avant accès. Vaut true par défaut (seule la valeur explicite false le désactive). |
| nda_template_text | string | Non | Texte du NDA présenté aux viewers. Tronqué à 50000 caractères. |
| expires_in_days | number | Non | Durée de validité en jours. Borné entre 7 et 730, défaut 90. Détermine expires_at. |
| status | string | Non | Statut initial : draft (défaut) ou active. Toute autre valeur retombe sur draft. Créer directement en active consomme le quota de data rooms actives. |
| viewers | array | Non | Liste de viewers à inviter. Chaque entrée : email (requis, dédupliqué et validé), name, company, role. Les emails invalides sont ignorés silencieusement. |
| documents | array | Non | Liste de documents à attacher. Chaque entrée : source_type (vault_file, transfer_file ou upload), source_id (requis), title (défaut = source_id), description, watermark_required (défaut true). |
Réponse
En cas de succès, renvoie un 201 avec l'id et la reference de la data room créée, son status effectif, le tableau invitations (un objet par viewer effectivement inséré : email, viewer_id, invitation_sent indiquant si l'email a bien été déclenché), et documents_added (nombre de documents retenus et insérés). Les viewers dont l'email est invalide ou dont l'insertion échoue n'apparaissent pas dans invitations.
Erreurs
| Code | Quand | Résolution |
|---|---|---|
| 401 Unauthorized | Aucune session Supabase valide. | Authentifiez la requête avec une session valide. |
| 404 No active workspace | Aucun workspace actif résolu pour l'utilisateur. | Vérifiez l'appartenance au workspace et le cookie cf-workspace-id. |
| 403 Insufficient permissions | Le rôle de l'appelant n'est pas gestionnaire (owner/admin/member). | Utilisez un compte ayant un rôle gestionnaire dans le workspace. |
| 400 Invalid JSON | Le corps de la requête n'est pas un JSON valide. | Envoyez un corps JSON bien formé avec l'en-tête Content-Type: application/json. |
| 400 name required (1-200 chars) | Le champ name est absent ou vide après troncature. | Fournissez un name non vide d'au plus 200 caractères. |
| 402 quota_exceeded | Création directe en status=active alors que le quota de data rooms actives du plan est atteint (corps : feature, plan, used, limit, upgrade_url). | Archivez/clôturez une data room active, créez en draft, ou mettez à niveau le plan via upgrade_url. |
| 500 Internal | Échec d'insertion en base (hors collision de référence) ou impossibilité d'allouer une référence unique après plusieurs essais. | Réessayez ; si l'erreur persiste, contactez le support. |
Voir aussi
- GET /v1/workspace/datarooms : lister les data rooms du workspace.
- POST /v1/workspace/datarooms/{id}/viewers : inviter des viewers supplémentaires après création.
- POST /v1/workspace/datarooms/{id}/documents : ajouter des documents à une data room existante.