커스텀 도메인
hostnames 묶음의 오퍼레이션 4 개입니다.
| 메서드 | 경로 | 하는 일 |
|---|---|---|
| GET | /v1/orgs/{orgSlug}/projects/{projectName}/hostnames | 프로젝트에 붙은 도메인 목록 (runlot domain list) |
| POST | /v1/orgs/{orgSlug}/projects/{projectName}/hostnames | 커스텀 도메인을 건다 (runlot domain add) |
| DELETE | /v1/orgs/{orgSlug}/projects/{projectName}/hostnames/{host} | 커스텀 도메인을 뗀다 (runlot domain rm) |
| POST | /v1/orgs/{orgSlug}/projects/{projectName}/hostnames/{host}/verify | 지금 확인한다 (runlot domain verify) |
GET /v1/orgs/{orgSlug}/projects/{projectName}/hostnames
기본 호스트네임(kind: default) 과 커스텀 도메인(kind: custom) 이
함께 온다. 커스텀 행에는 안내 레코드(verify) 와 상태가 실린다
(docs/domains.md §3.2). viewer 이상.
operationId listHostnames
| 응답 | 뜻 | 본문 |
|---|---|---|
| 200 | 목록 | HostnameList |
| 403 | — | — |
| 404 | — | — |
POST /v1/orgs/{orgSlug}/projects/{projectName}/hostnames
이름은 소문자·punycode 로 정규화해 저장한다. 와일드카드와 우리
도메인(*.runlot.app·*.runlot.dev·앱 도메인) 아래 이름은 받지 않는다.
행은 pending_dns 로 만들어지고 그 순간부터 이름을 잡는다 — 검증
중에도 다른 프로젝트가 같은 이름을 가져가지 못한다. 연결되기 전까지는
라우팅에 실리지 않아서 그 이름으로 오는 요청은 404 unknown_hostname
이다.
같은 프로젝트가 같은 이름을 다시 보내면 있던 행이 그대로 온다 (멱등) —
토큰이 바뀌면 이미 넣어 둔 TXT 가 그 순간 틀린 값이 된다. member 이상.
감사 hostname.add.
operationId addHostname
본문 application/json · object
| 응답 | 뜻 | 본문 |
|---|---|---|
| 200 | 만들어졌거나 이미 있던 행 | Hostname |
| 400 | 이름 모양이 아니거나(bad_request), 와일드카드거나, 우리 도메인 아래다 | Error |
| 403 | — | — |
| 404 | — | — |
| 409 | 다른 프로젝트가 이미 쥔 이름이다. code 는 hostname_taken | Error |
DELETE /v1/orgs/{orgSlug}/projects/{projectName}/hostnames/{host}
Cloudflare 의 custom hostname 과 우리 존의 관리 레코드를 함께 거둔다.
기본 호스트네임은 거절한다 (400) — 그것은 배포가 정하는 주소라,
여기서 지우면 다음 배포까지 프로젝트에 닿을 길이 없다. member 이상.
감사 hostname.delete.
operationId deleteHostname
| 응답 | 뜻 | 본문 |
|---|---|---|
| 204 | 뗐다 | — |
| 400 | 기본 호스트네임이다 | Error |
| 403 | — | — |
| 404 | — | — |
POST /v1/orgs/{orgSlug}/projects/{projectName}/hostnames/{host}/verify
배경 작업(1 분 주기) 과 같은 판정을 즉시 부른다. 소유는 셋 중
하나로 통과한다: 그 이름이 우리 존 안이고 org 가 같거나,
_runlot-verify.<host> TXT 가 맞거나, <host> 의 CNAME 이 fallback
origin 을 가리킨다.
소유 증명 없이 active 가 되는 길은 없다. 통과하지 못하면 상태는
그대로이고 lastError 에 지금 무엇이 보이는지가 담긴다. member 이상.
operationId verifyHostname
| 응답 | 뜻 | 본문 |
|---|---|---|
| 200 | 확인 뒤의 행 | Hostname |
| 403 | — | — |
| 404 | — | — |