Přejít na dokumentaci
API

Výpis členů

Všichni ve workspace, role, kterou každý má, a adresy, které každý dostal.

GETapi.openemail.uk/members

Spustí skutečné volání proti vašemu pracovnímu prostoru, s vaším vlastním klíčem.

GET /members

Všichni ve workspace, role, kterou každý má, a adresy, které každý dostal.

Člen jsou dva přístupy, ne jeden

shell
export OE=https://api.openemail.ukexport AUTH="Authorization: Bearer $OPENEMAIL_API_KEY"

role je to, co smějí DĚLAT: jeden řádek, jedna role, tentýž objekt, který popisuje /roles. addresses je to, NA ČEM to smějí dělat: jedna položka na adresu, každá s vlastním access. Klient je nesmí slučovat: role s emails:send a prázdným polem addresses je někdo, kdo smí odesílat z ničeho, a plné pole addresses pod rolí viewera je zase někdo, kdo smí odesílat z ničeho. Odesílací cesta kontroluje obojí a obrazovka ukazující jen jedno z toho sebejistě vysvětlí špatné odmítnutí.

Řádky adres říkají access tam, kde uložený sloupec říká role, a to přejmenování je pointa, ne úklid: tenhle objekt už pole role má a znamená něco úplně jiného, a dvě role o jednu úroveň zanoření od sebe, nesoucí hodnoty ze dvou různých slovníků, jsou chyba čekající na prvního člověka, který to přečte rychle. access je member, což adresu čte a odesílá za ni, nebo viewer, což ji jen čte.

implied: true znamená, že TUHLE ROLI NIKDO NEVYBRAL. Sdílení vzniklo dávno před rolemi, takže většina lidí s přístupem ke schránce má přístupy k adresám a vůbec žádný řádek člena; místo aby jim služba upírala jejich poštu, dokud neproběhne backfill, odvodí z nejširšího přístupu, který mají, vestavěnou roli a nahlásí ji s role.id rovným null. Zobrazte to jako „odvozeno z přístupu“, ne jako roli, kterou si někdo vybral. Dokud PATCH neudělá z odvození rozhodnutí, rozšíření jejich přístupu k adresám tiše rozšiřuje i to, co smějí dělat.

VLASTNÍK je PRVNÍ řádek, označený isOwner: true, s role.builtin rovným owner. Je to účet, na který je workspace navázán, drží z definice všechna oprávnění a POST, PATCH i DELETE ho odmítají s member_is_owner. Nesdílený workspace tedy hlásí jednoho člena, ne žádného. Místa počítejte s vyloučením isOwner.

Příklad

Vyžaduje members:read. Vlastník je první, pak všichni ostatní podle e-mailu, a ne podle data připojení, protože tenhle výpis se čte kvůli hledání konkrétního člověka, ne kvůli tomu, co se změnilo.

curl
curl "$OE/members" -H "$AUTH"
Odpověď
{  "object": "list",  "data": [    {      "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",        "labels:read",        "labels:write",        "contacts:read"      ],      "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"    },    {      "object": "member",      "userId": "7fQ2mN8vBz1aRd4tYwKx7fQ2mN8vBz1a",      "email": "[email protected]",      "name": null,      "image": null,      "role": { "id": null, "name": "Viewer", "builtin": "viewer" },      "implied": true,      "permissions": [        "emails:read",        "drafts:read",        "threads:read",        "labels:read",        "contacts:read",        "calendar:read",        "templates:read",        "rules:read",        "connections:read",        "settings:read"      ],      "addresses": [        {          "addressId": "c40a95f2-1cc6-4d31-82a8-9e075d31c2a8",          "address": "[email protected]",          "access": "viewer"        }      ],      "createdAt": null    }  ],  "hasMore": false,  "nextCursor": null}

Dvě populace v jednom výpisu, a jinak to nejde: někdo může mít roli a žádnou adresu a někdo může mít adresu a žádný řádek s rolí. Výpis jen průniku by skryl obojí a na většině workspaců je ta druhá skupina větší.

createdAt je null u někoho, kdo má přístupy, ale nikdy neměl zapsaný řádek člena – u týchž lidí, u kterých je implied true. Je to okamžik, kdy dostali ROLI, ne kdy s nimi byla poprvé sdílena adresa.

permissions je plochý rozřešený seznam, ne sada booleanů. Klient, který se ptá „je v tom templates:write?“, nemůže zaostat za slovníkem; klient, kterému podáte { canEditTemplates: true }, tiše ano.

Bez cursoru, se standardní obálkou. Členství workspace je omezené tím, s kolika lidmi ho jeho vlastník skutečně sdílel, a stránkovat to by byl obřad před něčím, co si klient stáhne jednou a vykreslí celé.