Claves, miembros y roles
Gestiona las claves de API y lee lo que hicieron, invita y gestiona miembros, escribe roles, comprueba la credencial que usas y crea bandejas desechables.
Descripción general
Estos comandos deciden quién y qué puede llegar al espacio de trabajo. openemail keys gestiona las claves de API y lee lo que hizo cada una, openemail members gestiona las personas del espacio de trabajo y sus invitaciones, y openemail roles define lo que puede hacer un miembro o una clave. openemail me describe la clave o el inicio de sesión con el que llamas, y openemail languages lista los idiomas que acepta un envío traducido. Las bandejas desechables no necesitan ningún inicio de sesión: openemail temp es la forma cotidiana de usar una, y openemail temp-mail es cada llamada de la API que hay detrás. openemail api llega a cualquier endpoint al que no lleguen los demás comandos.
- Un comando de clave acepta el id de la clave, los 24 caracteres hexadecimales que van después de
oe_live_, tal como lo muestrakeys list. Un comando de miembro acepta el id de cuenta,userIdenmembers list, nunca una dirección de correo. Un comando de rol acepta un idrole_deroles list, porque los roles no se buscan por nombre. - Los espacios de nombres responden también a
key,member,role,languageytempMail. Funcionan los alias de verbo habituales, comols,show,new,edityrm. Enmembers, cuyos verbos sonaddyremove,newycreatellevan aadd, yrm,delydeletellevan aremove. openemail <command> --helplista cada argumento y opción con su tipo, el scope que necesita la llamada, su método y ruta, y lo que devuelve. Añade--jsonpara obtener la misma página como datos.
Todos los comandos
| Comando | Qué hace |
|---|---|
| openemail me get | Describir la clave de API o el inicio de sesión con el navegador con el que llamas: sus scopes, el rol que la limita, su espacio de trabajo y desde qué direcciones puede enviar. No necesita scope |
| openemail me ping | Comprobar que la credencial se autentica, como comprobación de estado. No necesita scope |
| openemail me rotate | Dar a la clave de API con la que llamas un secreto nuevo, que se muestra una vez. Pide que confirmes |
| openemail keys list | Listar las claves de API del espacio de trabajo, de la más reciente a la más antigua, con su estado, scopes, rol, alcance de envío y último uso. Nunca un secreto |
| openemail keys get <id> | Leer una clave, sin su secreto |
| openemail keys create --name <value> | Crear una clave y recibir su secreto una vez, en token |
| openemail keys update <id> | Renombrar una clave, sustituir sus scopes o su alcance de envío, o desactivarla y activarla con --no-enabled y --enabled |
| openemail keys delete <id> | Quitar de la lista una clave revocada, conservando su historial. Pide que confirmes |
| openemail keys rotate <id> | Dar a una clave un secreto nuevo, que se muestra una vez, y detener el anterior al momento. Pide que confirmes |
| openemail keys revoke <id> | Revocar una clave para siempre, con un --reason opcional. Pide que confirmes |
| openemail keys list-requests <id> | Leer el registro de solicitudes de una clave: método, ruta, estado, código de error, duración, IP y agente de usuario |
| openemail keys list-activity <id> | Leer lo que le pasó a una clave: creada, cambiada, rotada, desactivada y activada, revocada, eliminada, y cada llamada rechazada |
| openemail keys list-workspace-requests | Leer el registro de solicitudes de cada clave que puedes ver, o de las que nombra --key-ids |
| openemail keys list-workspace-activity | Leer lo que les pasó a todas las claves que puedes ver, o a las que nombra --key-ids |
| openemail roles list | Listar los roles del espacio de trabajo, primero los predefinidos, con cuántos miembros y claves tiene cada uno |
| openemail roles get <id> | Leer un rol con sus permisos y sus recuentos de uso en directo |
| openemail roles create --name <value> --permissions <a,b> | Crear un rol personalizado, con una --description opcional |
| openemail roles update <id> | Renombrar un rol, cambiar su descripción o sustituir su lista de permisos entera |
| openemail roles delete <id> | Eliminar un rol y pasar a quien lo tenga al rol de --reassign-to. Pide que confirmes |
| openemail roles list-permissions | Listar el vocabulario de permisos, con una etiqueta, un grupo y si una clave puede tener cada uno |
| openemail members list | Listar a todas las personas con acceso, primero el propietario, con su rol, sus permisos y las direcciones y los dominios que puede usar cada una |
| openemail members get <user-id> | Leer un miembro por id de cuenta |
| openemail members add --email <value> --role-id <value> | Invitar a alguien con un rol, y con direcciones o dominios enteros mediante --address-ids, --domain-ids y --access |
| openemail members update <user-id> --role-id <value> | Pasar a un miembro a otro rol. Sus concesiones de direcciones y dominios se quedan como están |
| openemail members remove <user-id> | Sacar a alguien del espacio de trabajo con todas las concesiones de direcciones que tenga. Pide que confirmes |
| openemail members grant-address <user-id> --address-id <value> | Dar a un miembro una dirección, o cambiar su --access a ella |
| openemail members revoke-address <user-id> <address-id> | Retirar una dirección a un miembro. Pide que confirmes |
| openemail members list-invitations | Listar las invitaciones que nadie ha aceptado todavía, incluidas las caducadas |
| openemail members revoke-invitation <invitation-id> | Retirar una invitación, para que su enlace deje de funcionar. Pide que confirmes |
| openemail members resend-invitation <invitation-id> | Volver a enviar una invitación, con un enlace nuevo y 14 días más |
| openemail languages list | Listar cada idioma que acepta un envío traducido, en el orden en que debería mostrarlos un selector. No necesita scope |
| openemail temp new [--name <local-part>] [--domain <domain>] [--ttl <minutes>] | Crear una bandeja desechable y mostrar solo su dirección. No necesita inicio de sesión |
| openemail temp list | Listar las bandejas desechables que creó esta CLI, sin consultar la red |
| openemail temp read [inbox] [message-id] | Listar el correo de una bandeja, o mostrar un mensaje como texto legible |
| openemail temp watch [inbox] [--first] | Mostrar cada mensaje nuevo a medida que llega, comprobando cada 3 segundos |
| openemail temp delete [inbox] [--yes] | Eliminar ahora una bandeja y su correo, y olvidar su token. Pide que confirmes |
| openemail temp-mail list-domains | Listar los dominios en los que se puede crear una bandeja desechable. No necesita credencial |
| openemail temp-mail create | Crear una bandeja desechable y su token de bandeja, que la CLI guarda. No necesita credencial |
| openemail temp-mail get <inbox-id> | Leer la caducidad de una bandeja, las prórrogas que le quedan y el número de mensajes |
| openemail temp-mail extend <inbox-id> | Retrasar la caducidad hasta una hora más, dentro de las 24 horas siguientes a la creación de la bandeja |
| openemail temp-mail delete <inbox-id> | Destruir ahora una bandeja y su correo. Pide que confirmes |
| openemail temp-mail list-messages <inbox-id> | Listar una página de los mensajes, del más reciente al más antiguo, cada uno con un breve fragmento en texto plano |
| openemail temp-mail get-message <inbox-id> <message-id> | Leer un mensaje con su cuerpo guardado y marcarlo como visto |
| openemail temp-mail delete-message <inbox-id> <message-id> | Eliminar un mensaje con su cuerpo y sus adjuntos. Pide que confirmes |
| openemail temp-mail list-attachments <inbox-id> <message-id> | Leer los adjuntos de un mensaje, con sus bytes en base64 |
| openemail api <method> <path> | Llamar a cualquier endpoint REST con tu inicio de sesión, sus códigos de verificación y sus confirmaciones |
Cada opción está en la ayuda de su comando, por ejemplo openemail keys create --help, openemail members add --help u openemail temp new --help.
Claves de API
Leer claves necesita keys:read, y cada cambio necesita keys:manage. A un inicio de sesión con el navegador nunca se le conceden keys:write ni keys:manage, así que crear, cambiar, rotar, revocar y eliminar claves requiere una clave de API que tenga keys:manage, o la app web (openemail open api-keys). Un inicio de sesión con el navegador con keys:read solo lee claves para el propietario del espacio de trabajo, y el inicio de sesión de un miembro se rechaza con 403 owner_only.
keys create,keys rotateyme rotatemuestran el secreto de la clave, entoken, una vez, y luego la CLI avisa de que no se volverá a mostrar. Cada lectura muestramaskedKeyen su lugar.- Si se omiten, una clave nueva tiene solo
emails:send, y toma el rol, el alcance de envío y la caducidad de la clave que la crea.--domain-allowlisty--address-allowlistdefinen desde qué direcciones puede enviar, y--expires-in-minutesacepta de 5 a 5.256.000, que son diez años. - Una clave nunca crea ni alcanza una clave más amplia que ella misma. Los scopes, el rol, la caducidad, el modo y el alcance de envío tienen que caber dentro de la clave que llama, o la llamada se rechaza con 403
beyond_caller_authority, yparamnombra lo que era demasiado amplio. Una clave limitada a algunos dominios o direcciones solo ve las claves dentro de su propio alcance de envío, y cualquier otra da 404. keys updatesustituye lo que envías:--scopes,--address-allowlisty--domain-allowlistaceptan cada uno la lista nueva entera, y una opción que omitas se queda como estaba.--no-enableddesactiva una clave, así que cada llamada con ella se rechaza coninactive_api_key, y--enabledla restaura exactamente. Así se detiene una clave de una forma que puedes deshacer.keys revokees para siempre: la clave no se puede volver a activar, rotar ni cambiar.keys deletesolo quita una clave revocada, y cualquier otra se rechaza con 409not_revoked. El registro de solicitudes y la actividad de una clave eliminada se quedan, bajo Clave eliminada.keys rotateno tiene periodo de solapamiento, así que el secreto anterior deja de funcionar en cuanto vuelve el nuevo. Cuando la clave es la que usa tu perfil guardado, la CLI guarda el secreto nuevo en ese perfil, para que siga funcionando. Una clave deOPENEMAIL_API_KEYo--api-keyno se puede guardar, así que la CLI te indica que guardes el token nuevo donde tuvieras la clave anterior.
El registro de solicitudes guarda cada llamada que hizo una clave: método, ruta, estado, código de error, duración, IP y agente de usuario, nunca un cuerpo ni una cadena de consulta. No se purga nada, así que llega hasta la primera llamada de una clave, y las llamadas hechas con un inicio de sesión con el navegador no están en él. El registro de actividad guarda cada cambio de una clave, y cada llamada que presentó la clave y se rechazó, como auth_failed, con quién hizo cada cambio en actor.
list-requestsylist-activityleen una clave.list-workspace-requestsylist-workspace-activityleen cada clave que puedes ver, o hasta 50 que nombre--key-ids, incluidas las claves eliminadas.--sincey--untilacotan un periodo y aceptan una hora ISO 8601 como2026-09-01T00:00:00Z.--failed-onlydeja las llamadas respondidas con un estado 400 o superior.
Tu credencial, e idiomas
openemail me get es el primer comando que hay que ejecutar cuando se rechaza una llamada. No necesita scope, así que cualquier clave o inicio de sesión válidos pueden describirse a sí mismos.
scopeses lo que la credencial puede hacer ahora mismo: los scopes con los que se creó, recortados por el rol con el que se emitió, calculados en cada solicitud.grantedScopeses con lo que se creó, yroleIdnombra el rol. Un scope que está engrantedScopesy falta enscopeslo quitó el rol. Esa es la razón habitual de un 403insufficient_scopeen una clave que parece tener el scope, y la solución es cambiar el rol en lugar de crear otra clave.domainAllowlistyaddressAllowlistdicen desde qué direcciones puede enviar. Ambos a null significa cualquier dirección que tenga el espacio de trabajo.- Con un inicio de sesión con el navegador describe el inicio de sesión:
objectesoauth_token,clientIdnombra la app conectada de esta CLI, yexpiresAtes cuándo termina tu aprobación, o null cuando no termina nunca. me pingrespondeok: truecon el mismo detalle de scopes pero sin las listas de permitidos, lo que va bien para una comprobación de estado. Una clave revocada, caducada, desactivada o mal escrita falla con un 401 y el código de salida3.me rotateda a la clave con la que llamas un secreto nuevo. Necesitakeys:write, que un inicio de sesión con el navegador nunca tiene, así que requiere una clave de API. Todo lo demás de la clave se queda, el secreto anterior deja de funcionar al momento, y un perfil guardado recibe el nuevo, como conkeys rotate. Una respuesta perdida puede dejar la clave con un secreto que nadie vio, y entonces necesita uno nuevo desde la app web.openemail whoamimuestra la misma respuesta con formato para personas.
openemail languages list muestra la tabla de idiomas entera en una sola respuesta, unas doscientas filas, con el código de cada idioma, su nombre en inglés, su nombre propio, su bandera y si se escribe de derecha a izquierda. El código, el nombre en inglés o el nombre propio funcionan como destino de un envío traducido. Necesita un inicio de sesión pero ningún scope. openemail ai languages muestra la misma tabla con una opción --search, y sin sesión iniciada muestra la tabla incluida en la CLI.
Miembros y roles
Un miembro tiene dos cosas que nunca se mezclan. Su rol dice lo que puede hacer, y sus concesiones de direcciones y dominios dicen con qué correo puede hacerlo, cada concesión con su propio acceso: member lee y envía, y viewer solo lee. Un envío necesita las dos cosas, así que un rol con emails:send y una concesión viewer sobre una dirección sigue sin poder enviar desde ella. Un dominio entero cubre todas sus direcciones, incluidas las que se creen después.
members listpone primero al propietario del espacio de trabajo, marcado conisOwner, así que deja fuera esa fila al contar plazas. El propietario tiene todos los permisos y no se le puede invitar, cambiar ni quitar, y tampoco se puede volver a invitar a nadie que ya esté en el espacio de trabajo: ambos casos dan 422member_is_owner.- Las personas que tienen concesiones de direcciones pero a las que nunca se les dio un rol vuelven con
implied: true, y su rol se deduce de sus concesiones.members updateles da uno real. members addenvía una invitación, incluso a alguien que ya tiene cuenta. No se concede nada hasta que acepta, y entonces exactamente el rol, las direcciones y los dominios que lleva. Volver a invitar a la misma dirección en diez minutos da 409invitation_too_soon, y después de eso actualiza la invitación pendiente en lugar de enviar una segunda.resend-invitationenvía un enlace nuevo válido durante 14 días más y retira el anterior, lo que también renueva una invitación caducada.revoke-invitationretira una, y una invitación que ya se aceptó da 409invitation_accepted, así que quita al miembro en su lugar.members updatecambia el rol y nada más.grant-addressda una dirección o cambia el acceso a ella, así que volver a ejecutarlo con otro--accesscambia la concesión en lugar de añadir una segunda.revoke-addressretira una dirección y deja las demás. Revocar la última concesión de un miembro deducido lo quita del espacio de trabajo.members removetermina el acceso de alguien al espacio de trabajo, su pertenencia y cada concesión, e informa enaddressesRevokedde cuántas concesiones de direcciones se retiraron. Su cuenta y el correo que envió no se tocan.
Un rol es también un techo para las claves de API emitidas con él. Lo que puede hacer una clave son sus propios scopes recortados por los permisos de su rol, calculados en cada solicitud.
roles listmuestra primero los roles predefinidos, en el orden Owner, Admin, Member, Viewer, Developer y Billing, y después los roles personalizados por nombre. Un espacio de trabajo tiene hasta 24 roles personalizados, y a partir de ahíroles createda 422role_limit_reached.- Un rol guarda los permisos que implican sus permisos, así que
templates:writeguarda tambiéntemplates:read, yroles:writetraeroles:readymembers:read. Lee la lista en la respuesta en lugar de suponerla. roles update --permissionssustituye la lista entera, así que lee el rol, cambia la lista y envíala entera.--description nullborra la nota. Un cambio se aplica en la siguiente llamada de cada miembro y clave que tenga el rol.- Todos los roles salvo Owner se pueden renombrar, reescribir y eliminar, incluidos los predefinidos, y un rol predefinido eliminado no vuelve. El rol de propietario responde a una edición con 409
role_immutabley a una eliminación con 409role_undeletable. - Mientras algún miembro, clave de API o invitación pendiente tenga un rol,
roles deletenecesita--reassign-tocon el rol que los recibe, o se rechaza con 409role_in_use. Las claves revocadas siguen apuntando a su rol, así que un rol cuyo recuento deapiKeyses 0 todavía puede necesitarlo. La respuesta informa de las personasreassignedy de las claveskeysReassigned. roles list-permissionslista el vocabulario entero con una etiqueta y un grupo para cada uno. Unos pocos, comobilling:writeyworkspace:manage, vuelven conscope: false: un rol puede tenerlos, pero ninguna clave.
Una clave que tiene roles:write puede editar el rol que la limita y ampliarse en su siguiente llamada, así que no des ese scope a claves que solo necesitan leer. Con un inicio de sesión con el navegador, members:write y roles:write solo se conceden cuando la aprobación cubre todo el espacio de trabajo y no algunos dominios o direcciones.
Bandejas desechables
Una bandeja desechable no necesita cuenta ni inicio de sesión. Se accede a ella con su propio token de bandeja, que empieza por oe_inbox_ y vuelve una sola vez, cuando se crea la bandeja. Usa openemail temp en el día a día, y openemail temp-mail cuando necesites un campo o un paso que temp no muestra, como las prórrogas que quedan, una prórroga o los bytes de un adjunto.
- Ambos guardan el token en
~/.openemail/temp-mail.json, que solo tú puedes leer.temp newytemp-mail createlo guardan,temp listmuestra las bandejas creadas de cualquiera de las dos formas, y ambas eliminaciones lo olvidan. Una bandeja guardada se puede nombrar por su dirección siempre que un comando pida su id. - Para una bandeja que no creó esta CLI, pasa el token con
--inbox-token. Sin token guardado ni pasado, el comando se detiene con el código de salida3antes de enviar nada. - Los dos comandos de creación nombran sus opciones de forma distinta:
temp newacepta--name,--domainy--ttl, ytemp-mail createacepta--local-part,--domainy--ttl-minutes. Una parte local tiene de 3 a 32 letras, dígitos, puntos, guiones o guiones bajos, empieza y termina con una letra o un dígito, y nombres comopostmasterse rechazan. La cesión dura de 1 a 1440 minutos, 60 por defecto. - Cada dirección IP puede crear 6 bandejas por hora y 30 al día, y la siguiente da 429
too_many_inboxes, código de salida8. Prorrogar una bandeja que ya tienes no cuenta, así quetemp-mail extendes la respuesta a ese límite. temp-mail extendañade hasta una hora, nunca más allá de 24 horas después de crear la bandeja, y como mucho 23 veces. LeeextensionsLeften la respuesta. En 0, da 409extension_limitpara siempre.temp-mail list-messageslee de 1 a 50 mensajes por página, 50 por defecto, cada uno con unsnippeten texto plano de hasta 400 caracteres que a menudo contiene un código de un solo uso. No se pierde nada más allá de una página, y--allrecorre todas las páginas.- Leer un mensaje con
temp read,temp-mail get-messageotemp-mail list-attachmentslo marca como visto. Un cuerpo de más de 2 MB se recorta, como indicatruncated, y un adjunto de más de 8 MB nunca se guardó, así que sucontentes null. - Eliminar una bandeja elimina su correo al momento, pero la dirección queda reservada hasta 7 días después de cuando habría terminado su cesión, y volver a pedirla antes da 409
address_taken.
El correo de una bandeja desechable viene de desconocidos, a una dirección que cualquiera podría nombrar. Su remitente nunca se verifica y no se analiza nada de su contenido, así que trata sus enlaces, su HTML y sus adjuntos con cuidado.
Cualquier endpoint, y el espacio de nombres security
openemail api <method> <path> envía una solicitud por el mismo transporte que cualquier otro comando, así que se aplican tu perfil o tu clave, la renovación del token, los códigos de verificación y las confirmaciones. Una ruta sola es un GET, y una respuesta JSON se muestra con formato. openemail api /keys/self es la llamada que hay detrás de me get.
-d,--datatoma el cuerpo como JSON en línea, desde un archivo con@patho desde stdin con-.-q,--queryy-H,--headertomankey=valuey se pueden repetir, y-o,--outguarda la respuesta tal cual en un archivo.- Un
DELETE, y cualquier llamada que un comando de recurso confirmaría, como revocar o rotar una clave, pide primero que confirmes, y sin supervisión necesita--yes. - Una solicitud fallida muestra el error de la API y sale con el código correspondiente.
El espacio de nombres security no aparece en openemail --help, porque lo maneja openemail verify. Sus verbos step-up-status, begin-step-up y verify-step-up son las llamadas que hace verify: verify --status lee el estado, y verify pide un código, te lo solicita y lo comprueba. Existen para un inicio de sesión con el navegador. Con una clave de API cada uno se rechaza con 400 step_up_not_applicable, y openemail verify dice que una clave nunca necesita código.
Ejemplos
openemail keys create --name 'Billing sender' --scopes emails:send \ --domain-allowlist billing.acme.com --expires-in-minutes 129600 --json \ | jq -r .token | openemail login --with-token --profile billingopenemail whoami --profile billingEjecútalo con una clave de API que tenga keys:manage, por ejemplo mediante OPENEMAIL_API_KEY. El secreto pasa de la respuesta directamente a un perfil nuevo, así que nunca aparece en pantalla ni en un archivo. La clave solo puede enviar desde billing.acme.com, y caduca en 90 días.
openemail keys list --all | jq -r 'select(.status != "active") | [.name, .status, .lastUsedAt] | @tsv'openemail keys list-workspace-requests --failed-only --since 2026-09-26T00:00:00Z --all \ | jq -r '[.createdAt, .keyName, .status, .errorCode, .method, .path] | @tsv'id=4c1b257a66287fd113bd89d0openemail keys update "$id" --no-enabledopenemail keys list-activity "$id" --since 2026-09-27T00:00:00Z --all | jq -r 'select(.type == "auth_failed") | .createdAt'openemail keys revoke "$id" --reason 'Contractor offboarded' --yesopenemail keys delete "$id" --yesDesactivar primero la clave se puede deshacer con --enabled. Cada llamada que aún la presente se rechaza y aparece en su actividad como auth_failed, lo que te dice qué sigue dependiendo de ella. Revocar no se puede deshacer, y solo se puede eliminar una clave revocada.
openemail roles list-permissions --json | jq -r '.[] | [.group, .id, .label] | @tsv'role=$(openemail roles create --name Support --permissions threads:write,emails:send,templates:read \ --description 'Answers help@ and nothing else.' --json | jq -r .id)openemail members add --email [email protected] --role-id "$role" \ --domain-ids 93542ff8-2baa-4f2f-841d-5ceaa074ab0d --access memberopenemail members list-invitationsEl rol vuelve con threads:read y emails:read también, porque los permisos que nombra los implican. Sam recibe el rol y el dominio entero solo cuando acepta. Con un inicio de sesión con el navegador, members add pide primero un código de verificación.
old=role_8b1f4c2e9a7d3b60e5f1a2c4new=role_2c7e9a1f4b8d3e60c5a7f1b9user=$(openemail members list --all | jq -r 'select(.email == "[email protected]") | .userId')openemail members update "$user" --role-id "$new"openemail roles get "$old" --json | jq '{name, members, apiKeys}'openemail roles delete "$old" --reassign-to "$new" --dry-runopenemail roles delete "$old" --reassign-to "$new" --yesmembers y apiKeys se cuentan cuando los pides, así que muestran lo que moverá la eliminación. La simulación muestra el DELETE con reassignTo en su consulta sin enviarlo. Con un inicio de sesión con el navegador, la actualización y la eliminación piden cada una un código de verificación, así que ejecuta primero openemail verify cuando lo haga un script.
address=$(openemail temp new --ttl 15)openemail send --from [email protected] --to "$address" --subject 'Delivery check' --text 'Your code is 482913' --yesopenemail temp watch "$address" --first --json | jq -r .snippet | grep -oE '[0-9]{6}'openemail temp delete "$address" --yestemp new muestra solo la dirección, así que cabe en una variable de shell, y temp watch --first se detiene en el primer mensaje. Apunta un formulario de registro a la dirección en lugar de openemail send para atrapar su código de confirmación de la misma forma.
Scopes, confirmaciones y errores
| Scope | Comandos |
|---|---|
| keys:read | keys list, get, list-requests, list-activity, list-workspace-requests, list-workspace-activity |
| keys:manage | keys create, update, delete, rotate, revoke |
| keys:write | me rotate |
| roles:read | roles list, get, list-permissions |
| roles:write | roles create, update, delete |
| members:read | members list, get, list-invitations |
| members:write | members add, update, remove, grant-address, revoke-address, revoke-invitation, resend-invitation |
| Ninguno, con cualquier clave o inicio de sesión | me get, me ping, languages list |
| Ninguno, y sin inicio de sesión | temp, temp-mail list-domains y create. Los demás comandos de temp-mail aceptan el token de bandeja |
- Un inicio de sesión o una clave sin el scope se detiene con el código de salida
4, nombra el scope que falta y explica cómo obtenerlo. - Estos piden que confirmes:
keys delete,rotateyrevoke,me rotate,roles delete,members remove,revoke-addressyrevoke-invitation,temp delete, ytemp-mail deleteydelete-message. Responder que no sale con el código10y no cambia nada. Sin supervisión y sin--yes, se detienen con el código de salida2antes de enviar nada. - Con un inicio de sesión con el navegador,
roles updateyroles delete, ymembers add,update,remove,grant-addressyrevoke-address, también piden un código de verificación, salvo que este inicio de sesión haya verificado uno en los últimos 60 minutos.--yesnunca se lo salta, y sin supervisión nadie puede escribirlo, así que el comando se detiene con el código de salida4. Ejecuta primeroopenemail verify. A una clave de API nunca se le pide. --dry-runmuestra la solicitud que enviaría un cambio, con su cuerpo, y sale con el código0sin enviarla ni pedirte que confirmes.- Una lista lee una página.
--limitacepta de 1 a 100 y el servidor envía 25 cuando se omite, salvo entemp-mail list-messages, que acepta de 1 a 50 y envía 50.--cursoracepta elnextCursorde la página anterior.--alllee todas las páginas,--max <n>se detiene tras esa cantidad de elementos, y--ndjson, o--allen un pipe, muestra un objeto JSON por línea. Con--json, una lista muestra un único documento{ items, hasMore, nextCursor }. roles list-permissions,languages list,temp-mail list-domainsytemp-mail list-attachmentslo devuelven todo de una vez, como un array simple, sin páginas.- Un rechazo sale con el código de su estado:
3para un 401, como una clave revocada,4para un 403, comobeyond_caller_authorityuowner_only,5para un 404,6para un 409, comonot_revoked,role_in_useoinvitation_too_soon,7para un 400 o un 422, comomember_is_ownerorole_limit_reached, y8para un 429, comotoo_many_inboxes. - Un cambio que haría algo dos veces nunca se reintenta tras un fallo de red:
keys createyrotate,me rotate,roles createydelete,members add,remove,revoke-addressyresend-invitation, ytemp-mail create,extend,deleteydelete-message. Comprueba antes de volver a ejecutar uno. Las lecturas, y los cambios que tienen el mismo efecto dos veces, comokeys update,keys revoke,roles update,members updateygrant-address, se reintentan solos.