Tipos y utilidades
Qué más exporta el paquete.
Exportaciones en tiempo de ejecución
| Exportación | Qué es |
|---|---|
| `init`, `openemail` | Configura el cliente compartido una vez y luego importa openemail donde quieras. Se construye solo a partir de OPENEMAIL_API_KEY si init nunca se ejecutó. |
| `getClient`, `resetClient` | El propio cliente compartido, y una forma de descartarlo para que la siguiente llamada construya uno nuevo, que es lo que necesita una prueba entre casos. |
| `createOpenEmail`, `createClient`, `OpenEmail` | Un cliente aparte. createOpenEmail lee el entorno para todo lo que omitas (createClient es la misma función), y new OpenEmail (que además es la exportación por defecto) solo toma lo que le pasas. |
| `createTempMail` | Un cliente de bandejas desechables que no lleva ninguna clave de API, y la única parte del paquete que funciona en un navegador. |
| `OpenEmailApiError`, `OpenEmailNetworkError` | Las dos clases de error. |
| `verifyWebhookSignature` | De tiempo constante, con una ventana de repetición. Se resuelve con el payload ya analizado y lanza una excepción ante cualquier fallo. |
| `toBase64` | Por fragmentos, para los bytes de los adjuntos. |
| `isApiKey` | Si una cadena tiene la forma oe_live_ u oe_test_. Es una comprobación de forma, no una prueba de que la clave siga funcionando. |
| `isSealed`, `MESSAGE_ENCRYPTION_FORMATS` | Si el cuerpo de un mensaje está cifrado, y los cinco sobres que puede nombrar la ingesta. isSealed es false para los dos formatos SIGNED, cuyos cuerpos llegaron en claro, y por eso se incluye en lugar de dejar que quien llama lo deduzca de la unión. |
| `LANGUAGES`, `resolveLanguage`, `languageByCode`, `isRtlLanguage` | La tabla de idiomas incluida, y las búsquedas que necesita un selector de idioma. |
| `API_SCOPES` | El vocabulario de ámbitos, para una pantalla de creación de claves. |
| `WEBHOOK_EVENTS`, `WEBHOOK_SIGNATURE_HEADERS` | Los eventos a los que se puede suscribir un endpoint, y los nombres de las cabeceras que lleva una entrega. |
| `RULE_FIELDS`, `RULE_OPERATORS`, `RULE_ACTIONS` | El vocabulario con el que se construyen las condiciones y las acciones de una regla. |
| `PAGE_LIMITS` | El limit máximo y el predeterminado en una lista paginada: 100 y 25. |
| `ERROR_TYPES` | El vocabulario de errores congelado. |
| `VERSION` | La versión del paquete. |
Tipos
Cada petición y cada respuesta tiene uno, y se exportan desde la raíz del paquete. No hay importaciones profundas, así que la disposición de los archivos sigue siendo un detalle de implementación que puede cambiar sin una versión mayor. …Resource es lo que devuelve la API; …Create, …Patch, …Input y …Send son lo que le pasas, y …Options contiene los filtros y las opciones por llamada.
- Cliente:
ClientOptions,TempMailOptions,TransportOptions,RequestOptions,RequestScope,SendScope,InboxScope,ListOptions,Page,ApiKeyMode,FetchLike. - Errores:
ErrorType,ApiErrorPayload,ApiErrorProps. - Correos:
EmailSend,EmailListOptions,EmailTranslate,EmailResource,SentEmailResource,EmailRecipientResource,EmailEventResource,EmailStatus,EmailSource,EmailTransport,EmailTrackingSummary,EmailTranslationResource,TranslationResource,RecipientStatus,BatchItemResource,BatchResultResource. - Plantillas:
TemplateCreate,TemplatePatch,TemplateContent,TemplateListOptions,TemplatePreviewInput,TemplateSend,TemplateResource,TemplateDetailResource,TemplateVersionResource,TemplatePreviewResource,SentTemplateEmailResource,DeletedTemplateResource,TemplateEngine,TemplateProp,TemplateSlot,TemplateStatus,TemplateValueKind. - Seguimiento:
TrackingListOptions,TrackingStatsOptions,TrackingHitOptions,TrackingResource,TrackingSummary,TrackingRecipientResource,TrackingLinkResource,TrackingOpenResource,TrackingClickResource,TrackingStatsResource,TrackingGrain. - Conversaciones y borradores:
ThreadListOptions,ThreadPatch,ThreadResource,ThreadSummaryResource,UpdatedThreadResource,TrashedThreadResource,SnoozedThreadResource,DraftInput,DraftListOptions,DraftResource,DraftSummaryResource,SavedDraftResource,DeletedDraftResource. - Etiquetas, contactos, dominios y direcciones:
LabelInput,LabelColor,LabelResource,SavedLabelResource,DeletedLabelResource,ContactCreate,ContactPatch,ContactListOptions,ContactSource,ContactResource,ContactDetailResource,ContactAudienceResource,DeletedContactResource,DomainPatch,DomainResource,DomainDetailResource,DomainSendingState,DomainTracking,DomainTrackingState,AddressBookResource,AddressResource,SendableDomainResource. - Reglas:
RuleCreate,RulePatch,RuleListOptions,RuleRunListOptions,RuleTestInput,RuleResource,RuleRunResource,RuleTestResource,DeletedRuleResource,RuleCondition,RuleConditionInput,RuleAction,RuleActionType,RuleField,RuleOperator. - Webhooks:
WebhookCreate,WebhookPatch,WebhookResource,CreatedWebhookResource,DeletedWebhookResource,WebhookDeliveryResource,WebhookTestResource,WebhookEvent,WebhookPayload,EmailOpenedData,EmailClickedData,EmailDownloadedData,VerifyWebhookProps,WebhookSignatureHeaders. - Calendario y ajustes:
CalendarRangeOptions,CalendarOccurrenceResource,CalendarEventResource,CalendarAttendeeResource,SettingsPatch,SettingsResource. - Roles, miembros y claves:
RoleCreate,RolePatch,RoleDeleteOptions,RoleResource,DeletedRoleResource,PermissionResource,MemberAdd,MemberPatch,MemberAddressGrant,MemberResource,MemberAddressResource,RemovedMemberResource,MemberAccess,KeyResource,PingResource. - Bandejas desechables:
TempInboxCreate,TempMessageListOptions,TempInboxResource,CreatedTempInboxResource,DeletedTempInboxResource,TempDomainResource,TempMessageResource,TempMessagesResource,TempMessageDetailResource,DeletedTempMessageResource. - Compartidos:
RecipientInput,AttachmentInput,AttachmentResource,MessageResource,MessageEncryption,MessageEncryptionFormat,TrackingRequest,TranslateOptions,SendTranslateOptions,LanguageResource,ApiScope,Permission,BuiltinRole,HitKind.
Un endpoint que esto todavía no envuelve
Una versión del SDK nunca debería ser lo que te separa de un endpoint que ya funciona. openemail.raw.request() recibe una ruta y unas opciones y se resuelve con el cuerpo ya analizado, aplicando la clave, la URL base, el tiempo de espera y la política de reintentos del cliente.
const result = await openemail.raw.request<Whatever>('/something-new', { method: 'POST', query: { dryRun: true }, body: { name: 'Invoices' }, repeatable: true,})Un GET se reintenta como cualquier otra lectura. Cualquier otro método se envía una sola vez salvo que pases repeatable: true, que es tu afirmación de que puede enviarse dos veces. query omite los valores undefined, y signal funciona igual que en todos los demás métodos.
Lo que deliberadamente no hace
- No valida ningún cuerpo de petición. 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.
- No incluye zod ni ninguna dependencia en tiempo de ejecución.
- Solo reestructura una respuesta de una manera: el array
datade una colección se extrae de su envoltorio. Una lista paginada lo devuelve comoitemsjunto ahasMoreynextCursor;emails.sendBatch, comoitemsjunto asentyfailed;tempMail.listMessages, comoitemsjunto aexpiresAt, yaddresses.list, comoaddressesjunto aunrestrictedydomains. En todos los demás casos es un array simple. Cada recurso que contiene conserva la forma HTTP documentada.
La comprobación de paridad del paquete mantiene esto honesto. Hace fallar la compilación cuando una operación documentada no tiene método, cuando un método apunta a una operación que el documento OpenAPI no tiene o envía una petición distinta, y cuando un método declara ámbitos que la operación no exige.