メンバーを招待する
メールアドレスを指定し、ロールを添え、任意でアドレスやドメイン全体を指定します。これらは相手が承諾した時点で付与されます。
実際の呼び出しを、ご自身のキーで自分のワークスペースに対して実行します。
POST /members
メールアドレスを指定し、ロールを添え、任意でアドレスやドメイン全体を指定します。これらは相手が承諾した時点で付与されます。
例
members:write が必要です。202 と招待を返します。相手が承諾するまで、誰もワークスペースには入りません。access の既定値は member で、addressIds と domainIds のすべての id に適用されます。
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"}全員が招待されます。そのアドレスにすでに OpenEmail アカウントがあるかどうかにかかわらず、返ってくるのは招待と 202 であり、メンバーではありません。承諾なしにワークスペースへ入れられる人は誰もおらず、このエンドポイントもアプリと同じ規則に従います。すでにワークスペースにいる相手は member_is_owner、422 で拒否されます。その人にできることを変えるには、代わりに PATCH /members/{userId} と各種の付与呼び出しを使ってください。
招待は、指定したロール、アドレス、ドメイン全体を保持し、承諾された瞬間にそれらをそのまま付与します。それ以前には何も付与されません。ドメイン全体は、招待の送信後に作成されたものも含め、そのドメイン上のすべてのアドレスを対象とします。
ユーザー id に対する PUT ではなく POST なのは、呼び出し側がユーザー id を知らず、まだアカウントを持っていない相手を招待する可能性があるからです。呼び出し側が知っているのはメールアドレスです。
10 分以内に二度求めると invitation_too_soon、409 になります。それを過ぎると、二通目を送るのではなく、未承諾の招待を 1 件だけ更新し、新しいリンクを発行して古いものを失効させます。
delivered: false は、招待は存在するがメールがメールサーバーから出ていかなかったことを意味します。deliveryError にサーバーの応答が入ります。相手には何も届いていないので、クールダウンが明けたらアプリから再送してください。
invitedBy は、ワークスペースのオーナーに帰属させるのではなく、意図的に null のままにしてあります。この列は、どの人物が誰かを招待したのかを記録するものであり、API キーは人物ではありません。
ワークスペースのオーナーは member_is_owner、422 で拒否されます。オーナーはメンバーではなく、メンバーにすることもできません。