Requête exemple
Réponse exemple
POST/v1/workspace/membersInvite un membre par e-mail dans l'espace de travail actif.Crée une invitation dans l'espace de travail actif pour l'e-mail fourni. L'endpoint inscrit l'invitation dans la table d'audit, ajoute une ligne de membre en statut pending, génère un jeton d'acceptation valable 7 jours, puis envoie l'e-mail d'invitation (avec lien d'acceptation) de façon asynchrone (best-effort, sans bloquer la réponse). En environnement hors production, le champ accept_url est renvoyé dans la réponse pour faciliter les tests ; en production il est omis.
L'invitation de membres est une fonctionnalité réservée aux plans Ultra et supérieurs (ultra, entreprise/enterprise). Si l'e-mail correspond déjà à un membre actif, la requête échoue.
Authentification
Cet endpoint requiert une session authentifiée (cookie de session Supabase), aucun scope de clé API spécifique. L'appelant doit avoir le rôle owner ou admin dans l'espace de travail actif, sinon il reçoit 403 Insufficient permissions. De plus, les capacités sensibles (can_manage_billing, can_delete_workspace) ne peuvent être accordées que par le compte propriétaire de l'espace : un admin qui tente de les attribuer reçoit un 403.
Corps de la requête
| Champ | Type | Requis | Description |
|---|---|---|---|
| string | Oui | Adresse e-mail de l'invité. Normalisée (minuscules, sans espaces) et validée par regex. | |
| role | string | Non | Rôle attribué. Valeurs autorisées : admin, member, auditor, viewer. Défaut : member. |
| invite_note | string | Non | Note libre jointe à l'invitation (espaces de début/fin retirés). |
| can_manage_billing | boolean | Non | Accorde la gestion de la facturation. Sensible : owner uniquement. Ignoré sauf si true. |
| can_delete_workspace | boolean | Non | Accorde la suppression de l'espace. Sensible : owner uniquement. Ignoré sauf si true. |
| can_manage_members | boolean | Non | Accorde la gestion des membres. Pris en compte uniquement si true. |
| can_manage_settings | boolean | Non | Accorde la gestion des paramètres. Pris en compte uniquement si true. |
| can_manage_coffres | boolean | Non | Accorde la gestion des coffres. Pris en compte uniquement si true. |
| can_create_requests | boolean | Non | Accorde la création de demandes. Pris en compte uniquement si true. |
| can_view_analytics | boolean | Non | Accorde la consultation des statistiques. Pris en compte uniquement si true. |
| can_manage_api_keys | boolean | Non | Accorde la gestion des clés API. Pris en compte uniquement si true. |
Réponse
En cas de succès, l'endpoint renvoie 201 Created avec un objet member (la ligne d'adhésion en statut pending), un objet invitation (entrée d'audit avec expires_at), et accept_url uniquement hors production. Le member renvoyé a user_id: null et toutes les capacités à false dans la charge de réponse, quelles que soient les capacités effectivement accordées en base.
| Champ | Type | Description |
|---|---|---|
| member.id | string | Identifiant de la ligne d'adhésion créée. |
| member.email | string | E-mail invité. |
| member.role | string | Rôle attribué. |
| member.status | string | Toujours pending à la création. |
| member.joined_at | string (ISO 8601) | Date de création de la ligne. |
| member.invite_note | string | null | Note jointe à l'invitation. |
| invitation | object | null | Entrée d'audit : id, email, role, expires_at, created_at. |
| accept_url | string | undefined | Lien d'acceptation, renvoyé uniquement hors production. |
Erreurs
| Code | Quand | Résolution |
|---|---|---|
| 400 | JSON invalide, e-mail non valide, ou rôle hors liste (Invalid role: ...). | Corrigez le corps : JSON valide, e-mail au bon format, rôle parmi admin/member/auditor/viewer. |
| 401 | Aucune session authentifiée (Unauthorized). | Authentifiez-vous avant d'appeler l'endpoint. |
| 403 | Rôle insuffisant (Insufficient permissions), plan inférieur à Ultra, ou tentative d'accorder une capacité sensible sans être owner. | Utilisez un compte owner/admin, passez sur un plan Ultra ou supérieur, et laissez l'owner accorder les capacités sensibles. |
| 404 | Aucun espace de travail actif (No active workspace). | Sélectionnez un espace de travail avant l'appel. |
| 409 | L'e-mail est déjà un membre actif. | Vérifiez la liste des membres ; n'invitez pas un membre déjà actif. |
| 500 | Échec de l'insertion de la ligne de membre. | Réessayez ; si l'erreur persiste, contactez le support. |
Voir aussi
- GET /v1/workspace/members — lister les membres et invitations en attente.
GET /v1/workspace— vérifier le plan et le propriétaire de l'espace de travail.POST /v1/workspace/members/requests— flux de demande/approbation des capacités sensibles.