DNS 존
dns 묶음의 오퍼레이션 8 개입니다.
| 메서드 | 경로 | 하는 일 |
|---|---|---|
| GET | /v1/orgs/{orgSlug}/dns/zones | 존 목록 (runlot dns zones) |
| POST | /v1/orgs/{orgSlug}/dns/zones | 존을 만든다 (runlot dns create) |
| GET | /v1/orgs/{orgSlug}/dns/zones/{zone} | 존 하나와 레코드 전부 |
| DELETE | /v1/orgs/{orgSlug}/dns/zones/{zone} | 존을 지운다 (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
이 조직이 우리 네임서버로 운영하는 존들이다 (docs/domains.md §4).
rrsets 는 없다 — 단건 조회에만 실린다. viewer 이상.
operationId listZones
| 응답 | 뜻 | 본문 |
|---|---|---|
| 200 | 목록 | ZoneList |
| 403 | — | — |
| 404 | — | — |
| 503 | 자체 DNS 가 꺼진 배치다 (dns_not_configured), 또는 cp-core 주소 없이 뜬 cp-public 이다 (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 | 다른 조직이 이미 가진 존이다 (zone_taken) | Error |
| 503 | 자체 DNS 가 꺼진 배치다 (dns_not_configured), 또는 cp-core 주소 없이 뜬 cp-public 이다 (no_core). | Error |
GET /v1/orgs/{orgSlug}/dns/zones/{zone}
viewer 이상.
operationId getZone
| 응답 | 뜻 | 본문 |
|---|---|---|
| 200 | 존과 rrset | ZoneDetail |
| 403 | — | — |
| 404 | — | — |
| 503 | 자체 DNS 가 꺼진 배치다 (dns_not_configured), 또는 cp-core 주소 없이 뜬 cp-public 이다 (no_core). | Error |
DELETE /v1/orgs/{orgSlug}/dns/zones/{zone}
레코드가 전부 함께 사라지고 존 파일도 치운다. 위임이 아직 우리를
가리키면 그 도메인은 안 풀린다 — 지우기 전에 등록기관에서 NS 를
옮긴다. admin 이상. 감사 dns.zone.delete.
operationId deleteZone
| 응답 | 뜻 | 본문 |
|---|---|---|
| 204 | 지웠다 | — |
| 403 | — | — |
| 404 | — | — |
| 503 | 자체 DNS 가 꺼진 배치다 (dns_not_configured), 또는 cp-core 주소 없이 뜬 cp-public 이다 (no_core). | Error |
PUT /v1/orgs/{orgSlug}/dns/zones/{zone}/rrsets/{name}/{type}
rrset 하나(이름+타입)를 통째로 바꾼다 — 값 하나를 더하는 것이 아니라
records 가 그 rrset 의 새 전부다.
검증은 저장 시점에 선다 (§4.3): CNAME 은 apex 에 못 오고 같은 이름의
다른 타입과 공존하지 못하며, A/AAAA·MX·SRV·CAA 는 모양을 본다. 255
바이트를 넘는 TXT 는 존 파일에서 조각으로 나뉜다. managed_by 가 있는
행(앱 연결·ACME·존의 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-core 주소 없이 뜬 cp-public 이다 (no_core). | Error |
DELETE /v1/orgs/{orgSlug}/dns/zones/{zone}/rrsets/{name}/{type}
관리 행은 409 managed_rrset 이다 — 앱 연결을 끊는 것은 "삭제" 가
아니라 프로젝트의 도메인 화면에서 하는 연결 해제다 (§7).
member 이상. 감사 dns.rrset.delete.
operationId deleteRRset
| 응답 | 뜻 | 본문 |
|---|---|---|
| 204 | 지웠다 | — |
| 403 | — | — |
| 404 | — | — |
| 409 | 앱이 관리하는 행이다 (managed_rrset) | Error |
| 503 | 자체 DNS 가 꺼진 배치다 (dns_not_configured), 또는 cp-core 주소 없이 뜬 cp-public 이다 (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-core 주소 없이 뜬 cp-public 이다 (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-core 주소 없이 뜬 cp-public 이다 (no_core). | Error |