ドメインの購入と更新
domains カテゴリーの 10 個の API 操作を扱います。
| メソッド | パス | 説明 |
|---|---|---|
| GET | /v1/orgs/{orgSlug}/domains | org のドメイン(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}/lock | transfer lock のオン・オフを切り替えます(runlot domains lock|unlock) |
| POST | /v1/orgs/{orgSlug}/domains/{name}/auth-code | transfer auth code を確認します(runlot domains auth-code) |
| POST | /v1/orgs/{orgSlug}/domains/{name}/sync | このドメインをレジストラから今すぐ再読み込みします(runlot domains sync) |
GET /v1/orgs/{orgSlug}/domains
viewer 以上が必要です。
operationId listDomains
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 200 | 一覧取得 | DomainList |
| 403 | — | — |
| 404 | — | — |
| 503 | no_core — サービスが一時的に利用できません | Error |
POST /v1/orgs/{orgSlug}/domains
admin 以上が必要です — これは費用が発生する操作です。 domain.purchase として audit され、連絡先の詳細は audit log には保持されません。
登録直後、ドメインのネームサーバーは Runlot のもの(ns1~3.runlot.app)に設定されるため、別途の所有権確認は不要で、すぐにアプリを接続できます。ICANN の確認メールは contact アドレスに送信されます — 登録前に顧客に伝えてください。
同じリクエストを再送信しても安全です: 完了した購入は 200 を返し、中断された購入は中断した箇所から再開します。
operationId purchaseDomain
リクエストボディ: application/json ・ object
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 200 | 既に購入済みのドメイン(冪等) | Domain |
| 201 | 購入完了 | Domain |
| 400 | — | — |
| 402 | payment_failed — 支払いが拒否されました | Error |
| 403 | — | — |
| 409 | domain_taken・domain_unavailable | Error |
| 422 | registrar_rejected — レジストラが送信した値(連絡先の詳細など)を拒否しました。何も登録されておらず、同じリクエストを再試行しても解決しません。修正した入力で新しいリクエストを送信してください。 | Error |
| 502 | saga_incomplete、registrar_error — 購入が完了していません。同じリクエストを再送信すると、中断した箇所から続行されます。ここで報告されるのは、再試行で解決できる失敗のみです。502 のレスポンスボディは CDN 自体の HTML ページに置き換えられる場合があり、ブラウザクライアントでは code が見えないことがあります。 | Error |
| 503 | no_core・registrar_not_configured・dns_not_configured | Error |
POST /v1/orgs/{orgSlug}/domains/check
member 以上が必要です。このリクエストがレジストラに直接問い合わせを行うためです。
priceCents は登録初年度分を、renewalCents は更新1年分をカバーします。初年度割引が一般的であるため、これらは別々に報告されます。
operationId checkDomains
リクエストボディ: application/json ・ object
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 200 | 名前ごとの利用可否 | object |
| 400 | — | — |
| 403 | — | — |
| 503 | no_core・registrar_not_configured | Error |
POST /v1/orgs/{orgSlug}/domains/import
admin 以上が必要です。domain.import として audit されます。これはレジストラに問い合わせを行いません — ゾーンを作成するだけです。自分のレジストラでドメインのネームサーバーを ns1~3.runlot.app に向けると、以降 Runlot がその DNS を管理します。
operationId importDomain
リクエストボディ: application/json ・ object
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 200 | 既にインポート済みのドメイン(冪等) | Domain |
| 201 | インポート完了 | Domain |
| 400 | — | — |
| 403 | — | — |
| 409 | domain_taken | Error |
| 503 | no_core・dns_not_configured | Error |
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/json ・ object
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 200 | 更新されたドメイン | Domain |
| 400 | — | — |
| 403 | — | — |
| 404 | — | — |
POST /v1/orgs/{orgSlug}/domains/{name}/auto-renew
admin 以上が必要です。レジストラでの自動更新は無効にしても有効のままです — 更新が1日遅れるだけでドメインを失うため、Runlot は先に更新し、後で課金します。この設定を無効にしてもキャンセルにはならず、UI にもその旨が表示されるべきです。
operationId setDomainAutoRenew
リクエストボディ: application/json ・ object
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 200 | 変更されたドメイン | Domain |
| 400 | — | — |
| 403 | — | — |
| 404 | — | — |
POST /v1/orgs/{orgSlug}/domains/{name}/lock
管理者以上が必要です。domain.lock として監査されます。
operationId setDomainLock
リクエストボディ: application/json ・ object
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 200 | 変更されたドメイン | Domain |
| 400 | — | — |
| 403 | — | — |
| 404 | — | — |
POST /v1/orgs/{orgSlug}/domains/{name}/auth-code
admin 以上が必要です。domain.auth_code として audit されます — コード自体は audit log には書き込まれません。保持している人が誰でもドメインを移管できてしまうためです。
このコードはいつでもリクエストできます。移管を遅らせる可能性があるのは、登録または前回の移管後の ICANN の60日ロックのみです。
operationId getDomainAuthCode
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 200 | コード | object |
| 403 | — | — |
| 404 | — | — |
POST /v1/orgs/{orgSlug}/domains/{name}/sync
メンバー以上の権限が必要です。有効期限・移管ロック・ネームサーバーについては、レジストラが正となる情報源です。レジストラがそのドメインをRunlotが保有していないと報告した場合、ステータスはtransferred_outになります — これは移管が完了したことを示すシグナルです。
operationId syncDomain
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 200 | 一致したドメイン | Domain |
| 403 | — | — |
| 404 | — | — |