Přejít na dokumentaci
API

Udělení a odebrání adresy

Druhá osa: ke kterým adresám se jeden člověk smí dostat a na jaké úrovni.

POSTapi.openemail.uk/members/{userId}/addresses

Spustí kterékoli z 2 volání na této stránce proti vašemu pracovnímu prostoru, s vaším vlastním klíčem.

POST /members/{userId}/addresses

Druhá osa: ke kterým adresám se jeden člověk smí dostat a na jaké úrovni.

Přístup není role

access je starší slovník pro jednotlivé adresy a se jmény oprávnění se záměrně nepřekrývá: member adresu čte a odesílá za ni, viewer ji jen čte. Neříká nic o tom, zda ten člověk vůbec smí odesílat – to je jeho role – a než k odeslání dojde, musí ho povolit obojí.

Jejich roleJejich přístup k billing@Mohou odesílat jako billing@
má `emails:send`memberAno.
má `emails:send`viewerNe, přístup to odmítne.
nemá `emails:send`memberNe, role to odmítne.
má `emails:send`žádný přístupNe, adresa se vůbec nedostane do seznamu, proti kterému se odeslání kontroluje.

Udělení role nedá nikomu žádné adresy. Člen s rolí a bez přístupů otevře PRÁZDNOU schránku, a ne schránku všech – a to je to správné selhání, dokud se teprve rozhodujete, co má vidět.

Udělení adresy

Vyžaduje members:write. POST /members/{userId}/addresses s { addressId, access }; access má výchozí hodnotu member. Vrací celého člena v podobě, v jaké teď je.

curl
curl -X POST "$OE/members/nQ8vBz1aRd4tYwKx7fQ2mN8vBz1aRd4t/addresses" -H "$AUTH" \    -H "Content-Type: application/json" \    -d '{ "addressId": "c40a95f2-1cc6-4d31-82a8-9e075d31c2a8", "access": "viewer" }'
Odpověď
{    "object": "member",    "userId": "nQ8vBz1aRd4tYwKx7fQ2mN8vBz1aRd4t",    "email": "[email protected]",    "name": "Sam Okonjo",    "image": null,    "role": {      "id": "role_2b81de079c1f0a4b7e05d386",      "name": "Support",      "builtin": null    },    "implied": false,    "permissions": ["emails:send", "emails:read", "threads:read", "threads:write"],    "addresses": [      {        "addressId": "2b81de07-9c1f-4a4b-8e05-d3862c1f0a44",        "address": "[email protected]",        "access": "member"      },      {        "addressId": "c40a95f2-1cc6-4d31-82a8-9e075d31c2a8",        "address": "[email protected]",        "access": "viewer"      }    ],    "createdAt": "2026-08-12T14:20:00.000Z"  }

POST na podkolekci místo PUT na dvojici, protože tak jako tak jde o upsert a id řádku volající nikdy neuvádí. Opakovaný POST s jiným access je způsob, jak se z viewera stane member: na dvojici (adresa, osoba) je jeden řádek, takže druhé volání mění úroveň, místo aby přidávalo druhý přístup. To z tohohle zároveň dělá ten vzácný POST, který je bezpečné opakovat.

Hlídáno přes members:write, a ne přes vlastnictví adresy – v tom se to liší od starší cesty pro udělování na routeru domén. Vlastnictví je správná pojistka pro toho, kdo doménu přidal, a špatná pro admina, který nevlastní nic a spravuje přístupy workspace za vlastníka. Obojí zapisuje tentýž řádek.

Vrací se celý člen, ne jen samotný přístup, takže řádek na obrazovce lze překreslit bez druhého požadavku a odpověď vypadá stejně, ať byl přístup nový, nebo jen upravený.

Adresa, která nepatří tomuto workspace, je member_not_found, 422, nesoucí param: "addressId". Klíč může rozdávat jen adresy patřící workspace, pro který byl vydán.

Udělení VLASTNÍKOVI workspace je member_is_owner, 422. Má už každou adresu, takže volání nemá co přidat.

Odebrání adresy

Vyžaduje members:write. DELETE /members/{userId}/addresses/{addressId}. Vrací člena bez té adresy.

curl
curl -X DELETE \    "$OE/members/nQ8vBz1aRd4tYwKx7fQ2mN8vBz1aRd4t/addresses/c40a95f2-1cc6-4d31-82a8-9e075d31c2a8" \    -H "$AUTH"
Odpověď
{    "object": "member",    "userId": "nQ8vBz1aRd4tYwKx7fQ2mN8vBz1aRd4t",    "email": "[email protected]",    "name": "Sam Okonjo",    "image": null,    "role": {      "id": "role_2b81de079c1f0a4b7e05d386",      "name": "Support",      "builtin": null    },    "implied": false,    "permissions": ["emails:send", "emails:read", "threads:read", "threads:write"],    "addresses": [      {        "addressId": "2b81de07-9c1f-4a4b-8e05-d3862c1f0a44",        "address": "[email protected]",        "access": "member"      }    ],    "createdAt": "2026-08-12T14:20:00.000Z"  }

Úzké odebrání, a to, po kterém sáhnout, když někdo mění tým: ponechá si roli i ostatní adresy a přestane vidět tuhle.

Adresa, která nepatří tomuto workspace, je odmítnuta, místo aby byla tiše ignorována. Překlep v id by jinak ohlásil úspěšné odebrání, které se nikdy nestalo – a právě tomuhle selhání má tenhle endpoint bránit.

Vrací se člen, ne náhrobek, protože zajímavá odpověď je, kam všude ještě dosáhne. { deleted: true } by tu nechalo klienta, aby si to dopočítal odečtením.

Pokud chcete vzít zpátky všechno naráz, DELETE /members/{userId} odebere roli i všechny přístupy dohromady a nahlásí, kolik jich zmizelo.