Requête exemple
Réponse exemple
Cette route ajoute un viewer à une data room du workspace actif, puis lui envoie une invitation par email contenant un lien magique d'accès. Le comportement est idempotent sur le couple data room + email : si un viewer existe déjà pour cet email, il est ressuscité (statut remis à invited) avec un nouveau jeton, plutôt que dupliqué. Dans ce cas la réponse renvoie un 200 ; pour une création réelle elle renvoie un 201. Le jeton d'accès brut n'est jamais retourné dans la réponse : seul le viewer le reçoit via l'email d'invitation.
Authentification
L'appel s'authentifie via la session Coffrify (cookies Supabase) : aucun scope de clé API spécifique n'est requis. En revanche, l'appelant doit avoir un rôle de gestion dans le workspace : seuls les rôles owner, admin et member sont autorisés. Tout autre rôle reçoit un 403 Insufficient permissions. La data room doit appartenir au workspace actif.
Corps de la requête
| Champ | Type | Requis | Description |
|---|---|---|---|
| string | Oui | Email du viewer à inviter. Normalisé en minuscules et validé ; un email invalide renvoie un 400. | |
| name | string | Non | Nom du viewer. Tronqué à 200 caractères. Peut être omis ou null. |
| company | string | Non | Société du viewer. Tronquée à 200 caractères. Peut être omise ou null. |
| role | string | Non | Libellé de rôle du viewer (ex. "Lead investor"). Tronqué à 80 caractères. Peut être omis ou null. |
L'ajout d'un nouveau viewer est soumis au quota par data room selon le plan du workspace (max_viewers_per_dataroom). Si le quota est atteint, la requête renvoie un 402 avec un corps quota_exceeded. La ré-invitation d'un viewer existant ne consomme pas de quota supplémentaire.
Réponse
En cas de succès, la réponse contient l'id du viewer, son email normalisé, ses name, company et role, un status toujours égal à "invited", et invitation_sent (booléen) indiquant si l'email d'invitation a bien été déclenché. L'envoi de l'email est best-effort : invitation_sent peut être false sans que la création du viewer échoue. Le statut HTTP est 201 pour une création et 200 pour une ré-invitation. La date d'expiration effective du lien est le minimum entre l'expiration de la data room et celle du jeton.
Erreurs
| Code | Quand | Résolution |
|---|---|---|
| 400 Invalid JSON | Le corps n'est pas un JSON valide. | Envoyez un corps JSON bien formé avec l'en-tête Content-Type adéquat. |
| 400 Valid email required | Le champ email est absent ou invalide. | Fournissez un email valide. |
| 401 Unauthorized | Aucune session valide. | Authentifiez-vous avant l'appel. |
| 403 Insufficient permissions | Le rôle de l'appelant n'est pas owner, admin ou member. | Demandez un rôle de gestion sur le workspace. |
| 402 quota_exceeded | Le quota de viewers par data room du plan est atteint (nouveau viewer uniquement). | Passez à un plan supérieur (voir upgrade_url) ou révoquez un viewer existant. |
| 404 No active workspace | Aucun workspace actif résolu pour l'utilisateur. | Sélectionnez un workspace actif. |
| 404 Not found | La data room n'existe pas ou n'appartient pas au workspace actif. | Vérifiez l'id de la data room. |
| 500 | Échec d'insertion du viewer en base. | Réessayez ultérieurement ; contactez le support si l'erreur persiste. |
Voir aussi
GET/v1/workspace/datarooms/{id}/viewersLister tous les viewers d'une data room avec leur statut.POST/v1/workspace/datarooms/{id}/viewers/{viewerId}/resendRégénérer et renvoyer le lien magique d'un viewer sans réécrire ses informations.