Utilidades y constantes
Lo que el paquete define además de los métodos del cliente.
Métodos estáticos
| Método | Qué 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.
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);| Constante | Qué contiene |
|---|---|
| OpenEmail.VERSION | La versión del paquete. |
| ApiScopes | El vocabulario de ámbitos, para una pantalla de creación de claves. |
| WebhookEvents, WebhookSignatureHeaders | Los eventos a los que se puede suscribir un endpoint, y los nombres de las cabeceras que lleva una entrega. |
| ErrorTypes | El vocabulario de errores que devuelve ApiException.type(). |
| PageLimits | El 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, RuleActions | El vocabulario con el que se construyen las condiciones y las acciones de una regla. |
| MessageEncryptionFormats | Los cinco sobres que puede nombrar la ingesta. Tres de ellos están sellados. |
| CredentialKinds, StepUpMethods, StepUpErrorCodes | Qué 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 *Sorts | Los órdenes en los que se puede ordenar una lista. |
| FormStatuses, BroadcastStatuses, SuppressionReasons y los demás conjuntos | Los valores que puede tomar un campo de un recurso. Cada conjunto se nombra según lo que contiene. |
| Languages.ALL | Todos 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.
| Clase | Lo que lleva |
|---|---|
| Page | items, hasMore y nextCursor, de cada list paginado. |
| PeoplePage | Lo mismo más seen, de contacts().listPeople. |
| TempMessagesPage | Lo mismo más expiresAt, de tempMail().listMessages. |
| AddressBookPage, AddressBook | unrestricted, addresses y domains, de addresses().list (con hasMore y nextCursor) y addresses().listAll. |
| BatchResult | items, sent y failed, de emails().sendBatch. |
| TemplateSends | items, total, page y pageSize, de templates().listSends. |
| PagedIterable | Un recorrido por todas las páginas, de cada iterate: un bucle for, stream() o toList(). |
| Body, RequestOptions | Lo 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
datade 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.