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

API キー

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

すべてのメソッド

keys.ts
const key = await openemail.keys.create({  name: 'Billing sender',  scopes: ['emails:send'],  domainAllowlist: ['billing.acme.com'],  expiresInMinutes: 60 * 24 * 90,}) await store(key.token) await openemail.keys.update(key.id, { enabled: false })const rotated = await openemail.keys.rotate(key.id)await openemail.keys.revoke(key.id, { reason: 'Replaced' })await openemail.keys.delete(key.id)

シークレットを返すのは createrotate だけで、token で一度だけ返す。読み取りはすべて代わりに maskedKey を返す。updateenabled でキーを無効化・有効化でき、これは revoke の元に戻せる代替である。delete は失効済みのキーしか削除しない。読み取りには keys:read、変更には keys:manage が必要。

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

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

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

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

key-logs.ts
const failures = await openemail.keys.listRequests('4c1b257a66287fd113bd89d0', {  failedOnly: true,  since: new Date(Date.now() - 24 * 60 * 60 * 1000),}) for await (const change of openemail.keys.iterateWorkspaceActivity()) {  console.log(change.keyName, change.type, change.actor?.label)}

listRequestslistActivity は 1 つのキーを、listWorkspaceRequestslistWorkspaceActivity はすべてのキーまたは keyIds で指定したキーを読み、それぞれに listAll…iterate… がある。sinceuntil を受け取り、リクエストを読むものは failedOnly も受け取る。