Aller à la documentation
API

Inviter un membre

Par e-mail, avec un rôle, et éventuellement avec des adresses et des domaines entiers qui prennent effet à l'acceptation.

POSTapi.openemail.uk/members

Exécute le véritable appel sur votre espace de travail, avec votre propre clé.

POST /members

Par e-mail, avec un rôle, et éventuellement avec des adresses et des domaines entiers qui prennent effet à l'acceptation.

Exemple

Nécessite members:write. Renvoie 202 avec l'invitation. Personne n'est dans l'espace de travail tant qu'il n'a pas accepté. access vaut member par défaut et s'applique à chaque id de addressIds et domainIds.

curl
curl -X POST "$OE/members" -H "$AUTH" -H "Content-Type: application/json" \  -d '{    "email": "[email protected]",    "roleId": "role_2b81de079c1f0a4b7e05d386",    "domainIds": ["93542ff8-2baa-4f2f-841d-5ceaa074ab0d"],    "access": "member"  }'
Réponse
{  "object": "invitation",  "id": "winv_6bb640f5b99e47deb758f1f5",  "email": "[email protected]",  "role": {    "id": "role_2b81de079c1f0a4b7e05d386",    "name": "Support",    "builtin": null  },  "addresses": [],  "domains": [    {      "domainId": "93542ff8-2baa-4f2f-841d-5ceaa074ab0d",      "domain": "acme.com",      "access": "member"    }  ],  "expiresAt": "2026-10-02T14:07:31.000Z",  "delivered": true,  "deliveryError": null,  "createdAt": "2026-09-18T14:07:31.000Z"}

TOUT LE MONDE EST INVITÉ. Que l'adresse possède déjà ou non un compte OpenEmail, la réponse est une invitation et un 202, jamais un membre. Personne n'est placé dans un espace de travail sans avoir accepté, et ce point de terminaison est tenu à la même règle que l'application. Quelqu'un qui est déjà dans l'espace de travail est refusé avec member_is_owner, un 422 : modifiez plutôt ce qu'il peut faire avec PATCH /members/{userId} et les appels d'octroi.

L'invitation porte le rôle, les adresses et les domaines entiers que vous nommez, et accorde exactement ceux-là dès qu'elle est acceptée. Rien n'est accordé avant. Un domaine entier couvre toutes ses adresses, y compris celles créées après l'envoi de l'invitation.

POST plutôt que PUT sur un identifiant utilisateur, parce que l'appelant ne connaît pas l'identifiant utilisateur et invite peut-être quelqu'un qui n'a pas encore de compte. Il connaît une adresse e-mail.

Demander deux fois en moins de dix minutes donne invitation_too_soon, un 409. Passé ce délai, l'unique invitation en cours est rafraîchie, un nouveau lien est émis et l'ancien mis hors service, plutôt que d'en envoyer une seconde.

delivered: false signifie que l'invitation existe mais que l'e-mail n'a pas quitté le serveur de messagerie. deliveryError indique ce qu'a répondu le serveur. Rien ne leur est parvenu : renvoyez-la donc depuis l'application une fois le délai d'attente écoulé.

invitedBy est délibérément laissé à null plutôt qu'attribué au propriétaire de l'espace de travail. La colonne enregistre quelle PERSONNE a invité quelqu'un, et une clé API n'est pas une personne.

Le propriétaire de l'espace de travail est refusé avec member_is_owner, un 422. Il n'est pas membre et ne peut pas le devenir.