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
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é
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.