DNS ゾーン
dns カテゴリの API 操作 8 件をカバーします。
| メソッド | パス | 説明 |
|---|---|---|
| GET | /v1/orgs/{orgSlug}/dns/zones | DNS ゾーンの一覧(runlot dns zones) |
| POST | /v1/orgs/{orgSlug}/dns/zones | DNS ゾーンを作成します(runlot dns create) |
| GET | /v1/orgs/{orgSlug}/dns/zones/{zone} | 単一の DNS ゾーンとそのすべてのレコード |
| DELETE | /v1/orgs/{orgSlug}/dns/zones/{zone} | DNS ゾーンを削除します(runlot dns delete) |
| PUT | /v1/orgs/{orgSlug}/dns/zones/{zone}/rrsets/{name}/{type} | レコードを作成または更新します(runlot dns set) |
| DELETE | /v1/orgs/{orgSlug}/dns/zones/{zone}/rrsets/{name}/{type} | レコードを削除します(runlot dns rm) |
| POST | /v1/orgs/{orgSlug}/dns/zones/{zone}/dnssec | ゾーン署名のオン・オフを切り替えます |
| PUT | /v1/orgs/{orgSlug}/dns/zones/{zone}/dnssec/ds | 親ゾーンに登録する DS を保存します |
GET /v1/orgs/{orgSlug}/dns/zones
この org が Runlot のネームサーバー上で運用している DNS ゾーンの一覧です(docs/domains.md §4)。rrsets は含まれず、単一項目の取得時にのみ提供されます。viewer 以上が利用できます。
operationId listZones
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 200 | 一覧取得 | ZoneList |
| 403 | — | — |
| 404 | — | — |
| 503 | デプロイの DNS が無効になっている(dns_not_configured)か、cp-public が cp-core のアドレスなしで起動されています(no_core)。 | Error |
POST /v1/orgs/{orgSlug}/dns/zones
冪等です — 既存のゾーンは変更されずにそのまま返されます。ゾーンは SOA(ジェネレーターが serial から構築します)と apex の NS rrset を持った状態で作成され、その NS は managed_by = system のためエディタでロックされます。ユーザーがこれを削除すると、そのドメインはまったく解決できなくなります(§7)。
ゾーンを作成しただけでは、まだどの名前も当社の応答を受け取れるようにはなりません。委任を有効にするには、レジストラ側の NS を nameservers に変更する必要があります(delegation バッジはその状態を反映します)。admin 以上が必要です。dns.zone.create として監査されます。
operationId createZone
リクエストボディ: application/json ・ object
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 200 | 作成された、または既に存在していたゾーン | ZoneDetail |
| 400 | — | — |
| 403 | — | — |
| 404 | — | — |
| 409 | 既に他の org が使用している DNS ゾーン(zone_taken) | Error |
| 503 | デプロイの DNS が無効になっている(dns_not_configured)か、cp-public が cp-core のアドレスなしで起動されています(no_core)。 | Error |
GET /v1/orgs/{orgSlug}/dns/zones/{zone}
viewer 以上が必要です。
operationId getZone
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 200 | DNS ゾーンと RRset | ZoneDetail |
| 403 | — | — |
| 404 | — | — |
| 503 | デプロイの DNS が無効になっている(dns_not_configured)か、cp-public が cp-core のアドレスなしで起動されています(no_core)。 | Error |
DELETE /v1/orgs/{orgSlug}/dns/zones/{zone}
すべてのレコードと DNS ゾーンファイルをまとめて削除します。委任がまだ Runlot のネームサーバーを指している場合、そのドメインは正しく接続できなくなります。 削除する前にレジストラ側の NS を変更する必要があります。admin 以上です。監査は dns.zone.delete です。
operationId deleteZone
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 204 | 削除済み | — |
| 403 | — | — |
| 404 | — | — |
| 503 | デプロイの DNS が無効になっている(dns_not_configured)か、cp-public が cp-core のアドレスなしで起動されています(no_core)。 | Error |
PUT /v1/orgs/{orgSlug}/dns/zones/{zone}/rrsets/{name}/{type}
1 つの rrset(name + type)全体を置き換えます — 単一の値を追加するわけではなく、records がその rrset の新しい内容全体になります。
検証は保存時に行われます(§4.3)。CNAME はゾーン頂点(apex)には置けず、同じ名前で他のタイプと共存できません。また、A/AAAA・MX・SRV・CAA は形式がチェックされます。255 バイトを超える TXT レコードはゾーンファイル内でチャンクに分割されます。managed_by が設定されたレコード(プロジェクト連携・ACME・DNS ゾーンの NS)は 409 managed_rrset を返します。
member 以上が必要です。dns.rrset.set として監査されます。
operationId putRRset
リクエストボディ: application/json ・ object
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 200 | 保存された rrset | RRset |
| 400 | — | — |
| 403 | — | — |
| 404 | — | — |
| 409 | プロジェクトが管理するレコード(managed_rrset)、または CNAME 共存禁止に該当するレコード(cname_conflict) | Error |
| 503 | デプロイの DNS が無効になっている(dns_not_configured)か、cp-public が cp-core のアドレスなしで起動されています(no_core)。 | Error |
DELETE /v1/orgs/{orgSlug}/dns/zones/{zone}/rrsets/{name}/{type}
管理対象のレコードは 409 managed_rrset を返します。プロジェクトの連携を解除するには、レコードを削除するのではなく、プロジェクトの Domains 画面から連携を解除してください(§7)。member 以上が必要です。監査イベントは dns.rrset.delete です。
operationId deleteRRset
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 204 | 削除済み | — |
| 403 | — | — |
| 404 | — | — |
| 409 | アプリが管理する行(managed_rrset) | Error |
| 503 | デプロイの DNS が無効になっている(dns_not_configured)か、cp-public が cp-core のアドレスなしで起動されています(no_core)。 | Error |
POST /v1/orgs/{orgSlug}/dns/zones/{zone}/dnssec
off → signing。署名はネームサーバー(Knot)によって行われ、鍵情報は CP には一切保存されません(§4.5)。この機能を無効にすると、記録された DS も削除されます。古い鍵の DS を親ゾーンに登録したままにすると、ドメインが正しく検証されなくなります。admin 以上が利用できます。
operationId setZoneDNSSEC
リクエストボディ: application/json ・ object
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 200 | 変更されたゾーン | Zone |
| 403 | — | — |
| 404 | — | — |
| 503 | デプロイの DNS が無効になっている(dns_not_configured)か、cp-public が cp-core のアドレスなしで起動されています(no_core)。 | Error |
PUT /v1/orgs/{orgSlug}/dns/zones/{zone}/dnssec/ds
CP は親ゾーンに問い合わせません。この値は、ネームサーバーが DS レコードを作成したという事実を、オペレーター(または D3 のレジストラ同期)が報告するものであり、状態は signing → ds_pending に移行します。空のリストは「まだ」を意味するため、状態は進みません。admin 以上が必要です。
operationId setZoneDS
リクエストボディ: application/json ・ object
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 200 | 変更されたゾーン | Zone |
| 400 | — | — |
| 403 | — | — |
| 404 | — | — |
| 409 | ゾーンの DNSSEC がオフです(dnssec_off) | Error |
| 503 | デプロイの DNS が無効になっている(dns_not_configured)か、cp-public が cp-core のアドレスなしで起動されています(no_core)。 | Error |