Zur Dokumentation springen
Ruby

API-Schlüssel

`keys.list`, `list_all`, `iterate`, `get`, `create`, `update`, `delete`, `rotate` und `revoke` sowie die Leser für Anfrageprotokoll und Aktivität.

Jede Methode

keys.rb
key = client.keys.create(  name: "Billing sender",  scopes: ["emails:send"],  domainAllowlist: ["billing.acme.com"],  expiresInMinutes: 60 * 24 * 90) File.write(".openemail-billing-key", key[:token]) client.keys.update(key[:id], enabled: false) rotated = client.keys.rotate(key[:id])File.write(".openemail-billing-key", rotated[:token]) client.keys.revoke(key[:id], reason: "Replaced")client.keys.delete(key[:id])

create und rotate sind die einzigen Aufrufe, die ein Secret zurückgeben, in token, einmal. Jeder Lesezugriff liefert stattdessen maskedKey. update schaltet einen Schlüssel mit enabled aus und ein, die umkehrbare Alternative zu revoke, und delete entfernt nur einen widerrufenen Schlüssel: Jeder andere ergibt einen 409 not_revoked. Lesen braucht keys:read und jede Änderung keys:manage.

Das Gem wiederholt create und rotate nie. Eine Wiederholung nach einer verlorenen Antwort würde einen zweiten Schlüssel erzeugen oder das Secret ungültig machen, das der erste Versuch zurückgegeben hat. update und revoke werden nach einem Netzwerkfehler wiederholt, weil eine Wiederholung denselben Schlüssel hinterlässt, delete dagegen nicht.

Nie weiter als der Aufrufer

Ein Schlüssel erzeugt oder erreicht nie einen Schlüssel, der weiter reicht als er selbst. Scopes, Rolle, Ablauf, Modus und Sendebereich müssen alle innerhalb des aufrufenden Schlüssels liegen, sonst löst der Aufruf OpenEmail::PermissionError mit dem Code beyond_caller_authority aus, und param nennt die Achse. Ein auf bestimmte Domains oder Adressen eingegrenzter Schlüssel sieht nur die Schlüssel innerhalb seines eigenen Sendebereichs. rotate auf dem aufrufenden Schlüssel funktioniert auch mit keys:write, wie client.me.rotate.

Die erneute Bestätigung kann bei einem Aufruf mit einem Schlüssel nicht greifen, also ist keys:manage ein Zugang, der Zugänge erzeugt. Geben Sie ihn nur einer Automatisierung, die Schlüssel ausstellt, geben Sie diesem Schlüssel eine Rolle, einen Sendebereich und einen Ablauf, und beobachten Sie list_workspace_activity, wo alles, was er tut, auf ihn verbucht wird.

Anfrageprotokoll und Aktivität

key_logs.rb
failures = client.keys.list_requests(  "4c1b257a66287fd113bd89d0",  failed_only: true,  since: Time.now - (24 * 60 * 60))puts failures.items.size client.keys.iterate_workspace_activity do |change|  puts [change[:keyName], change[:type], change.dig(:actor, :label)].join(" ")end

list_requests und list_activity lesen einen Schlüssel, und list_workspace_requests und list_workspace_activity lesen jeden Schlüssel oder die, die key_ids: nennt. Jede hat ein Gegenstück mit list_all_ und eines mit iterate_ daneben, etwa list_all_requests und iterate_requests. Sie nehmen since: und until: als Time, DateTime oder ISO-8601-String, und die Anfrage-Leser nehmen zusätzlich failed_only:.

until ist in Ruby ein reserviertes Wort, aber until: funktioniert so geschrieben als Keyword-Argument. Es muss später als since: liegen, sonst löst der Aufruf OpenEmail::InvalidRequestError mit dem Code invalid_parameter aus.