runlot
リファレンスAPI

ドメインの購入と更新

domains カテゴリーの 10 個の API 操作を扱います。

メソッドパス説明
GET/v1/orgs/{orgSlug}/domainsorg のドメイン(runlot domains list
POST/v1/orgs/{orgSlug}/domainsドメインを購入します(runlot domains buy
POST/v1/orgs/{orgSlug}/domains/checkドメイン名を調べます(runlot domains check
POST/v1/orgs/{orgSlug}/domains/import所有しているドメインをインポートします(runlot domains import
GET/v1/orgs/{orgSlug}/domains/{name}ドメイン情報と直近の変更履歴(runlot domains show
POST/v1/orgs/{orgSlug}/domains/{name}/renew更新します(runlot domains renew
POST/v1/orgs/{orgSlug}/domains/{name}/auto-renew自動更新の設定を変更します
POST/v1/orgs/{orgSlug}/domains/{name}/locktransfer lock のオン・オフを切り替えます(runlot domains lock|unlock
POST/v1/orgs/{orgSlug}/domains/{name}/auth-codetransfer auth code を確認します(runlot domains auth-code
POST/v1/orgs/{orgSlug}/domains/{name}/syncレジストラが今この値を再度読み取ります

GET /v1/orgs/{orgSlug}/domains

viewer 以上が必要です。

operationId listDomains

ステータスコード説明レスポンスボディ
200一覧取得DomainList
403
404
503no_core — cp-public が cp-core なしで起動しましたError

POST /v1/orgs/{orgSlug}/domains

admin 以上 — これは課金を伴います。 domain.purchase として監査されます(連絡先は保持されません。監査ログは削除できず、連絡先は個人情報であるためです)。

登録直後、NS は Runlot のネームサーバー(ns1~3.runlot.app)に設定されます。これは所有権確認の手順が不要であることを意味し、購入直後にアプリを接続できます。ICANN の確認メールは contact アドレスに送信されます。この点は登録前に画面で開示する必要があります(§5.5)。

同じリクエストを再送しても安全です。完了済みのドメインには 200 を返し、途中で中断した購入は中断した手順から再開します。

operationId purchaseDomain

リクエストボディ: application/jsonobject

ステータスコード説明レスポンスボディ
200既に購入済みのドメイン(冪等)Domain
201購入完了Domain
400
402payment_failed — 支払いが拒否されましたError
403
409domain_takendomain_unavailableError
422registrar_rejected — レジストラがリクエストの値(連絡先情報など)を拒否しました。登録は完了しておらず、再試行しても解決しません。入力を修正したリクエストは新しい行として送る必要があります。Error
502saga_incomplete, registrar_error — 再送すると中断した箇所から続行します。エッジ(Cloudflare)は 502 のボディを独自の HTML に置き換えます。そのため、ブラウザクライアントは code を受け取りません。サーバーは、再試行しても解決しない失敗をここでは送信しません。Error
503no_coreregistrar_not_configureddns_not_configuredError

POST /v1/orgs/{orgSlug}/domains/check

member 以上が必要です。viewer では不可です。この 1 回の呼び出しはレジストラ API にアクセスするためで、読み取りのように見えても外部へ発信するからです。

priceCents は登録初年度分をカバーし、renewalCents は更新 1 年分をカバーします。初年度割引がよくあるため、両者は別々になっています。

operationId checkDomains

リクエストボディ: application/jsonobject

ステータスコード説明レスポンスボディ
200名前ごとの利用可否object
400
403
503no_coreregistrar_not_configuredError

POST /v1/orgs/{orgSlug}/domains/import

admin 以上が必要です。domain.import として監査されます。これはレジストラを呼び出しません — ゾーンを作成するだけで、顧客が自身のレジストラで NS レコードを ns1~3.runlot.app に変更した時点から、DNS 管理はすべてこちらの管理下に入ります(§5.6)。

operationId importDomain

リクエストボディ: application/jsonobject

ステータスコード説明レスポンスボディ
200既にインポート済みのドメイン(冪等)Domain
201インポート完了Domain
400
403
409domain_takenError
503no_coredns_not_configuredError

GET /v1/orgs/{orgSlug}/domains/{name}

viewer 以上が必要です。他の org の名前は 404 を返します。

operationId getDomain

ステータスコード説明レスポンスボディ
200ドメインDomainDetail
403
404

POST /v1/orgs/{orgSlug}/domains/{name}/renew

admin 以上が必要です。domain.renew として監査されます。

operationId renewDomain

リクエストボディ: application/jsonobject

ステータスコード説明レスポンスボディ
200更新されたドメインDomain
400
403
404

POST /v1/orgs/{orgSlug}/domains/{name}/auto-renew

管理者以上が必要です。レジストラ側の自動更新はオンのままです(§5.4)。ドメインは1日遅れただけで失う資産なので、先に更新してから後で請求します。UIはこれを併記する必要があります。そうしないと、顧客がここでオフにして「キャンセルした」と思い込んでしまいます。

operationId setDomainAutoRenew

リクエストボディ: application/jsonobject

ステータスコード説明レスポンスボディ
200変更されたドメインDomain
400
403
404

POST /v1/orgs/{orgSlug}/domains/{name}/lock

管理者以上が必要です。domain.lock として監査されます。

operationId setDomainLock

リクエストボディ: application/jsonobject

ステータスコード説明レスポンスボディ
200変更されたドメインDomain
400
403
404

POST /v1/orgs/{orgSlug}/domains/{name}/auth-code

管理者以上が必要です。domain.auth_code として監査されます。コード自体は監査ログに保存されません。コードを持つ者は誰でもドメインを取得できるため、監査エントリを削除することはできません。

退出手段は即座に開かれます(§5.5)。それを妨げうる唯一のものはICANNの60日間の登録・移管ロックであり、これは情報提供にすぎません。

operationId getDomainAuthCode

ステータスコード説明レスポンスボディ
200コードobject
403
404

POST /v1/orgs/{orgSlug}/domains/{name}/sync

メンバー以上が必要です。有効期限・ロック・NSについてはレジストラが正となる情報源です。レジストラがアカウント内に存在しないと応答した場合、それが transferred_out であり、移管が完了したことを示す唯一の合図です。

operationId syncDomain

ステータスコード説明レスポンスボディ
200一致したドメインDomain
403
404

このページの目次