Belgelere geç
Ruby

Üyeler

`members.list`, `list_all`, `iterate`, `get`, `add`, `update`, `remove`, `grant_address`, `revoke_address` ve yanlarındaki davet metotları.

Her yöntem

members.rb
support_role_id = "role_8b1f4c2e9a7d3b60e5f1a2c4"viewer_role_id = "role_2c7e9a1f4b8d3e60c5a7f1b9" invitation = client.members.add(  email: "[email protected]",  roleId: support_role_id,  addressIds: ["2b81de07-9c3f-4a61-b8e2-5d07f4c19a36"],  access: "member")puts invitation[:id], invitation[:expiresAt] people = client.members.list_allputs people.map { |person| "#{person[:email]} #{person[:userId]}" } sam_id = "q7Vd3kX9mT2pLw8RzN4bYc6HfJ1sGa5E"member = client.members.get(sam_id)puts member.dig(:role, :name), member[:implied] client.members.update(sam_id, roleId: viewer_role_id) address_id = "c40a95f2-1e7b-4d38-a6c9-82f05b3d7e14"client.members.grant_address(sam_id, addressId: address_id, access: "viewer")client.members.revoke_address(sam_id, address_id) removed = client.members.remove(sam_id)puts removed[:addressesRevoked]

Kişi başına iki yetki vardır ve bunlar birleştirilmemelidir. role kişinin ne yapabileceğidir. addresses bunu neyin üzerinde yapabileceğidir. İkisinin de uyuşması gerekir: invoices@ üzerinde access: "viewer" ile 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 Array 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 list_all ü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 list_invitations izler. Bir istek gövdesinin alanları API'nin camelCase adlarını korur (roleId:, addressIds:, addressId:) ve anahtar kelimeler ya da tek bir Hash olarak geçirilir.

list bir OpenEmail::Page döndürür, list_all tüm üyeleri tek bir Array içinde döndürür, iterate ise her üyeyi bir bloğa verir ya da blok olmadan bir Enumerator döndürür. Bir üye Symbol anahtarlı bir Hash olarak döner ve role bunun içinde bir Hash'tir; bu yüzden member.dig(:role, :name) rolün adını okur.

implied: true, rolü kimsenin seçmediği anlamına gelir. Kişinin adresleri 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 ne yapabileceklerini de sessizce genişletir.

Çalışma alanı sahibi isOwner: true ile işaretlenmiş ilk satırdır; add, update ve remove ise onu yine de OpenEmail::ValidationError 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: client.members.list_all.count { |member| !member[:isOwner] }.

remove her iki ekseni, yani rolü VE bu çalışma alanındaki her adres yetkisini kaldırır ve addressesRevoked değerini bildirir. revoke_address dar kapsamlı olanıdır: ayrılan biri için değil, ekip değiştiren biri için.

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.
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 `OpenEmail::NotFoundError` 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<String>
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.
accessString
Kişinin `addressIds` 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 `grant_address` çağırın.

Yanıt

objectString
Her zaman `member`. Bir kaldırma işlemi de aynı değerle, kişinin `userId` değeri, `deleted: true` 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 iki adres ç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 nil
Kişinin hesabından alınan görünen adı; orada bu sütun her zaman bir değer tutar. Türdeki nil, 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 nil
Kişinin hesabından alınan avatarı; ayarlamamışsa nil.
role.idString or nil
Kişinin üstlendiği rolün kimliği, `member.dig(:role, :id)` olarak okunur; kimse seçmediyse nil. `implied` alanına bakın. Buradaki bir nil, `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 nil
Rolün hangi yerleşik rol olduğu: `owner`, `admin`, `member`, `viewer`, `developer` ya da `billing`; özel bir rol için nil. `owner` yalnızca sahibin kendi satırında, `isOwner: true` ile birlikte görünür. Bu rolü birine atamak `role_immutable` (409) ile reddedilir.
isOwnerBoolean
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.
impliedBoolean
Bu kişinin adres 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<String>
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<Hash>
Kendilerine verilen adresler, adrese göre sıralı, her biri kendi erişim düzeyiyle. 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 kimliği; `grant_address` ve `revoke_address` bunu alır. Bu çalışma alanında bir adres olmayan bir kimlik, hiç gerçekleşmemiş bir geri almayı bildirmek yerine 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 Hash iki farklı sözlükten gelen iki `role` anahtarı taşımasın diye burada yeniden adlandırılmıştır.
createdAtString or nil
Kişinin üye satırının yazıldığı an, bir ISO 8601 String'i olarak; hiç üye satırı yoksa nil. Bu nil, `implied: true` ile aynı grubu tanımlar: roller var olmadan önceden adreslere sahip olan ve o zamandan beri kimsenin rol vermediği kişiler.

Davetler

invitations.rb
waiting = client.members.list_all_invitations waiting.each do |invitation|  client.members.resend_invitation(invitation[:id]) if invitation[:expired]end client.members.revoke_invitation("winv_6bb640f5b99e47deb758f1f5")

add bir davetle yanıt verir; bunlar da bir davetin ardından gelen çağrılardır. list_invitations henüz kimsenin kabul etmediği davetlerden oluşan bir OpenEmail::Page döndürür, list_all_invitations hepsini tek bir Array içinde döndürür, iterate_invitations ise her birini bir bloğa verir ya da bir Enumerator döndürür. resend_invitation bir daveti yeni bir bağlantı ve on dört gün daha ile yeniden gönderir, revoke_invitation ise onu geri çeker. Bekleyen bir davet kabul edilene kadar hiçbir yetki vermez.

resend_invitation aynı adresi on dakika içinde ikinci kez 409 invitation_too_soon ile reddeder; revoke_invitation ise önce kabul edilmiş bir daveti 409 invitation_accepted ile reddeder. İkisi de OpenEmail::ConflictError olarak fırlatılır; bu yüzden conflict? true olur ve onları code ayırt eder.