API キー
`keys.list`、`list_all`、`iterate`、`get`、`create`、`update`、`delete`、`rotate`、`revoke`、そしてリクエストログとアクティビティの読み取り。
すべてのメソッド
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 と rotate だけで、token で一度だけ返します。読み取りはすべて代わりに maskedKey を返します。update は enabled でキーを無効化・有効化でき、これは revoke の元に戻せる代替です。delete は失効済みのキーしか削除しません:それ以外のキーは 409 not_revoked になります。読み取りには keys:read、変更にはすべて keys:manage が必要です。
gem が create や rotate をリトライすることはありません。応答が失われた後にリトライすると、2 つ目のキーが発行されたり、1 回目の試行で返されたシークレットが無効になったりするからです。update と revoke は、繰り返しても同じキーが残るのでネットワーク障害の後にリトライされますが、delete はリトライされません。
呼び出し元より広くはならない
キーが自分より広いキーを作ったり、そうしたキーに触れたりすることはありません。スコープ、ロール、有効期限、モード、送信範囲のすべてが呼び出し元のキーの内側に収まらなければ、呼び出しはコード beyond_caller_authority の OpenEmail::PermissionError を送出し、param がその軸を示します。一部のドメインやアドレスに絞り込まれたキーは、自身の送信範囲内のキーしか見えません。呼び出し元のキー自身に対する rotate は、client.me.rotate と同じく keys:write でもできます。
再認証はキーによる呼び出しには適用できないため、keys:manage は資格情報を生み出す資格情報です。キーを発行する自動化にだけ与え、そのキーにロール・送信範囲・有効期限を設定し、その行動がすべて記録される list_workspace_activity を見守ってください。
リクエストログとアクティビティ
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(" ")endlist_requests と list_activity は 1 つのキーを、list_workspace_requests と list_workspace_activity はすべてのキーまたは key_ids: で指定したキーを読みます。それぞれに、list_all_requests と iterate_requests のように、list_all_ と iterate_ の対になるメソッドがあります。since: と until: を Time、DateTime、または ISO 8601 の文字列で受け取り、リクエストを読むものは failed_only: も受け取ります。
until は Ruby の予約語ですが、until: は書かれたとおりにキーワード引数として使えます。since: より後でなければならず、そうでなければ呼び出しはコード invalid_parameter の OpenEmail::InvalidRequestError を送出します。