Перейти к документации
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)

create и rotate единственные вызовы, которые возвращают секрет, в token, один раз. Любое чтение вместо него возвращает maskedKey. update выключает и включает ключ через enabled, это обратимая альтернатива revoke, а delete убирает только уже отозванный ключ. Чтение требует keys:read, любое изменение keys:manage.

Никогда не шире вызывающего

Ключ никогда не создаёт и не достаёт ключ шире себя: скоупы, роль, срок действия, режим и область отправки должны лежать внутри вызывающего ключа, иначе вызов отклоняется с 403 beyond_caller_authority. Ключ, суженный до некоторых доменов или адресов, видит только ключи внутри своей области отправки. rotate для самого вызывающего ключа работает и с keys:write, как me.rotate().

Повторное подтверждение нельзя применить к вызову, сделанному ключом, поэтому 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)}

listRequests и listActivity читают один ключ, listWorkspaceRequests и listWorkspaceActivity читают все ключи или те, что названы в keyIds, и у каждого рядом есть listAll… и iterate…. Они принимают since и until, а методы журнала запросов ещё и failedOnly.