SDK
Lista zmian
Każde wydanie pakietu, od najnowszego.
0.1.0
Drugie wydanie. Kontakty można zapisywać i grupować w grupy odbiorców, domena może mieć własne nazwy dla śledzenia i plików, a klucz może sam się rotować. Jedna zmiana psuje istniejący kod i jest wymieniona osobno.
openemail.audiencesjest nowe: nazwane listy kontaktów, zlist,get,create,update,delete,listContacts,addContactiremoveContact. Każda przestrzeń robocza ma jedną domyślną grupę odbiorców, tę, którejbuiltintodefault, która trzyma każdy kontakt i nie może zostać usunięta.openemail.contactspotrafi zapisywać.create,updateideletedołączają dolistiget, a każda z nich przyjmuje adres e-mail jako identyfikator.openemail.domains.update()ustawia lub czyści własną nazwę śledzenia i nazwę plików domeny, aDomainResource.trackingiDomainResource.storageraportują stan każdej z nich.openemail.me.rotate()zastępuje sekret wywołującego klucza i rozwiązuje się pełnym nowym kluczem. Nie ma okna nakładania się, więc stary sekret przestaje działać w chwili, gdy wywołanie zwraca wynik.KeyResource.domainAllowlistzawęża klucz do całych domen, obok pojedynczych adresów waddressAllowlist. Domena obejmuje każdy adres w niej, w tym utworzone po kluczu.- Załączniki można wysyłać przez referencję.
{ fileId }stoi obok formy inline, aattachmentDeliverywybiera między niesieniem plików wewnątrz wiadomości, zastąpieniem ich linkami do pobrania a pozostawieniem decyzji ich rozmiarowi. - Dziesięć kolejnych zdarzeń webhooków, w sumie dwadzieścia: odpowiedzi, doręczenia, opóźnienia, wykluczenia, pobrania i trzy zdarzenia domenowe.
email.downloadeduruchamia się, gdy ktoś pobierze plik, który wyszedł jako link do pobrania. Jeden link obsługuje wszystkich, do których poszła wiadomość, więc zdarzenie nie nazywa żadnego odbiorcy.- Cztery nowe zakresy:
contacts:write,audiences:read,audiences:writeikeys:write. - Dziewięć pól, które były luźnymi ciągami znaków, ma teraz nazwane typy, wśród nich
RecipientKind,ContactSource,RuleMatchModeiWebhookDeliveryStatus. Przyjmują i zwracają te same ciągi co wcześniej.
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]' })Co psuje się w 0.1.0
contacts.listzwracaPage<ContactResource>zamiast tablicy. Odczytuj wiersze zpage.itemsi podążaj zapage.nextCursor, dopókipage.hasMorejest true. Książka adresowa jest nieograniczona, a stara tablica zatrzymywała się na 200 wierszach, nic o tym nie mówiąc.API_SCOPES,ERROR_TYPES,MESSAGE_ENCRYPTION_FORMATS,RULE_ACTIONS,RULE_FIELDS,RULE_OPERATORSiWEBHOOK_EVENTSsą obiektami z kluczami, a nie tablicami, więc każdy element ma nazwę, którą można go przywołać. Wartości są bez zmian.contacts.listsortuje kontakty, do których nigdy nie pisano, na końcu, a nie na początku, więc dopiero co utworzony kontakt nie wskakuje już na górę książki.
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)Kod, który używał wyłącznie typów pochodnych, działa dalej bez zmian. ApiScope, WebhookEvent i reszta to te same typy co wcześniej.
0.0.1
Pierwsze wydanie: jedna typowana metoda na każdy endpoint i zero zależności czasu wykonania.
- Wysyłka: pojedyncza wiadomość, partie, wysyłki zaplanowane, okno cofnięcia i tłumaczenie na język, w którym czyta odbiorca.
- Szablony: tworzenie, wersjonowanie, publikowanie, podgląd i wysyłka.
- Śledzenie: otwarcia, kliknięcia i podsumowanie dla każdej wiadomości.
- Skrzynka: wątki, wersje robocze, etykiety, kontakty i reguły.
- Przestrzeń robocza: domeny, adresy, członkowie, role i ustawienia.
- Webhooki, z weryfikatorem podpisu działającym wszędzie tam, gdzie działa WebCrypto.
- Wydarzenia kalendarza, wraz z plikiem ICS.
- Jednorazowe skrzynki, jedyna część działająca także w przeglądarce.
- Stronicowanie kursorem na każdej liście, przez
listAlliiterate. - Dwie klasy błędów i ponowienia, które nie mogą zduplikować wysyłki.
- ESM i CommonJS, na Node 20+, Bun, Deno i Cloudflare Workers.