Ves a la documentació
SDK

Membres

`members.list`, `get`, `add`, `update`, `remove`, `grantAddress` i `revokeAddress`.

Tots els mètodes

members.ts
const people = await openemail.members.list()const member = await openemail.members.get(people[0]!.userId) const sam = await openemail.members.add({  email: '[email protected]',  roleId: support.id,  addressIds: ['2b81de07-…'],  access: 'member',}) await openemail.members.update(sam.userId, { roleId: viewerRoleId }) await openemail.members.grantAddress(sam.userId, {  addressId: 'c40a95f2-…',  access: 'viewer',})await openemail.members.revokeAddress(sam.userId, 'c40a95f2-…') await openemail.members.remove(sam.userId)

Dues concessions per persona, i no s'han de fusionar. role és el que poden fer; addresses és allò sobre què ho poden fer. Totes dues han de coincidir: un rol amb emails:send i access: "viewer" sobre invoices@ és algú que pot enviar correu i que no el pot enviar des d'aquella adreça.

Tots els mètodes prenen el userId, no el correu. add és l'única excepció, i n'és el motiu: qui la crida té una adreça de correu i encara cap id d'usuari, que és tota la primera meitat del que fa aquesta crida.

implied: true vol dir que ningú no ha triat el rol. Tenen adreces i cap fila de rol, de manera que es va inferir a partir de la concessió més àmplia que tenen. Tracta-ho com a «encara no decidit», i update és el que converteix la inferència en una decisió. Fins llavors, ampliar-los l'accés a adreces amplia silenciosament el que poden fer.

El propietari de l'espai de treball és la primera fila, marcada amb isOwner: true, mentre que add, update i remove el rebutgen igualment amb member_is_owner. Un espai de treball no compartit informa d'un membre en lloc de cap, així que exclou isOwner quan comptis llicències.

remove actua sobre tots dos eixos, el rol I totes les concessions d'adreça d'aquest espai de treball, i informa d'addressesRevoked. revokeAddress és l'estret, per a algú que ha canviat d'equip i no pas per a algú que ha marxat.

Paràmetres

emailstringobligatori
A qui convidar, retallat i en minúscules. Encara no cal que tingui compte: tothom és convidat, i el rol i les concessions s'apliquen quan accepta. Algú que ja és a l'espai de treball és `member_is_owner` (422).
roleIdstringobligatori
El rol que tindrà, d'1 a 128 caràcters, i ha de ser un rol d'aquest espai de treball: un id desconegut és `role_not_found` (404). El rol de propietari no es pot repartir i torna `role_immutable` (409), perquè fer algú propietari és una transferència de l'espai de treball i aquí no hi ha cap crida per a això.
addressIdsstring[]
Adreces per lliurar a la mateixa crida, com a màxim 64 ids d'entre 1 i 128 caràcters cadascun; un id que no sigui una adreça d'aquest espai de treball es rebutja. El rol s'escriu primer i les concessions el segueixen d'una en una, de manera que un id incorrecte deixa el membre creat amb menys adreces de les que havies demanat. Tornar a enviar el mateix cos és la solució, ja que totes dues escriptures fan upsert.
access'member' | 'viewer'
El que pot fer amb cada id d'`addressIds`: `member` llegeix l'adreça i hi envia com a tal, `viewer` només la llegeix. Per defecte és `member`, el nivell que sempre han fet servir la consola i el camí de compartició antic, de manera que la mateixa crida vol dir el mateix des d'un script i des d'una pantalla; concedeix una barreja cridant després `grantAddress` per a les que difereixin.

Resposta

