Belgelere geç
PHP

Üyeler

`members->list`, `listAll`, `iterate`, `get`, `add`, `update`, `remove`, `grantAddress`, `revokeAddress`, `grantDomain`, `revokeDomain` ve yanlarındaki davet metotları.

Her yöntem

members.php
$supportRoleId = 'role_8b1f4c2e9a7d3b60e5f1a2c4';$viewerRoleId = 'role_2c7e9a1f4b8d3e60c5a7f1b9'; $invitation = $client->members->add([    'email' => '[email protected]',    'roleId' => $supportRoleId,    'addressIds' => ['2b81de07-9c3f-4a61-b8e2-5d07f4c19a36'],    'access' => 'member',]);echo $invitation['id'], ' ', $invitation['expiresAt'], PHP_EOL; foreach ($client->members->listAll() as $person) {    echo $person['email'], ' ', $person['userId'], PHP_EOL;} $samId = 'q7Vd3kX9mT2pLw8RzN4bYc6HfJ1sGa5E';$member = $client->members->get($samId);echo $member['role']['name'], $member['implied'] ? ' (implied)' : '', PHP_EOL; $client->members->update($samId, ['roleId' => $viewerRoleId]); $addressId = 'c40a95f2-1e7b-4d38-a6c9-82f05b3d7e14';$client->members->grantAddress($samId, ['addressId' => $addressId, 'access' => 'viewer']);$client->members->revokeAddress($samId, $addressId); $removed = $client->members->remove($samId);echo $removed['addressesRevoked'], PHP_EOL;

Kişi başına iki yetki vardır ve bunlar birleştirilmemelidir. role kişinin ne yapabileceğidir. addresses ve domains bunu neyin üzerinde yapabileceğidir. İkisinin de uyuşması gerekir: invoices@ üzerinde access değeri viewer iken emails:send iznine sahip bir rol, posta gönderebilen ama o adresten gönderemeyen biridir. İstisna, addresses ne listelerse listelesin her adrese ulaşan addresses:all iznine sahip bir roldür, çünkü o dizi yalnızca doğrudan yetkileri tutar. Bu yüzden addresses alanını birinin erişiminin tamamı olarak okumadan önce permissions alanını denetleyin.

Tek bir kişiyle ilgili her çağrı ilk argüman olarak e-postasını değil userId değerini alır; bu yüzden onu örnekte olduğu gibi list ya da listAll üzerinden okuyun. Tek istisna add'dir, çünkü bir adresi davet eder: kişinin userId değeri ancak daveti kabul ettiğinde olur ve o zamana kadar daveti listInvitations izler. add, update, grantAddress ve grantDomain çağrılarının gövdesi, API'nin camelCase adlarıyla (roleId, addressIds, addressId) anahtarlanmış tek bir dizidir.

list bir OpenEmail\Result\Page döndürür, listAll tüm üyeleri tek bir dizi içinde döndürür, iterate ise üyeleri birer birer veren bir Generator döndürür. Bir üye camelCase anahtarlı bir dizi olarak döner ve role bunun içinde bir dizidir; bu yüzden $member['role']['name'] rolün adını okur.

implied değerinin true olması, rolü kimsenin seçmediği anlamına gelir. Kişinin adresleri ya da alan adları vardır ama rol satırı yoktur; dolayısıyla rol, sahip olduğu en geniş yetkiden çıkarılmıştır. Bunu “henüz karara bağlanmadı” olarak ele alın; çıkarımı bir karara dönüştüren şey update'tir. O zamana kadar, adres erişimini genişletmek kişinin ne yapabileceğini de sessizce genişletir.

Çalışma alanı sahibi isOwner değeri true olan ilk satırdır; add, update ve remove ise onu yine de ValidationException olarak fırlatılan bir 422 olan member_is_owner ile reddeder. Paylaşılmamış bir çalışma alanı sıfır değil bir üye bildirir; bu yüzden koltuk sayarken isOwner olanı hariç tutun: count(array_filter($client->members->listAll(), fn(array $member): bool => !$member['isOwner'])).

remove her iki ekseni, yani rolü VE bu çalışma alanındaki her adres ve alan adı yetkisini kaldırır ve alan adları dahil kaç yetkiyi geri aldığını addressesRevoked ile bildirir. revokeAddress dar kapsamlı olanıdır: ayrılan biri için değil, ekip değiştiren biri için; revokeDomain ise aynısını bütün bir alan adı için yapar.

add, update, remove ile dört yetki verme ve geri alma çağrısı bir OAuth erişim tokenından doğrulama kodu ister, bir API anahtarından ise asla. Token bir koda sahip olana kadar bu çağrılar, isStepUpRequired() değeri true olan bir PermissionException fırlatır. add ve grantDomain ayrıca ekip içeren bir plan gerektirir; içermeyen bir planda errorCode değeri plan_required olan bir PermissionException fırlatırlar.

