SDK
Registre de canvis
Totes les versions del paquet, de la més nova a la més antiga.
0.1.0
La segona versió. Els contactes es poden escriure i agrupar en audiències, un domini pot portar els seus propis noms de seguiment i de fitxers, i una clau es pot rotar a si mateixa. Un canvi trenca codi existent, i és a la llista de més avall.
openemail.audiencesés nou: llistes de contactes amb nom, amblist,get,create,update,delete,listContacts,addContactiremoveContact. Cada espai de treball té una audiència per defecte, la que tébuiltinigual adefault, que conté tots els contactes i no es pot esborrar.openemail.contactsja pot escriure.create,updateideletes'afegeixen alistiget, i cadascun pren l'adreça electrònica com a id.openemail.domains.update()defineix o esborra el nom de seguiment i el nom de fitxers propis d'un domini, iDomainResource.trackingiDomainResource.storageinformen de com està cadascun.openemail.me.rotate()substitueix el secret de la clau que fa la crida i es resol amb la clau nova sencera. No hi ha cap finestra de solapament, així que el secret antic deixa de funcionar en el moment en què la crida retorna.KeyResource.domainAllowlistacota una clau a dominis sencers, al costat de les adreces individuals d'addressAllowlist. Un domini cobreix totes les seves adreces, incloses les creades després de la clau.- Els adjunts es poden enviar per referència.
{ fileId }conviu amb la forma inline, iattachmentDeliverytria entre portar els fitxers dins del missatge, substituir-los per enllaços de descàrrega o deixar que ho decideixi la seva mida. - Deu esdeveniments de webhook més, vint en total: respostes, lliuraments, retards, supressions, descàrregues i els tres esdeveniments de domini.
email.downloadedes dispara quan una persona baixa un fitxer que va sortir com a enllaç de descàrrega. Un mateix enllaç serveix per a tots els destinataris del missatge, de manera que l'esdeveniment no anomena cap destinatari.- Quatre scopes nous:
contacts:write,audiences:read,audiences:writeikeys:write. - Nou camps que abans eren cadenes soltes ara tenen tipus amb nom, entre ells
RecipientKind,ContactSource,RuleMatchModeiWebhookDeliveryStatus. Accepten i retornen les mateixes cadenes que abans.
const audience = await openemail.audiences.create({ name: 'Product updates' }) await openemail.contacts.create({ email: '[email protected]', name: 'Grace Hopper' })await openemail.audiences.addContact(audience.id, { email: '[email protected]' })Què es trenca a la 0.1.0
contacts.listretornaPage<ContactResource>en comptes d'un array. Llegeix les files depage.itemsi segueixpage.nextCursormentrepage.hasMoresigui cert. La llibreta d'adreces no té límit, i l'array antic s'aturava a 200 files sense dir-ho.API_SCOPES,ERROR_TYPES,MESSAGE_ENCRYPTION_FORMATS,RULE_ACTIONS,RULE_FIELDS,RULE_OPERATORSiWEBHOOK_EVENTSsón objectes amb claus i no pas arrays, de manera que cada membre té un nom amb què anomenar-lo. Els valors no canvien.contacts.listordena els contactes als quals mai no s'ha escrit al final i no pas al principi, de manera que un contacte que acabes de crear ja no salta al capdamunt de la llibreta.
import { API_SCOPES, WEBHOOK_EVENTS } from '@openemail/sdk' const scopes = Object.values(API_SCOPES)const subscribable = new Set<string>(Object.values(WEBHOOK_EVENTS)) const page = await openemail.contacts.list()for (const contact of page.items) send(contact.email)El codi que només feia servir els tipus derivats continua funcionant sense tocar res. ApiScope, WebhookEvent i la resta són els mateixos tipus que eren.
0.0.1
La primera versió: un mètode tipat per a cada endpoint, i cap dependència en temps d'execució.
- Enviament: un missatge, lots, enviaments programats, una finestra per desfer i traducció a l'idioma que llegeix el destinatari.
- Plantilles: crear, versionar, publicar, previsualitzar i enviar.
- Seguiment: obertures, clics i un resum per a cada missatge.
- Bústia: converses, esborranys, etiquetes, contactes i regles.
- Espai de treball: dominis, adreces, membres, rols i configuració.
- Webhooks, amb un verificador de signatures que funciona allà on funcioni WebCrypto.
- Esdeveniments de calendari, amb el fitxer ICS inclòs.
- Bústies d'un sol ús, l'única part que també funciona en un navegador.
- Paginació per cursor a totes les llistes, mitjançant
listAlliiterate. - Dues classes d'error, i reintents que no poden duplicar un enviament.
- ESM i CommonJS, a Node 20+, Bun, Deno i Cloudflare Workers.