Invitar a un miembro
Por correo electrónico, con un rol y, opcionalmente, con direcciones y dominios completos que se otorgan cuando la persona acepta.
Ejecuta la llamada real contra tu espacio de trabajo, con tu propia clave.
POST /members
Por correo electrónico, con un rol y, opcionalmente, con direcciones y dominios completos que se otorgan cuando la persona acepta.
Ejemplo
Requiere members:write. Devuelve 202 con la invitación. Nadie está en el espacio de trabajo hasta que la acepta. access es member de forma predeterminada y se aplica a todos los ids de addressIds y domainIds.
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" }'{ "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"}A TODO EL MUNDO SE LE INVITA. Tenga o no la dirección una cuenta de OpenEmail, la respuesta es una invitación y un 202, nunca un miembro. A nadie se le mete en un espacio de trabajo sin que acepte, y este endpoint se rige por la misma regla que la aplicación. A alguien que ya está en el espacio de trabajo se le rechaza con member_is_owner, un 422: cambia lo que puede hacer con PATCH /members/{userId} y las llamadas de concesión.
La invitación lleva el rol, las direcciones y los dominios completos que indiques, y concede exactamente eso en el momento en que se acepta. Antes de eso no se concede nada. Un dominio completo cubre todas sus direcciones, incluidas las creadas después de enviar la invitación.
POST en lugar de PUT sobre un id de usuario, porque quien llama no conoce el id de usuario y puede estar invitando a alguien que aún no tiene cuenta. Lo que conoce es una dirección de correo.
Pedirlo dos veces en diez minutos es invitation_too_soon, un 409. Pasado ese tiempo, se actualiza la única invitación pendiente, se genera un enlace nuevo y se retira el anterior, en lugar de enviar una segunda.
delivered: false significa que la invitación existe pero el correo no salió del servidor de correo. deliveryError indica lo que dijo el servidor. No les llegó nada, así que vuelve a enviarla desde la aplicación cuando haya pasado el periodo de espera.
invitedBy se deja en null deliberadamente en lugar de atribuirlo al propietario del espacio de trabajo. La columna registra qué PERSONA invitó a alguien, y una clave de API no es una persona.
Al propietario del espacio de trabajo se le rechaza con member_is_owner, un 422. No es un miembro y no se le puede convertir en uno.