Aller à la documentation
SDK

Journal des versions

Toutes les versions du paquet, de la plus récente à la plus ancienne.

0.1.0

La deuxième version. Les contacts peuvent être écrits et regroupés en audiences, un domaine peut porter ses propres noms de suivi et de fichiers, et une clé peut faire tourner son propre secret. Un changement casse le code existant, et il est listé en dessous.

  • openemail.audiences est nouveau : des listes nommées de contacts, avec list, get, create, update, delete, listContacts, addContact et removeContact. Chaque espace de travail a une audience par défaut, celle dont builtin vaut default, qui contient tous les contacts et ne peut pas être supprimée.
  • openemail.contacts peut écrire. create, update et delete rejoignent list et get, et chacun prend l'adresse e-mail comme id.
  • openemail.domains.update() définit ou efface le nom de suivi et le nom de fichiers propres à un domaine, et DomainResource.tracking et DomainResource.storage indiquent où en est chacun.
  • openemail.me.rotate() remplace le secret de la clé appelante et se résout avec la nouvelle clé en entier. Il n'y a pas de fenêtre de recouvrement : l'ancien secret cesse de fonctionner dès que l'appel revient.
  • KeyResource.domainAllowlist restreint une clé à des domaines entiers, à côté des adresses individuelles de addressAllowlist. Un domaine couvre toutes ses adresses, y compris celles créées après la clé.
  • Les pièces jointes peuvent être envoyées par référence. { fileId } s'ajoute à la forme en ligne, et attachmentDelivery choisit entre transporter les fichiers dans le message, les remplacer par des liens de téléchargement, ou laisser leur taille décider.
  • Dix événements webhook de plus, vingt au total : réponses, remises, retards, suppressions, téléchargements, et les trois événements de domaine.
  • email.downloaded se déclenche quand une personne récupère un fichier parti sous forme de lien de téléchargement. Un seul lien sert tous les destinataires du message : l'événement ne nomme donc aucun destinataire.
  • Quatre nouvelles portées : contacts:write, audiences:read, audiences:write et keys:write.
  • Neuf champs qui étaient de simples chaînes ont désormais des types nommés, parmi lesquels RecipientKind, ContactSource, RuleMatchMode et WebhookDeliveryStatus. Ils acceptent et renvoient les mêmes chaînes qu'avant.
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]' })

Ce qui casse en 0.1.0

  • contacts.list renvoie Page<ContactResource> au lieu d'un tableau. Lisez les lignes dans page.items et suivez page.nextCursor tant que page.hasMore est true. Le carnet d'adresses est sans limite, et l'ancien tableau s'arrêtait à 200 lignes sans le dire.
  • API_SCOPES, ERROR_TYPES, MESSAGE_ENCRYPTION_FORMATS, RULE_ACTIONS, RULE_FIELDS, RULE_OPERATORS et WEBHOOK_EVENTS sont des objets à clés plutôt que des tableaux : chaque membre a donc un nom par lequel l'appeler. Les valeurs sont inchangées.
  • contacts.list place en dernier, et non en premier, les contacts à qui rien n'a jamais été envoyé : un contact que vous venez de créer ne saute donc plus en tête du carnet.
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)

Le code qui n'utilisait que les types dérivés continue de fonctionner sans retouche. ApiScope, WebhookEvent et les autres sont les mêmes types qu'avant.

0.0.1

La première version : une méthode typée pour chaque endpoint, et aucune dépendance d'exécution.

  • L'envoi : un message, des lots, des envois programmés, une fenêtre d'annulation, et la traduction dans la langue que lit le destinataire.
  • Les modèles : créer, versionner, publier, prévisualiser et envoyer.
  • Le suivi : ouvertures, clics, et un récapitulatif pour chaque message.
  • La messagerie : fils, brouillons, libellés, contacts et règles.
  • L'espace de travail : domaines, adresses, membres, rôles et réglages.
  • Les webhooks, avec un vérificateur de signature qui tourne partout où tourne WebCrypto.
  • Les événements de calendrier, fichier ICS compris.
  • Les boîtes jetables, la seule partie qui tourne aussi dans un navigateur.
  • La pagination par curseur sur chaque liste, via listAll et iterate.
  • Deux classes d'erreur, et des nouvelles tentatives qui ne peuvent pas dupliquer un envoi.
  • ESM et CommonJS, sur Node 20+, Bun, Deno et Cloudflare Workers.