Pāriet uz dokumentāciju
SDK

Lomas

`roles.list`, `get`, `create`, `update`, `delete` un `listPermissions`.

Katra metode

roles.ts
const roles = await openemail.roles.list()const role = await openemail.roles.get('role_…') const support = await openemail.roles.create({  name: 'Support',  description: 'Answers the shared inboxes and nothing else.',  permissions: ['emails:send', 'threads:write', 'labels:write'],}) console.log(support.permissions) await openemail.roles.update(support.id, {  permissions: [...support.permissions, 'templates:read'],}) await openemail.roles.delete(support.id, { reassignTo: 'role_…' }) const vocabulary = await openemail.roles.listPermissions()

support.permissions satur sešus ierakstus, nevis trīs: emails:send velk līdzi emails:read, threads:write velk threads:read, un labels:write velk labels:read. Nolasi sarakstu atpakaļ, nevis pieņem.

Loma saka, ko kāds drīkst DARĪT. Ar kurām ADRESĒM viņš to drīkst darīt, ir otra ass, un tā dzīvo openemail.members. Skat. grantAddress un revokeAddress tur. “Drīkst sūtīt pastu” un “drīkst sūtīt kā invoices@” ir dažādi teikumi, un darbvieta, kas pieņem otru atbalsta darbinieku, maina otro, nepieskaroties pirmajam.

Zarojies pēc editable un deletable, nevis pēc builtin nosaukuma. Abi ir false vienīgi īpašniekam, kura saraksts ir “katra atļauja, arī tās, kas tiks izgudrotas nākamgad” un tiek aprēķināts, nevis glabāts; katra cita loma uz abiem atbild true, arī tās piecas, ar kurām darbvieta tiek iesēta. Loma, ko kāds pārsaucis, uz abiem joprojām atbild pareizi, un tās nosaukums vairs neko nepasaka.

update AIZSTĀJ atļauju sarakstu. Izsaukuma, kas piešķir vienu, nav, tāpēc nolasi lomu, nomaini ierakstu, ko domāji, un sūti atpakaļ visus. Nosūtot vienu atļauju, lomai paliek tieši tā viena plus viss, ko tā ietver.

delete prasa reassignTo brīdī, kad kādam šī loma ir, un tas ceļo kā vaicājuma parametrs, jo ķermeni uz DELETE vairākas izpildvides un virkne starpniekserveru nomet. Rezultāts atsevišķi ziņo reassigned un keysReassigned, lai skripts varētu žurnalēt to, ko tas izdarīja, nevis to, ko tas prasīja.

listPermissions() ir GET /roles/permissions — fiksēts ceļš, kas atrodas tieši tur, kur būtu lomas id. Klients to iekodē, nevis padod virkni caur get, tāpēc lūgums pēc lomas, kas patiešām saucas “permissions”, prasa lomu un saņem 404, kas ir godīgā atbilde uz uzrakstīto. scope: false atzīmē ierakstus, kurus nevar turēt neviena atslēga.

Loma ir atslēgas griesti

Atslēga, kas izdota pret lomu, drīkst darīt savus tvērumus, KRUSTOTUS ar šīs lomas atļaujām, izšķirtus katram pieprasījumam uz robežas. Tātad lomas sašaurināšana atsauc tās atslēgas uzreiz, nevienu no tām nerotējot, un atslēgai bez lomas griestu nav vispār, kas padara null lomu par plašāko, nevis šaurāko stāvokli, kādā atslēga var būt.

Tieši tāpēc roles.delete uzstāj, lai būtu vieta, kurp atslēgas pārvietot. To atstāšana bāreņos pilnībā noņemtu griestus, klusi paaugstinot katrus akreditācijas datus, ko loma bija ierobežojusi.

GET /keys/self un GET /ping uzrāda roleId un grantedScopes blakus faktiskajiem scopes — tā tiek atbildēts uz “manai atslēgai ir emails:send, un es saņemu insufficient_scope”: viss, kas ir grantedScopes un kā trūkst scopes, ir atņemts ar lomu. openemail.me.get() un openemail.me.ping() atgriež abus, ar tipiem.

Parametri

namestringobligāts
Kā darbvieta sauc lomu: no 1 līdz 48 rakstzīmēm, pirms saglabāšanas apgrieztas. Nosaukumi darbvietā ir unikāli neatkarīgi no reģistra, tāpēc otrs “Support” tiek noraidīts ar `role_name_taken` (409), nevis izveidots blakus pirmajam.
descriptionstring
Teikums, kas pasaka, kam loma paredzēta, apgriezts un ne garāks par 240 rakstzīmēm. Virkne, kas pēc apgriešanas ir tukša, tiek saglabāta kā null, tāpēc apraksts no atstarpēm atnāk atpakaļ kā null, nevis kā tas, ko nosūtīji.
permissionsPermission[]obligāts
Ko loma piešķir, ņemot no vārdnīcas, ko piedāvā `listPermissions()`; virkne, kuras tajā nav, ir 422 uz `permissions`, nevis tiek klusi izmesta, tāpēc par drukas kļūdu tiek ziņots, nevis tā tev izmaksā pēcpusdienu. Saraksts ieejot tiek IZVĒRSTS (`templates:write` glabā `templates:read` sev blakus), attīrīts no dublikātiem un salikts kanoniskā secībā, tāpēc nolasi saglabāto sarakstu no atbildes, nevis pieņem, ka tas ir tas, ko nosūtīji.

