Ir a la documentación
Java

Utilidades y constantes

Lo que el paquete define además de los métodos del cliente.

Métodos estáticos

MétodoQué es
new OpenEmail(), OpenEmail.builder()Un cliente. Ambos leen el entorno para todo lo que omitas.
OpenEmail.createTempMail()Un cliente de buzón desechable que no lleva ninguna clave de API.
OpenEmail.verifyWebhookSignature()Comprueba la firma de una entrega en tiempo constante, con una ventana de cinco minutos que una Duration cambia, y devuelve el evento.
OpenEmail.toBase64()Texto en base64 para los bytes de un adjunto.
OpenEmail.isApiKey()Si un valor tiene la forma oe_live_ u oe_test_. Es una comprobación de forma, no una prueba de que la clave siga funcionando.
OpenEmail.isAccessToken()Si un valor tiene la forma de un token de acceso OAuth: de 1 a 512 caracteres, sin empezar por oe_.
OpenEmail.isSealed()Si el cuerpo de un mensaje es texto cifrado. Es false para los dos formatos firmados, cuyos cuerpos llegaron en claro.
OpenEmail.resolveLanguage(), OpenEmail.languageByCode(), OpenEmail.isRtlLanguage()Las búsquedas que necesita un selector de idioma, sobre la tabla Languages.ALL incluida.
client.raw().request()Llama a una ruta que todavía no envuelve ningún método, con la credencial y la política de reintentos del cliente.

Constantes

Cada conjunto de valores que exporta el SDK de TypeScript es una clase final en uk.openemail.constants, con una constante por miembro bajo los mismos nombres, así que WebhookEvents.EMAIL_DELIVERED es email.delivered. values() devuelve el conjunto entero, que es también la forma de comprobar un valor que vino de fuera.

Constants.java
List<String> events = WebhookEvents.values();List<String> scopes = List.of(ApiScopes.EMAILS_SEND, ApiScopes.THREADS_READ);boolean known = events.contains("email.delivered"); System.out.println(events.size() + " " + String.join(",", scopes) + " " + PageLimits.MAX_LIMIT + " " + known);
ConstanteQué contiene
OpenEmail.VERSIONLa versión del paquete.
ApiScopesEl vocabulario de ámbitos, para una pantalla de creación de claves.
WebhookEvents, WebhookSignatureHeadersLos eventos a los que se puede suscribir un endpoint, y los nombres de las cabeceras que lleva una entrega.
ErrorTypesEl vocabulario de errores que devuelve ApiException.type().
PageLimitsEl limit máximo y el predeterminado en la mayoría de las listas paginadas, MAX_LIMIT y DEFAULT_LIMIT: 100 y 25. Algunas listas admiten más, y la referencia de cada método lo indica.
RuleFields, RuleOperators, RuleActionsEl vocabulario con el que se construyen las condiciones y las acciones de una regla.
MessageEncryptionFormatsLos cinco sobres que puede nombrar la ingesta. Tres de ellos están sellados.
CredentialKinds, StepUpMethods, StepUpErrorCodesQué credencial describen me().get y me().ping, cómo se comprueba un código de verificación y los códigos con los que puede fallar una verificación.
ThreadSorts, PeopleSorts, FileSorts y los demás *SortsLos órdenes en los que se puede ordenar una lista.
FormStatuses, BroadcastStatuses, SuppressionReasons y los demás conjuntosLos valores que puede tomar un campo de un recurso. Cada conjunto se nombra según lo que contiene.
Languages.ALLTodos los idiomas que acepta un envío traducido o una vista previa, con su código, sus nombres y su dirección de escritura.

Objetos

Una respuesta es el JSON decodificado como un Map<String, Object>. El paquete construye un tipo propio solo allí donde da forma a la respuesta. Cada uno es un record inmutable en uk.openemail.result, y un bucle for recorre sus filas.

ClaseLo que lleva
Pageitems, hasMore y nextCursor, de cada list paginado.
PeoplePageLo mismo más seen, de contacts().listPeople.
TempMessagesPageLo mismo más expiresAt, de tempMail().listMessages.
AddressBookPage, AddressBookunrestricted, addresses y domains, de addresses().list (con hasMore y nextCursor) y addresses().listAll.
BatchResultitems, sent y failed, de emails().sendBatch.
TemplateSendsitems, total, page y pageSize, de templates().listSends.
PagedIterableUn recorrido por todas las páginas, de cada iterate: un bucle for, stream() o toList().
Body, RequestOptionsLo que recibe una llamada: un cuerpo de petición que conserva su orden y admite valores null, y las opciones de una llamada.

Toda excepción que lanza el paquete es una OpenEmailException: ApiException y sus subclases, NetworkException y WebhookSignatureException. Un error en la propia llamada lanza IllegalArgumentException antes de enviar nada.

Lo que deliberadamente no hace

  • No valida ningún cuerpo de solicitud. El esquema del servidor es la única copia de las reglas, y una segunda copia aquí acabaría rechazando una dirección que un servidor más reciente acepta, en una versión que alguien fijó hace dos años.
  • Solo cambia la forma de una respuesta de una manera: la lista data de una colección se saca de su envoltorio a uno de los tipos de arriba. Cualquier otra respuesta vuelve tal como la envió la API, con las claves camelCase de la API.
  • No tiene métodos asíncronos. Una llamada bloquea su hilo hasta que llega la respuesta, lo que cuesta poco en un hilo virtual.