ドキュメント本文へスキップ
SDK

型とヘルパー

パッケージがその他に公開しているもの。

ランタイムのエクスポート

エクスポート内容
`init`, `openemail`共有クライアントを一度設定すれば、あとはどこでも openemail を import できる。init が一度も実行されていない場合は OPENEMAIL_API_KEY から自身を構築する。
`getClient`, `resetClient`共有クライアント本体と、それを破棄して次の呼び出しで新しく構築させるための手段。テストのケース間で必要になるのはこれである。
`createOpenEmail`, `createClient`, `OpenEmail`独立したクライアント。createOpenEmail は省略された項目を環境変数から読み取る(createClient は同じ関数である)。new OpenEmail(デフォルトエクスポートでもある)は渡された値だけを使う。
`createTempMail`API キーを持たない使い捨て受信箱用のクライアント。パッケージの中で唯一ブラウザーで動作する部分である。
`OpenEmailApiError`, `OpenEmailNetworkError`2 つのエラークラス。
`verifyWebhookSignature`一定時間で比較し、リプレイ許容ウィンドウを備える。パース済みのペイロードに解決し、失敗時には例外を送出する。
`toBase64`チャンク単位で処理する、添付ファイルのバイト列向けのもの。
`isApiKey`文字列が oe_live_ または oe_test_ の形をしているかどうか。形式の検査であり、そのキーがまだ有効であることの証明ではない。
`isSealed`, `MESSAGE_ENCRYPTION_FORMATS`メッセージの本文が暗号文かどうかと、受信処理が識別できる 5 種類のエンベロープ。署名のみの 2 形式は本文が平文で届いているため isSealed は false になる。呼び出し側にユニオンから導出させるのではなく、この関数を同梱しているのはそのためである。
`LANGUAGES`, `resolveLanguage`, `languageByCode`, `isRtlLanguage`同梱の言語テーブルと、言語ピッカーに必要な検索関数。
`API_SCOPES`キー作成画面のためのスコープ語彙。
`WEBHOOK_EVENTS`, `WEBHOOK_SIGNATURE_HEADERS`エンドポイントが購読できるイベントと、配信に付くヘッダーの名前。
`RULE_FIELDS`, `RULE_OPERATORS`, `RULE_ACTIONS`ルールの条件とアクションを組み立てるための語彙。
`PAGE_LIMITS`ページングされる一覧における limit の最大値と既定値、すなわち 100 と 25。
`ERROR_TYPES`凍結されたエラー語彙。
`VERSION`パッケージのバージョン。

