ドキュメント本文へスキップ
Python

API キー

`keys.list`、`list_all`、`iterate`、`get`、`create`、`update`、`delete`、`rotate`、`revoke`、そしてリクエストログとアクティビティの読み取り。

すべてのメソッド

keys.py
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 と rotate だけで、token で一度だけ返す。読み取りはすべて代わりに maskedKey を返す。update は enabled でキーを無効化・有効化でき、これは revoke の元に戻せる代替である。delete は失効済みのキーしか削除しない。読み取りには keys:read、変更には keys:manage が必要。

クライアントが create や rotate をリトライすることはない。応答が失われた後にリトライすると、2 つ目のキーが発行されたり、1 回目の試行で返されたシークレットが無効になったりするからである。update と revoke は、繰り返しても同じキーが残るので読み取りと同じようにリトライされるが、delete はリトライされない。

呼び出し元より広くはならない

キーが自分より広いキーを作ったり、そうしたキーに触れたりすることはない。スコープ、ロール、有効期限、モード、送信範囲のすべてが呼び出し元のキーの内側に収まらなければ、呼び出しは 403 beyond_caller_authority で拒否される。一部のドメインやアドレスに絞り込まれたキーは、自身の送信範囲内のキーしか見えない。呼び出し元のキー自身に対する rotate は、me.rotate() と同じく keys:write でもできる。

再認証はキーによる呼び出しには適用できないため、keys:manage は資格情報を生み出す資格情報である。キーを発行する自動化にだけ与え、そのキーにロール・送信範囲・有効期限を設定し、その行動がすべて記録される list_workspace_activity を見守ること。

リクエストログとアクティビティ

key_logs.py
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 と list_activity は 1 つのキーを、list_workspace_requests と list_workspace_activity はすべてのキーまたは key_ids で指定したキーを読み、それぞれに list_all_… と iterate_… がある。since と until を受け取り、リクエストを読むものは failed_only も受け取る。

since と until は datetime か ISO 8601 の文字列を受け取る。datetime は UTC で送られ、タイムゾーン情報のない naive なものは、まずローカル時刻として解釈される。

リファレンス