SDK
Changelog
Jedes Release des Pakets, neueste zuerst.
0.1.0
Das zweite Release. Kontakte lassen sich schreiben und in Audiences gruppieren, eine Domain kann eigene Tracking- und Dateinamen tragen, und ein Schlüssel kann sich selbst rotieren. Eine Änderung bricht bestehenden Code, und sie ist darunter aufgeführt.
openemail.audiencesist neu: benannte Kontaktlisten, mitlist,get,create,update,delete,listContacts,addContactundremoveContact. Jeder Workspace hat eine Standard-Audience, die, derenbuiltindefaultist, die jeden Kontakt enthält und sich nicht löschen lässt.openemail.contactskann schreiben.create,updateunddeletetreten nebenlistundget, und jede davon nimmt die E-Mail-Adresse als id.openemail.domains.update()setzt oder löscht den eigenen Tracking-Namen und Dateinamen einer Domain, undDomainResource.trackingundDomainResource.storagemelden, wo jeder davon steht.openemail.me.rotate()ersetzt das Secret des aufrufenden Schlüssels und löst mit dem neuen Schlüssel in voller Länge auf. Es gibt kein Überlappungsfenster, das alte Secret hört also in dem Moment auf zu funktionieren, in dem der Aufruf zurückkehrt.KeyResource.domainAllowlistgrenzt einen Schlüssel auf ganze Domains ein, neben den einzelnen Adressen inaddressAllowlist. Eine Domain deckt jede Adresse auf ihr ab, auch solche, die nach dem Schlüssel angelegt wurden.- Anhänge lassen sich per Referenz versenden.
{ fileId }steht neben der Inline-Form, undattachmentDeliverywählt zwischen dem Mitführen der Dateien in der Nachricht, dem Ersetzen durch Download-Links und dem Entscheiden nach Größe. - Zehn weitere Webhook-Events, zwanzig insgesamt: Antworten, Zustellungen, Verzögerungen, Unterdrückungen, Downloads und die drei Domain-Events.
email.downloadedfeuert, wenn eine Person eine Datei abruft, die als Download-Link hinausging. Ein Link bedient alle, an die die Nachricht ging, das Event benennt daher keinen Empfänger.- Vier neue Scopes:
contacts:write,audiences:read,audiences:writeundkeys:write. - Neun Felder, die lose Strings waren, haben nun benannte Typen, darunter
RecipientKind,ContactSource,RuleMatchModeundWebhookDeliveryStatus. Sie nehmen und liefern dieselben Strings wie zuvor.
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]' })Was sich in 0.1.0 ändert
contacts.listliefertPage<ContactResource>statt eines Arrays. Lesen Sie die Zeilen auspage.itemsund folgen Siepage.nextCursor, solangepage.hasMoretrue ist. Das Adressbuch ist unbegrenzt, und das alte Array endete bei 200 Zeilen, ohne das zu sagen.API_SCOPES,ERROR_TYPES,MESSAGE_ENCRYPTION_FORMATS,RULE_ACTIONS,RULE_FIELDS,RULE_OPERATORSundWEBHOOK_EVENTSsind Objekte mit Schlüsseln statt Arrays, jedes Mitglied hat also einen Namen, unter dem man es ansprechen kann. Die Werte sind unverändert.contacts.listsortiert nie angeschriebene Kontakte ans Ende statt an den Anfang; ein gerade angelegter Kontakt springt also nicht mehr an die Spitze des Buchs.
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, der nur die abgeleiteten Typen verwendet hat, funktioniert unverändert weiter. ApiScope, WebhookEvent und die übrigen sind dieselben Typen wie zuvor.
0.0.1
Das erste Release: eine typisierte Methode für jeden Endpunkt und keine Laufzeitabhängigkeiten.
- Versenden: eine Nachricht, Batches, geplante Sendungen, ein Undo-Fenster und die Übersetzung in die Sprache, die die Empfängerin liest.
- Templates: anlegen, versionieren, veröffentlichen, in der Vorschau ansehen und versenden.
- Tracking: Öffnungen, Klicks und eine Zusammenfassung je Nachricht.
- Postfach: Threads, Entwürfe, Labels, Kontakte und Regeln.
- Workspace: Domains, Adressen, Mitglieder, Rollen und Einstellungen.
- Webhooks, mit einem Signaturprüfer, der überall dort läuft, wo WebCrypto läuft.
- Kalenderereignisse, einschließlich der ICS-Datei.
- Wegwerfpostfächer, der eine Teil, der auch im Browser läuft.
- Cursor-Paging auf jeder Liste, über
listAllunditerate. - Zwei Fehlerklassen und Retries, die keine Sendung duplizieren können.
- ESM und CommonJS, auf Node 20+, Bun, Deno und Cloudflare Workers.