本文へ移動
runlot
リファレンスAPIメール

メール

email カテゴリの API 操作を11件カバーします。

メソッドパス説明
POST/v1/hooks/sesSESのバウンス・苦情・配信のWebhook
GET/v1/orgs/{orgSlug}/projects/{projectName}/emailメールステータス(runlot email)
POST/v1/orgs/{orgSlug}/projects/{projectName}/emailオフにしたメールを再びオンにします
DELETE/v1/orgs/{orgSlug}/projects/{projectName}/emailメールをオフにします(runlot email delete)
GET/v1/orgs/{orgSlug}/projects/{projectName}/email/domainsカスタム送信ドメイン(runlot email domain list)
POST/v1/orgs/{orgSlug}/projects/{projectName}/email/domainsカスタム送信ドメインを追加します(runlot email domain add)
POST/v1/orgs/{orgSlug}/projects/{projectName}/email/domains/{domain}/verify送信ドメインを今すぐ再確認します(runlot email domain verify)
DELETE/v1/orgs/{orgSlug}/projects/{projectName}/email/domains/{domain}送信ドメインを削除します(runlot email domain rm)
GET/v1/orgs/{orgSlug}/projects/{projectName}/email/logメールログ(runlot email log)
GET/v1/orgs/{orgSlug}/projects/{projectName}/email/log/{mailId}1通のメールのメタデータ
GET/v1/orgs/{orgSlug}/projects/{projectName}/email/log/{mailId}/rawメールの生メッセージ(message/rfc822)

POST /v1/hooks/ses

これは呼び出すパスではありません。Amazon SNSがHTTPSサブスクリプション経由でSESイベントをここに配信します。認証はトークンではなくSNS署名で行われます — リクエストが受け入れられるのは、証明書URLがsns.<region>.amazonaws.comのhttpsであり、かつトピックがサーバーのRUNLOT_SES_SNS_TOPIC_ARNと一致する場合のみです(それ以外は403)。SubscriptionConfirmationはSubscribeURLへGETを送信することで自動的に完了します。サーバーにトピックARNがない場合は501を返します。クライアントライブラリはこれを呼び出しません。

operationId sesHook

リクエストボディ: text/plain ・ string

ステータスコード説明レスポンスボディ
200受信済み(不明なイベントタイプや不明な id も 200 を返します)—
400——
403SNS の署名が一致しません—
501webhook がオフです—

GET /v1/orgs/{orgSlug}/projects/{projectName}/email

メールが許可されているかどうかに加えて、アドレス、送信者、1時間あたりの上限、直近の送信数・受信数です。許可されていない場合でも、addressとfromには値が入っており、有効にした場合のアドレスを確認できます。実際の状態を示すのはgrantedです。

viewer 以上が必要です。

operationId getEmail

ステータスコード説明レスポンスボディ
200メールステータスEmailStatus
403——
404——
503no_core — サービスが一時的に利用できませんError

POST /v1/orgs/{orgSlug}/projects/{projectName}/email

これは冪等です。 リクエストボディはありません — アドレスは自動的に導出され(<project>.<org>.<mail-domain>)、上限はプランによって決まります。アドレスは許可された時点のプロジェクト名に固定されます。

有効にすると、まもなくenv.emailがworkerに接続され、そのアドレス宛てに送られたメールはworkerのemail()ハンドラーに届きます。送信と受信は同時に有効になります — 1つのドメインが両方向に対応します。

メンバー以上が必要です。email.grant として監査されます。

operationId grantEmail

ステータスコード説明レスポンスボディ
200付与ステータス(既に存在していた場合は既存の値)EmailStatus
403——
404——
409email_unavailable — このデプロイにはメールドメインがありません。email_address_taken — 別のプロジェクトがすでに同じアドレスを保持していますError
503no_core — サービスが一時的に利用できませんError

DELETE /v1/orgs/{orgSlug}/projects/{projectName}/email

そのアドレス宛のメールは550を受け取るようになります。送信元のMTAはバウンスを受け取り、再試行しません。これは冪等です。

管理者以上が必要です。監査イベントは email.revoke です。

operationId revokeEmail

ステータスコード説明レスポンスボディ
204オフになりました—
403——
404——
503no_core — サービスが一時的に利用できませんError

GET /v1/orgs/{orgSlug}/projects/{projectName}/email/domains

プロジェクト自身の送信ドメインと、その検証状態です。各行には公開すべき正確なDNSレコードが含まれています。