Parametreler

emailstringzorunlu
Kimin davet edileceği; kırpılır ve küçük harfe çevrilir. Henüz bir hesabının olması gerekmez: herkes davet edilir, rol ve yetkiler daveti kabul ettiklerinde yerine oturur. Çalışma alanında zaten bulunan biri `member_is_owner` (422) verir. Kendi parolasıyla oturum açan bir adres davet edilemez ve `mailbox_login` (403) ile döner; bu yüzden onun yerine kişinin kendi e-postasını davet edin.
roleIdstringzorunlu
Kişinin üstleneceği rol; 1 ile 128 karakter arası ve bu çalışma alanındaki bir rol olmalıdır: bilinmeyen bir kimlik `NotFoundException` olarak fırlatılan `role_not_found` (404) verir. Sahip rolü dağıtılamaz ve `role_immutable` (409) ile döner, çünkü birini sahip yapmak bir çalışma alanı devridir ve burada bunun için bir çağrı yoktur.
addressIdsarray
Davetin taşıdığı adresler; her biri 1 ila 128 karakter olan en fazla 64 id, davet kabul edildiğinde verilir. Herhangi bir şey yazılmadan önce her id denetlenir; bu yüzden bu çalışma alanında adres olmayan tek bir id bile tüm çağrının 422 `member_not_found` ile reddedilmesine yol açar ve hiçbir şey gönderilmez. Aynı adresi on dakika içinde yeniden davet etmek 409 `invitation_too_soon` verir.
domainIdsarray
Davetin taşıdığı bütün alan adları; en fazla 64 kimlik, davet kabul edildiğinde verilir. Bir alan adı yetkisi, sonradan oluşturulanlar dahil o alan adındaki her adrese erişir. Bu çalışma alanında bir alan adı olmayan bir kimlik, bir adreste olduğu gibi 422 `member_not_found` verir.
accessstring
Kişinin `addressIds` ve `domainIds` içindeki her kimlikle ne yapabileceği: `member` adresi okur ve onunla gönderir, `viewer` yalnızca okur. Varsayılanı `member`'dır; konsolun ve eski paylaşım yolunun her zaman kullandığı düzey budur, böylece aynı çağrı bir betikten de bir ekrandan da aynı anlama gelir. Karışık bir yetki vermek için farklı olanlar için ardından `grantAddress` çağırın.

Yanıt