object'member'
Sempre `member`. Una eliminació respon amb el mateix valor, el seu `userId`, `deleted: true` i `addressesRevoked`, i cap dels altres camps de sota.
userIdstring
L'id del seu compte, i l'identificador que totes les altres crides de membres prenen a la ruta: get, update, remove i les dues crides d'adreces. Afegir algú és l'única crida que funciona a partir d'un correu, perquè qui afegeix un company sap la seva adreça i no el seu id.
emailstring
El correu del seu compte, reproduït tal com el desa aquella fila. Aquest recurs no l'escriu mai, i el pas a minúscules d'`add` s'aplica a l'adreça que envies per a la cerca i no pas al que torna. Després del propietari, la llista de membres s'ordena per aquest camp i no per quan s'hi va incorporar cadascú, perquè la llista es llegeix per trobar una persona i no per veure què ha canviat.
namestring | null
El seu nom visible, pres del seu compte, on la columna és NOT NULL. El null del tipus és defensiu i no pas un estat que s'hagi vist produir en aquesta API. Els pertany a ells i no a l'espai de treball, de manera que res d'aquest recurs no el pot establir.
imagestring | null
El seu avatar, pres del seu compte, i null quan no n'ha posat cap.
role.idstring | null
L'id del rol que té, o null quan ningú no l'ha triat. Consulta `implied`. Un null aquí és l'únic cas en què `role` informa d'una inferència i no d'una decisió que hagi pres algú.
role.namestring
El nom del rol. Per a un membre implícit és el nom de la plantilla integrada a què s'ha resolt el seu accés, no pas una fila d'aquest espai de treball.
role.builtin'owner' | 'admin' | 'member' | 'viewer' | 'developer' | 'billing' | null
Quin rol integrat és, o null si és personalitzat. `owner` només apareix a la fila del propietari mateix, al costat d'`isOwner: true`; assignar aquest rol a qualsevol persona es rebutja amb `role_immutable` (409).
isOwnerboolean
Cert exactament en una fila, el compte sobre el qual està indexat l'espai de treball. Té tots els permisos digui el que digui la seva fila de rol, s'ordena primer, i `add`, `update` i `remove` el rebutgen tots amb `member_is_owner`. Exclou-lo quan comptis llicències.
impliedboolean
Cert quan aquesta persona té concessions d'adreça i cap fila de membre, de manera que el seu rol s'ha inferit en lloc de triar-se: qualsevol concessió de `member` es resol al Member integrat, i si no al Viewer. Mai no és cert per al propietari. Mostra-ho com a «implícit per l'accés». Fins que un PATCH converteixi la inferència en una decisió, ampliar-li l'accés a adreces amplia silenciosament el que pot fer.
permissionsPermission[]
Els permisos del rol aplanats sobre el membre, de manera que una sola lectura respon «pot fer-ho?» sense haver d'obtenir el rol. Per a un membre implícit provenen de la PLANTILLA integrada i no de la fila de rol d'aquest espai de treball, de manera que editar el rol Member integrat no canvia el que té un membre implícit.
addressesMemberAddress[]
Les adreces que se li han concedit, ordenades per adreça, cadascuna amb el seu propi nivell d'accés. Buit per a algú que té un rol i cap concessió, que és l'aspecte d'un membre nou fins que se li concedeix una adreça, i és la fallada correcta mentre encara estàs decidint què ha de veure.
addresses[].addressIdstring
L'id de l'adreça, i el que prenen `grantAddress` i `revokeAddress`. Un id que no sigui una adreça d'aquest espai de treball es rebutja a totes dues, en lloc d'informar d'una revocació que no s'ha produït mai.
addresses[].addressstring
L'adreça completa, en minúscules, reconstruïda a partir de la seva part local i el seu domini.
addresses[].access'member' | 'viewer'
El que pot fer amb aquesta adreça concreta: `member` la llegeix i hi envia com a tal, `viewer` només la llegeix. Tant això com el rol han de permetre un enviament perquè se'n produeixi cap, de manera que un rol amb `emails:send` sobre una concessió `viewer` no envia des de res; la columna emmagatzemada es diu `role`, i aquí es reanomena perquè un mateix objecte no porti dos `role` procedents de dos vocabularis.
createdAtstring | null
Quan es va escriure la seva fila de membre, ISO-8601, i null quan no hi ha cap fila de membre. Aquest null descriu la mateixa població que `implied: true`: gent que té adreces d'abans que existissin els rols i a qui ningú no ha donat cap rol des d'aleshores.