SDK
変更履歴
パッケージのすべてのリリースを新しい順に掲載します。
0.1.0
2 回目のリリースです。連絡先を書き込んでオーディエンスにまとめられるようになり、ドメインが独自のトラッキング名とファイル名を持てるようになり、キーが自分自身をローテーションできるようになりました。既存のコードを壊す変更が 1 つあり、その項目の下に記載しています。
openemail.audiencesが新登場です。名前付きの連絡先リストで、list、get、create、update、delete、listContacts、addContact、removeContactを備えます。どのワークスペースにも既定オーディエンスが 1 つあり、それはbuiltinがdefaultのもので、すべての連絡先を保持し、削除できません。openemail.contactsが書き込めるようになりました。create、update、deleteがlistとgetに加わり、いずれもメールアドレスを id として受け取ります。openemail.domains.update()がドメイン独自のトラッキング名とファイル名を設定・解除し、DomainResource.trackingとDomainResource.storageがそれぞれの状況を報告します。openemail.me.rotate()は呼び出し元のキーのシークレットを差し替え、新しいキーを丸ごと返します。重複期間はないので、呼び出しが返った瞬間に古いシークレットは使えなくなります。KeyResource.domainAllowlistは、addressAllowlistにある個別アドレスと並んで、キーをドメイン単位に絞り込みます。ドメインはその上のすべてのアドレスを対象とし、キーより後に作られたアドレスも含みます。- 添付ファイルを参照で送れるようになりました。インライン形式と並んで
{ fileId }が使え、attachmentDeliveryが、ファイルをメッセージ内に入れるか、ダウンロードリンクに置き換えるか、サイズに判断させるかを選びます。 - Webhook イベントが 10 種類増えて合計 20 種類になりました。返信、配送、遅延、抑制、ダウンロード、そして 3 つのドメインイベントです。
email.downloadedは、ダウンロードリンクとして送られたファイルを誰かが取得したときに発火します。1 本のリンクがメッセージの宛先全員に対応するので、このイベントは受信者を特定しません。- 新しいスコープが 4 つ。
contacts:write、audiences:read、audiences:write、keys:writeです。 - これまで緩い文字列だった 9 つのフィールドに名前付きの型が付きました。
RecipientKind、ContactSource、RuleMatchMode、WebhookDeliveryStatusなどです。受け取る文字列と返す文字列はこれまでと同じです。
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]' })0.1.0 で壊れるもの
contacts.listは配列ではなくPage<ContactResource>を返します。行はpage.itemsから読み、page.hasMoreが true の間はpage.nextCursorをたどってください。アドレス帳に上限はなく、従来の配列は何も告げずに 200 行で止まっていました。API_SCOPES、ERROR_TYPES、MESSAGE_ENCRYPTION_FORMATS、RULE_ACTIONS、RULE_FIELDS、RULE_OPERATORS、WEBHOOK_EVENTSは配列ではなくキー付きオブジェクトになり、各メンバーを呼ぶための名前が付きました。値は変わっていません。contacts.listは、一度もメールを送っていない連絡先を先頭ではなく末尾に並べるようになりました。作ったばかりの連絡先がアドレス帳の先頭に飛び出すことはもうありません。
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)派生型だけを使っていたコードは、手を加えずにそのまま動きます。ApiScope、WebhookEvent などはこれまでと同じ型です。
0.0.1
最初のリリースです。すべてのエンドポイントに型付きメソッドが 1 つずつあり、実行時依存はありません。
- 送信: 単一メッセージ、バッチ、予約送信、取り消し猶予、そして受信者が読む言語への翻訳。
- テンプレート: 作成、バージョン管理、公開、プレビュー、送信。
- トラッキング: 開封、クリック、メッセージごとの集計。
- メールボックス: スレッド、下書き、ラベル、連絡先、ルール。
- ワークスペース: ドメイン、アドレス、メンバー、ロール、設定。
- Webhook。WebCrypto が動く場所ならどこでも動く署名検証付き。
- カレンダーイベント。ICS ファイルを含みます。
- 使い捨て受信箱。唯一ブラウザーでも動作する部分です。
- すべての一覧でのカーソルページング。
listAllとiterateを通じて利用できます。 - 2 つのエラークラスと、送信を重複させない再試行。
- ESM と CommonJS、Node 20+、Bun、Deno、Cloudflare Workers での動作。