objectstring
Her zaman `member`. Bir kaldırma işlemi de aynı değerle, kişinin `userId` değeri, true olarak ayarlanmış `deleted` ve `addressesRevoked` ile yanıt verir; aşağıdaki diğer alanların hiçbiriyle değil.
userIdstring
Kişinin hesap kimliği ve diğer her üye çağrısının ilk argüman olarak aldığı tanıtıcı: `get`, `update`, `remove` ve dört yetki verme ve geri alma çağrısı. Birini eklemek bunun yerine bir e-postayla çalışan tek çağrıdır, çünkü bir iş arkadaşını ekleyen kişi onun kimliğini değil adresini bilir.
emailstring
Hesaplarındaki e-posta, o satırın sakladığı hâliyle yansıtılır. Bu kaynak onu asla yazmaz ve `add` üzerindeki küçük harfe çevirme, geri dönen değere değil arama için gönderdiğiniz adrese uygulanır. Sahipten sonra üye listesi, kimin ne zaman katıldığına göre değil bu alana göre sıralanır; çünkü liste neyin değiştiğini görmek için değil bir kişiyi bulmak için okunur.
namestring or null
Kişinin hesabından alınan görünen adı; orada bu sütun her zaman bir değer tutar. Türdeki null, bu API'nin ürettiği görülmüş bir durum değil, bir önlemdir. Ad çalışma alanına değil kişiye aittir; bu yüzden bu kaynaktaki hiçbir şey onu ayarlayamaz.
imagestring or null
Avatarları; hesaplarından alınır ve ayarlamadılarsa null.
role.idstring or null
Kişinin üstlendiği rolün kimliği, `$member['role']['id']` olarak okunur; kimse seçmediyse null. `implied` alanına bakın. Buradaki bir null, `role` alanının birinin verdiği bir kararı değil bir çıkarımı bildirdiği tek durumdur.
role.namestring
Rolün adı. Rolü çıkarımla belirlenen bir üye için, bu çalışma alanındaki bir satır değil, erişiminin karşılık geldiği yerleşik şablonun adıdır.
role.builtinstring or null
Rolün hangi yerleşik rol olduğu: `owner`, `admin`, `member`, `viewer`, `developer` ya da `billing`; özel bir rol için null. `owner` yalnızca sahibin kendi satırında, true değerli `isOwner` ile birlikte görünür. Bu rolü birine atamak `role_immutable` (409) ile reddedilir.
isOwnerbool
Tam olarak bir satırda true olur: çalışma alanının bağlı olduğu hesap. Rol satırları ne derse desin her izne sahiptirler, ilk sırada yer alırlar ve `add`, `update` ve `remove` üçü de onları `member_is_owner` ile reddeder. Koltuk sayarken onları hariç tutun.
impliedbool
Bu kişinin adres ya da alan adı yetkileri olup üye satırı olmadığında true; bu durumda rolü seçilmemiş, çıkarılmıştır: herhangi bir `member` yetkisi onu yerleşik Member rolü yapar, aksi hâlde Viewer. Sahip için asla true değildir. Bunu “erişimden çıkarılmış” olarak gösterin. Bir `update` çıkarımı bir karara dönüştürene kadar, kişinin adres erişimini genişletmek yapabileceklerini de sessizce genişletir.
permissionsarray
Rolün izinleri üyenin üzerine düzleştirilmiş hâlde; böylece tek bir okuma, rolü getirmeden “yapabilir mi?” sorusunu yanıtlar. Rolü çıkarımla belirlenen bir üye için bu izinler bu çalışma alanının rol satırından değil, yerleşik ŞABLONDAN gelir; bu yüzden yerleşik Member rolünü düzenlemek, böyle bir üyenin sahip olduklarını değiştirmez.
addressesarray
Kendilerine verilen adresler, adrese göre sıralı, her biri kendi erişim düzeyini taşıyan birer dizi olarak. Rolü olup hiç yetkisi olmayan biri için boştur; bir adres verilene kadar yeni bir üye böyle görünür ve ne görmeleri gerektiğine hâlâ karar verirken olması gereken doğru başarısızlık budur.
addresses[].addressIdstring
Adresin id'si; `grantAddress` ve `revokeAddress` çağrılarının aldığı değerdir. Bu çalışma alanında adres olmayan bir id, hiç gerçekleşmemiş bir iptali bildirmek yerine her ikisinde de reddedilir.
addresses[].addressstring
Tam adres, küçük harfli; local part'ı ve alan adından yeniden kurulur.
addresses[].accessstring
Kişinin bu tek adresle ne yapabileceği: `member` onu okur ve onunla gönderir, `viewer` yalnızca okur. Bir gönderimin gerçekleşmesi için hem bunun hem de rolün izin vermesi gerekir; bu yüzden bir `viewer` yetkisi üzerinde `emails:send` iznine sahip bir rol hiçbir adresten gönderemez. Saklanan sütunun adı `role`'dür ve tek bir dizi iki farklı sözlükten gelen iki `role` anahtarı taşımasın diye burada yeniden adlandırılmıştır.
domainsarray
Kişiye verilen bütün alan adları; her biri `domainId`, `domain` ve `access` içerir. Bir alan adı yetkisi, sonradan oluşturulanlar dahil o alan adındaki her adrese erişir; bu yüzden birinin bir adrese erişemediğine karar vermeden önce onu `addresses` ile birlikte okuyun. `grantDomain` ve `revokeDomain`, `domainId` değerini alır.
createdAtstring or null
Kişinin üye satırının yazıldığı an, bir ISO 8601 dizesi olarak; hiç üye satırı yoksa null. Bu null, `implied` değerinin true olduğu grupla aynı grubu tanımlar: roller var olmadan önceden yetkilere sahip olan ve o zamandan beri kimsenin rol vermediği kişiler.

Davetler

invitations.php
$waiting = $client->members->listAllInvitations(); foreach ($waiting as $invitation) {    if ($invitation['expired']) {        $client->members->resendInvitation($invitation['id']);    }} $client->members->revokeInvitation('winv_6bb640f5b99e47deb758f1f5');

add bir davetle yanıt verir; bunlar da bir davetin ardından gelen çağrılardır. listInvitations henüz kimsenin kabul etmediği davetlerden oluşan bir OpenEmail\Result\Page döndürür, listAllInvitations hepsini tek bir dizi içinde döndürür, iterateInvitations ise onları birer birer veren bir Generator döndürür. resendInvitation bir daveti yeni bir bağlantı ve on dört gün daha ile yeniden gönderir, revokeInvitation ise onu geri çeker. Bekleyen bir davet kabul edilene kadar hiçbir yetki vermez.

Bir davet; id, email, role, addresses, domains, expiresAt, expired, lastSentAt ve createdAt içeren bir dizidir. delivered ve deliveryError son davet e-postasının akıbetini bildirir; böylece bir betik, yalnızca yazılmış bir daveti birine ulaşmış bir davetten ayırt edebilir.

resendInvitation aynı adresi on dakika içinde ikinci kez 409 invitation_too_soon ile reddeder; revokeInvitation ise önce kabul edilmiş bir daveti 409 invitation_accepted ile reddeder. İkisi de ConflictException olarak fırlatılır; bu yüzden isConflict() true olur ve onları errorCode ayırt eder.