Atbilde

object'role'
Vienmēr `role`. Dzēšanas kapakmens atbild ar to pašu vērtību, lomas `id`, `deleted: true` un abiem pārpiešķiršanas skaitītājiem — un nevienu no pārējiem zemāk uzskaitītajiem laukiem.
idstring
Lomas id. Tas ir tas, ko nosauc dalībnieka `roleId`, uz ko norāda API atslēgas griesti, un ko pieņem `reassignTo`, kad šī loma tiek dzēsta.
namestring
Darbvietas nosaukums lomai, apgriezts un unikāls neatkarīgi no reģistra. Katru lomu, izņemot īpašnieka, var pārsaukt, arī iesētās (`builtin` saka, no kurienes rinda nākusi, nevis kā tai jāturpina saukties), tāpēc nelasi “Admin” kā solījumu par to, kas lomai ir. Nosaukums, uz kuru jau atsaucas cita loma, ir `role_name_taken` (409, `param: "name"`); īpašnieka pārsaukšana ir `role_immutable` (409), tāpat kā katra cita tās rediģēšana.
descriptionstring | null
Teikums, kas apraksta lomu, vai null, kad tāds nav dots. Tukša ievade gan create, gan update gadījumā tiek saglabāta kā null, tāpēc šis nekad nav tukša virkne.
permissionsPermission[]
Viss, ko loma piešķir, jau izvērsts un kanoniskā secībā, nevis tādā, kādā kāds to uzrakstīja. Šī secība ir nesoša: divas lomas ar vienādām atļaujām kā JSON salīdzinās vienādi, un tieši tas ļauj iestatījumu ekrānam tās salīdzināt, lai izlemtu, vai Saglabāt ir aktīvs.
builtin'owner' | 'admin' | 'member' | 'viewer' | 'developer' | 'billing' | null
No kuras no sešām iesētajām lomām šī rinda nākusi, vai null tādai, ko darbvieta uzrakstījusi pati. Tas fiksē sēklu, nevis statusu: iesētu lomu pārsauc, pārkonfigurē un dzēš tāpat kā jebkuru citu. Zarojies pēc `editable` un `deletable`, nevis pēc šī. Loma, ko kāds nosaucis par “Admin”, nav obligāti tā iesētā, un iesētā var vairs tā nesaukties.
editableboolean
Aprēķināts kā `builtin !== 'owner'`, tāpēc tas ir false vienīgi īpašnieka lomai, un katrs šīs lomas PATCH tiek noraidīts ar `role_immutable` (409). Katra cita loma ir rediģējama pilnībā (nosaukums, apraksts un atļaujas), arī tās piecas, ar kurām darbvieta tiek iesēta.
deletableboolean
Aprēķināts kā `builtin !== 'owner'`: false vienīgi īpašnieka lomai, kas atnāk kā `role_undeletable` (409), un true katrai citai, arī iesētajām. Pārbaudi to, pirms piedāvā pogu, nevis pēc atteikuma; tomēr lomai, kas kādam vēl ir, vajag arī `reassignTo`, citādi dzēšana ir `role_in_use` (409).
membersnumber
Cik cilvēkiem ir šī loma, saskaitīts no darbvietas dalībnieku rindām. Īpašnieks starp tiem nav: viņam nav dalībnieka rindas un lomu viņam nevar dot, tāpēc Owner loma uzrāda nulli turētāju, lai arī dalībnieku sarakstā viņš ir redzams.
apiKeysnumber
Cik dzīvām API atslēgām šī loma ir griesti; atsauktās atslēgas skaitā netiek iekļautas, lai gan dzēšana pārvirza katru atslēgas rindu, kas norāda uz lomu, arī atsauktās. Tā ir otrā populācija, kas jāpārvieto, pirms loma var aiziet, un tā, ko neviens nepamana: atslēgas ir programmas, un programma nesūdzas.
createdAtstring
Kad tika ierakstīta lomas rinda, ISO-8601. Iebūvētās rindas tiek iesētas slinki, pirmoreiz, kad tās kādam vajadzīgas — piemēram, lasot lomu sarakstu, veidojot lomu vai atverot API atslēgu ekrānu —, nevis darbvietas izveides brīdī, tāpēc iebūvētās lomas laikspiedols ir brīdis, kad pienāca tas pirmais pieprasījums, nevis kad tika izveidota darbvieta.
updatedAtstring
Kad loma pēdējoreiz mainījās, ISO-8601. Katrs pieņemts PATCH to pavirza, arī tāds, kas laukam iestata vērtību, kāda tam jau bija.