Belgelere geç
API

Üyeleri listele

Çalışma alanındaki herkes, her birinin rolü ve kendisine verilen adresler.

GETapi.openemail.uk/members

Gerçek çağrıyı kendi anahtarınızla çalışma alanınıza karşı çalıştırır.

GET /members

Çalışma alanındaki herkes, her birinin rolü ve kendisine verilen adresler.

Bir üye tek değil iki yetkidir

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

role onların NE YAPABİLECEĞİDİR: bir satır, bir rol, /roles tarafından tarif edilen aynı nesne. addresses ise bunu NEYE yapabilecekleridir: adres başına bir giriş, her biri kendi access değerini taşır. Bir istemci bunları birleştirmemelidir: emails:send taşıyan bir rol ile boş bir addresses dizisi, hiçbir adresten gönderemeyecek biridir; viewer rolü altındaki dolu bir addresses dizisi de yine hiçbir adresten gönderemeyecek biridir. Gönderim yolu ikisini de denetler ve yalnızca birini gösteren bir ekran, yanlış reddi kendinden emin biçimde açıklar.

Adres satırları, saklanan sütun role derken access der ve bu yeniden adlandırma bir düzenleme değil, asıl meseledir: bu nesnenin zaten tamamen başka bir anlama gelen bir role alanı vardır ve aralarında tek bir iç içe geçme düzeyi bulunan, iki farklı sözlükten değer taşıyan iki role, hızlı okuyan ilk kişiyi bekleyen bir hatadır. access ya adresi okuyup onun adına gönderen member ya da yalnızca okuyan viewer değerini alır.

implied: true, BU ROLÜ KİMSE SEÇMEDİ demektir. Paylaşım rollerden çok önce geldiği için bir posta kutusuna erişimi olanların çoğu adres yetkilerine sahiptir ve hiç üye satırı yoktur; bir geri doldurma çalışana kadar onları postalarından mahrum bırakmak yerine servis, sahip oldukları en geniş yetkiden yerleşik bir rol çıkarır ve bunu null bir role.id ile bildirir. Bunu birinin seçtiği bir rol olarak değil, "erişimden çıkarsanan" olarak gösterin. Bir PATCH bu çıkarımı bir karara dönüştürene kadar, adres erişimlerini genişletmek ne yapabileceklerini de sessizce genişletir.

SAHİP İLK satırdır; isOwner: true ile işaretlidir ve role.builtin değeri owner'dır. Çalışma alanının bağlı olduğu hesap odur, tanımı gereği her izne sahiptir ve POST, PATCH ile DELETE onu member_is_owner ile reddeder. Dolayısıyla paylaşılmamış bir çalışma alanı sıfır değil bir üye bildirir. Koltukları sayarken isOwner olanı hariç tutun.

Örnek

members:read gerektirir. Önce sahip gelir, sonra diğer herkes katılma zamanına göre değil e-postaya göre sıralanır; çünkü bu liste neyin değiştiğini görmek için değil, tek bir kişiyi bulmak için okunur.

curl
curl "$OE/members" -H "$AUTH"
Yanıt
{  "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}

Tek listede iki kitle var ve böyle olmak zorunda: biri rol sahibi olup hiç adresi olmayabilir, biri de adres sahibi olup hiç rol satırı olmayabilir. Yalnızca kesişimi listelemek ikisini de gizlerdi ve çoğu çalışma alanında ikinci grup daha büyüktür.

Yetkileri olan ama hiç üye satırı yazılmamış kişilerde createdAt null'dur; bunlar implied değeri true olan kişilerle aynıdır. Bu alan, kendilerine ilk kez bir adres paylaşıldığı anı değil, ROL verildiği anı gösterir.

permissions, bir boolean kümesi değil düz, çözümlenmiş bir listedir. "Bu templates:write içeriyor mu" diye soran bir istemci sözlüğün gerisinde kalamaz; kendisine { canEditTemplates: true } verilen bir istemci ise sessizce kalabilir.

Cursor'suzdur, standart zarfla gelir. Bir çalışma alanının üyeliği, sahibinin onu gerçekte kaç kişiyle paylaştığıyla sınırlıdır ve bunu sayfalamak, bir istemcinin bir kez çekip bütün hâlde çizdiği bir şeyin önüne gereksiz bir tören koymak olurdu.