Çelësat API
`keys.list`, `list_all`, `iterate`, `get`, `create`, `update`, `delete`, `rotate` dhe `revoke`, si edhe lexuesit e regjistrit të kërkesave dhe të aktivitetit.
Çdo metodë
from pathlib import Path from openemail import openemail key = openemail.keys.create({ 'name': 'Billing sender', 'scopes': ['emails:send'], 'domainAllowlist': ['billing.acme.com'], 'expiresInMinutes': 60 * 24 * 90,}) secret = Path('.openemail-billing-key')secret.touch(mode=0o600)secret.write_text(key['token']) openemail.keys.update(key['id'], {'enabled': False}) rotated = openemail.keys.rotate(key['id'])secret.write_text(rotated['token']) openemail.keys.revoke(key['id'], {'reason': 'Replaced'})openemail.keys.delete(key['id'])create dhe rotate janë të vetmet thirrje që kthejnë një sekret, në token, një herë. Çdo lexim kthen maskedKey në vend të tij. update e fik dhe e ndez një çelës me enabled, alternativa e kthyeshme e revoke, ndërsa delete heq vetëm një çelës që është revokuar. Leximi kërkon keys:read dhe çdo ndryshim keys:manage.
Klienti nuk riprovon kurrë create ose rotate. Një riprovim pas një përgjigjeje të humbur do të krijonte një çelës të dytë, ose do të zhvlerësonte sekretin që ktheu përpjekja e parë. update dhe revoke riprovohen si leximet, sepse përsëritja e tyre e lë çelësin të njëjtë, ndërsa delete jo.
Kurrë më i gjerë se thirrësi
Një çelës nuk krijon e nuk arrin kurrë një çelës më të gjerë se vetja: scope-t, roli, skadimi, modaliteti dhe fusha e dërgimit duhet të qëndrojnë të gjitha brenda çelësit që thërret, përndryshe thirrja refuzohet me 403 beyond_caller_authority. Një çelës i ngushtuar në disa domene ose adresa sheh vetëm çelësat brenda fushës së vet të dërgimit. rotate mbi çelësin që thërret funksionon edhe me keys:write, si me.rotate().
Verifikimi shtesë nuk mund të zbatohet në një thirrje të bërë me çelës, ndaj keys:manage është një kredencial që krijon kredenciale. Jepjani vetëm një automatizimi që lëshon çelësa, jepini atij çelësi një rol, një fushë dërgimi dhe një skadim, dhe ndiqni list_workspace_activity, ku gjithçka që bën regjistrohet në emër të tij.
Regjistri i kërkesave dhe aktiviteti
from datetime import datetime, timedelta, timezone from openemail import openemail failures = openemail.keys.list_requests( '4c1b257a66287fd113bd89d0', failed_only=True, since=datetime.now(timezone.utc) - timedelta(days=1),)for request in failures['items']: print(request['status'], request['method'], request['path']) for change in openemail.keys.iterate_workspace_activity(): actor = change['actor'] print(change['keyName'], change['type'], actor['label'] if actor else None)list_requests dhe list_activity lexojnë një çelës, list_workspace_requests dhe list_workspace_activity lexojnë çdo çelës ose ata që emërton key_ids, dhe secila ka një list_all_… dhe një iterate_… pranë. Marrin since dhe until, dhe lexuesit e kërkesave marrin edhe failed_only.
since dhe until marrin një datetime ose një varg ISO 8601. Një datetime dërgohet në UTC, dhe një naiv lexohet fillimisht si ora vendore.
Referencë
keys.list()Referenca e plotëkeys.list_all()Referenca e plotëkeys.iterate()Referenca e plotëkeys.get()Referenca e plotëkeys.create()Referenca e plotëkeys.update()Referenca e plotëkeys.delete()Referenca e plotëkeys.rotate()Referenca e plotëkeys.revoke()Referenca e plotëkeys.list_requests()Referenca e plotëkeys.list_all_requests()Referenca e plotëkeys.iterate_requests()Referenca e plotëkeys.list_activity()Referenca e plotëkeys.list_all_activity()Referenca e plotëkeys.iterate_activity()Referenca e plotëkeys.list_workspace_requests()Referenca e plotëkeys.list_all_workspace_requests()Referenca e plotëkeys.iterate_workspace_requests()Referenca e plotëkeys.list_workspace_activity()Referenca e plotëkeys.list_all_workspace_activity()Referenca e plotëkeys.iterate_workspace_activity()Referenca e plotë