Claves de API
`keys.list`, `listAll`, `iterate`, `get`, `create`, `update`, `delete`, `rotate` y `revoke`, y los lectores del registro de solicitudes y de la actividad.
Todos los métodos
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 y rotate son las únicas llamadas que devuelven un secreto, en token, una vez. Cada lectura devuelve maskedKey en su lugar. update desactiva y activa una clave con enabled, la alternativa reversible a revoke, y delete solo quita una clave que ya se revocó. Leer necesita keys:read y cada cambio keys:manage.
Nunca más amplia que quien llama
Una clave nunca crea ni alcanza una clave más amplia que ella misma: ámbitos, rol, caducidad, modo y ámbito de envío tienen que quedar dentro de la clave que llama, o la llamada se rechaza con 403 beyond_caller_authority. Una clave acotada a algunos dominios o direcciones solo ve las claves dentro de su propio ámbito de envío. rotate sobre la clave que llama también funciona con keys:write, como me.rotate().
La verificación adicional no puede aplicarse a una llamada hecha con una clave, así que keys:manage es una credencial que crea credenciales. Dala solo a una automatización que emite claves, dale a esa clave un rol, un ámbito de envío y una caducidad, y vigila listWorkspaceActivity, donde todo lo que hace queda registrado a su nombre.
Registro de solicitudes y actividad
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 y listActivity leen una clave, listWorkspaceRequests y listWorkspaceActivity leen todas las claves o las que nombra keyIds, y cada una tiene un listAll… y un iterate… al lado. Aceptan since y until, y los lectores de solicitudes aceptan además failedOnly.