SDK
Changelog
Elke release van het package, nieuwste eerst.
0.1.0
De tweede release. Contacten kunnen worden geschreven en in audiences worden gegroepeerd, een domein kan zijn eigen tracking- en bestandsnamen dragen, en een sleutel kan zichzelf roteren. Eén wijziging breekt bestaande code, en die staat eronder vermeld.
openemail.audiencesis nieuw: benoemde lijsten met contacten, metlist,get,create,update,delete,listContacts,addContactenremoveContact. Elke workspace heeft één standaardaudience, die waarvanbuiltindefaultis, die elk contact bevat en niet kan worden verwijderd.openemail.contactskan schrijven.create,updateendeletekomen naastlistenget, en elk ervan neemt het e-mailadres als id.openemail.domains.update()zet of wist de eigen trackingnaam en bestandsnaam van een domein, enDomainResource.trackingenDomainResource.storagemelden hoe elk ervan ervoor staat.openemail.me.rotate()vervangt het secret van de aanroepende sleutel en levert de nieuwe sleutel volledig op. Er is geen overlapvenster, dus het oude secret stopt met werken zodra de aanroep terugkeert.KeyResource.domainAllowlistversmalt een sleutel tot hele domeinen, naast de afzonderlijke adressen inaddressAllowlist. Een domein dekt elk adres erop, ook adressen die na de sleutel zijn aangemaakt.- Bijlagen kunnen per verwijzing worden verstuurd.
{ fileId }staat naast de inline vorm, enattachmentDeliverykiest tussen bestanden in het bericht meedragen, ze vervangen door downloadlinks, of hun omvang laten beslissen. - Tien extra webhook-events, twintig in totaal: antwoorden, afleveringen, vertragingen, onderdrukkingen, downloads en de drie domeinevents.
email.downloadedvuurt wanneer iemand een bestand ophaalt dat als downloadlink is meegegaan. Eén link bedient iedereen naar wie het bericht ging, dus het event noemt geen ontvanger.- Vier nieuwe scopes:
contacts:write,audiences:read,audiences:writeenkeys:write. - Negen velden die losse strings waren hebben nu benoemde types, waaronder
RecipientKind,ContactSource,RuleMatchModeenWebhookDeliveryStatus. Ze accepteren en geven dezelfde strings terug als voorheen.
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]' })Wat er breekt in 0.1.0
contacts.listgeeftPage<ContactResource>terug in plaats van een array. Lees de rijen uitpage.itemsen volgpage.nextCursorzolangpage.hasMoretrue is. Het adresboek is onbegrensd, en de oude array stopte bij 200 rijen zonder dat te zeggen.API_SCOPES,ERROR_TYPES,MESSAGE_ENCRYPTION_FORMATS,RULE_ACTIONS,RULE_FIELDS,RULE_OPERATORSenWEBHOOK_EVENTSzijn objecten met sleutels in plaats van arrays, zodat elk lid een naam heeft om bij te noemen. De waarden zijn ongewijzigd.contacts.listsorteert contacten die nooit zijn gemaild als laatste in plaats van als eerste, zodat een contact dat je net hebt aangemaakt niet langer bovenaan het boek springt.
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)Code die alleen de afgeleide types gebruikte blijft onaangeroerd werken. ApiScope, WebhookEvent en de rest zijn dezelfde types die ze waren.
0.0.1
De eerste release: één getypeerde methode voor elk endpoint, en geen runtime-afhankelijkheden.
- Versturen: één bericht, batches, geplande verzendingen, een ongedaan-maken-venster, en vertaling naar de taal die de ontvanger leest.
- Templates: aanmaken, versioneren, publiceren, bekijken en versturen.
- Tracking: opens, kliks, en een samenvatting per bericht.
- Mailbox: threads, concepten, labels, contacten en regels.
- Workspace: domeinen, adressen, leden, rollen en instellingen.
- Webhooks, met een handtekeningverificatie die overal draait waar WebCrypto draait.
- Agenda-afspraken, inclusief het ICS-bestand.
- Wegwerpinboxen, het enige deel dat ook in een browser draait.
- Cursorpaginering op elke lijst, via
listAlleniterate. - Twee foutklassen, en herhaalpogingen die een verzending niet kunnen dupliceren.
- ESM en CommonJS, op Node 20+, Bun, Deno en Cloudflare Workers.