Zur Dokumentation springen
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.audiences ist neu: benannte Kontaktlisten, mit list, get, create, update, delete, listContacts, addContact und removeContact. Jeder Workspace hat eine Standard-Audience, die, deren builtin default ist, die jeden Kontakt enthält und sich nicht löschen lässt.
  • openemail.contacts kann schreiben. create, update und delete treten neben list und get, 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, und DomainResource.tracking und DomainResource.storage melden, 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.domainAllowlist grenzt einen Schlüssel auf ganze Domains ein, neben den einzelnen Adressen in addressAllowlist. 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, und attachmentDelivery wä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.downloaded feuert, 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:write und keys:write.
  • Neun Felder, die lose Strings waren, haben nun benannte Typen, darunter RecipientKind, ContactSource, RuleMatchMode und WebhookDeliveryStatus. Sie nehmen und liefern dieselben Strings wie zuvor.
audiences.ts
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.list liefert Page<ContactResource> statt eines Arrays. Lesen Sie die Zeilen aus page.items und folgen Sie page.nextCursor, solange page.hasMore true 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_OPERATORS und WEBHOOK_EVENTS sind Objekte mit Schlüsseln statt Arrays, jedes Mitglied hat also einen Namen, unter dem man es ansprechen kann. Die Werte sind unverändert.
  • contacts.list sortiert nie angeschriebene Kontakte ans Ende statt an den Anfang; ein gerade angelegter Kontakt springt also nicht mehr an die Spitze des Buchs.
migrate.ts
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 listAll und iterate.
  • Zwei Fehlerklassen und Retries, die keine Sendung duplizieren können.
  • ESM und CommonJS, auf Node 20+, Bun, Deno und Cloudflare Workers.