--- title: "updateDomain" slug: "fin-global-dns-v2-domains-updatedomain" updated: 2026-10-21T05:01:10Z published: 2026-10-23T09:00:07Z canonical: "api-fin.ncloud-docs.com/fin-global-dns-v2-domains-updatedomain" --- > ## Documentation Index > Fetch the complete documentation index at: https://api-fin.ncloud-docs.com/llms.txt > Use this file to discover all available pages before exploring further. # updateDomain 이 가이드는 API 명세를 기반으로 AI가 자동 생성했습니다. Ncloud 표준 표현을 적용한 API입니다. 도메인 정보를 전체 교체(PUT) 방식으로 수정합니다. 생략된 선택 필드는 null/기본값으로 초기화됩니다. 클라이언트는 원하는 전체 표현을 그대로 전송해야 합니다. 수정은 비동기로 완료되므로 요청이 접수되면 작업(Operation) 자원을 202 Accepted 로 반환합니다. 완료 여부는 응답의 `id` 로 `GET /domains/operations/{operationId}` 를 폴링해 `done` 으로 확인하며, 완료되면 작업의 `results["0"]` 에 교체된 도메인 자원이 담깁니다. 작업이 끝나기 전의 도메인 자원은 `status` 가 PROCESSING 인데, 이는 네임서버 동기화가 아직 끝나지 않았다는 뜻일 뿐이므로 이 상태에서도 후속 변경 요청을 할 수 있습니다. 전체 교체이므로 동시 수정 시 나중 요청이 앞선 변경을 덮어쓸 수 있습니다. 조회에서 받은 `ETag` 를 `If-Match` 로 함께 보내면 그 사이 변경된 경우 412 PreconditionFailed 로 거부됩니다. ## 요청 요청 형식을 설명합니다. 요청 형식은 다음과 같습니다. | 메서드 | URI | | --- | --- | | PUT | /domains/{domainNo} | ### 요청 헤더 요청 헤더에 대한 설명은 다음과 같습니다. | 필드 | 필수 여부 | 설명 | | --- | --- | --- | | `If-Match` | Optional | 직전 조회에서 받은 ETag - 그 이후 자원이 변경되었으면 교체를 거부하고 412 PreconditionFailed - 두 클라이언트가 같은 자원을 동시에 수정할 때 앞선 변경을 덮어쓰는 것(lost update) 방지 - 생략하면 전제 조건 검사 없이 교체 | Global DNS API에서 공통으로 사용하는 헤더에 대한 정보는 [Global DNS 요청 헤더](/docs/fin-global-dns-v2-overview#%EC%9A%94%EC%B2%AD%ED%97%A4%EB%8D%94)를 참조해 주십시오. ### 요청 경로 파라미터 요청 경로 파라미터에 대한 설명은 다음과 같습니다. | 필드 | 타입 | 필수 여부 | 설명 | | --- | --- | --- | --- | | `domainNo` | Integer (int64) | Required | 도메인 번호 - 보유하지 않았거나 존재하지 않는 번호는 403 Forbidden (두 경우를 구분하지 않음) - <예시> 120 | ### 요청 바디 요청 바디에 대한 설명은 다음과 같습니다. | 필드 | 타입 | 필수 여부 | 설명 | | --- | --- | --- | --- | | `dnssecEnabled` | Boolean | Required | DNSSEC 적용 여부 - `true` \| `false` - <예시> false | | `description` | String \| null | Optional | 도메인 설명 - 길이: ~ 1,000 - <예시> my domain | ### 요청 예시 요청 예시는 다음과 같습니다. ``` curl --location --request PUT 'https://globaldns.apigw.fin-ntruss.com/dns/v2/domains/120' \ --header 'x-ncp-apigw-timestamp: {Timestamp}' \ --header 'x-ncp-iam-access-key: {Access Key}' \ --header 'x-ncp-apigw-signature-v2: {API Gateway Signature}' \ --header 'Content-Type: application/json' \ --data '{ "dnssecEnabled": false }' ``` ## 응답 응답 형식을 설명합니다. ### 응답 헤더 응답 헤더에 대한 설명은 다음과 같습니다. | 필드 | 필수 여부 | 설명 | | --- | --- | --- | | `Retry-After` | Optional | 권장 폴링 대기 시간(초) - 아직 진행 중인 작업·자원에만 포함 (202 응답) | ### 응답 바디 응답 바디에 대한 설명은 다음과 같습니다. | 필드 | 타입 | 필수 여부 | 설명 | | --- | --- | --- | --- | | `id` | String (uuid) | - | 작업 ID - <예시> 3fa85f64-5717-4562-b3fc-2c963f66afa6 | | `done` | Boolean | - | 작업 완료 여부 - 저장소 반영 시점이 아니라 네임서버에 실제로 반영된 것까지 확인된 시점에 true - true 이면 변경이 DNS 질의에 반영된 상태 - `true` \| `false` - <예시> false | | `metadata` | Object<[OperationMetadata](/docs/fin-global-dns-v2-type-operationmetadata)> | - | 작업 메타데이터 | | `error` | Object<[Error](/docs/fin-global-dns-v2-domains-updatedomain#Error)> \| Null | - | 실패 사유 (완료 및 실패 시에만 존재) - 실패는 변경분을 검증해 반영하는 구간(APPLYING)에서만 발생 - 네임서버 동기화 구간(SYNCHRONIZING)에 들어선 작업은 이미 반영된 변경을 되돌리지 않으므로 실패로 끝나지 않으며, 동기화가 지연되면 완료될 때까지 진행 중으로 남음 | | `results` | Map<[DomainDetailed](/docs/fin-global-dns-v2-domains-updatedomain#DomainDetailed)> | - | 작업 결과 자원 맵 (요청 인덱스를 문자열 키로 사용) - 단건 작업이므로 `"0"` 하나만 포함 - 생성·수정 작업이 완료된 경우에만 포함되며, 진행 중이거나 삭제 작업이면 포함되지 않음 | #### Error 에러 정보 | 필드 | 타입 | 필수 여부 | 설명 | | --- | --- | --- | --- | | `errorCode` | String | - | 에러 코드 | | `message` | String | - | 에러 메시지 (기본 영어, 다국어 지원 가능) | | `detail` | String | - | 에러 상세 정보 (기본 영어, 다국어 지원 가능) | | `fieldErrors` | List<[FieldError](/docs/type-fielderror)> | - | 입력값 에러가 발생한 경우 각 필드별 에러 상세 정보 목록 | #### DomainDetailed 도메인 상세 | 필드 | 타입 | 필수 여부 | 설명 | | --- | --- | --- | --- | | `domainNo` | Integer (int64) | - | 도메인 번호 - <예시> 1 | | `name` | String | - | 도메인 이름 - <예시> example.com | | `applied` | Boolean | - | 도메인 처리 완료 여부 (`status` 에서 파생) - `true` \| `false` - `true`: 처리 완료 (`status` 가 SUCCEEDED) - `false`: 처리 중 (`status` 가 PROCESSING) - <예시> true | | `dnssecEnabled` | Boolean | - | DNSSEC 적용 여부 - `true` \| `false` - <예시> true | | `status` | String | - | 도메인 처리 상태 - 실패 상태 값은 없으며, 완료 판정에는 작업 자원의 `done` 사용 - `PROCESSING` \| `SUCCEEDED` - `PROCESSING`: 생성·수정·삭제 처리 중. 네임서버 동기화가 확인될 때까지 유지 - `SUCCEEDED`: 처리 완료. 작업(Operation)의 `done` 이 true 가 되는 시점과 같음 - <예시> SUCCEEDED | | `description` | String \| null | - | 도메인 설명 - <예시> my domain | | `createdTimestamp` | Integer (int64) | - | 생성 시각 (Unix epoch 밀리초) - <예시> 1568111263000 | | `updatedTimestamp` | Integer (int64) | - | 수정 시각 (Unix epoch 밀리초) - <예시> 1568111263000 | | `recordCount` | Integer (int64) | - | 이 도메인(domainNo)에 속한 레코드 수 - <예시> 5 | | `soa` | Object<[SoaRecord](/docs/fin-global-dns-v2-domains-updatedomain#SoaRecord)> | - | SOA 레코드 - 항상 객체이며 하위 필드만 null 가능 - 하위 필드가 모두 null 인 경우: 도메인 설정 적용 전이거나 삭제 처리 중 - 삭제가 완료된 도메인은 조회 시 403 Forbidden | #### SoaRecord SOA 레코드. 사용자가 직접 설정하지 않으며, 도메인 설정 적용 시 시스템이 값을 채웁니다. 적용 전에는 `domainName`·`nameServers`·`serial`·`refresh`·`retry`·`expire`·`ttl` 이 null 이고, `dnssecEnabled` 는 항상 값이 있습니다(적용 전에는 false). | 필드 | 타입 | 필수 여부 | 설명 | | --- | --- | --- | --- | | `domainName` | String \| null | - | 도메인 이름 - <예시> example.com | | `nameServers` | List \| null | - | 네임서버 목록 - <예시> `["ns1-1.ns-ncloud.com.", "ns1-2.ns-ncloud.com."]` | | `serial` | Integer (int64) \| null | - | SOA serial 번호 - <예시> 2019091001 | | `refresh` | Integer (int64) \| null | - | SOA refresh (초) - <예시> 3600 | | `retry` | Integer (int64) \| null | - | SOA retry (초) - <예시> 600 | | `expire` | Integer (int64) \| null | - | SOA expire (초) - <예시> 604800 | | `ttl` | Integer (int64) \| null | - | SOA 최소 TTL (초) - <예시> 300 | | `dnssecEnabled` | Boolean | - | DNSSEC 적용 여부 - `true` \| `false` - <예시> true | ### 응답 상태 코드 Global DNS API에서 공통으로 사용하는 응답 상태 코드에 대한 정보는 [Global DNS 응답 상태 코드](/docs/fin-global-dns-v2-overview#%EC%9D%91%EB%8B%B5%EC%83%81%ED%83%9C%EC%BD%94%EB%93%9C)를 참조해 주십시오. 이 API에만 해당하는 응답 상태 코드는 다음과 같습니다. | HTTP 상태 코드 | 코드 | 메시지 | 설명 | | --- | --- | --- | --- | | 202 | - | - | Accepted (수정 접수). 응답 본문은 작업(Operation) 자원이며 `done` 은 false 입니다. `GET /domains/operations/{operationId}` 로 폴링해 `done` 이 true 가 되면 `results` 에서 교체된 도메인 자원을 확인합니다. 폴링 간격은 `Retry-After` 헤더를 따릅니다. | | 412 | PreconditionFailed | The precondition in one or more of the request fields evaluated to false | `If-Match` 로 보낸 ETag 가 현재 자원과 달라 교체를 거부한 경우. 자원을 다시 조회해 새 ETag 로 재시도 | ### 응답 예시 응답 예시는 다음과 같습니다. ``` { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "done": false, "metadata": { "operationType": "UPDATE", "resourceType": "records", "startDateTime": "2026-06-30T12:00:00Z", "endDateTime": "2026-06-30T12:00:05Z", "phase": "SYNCHRONIZING" }, "results": { "key": { "domainNo": 1, "name": "example.com", "applied": true, "dnssecEnabled": true, "status": "SUCCEEDED", "description": "my domain", "createdTimestamp": 1568111263000, "updatedTimestamp": 1568111263000, "recordCount": 5, "soa": { "domainName": "example.com", "nameServers": [ "ns1-1.ns-ncloud.com.", "ns1-2.ns-ncloud.com." ], "serial": 2019091001, "refresh": 3600, "retry": 600, "expire": 604800, "ttl": 300, "dnssecEnabled": true } } } } ```