viewer 以上が必要です。

operationId listEmailDomains

ステータスコード説明レスポンスボディ
200送信ドメインobject
403——
404——
503no_core — サービスが一時的に利用できませんError

POST /v1/orgs/{orgSlug}/projects/{projectName}/email/domains

DKIMを用いてドメインを送信用に登録し、公開すべきレコードを返します:3つの<token>._domainkey.<domain> CNAME(必須)、SPFのTXTとDMARCのTXT(いずれも推奨)です。このドメインはverifiedと表示されて初めてenv.email.send({ from })で使用できるようになります。

publish: trueを指定すると、そのドメインをカバーするゾーンをRunlotがホストしており、かつ同じ組織に属している場合、レコードがそのままゾーンに書き込まれます。自分で書き込んだレコードが上書きされることはありません。

繰り返し呼び出してもエラーにはならず、トークンも変わりません — 既に公開済みのレコードは正しいまま保たれます。メンバー以上の権限が必要です。email.domain.addとして監査記録に残ります。

operationId addEmailDomain

リクエストボディ: application/json ・ object

ステータスコード説明レスポンスボディ
200ドメインと公開すべきレコードEmailDomain
400——
403——
404——
409email_not_granted — このプロジェクトにはメールが許可されていません。email_domains_unavailable — このインストールではカスタム送信ドメインを提供していません。email_domain_taken — 別のプロジェクトが既にこのドメインを証明済みです。email_domain_provider — プロバイダーが拒否しましたError
503no_core — サービスが一時的に利用できませんError

POST /v1/orgs/{orgSlug}/projects/{projectName}/email/domains/{domain}/verify

ドメインのDKIM状態を今すぐ再確認し、行を更新します。ドメインが保留中の間はバックグラウンドチェックが1分ごとに同じ処理を行いますが、これはレコードを公開したばかりで待ちたくないときのためのボタンです。

チェックを完了できない場合、状態はそのままにされ、理由はlastErrorに表示されます。

member 以上が必要です。

operationId verifyEmailDomain

ステータスコード説明レスポンスボディ
200チェック後のドメインEmailDomain
403——
404——
503no_core — サービスが一時的に利用できませんError

DELETE /v1/orgs/{orgSlug}/projects/{projectName}/email/domains/{domain}

送信IDと行を削除し、Runlotがホストするゾーンに書き込んだレコードがあれば削除します。まもなく、このドメインを指定するすべてのenv.email.send({ from })はfrom_not_verifiedで拒否されるようになります。

存在しないものを削除しようとした場合も204になります。管理者以上の権限が必要です。email.domain.removeとして監査記録に残ります。

operationId removeEmailDomain

ステータスコード説明レスポンスボディ
204削除済み—
403——
404——
409email_domain_provider — 送信アイデンティティを削除できなかったため、行は保持され、呼び出しは再試行できますError
503no_core — サービスが一時的に利用できませんError

GET /v1/orgs/{orgSlug}/projects/{projectName}/email/log

送信・受信メッセージごとに1行、新しい順に、エンベロープ・結果・サイズ・SPF結果を表示します。生メッセージは …/log/{mailId}/raw にあります。

保持期間はプランに従います — Free では30日間、Pro では365日間です(keepDays)。

viewer 以上が必要です。

operationId listMailLog

パラメーター場所必須型説明
directionquery不可string空の場合は両方
cursorquery不可string前のページの cursor
limitquery不可integer—
ステータスコード説明レスポンスボディ
2001ページMailLogPage
403——
404——

GET /v1/orgs/{orgSlug}/projects/{projectName}/email/log/{mailId}

プロジェクト外の id は404を返します — id で他のプロジェクトのログを調べることはできません。viewer 以上の権限が必要です。

operationId getMailLog

ステータスコード説明レスポンスボディ
2001通のメールMailLogEntry
403——
404——

GET /v1/orgs/{orgSlug}/projects/{projectName}/email/log/{mailId}/raw

ヘッダーを含む生メッセージをそのまま返します。受信メールの場合、Runlot が追加した Received ヘッダーと Authentication-Results ヘッダーが含まれます。送信メールの場合、送信された内容から組み立てられます。.eml としてダウンロードされます。生メッセージのない行(hasRaw: false)は404を返します。viewer 以上の権限が必要です。

operationId getMailLogRaw

ステータスコード説明レスポンスボディ
200元のテキストstring
403——
404——

このページの目次