すべてのリクエストとレスポンスに型があり、いずれもパッケージのルートからエクスポートされる。深い import は存在しないため、ファイル構成はメジャーバージョンを上げずに変更できる実装の詳細のままでいられる。…Resource は API が返すもの、…Create…Patch…Input…Send は渡すもの、…Options はフィルターと呼び出しごとのオプションを保持する。

  • クライアント: ClientOptionsTempMailOptionsTransportOptionsRequestOptionsRequestScopeSendScopeInboxScopeListOptionsPageApiKeyModeFetchLike
  • エラー: ErrorTypeApiErrorPayloadApiErrorProps
  • メール: EmailSendEmailListOptionsEmailTranslateEmailResourceSentEmailResourceEmailRecipientResourceEmailEventResourceEmailStatusEmailSourceEmailTransportEmailTrackingSummaryEmailTranslationResourceTranslationResourceRecipientStatusBatchItemResourceBatchResultResource
  • テンプレート: TemplateCreateTemplatePatchTemplateContentTemplateListOptionsTemplatePreviewInputTemplateSendTemplateResourceTemplateDetailResourceTemplateVersionResourceTemplatePreviewResourceSentTemplateEmailResourceDeletedTemplateResourceTemplateEngineTemplatePropTemplateSlotTemplateStatusTemplateValueKind
  • トラッキング: TrackingListOptionsTrackingStatsOptionsTrackingHitOptionsTrackingResourceTrackingSummaryTrackingRecipientResourceTrackingLinkResourceTrackingOpenResourceTrackingClickResourceTrackingStatsResourceTrackingGrain
  • スレッドと下書き: ThreadListOptionsThreadPatchThreadResourceThreadSummaryResourceUpdatedThreadResourceTrashedThreadResourceSnoozedThreadResourceDraftInputDraftListOptionsDraftResourceDraftSummaryResourceSavedDraftResourceDeletedDraftResource
  • ラベル、連絡先、ドメイン、アドレス: LabelInputLabelColorLabelResourceSavedLabelResourceDeletedLabelResourceContactCreateContactPatchContactListOptionsContactSourceContactResourceContactDetailResourceContactAudienceResourceDeletedContactResourceDomainPatchDomainResourceDomainDetailResourceDomainSendingStateDomainTrackingDomainTrackingStateAddressBookResourceAddressResourceSendableDomainResource
  • ルール: RuleCreateRulePatchRuleListOptionsRuleRunListOptionsRuleTestInputRuleResourceRuleRunResourceRuleTestResourceDeletedRuleResourceRuleConditionRuleConditionInputRuleActionRuleActionTypeRuleFieldRuleOperator
  • Webhook: WebhookCreateWebhookPatchWebhookResourceCreatedWebhookResourceDeletedWebhookResourceWebhookDeliveryResourceWebhookTestResourceWebhookEventWebhookPayloadEmailOpenedDataEmailClickedDataEmailDownloadedDataVerifyWebhookPropsWebhookSignatureHeaders
  • カレンダーと設定: CalendarRangeOptionsCalendarOccurrenceResourceCalendarEventResourceCalendarAttendeeResourceSettingsPatchSettingsResource
  • ロール、メンバー、キー: RoleCreateRolePatchRoleDeleteOptionsRoleResourceDeletedRoleResourcePermissionResourceMemberAddMemberPatchMemberAddressGrantMemberResourceMemberAddressResourceRemovedMemberResourceMemberAccessKeyResourcePingResource
  • 使い捨て受信箱: TempInboxCreateTempMessageListOptionsTempInboxResourceCreatedTempInboxResourceDeletedTempInboxResourceTempDomainResourceTempMessageResourceTempMessagesResourceTempMessageDetailResourceDeletedTempMessageResource
  • 共通: RecipientInputAttachmentInputAttachmentResourceMessageResourceMessageEncryptionMessageEncryptionFormatTrackingRequestTranslateOptionsSendTranslateOptionsLanguageResourceApiScopePermissionBuiltinRoleHitKind

まだラップされていないエンドポイント

SDK のリリースが、すでに動作しているエンドポイントとの間に立ちはだかってはならない。openemail.raw.request() はパスとオプションを受け取り、クライアントのキー、ベース URL、タイムアウト、リトライポリシーを適用したうえで、パース済みのボディに解決する。

escape-hatch.ts
const result = await openemail.raw.request<Whatever>('/something-new', {  method: 'POST',  query: { dryRun: true },  body: { name: 'Invoices' },  repeatable: true,})

GET は他の読み取りと同様にリトライされる。それ以外のメソッドは、2 回送信されてもよいという宣言である repeatable: true を渡さないかぎり 1 回だけ送信される。query は値が undefined の項目を除外し、signal は他のすべてのメソッドと同じように動作する。

あえて行わないこと

  • リクエストボディの検証は行わない。ルールの唯一の写しはサーバーのスキーマであり、ここに 2 つ目の写しを置けば、いずれ 2 年前に誰かが固定したバージョンが、新しいサーバーなら受け入れるアドレスを拒否することになる。
  • zod も、その他のランタイム依存もいっさい同梱しない。
  • レスポンスの整形は 1 点だけである。コレクションの data 配列をエンベロープから取り出す。ページングされる一覧では hasMorenextCursor と並んで items として返し、emails.sendBatch では sentfailed と並んで itemstempMail.listMessages では expiresAt と並んで itemsaddresses.list では unrestricteddomains と並んで addresses として返す。それ以外の場所では素の配列になる。中に含まれる各リソースは、ドキュメントに記載された HTTP 上の形をそのまま保つ。

この約束を守らせているのがパッケージのパリティチェックである。ドキュメント化された操作にメソッドがない場合、メソッドが OpenAPI ドキュメントに存在しない操作を指している場合や異なるリクエストを送っている場合、メソッドが操作の要求しないスコープを宣言している場合に、ビルドを失敗させる。