Aller à la documentation
SDK

Clés API

`keys.list`, `listAll`, `iterate`, `get`, `create`, `update`, `delete`, `rotate` et `revoke`, ainsi que les lecteurs du journal des requêtes et de l'activité.

Toutes les méthodes

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 et rotate sont les seuls appels qui renvoient un secret, dans token, une seule fois. Chaque lecture renvoie maskedKey à la place. update désactive et réactive une clé avec enabled, l'alternative réversible à revoke, et delete ne supprime qu'une clé déjà révoquée. Lire demande keys:read et chaque modification keys:manage.

Jamais plus large que l'appelant

Une clé ne crée ni n'atteint jamais une clé plus large qu'elle-même : portées, rôle, expiration, mode et portée d'envoi doivent tous rester à l'intérieur de la clé qui appelle, sinon l'appel est refusé avec 403 beyond_caller_authority. Une clé restreinte à certains domaines ou adresses ne voit que les clés à l'intérieur de sa propre portée d'envoi. rotate sur la clé qui appelle fonctionne aussi avec keys:write, comme me.rotate().

La vérification renforcée ne peut pas s'appliquer à un appel fait avec une clé, donc keys:manage est un identifiant qui fabrique des identifiants. Ne la donnez qu'à une automatisation qui émet des clés, donnez à cette clé un rôle, une portée d'envoi et une expiration, et surveillez listWorkspaceActivity, où tout ce qu'elle fait lui est attribué.

Journal des requêtes et activité

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 et listActivity lisent une clé, listWorkspaceRequests et listWorkspaceActivity lisent toutes les clés ou celles que nomme keyIds, et chacune a un listAll… et un iterate… à côté. Elles acceptent since et until, et les lecteurs de requêtes acceptent aussi failedOnly.