Pages 도메인 API
GitLab v19.5Offering: GitLab.com, GitLab Self-Managed
요약
이 API를 사용해 GitLab Pages 도메인을 관리합니다. 이 엔드포인트를 사용하려면 GitLab Pages 기능이 활성화되어 있어야 합니다. 인스턴스의 모든 Pages 도메인을 나열합니다. 성공하면 200을 반환하며 응답 속성은 다음과 같습니다.
이 API를 사용해 GitLab Pages 도메인을 관리합니다.
이 엔드포인트를 사용하려면 GitLab Pages 기능이 활성화되어 있어야 합니다. 이 기능의 관리와 사용에 대한 자세한 내용을 확인할 수 있습니다.
모든 Pages 도메인 목록 조회#
인스턴스의 모든 Pages 도메인을 나열합니다.
사전 요구 사항:
- 인스턴스에 대한 관리자 접근 권한이 있어야 합니다.
GET /pages/domains
지원되는 속성:
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
domain |
string | no | 필터링할 GitLab Pages 사이트의 도메인입니다. |
성공하면 200을 반환하며 응답 속성은
다음과 같습니다.
| 속성 | 유형 | 설명 |
|---|---|---|
domain |
string | GitLab Pages 사이트의 커스텀 도메인 이름입니다. |
url |
string | 프로토콜을 포함한 Pages 사이트의 전체 URL 입니다. |
project_id |
integer | 이 Pages 도메인과 연결된 GitLab 프로젝트의 ID 입니다. |
verified |
boolean | 도메인이 검증되었는지 여부를 나타냅니다. |
verification_code |
string | 도메인 소유권을 검증하는 데 사용하는 고유 레코드입니다. |
enabled_until |
date | 도메인이 활성 상태로 유지되는 기한입니다. 도메인이 재검증될 때마다 주기적으로 갱신됩니다. |
auto_ssl_enabled |
boolean | 이 도메인에 Let's Encrypt를 사용한 SSL 인증서 자동 생성이 활성화되어 있는지 나타냅니다. |
certificate_expiration |
object | SSL 인증서 만료에 대한 정보입니다. |
certificate_expiration.expired |
boolean | SSL 인증서가 만료되었는지 여부를 나타냅니다. |
certificate_expiration.expiration |
date | SSL 인증서의 만료 날짜와 시간입니다. |
요청 예시:
curl --request GET \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/pages/domains"
응답 예시:
[
{
"domain": "ssl.domain.example",
"url": "https://ssl.domain.example",
"project_id": 1337,
"verified": true,
"verification_code": "1234567890abcdef",
"enabled_until": "2020-04-12T14:32:00.000Z",
"auto_ssl_enabled": false,
"certificate": {
"expired": false,
"expiration": "2020-04-12T14:32:00.000Z"
}
}
]
프로젝트의 모든 Pages 도메인 목록 조회#
지정한 프로젝트의 모든 Pages 도메인을 나열합니다. 사용자는 Pages 도메인을 조회할 권한이 있어야 합니다.
GET /projects/:id/pages/domains
지원되는 속성:
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | yes | 프로젝트의 ID 또는 URL 인코딩된 경로 |
성공하면 200을 반환하며 응답 속성은
다음과 같습니다.
| 속성 | 유형 | 설명 |
|---|---|---|
domain |
string | GitLab Pages 사이트의 커스텀 도메인 이름입니다. |
url |
string | 프로토콜을 포함한 Pages 사이트의 전체 URL 입니다. |
verified |
boolean | 도메인이 검증되었는지 여부를 나타냅니다. |
verification_code |
string | 도메인 소유권을 검증하는 데 사용하는 고유 레코드입니다. |
enabled_until |
date | 도메인이 활성 상태로 유지되는 기한입니다. 도메인이 재검증될 때마다 주기적으로 갱신됩니다. |
auto_ssl_enabled |
boolean | 이 도메인에 Let's Encrypt를 사용한 SSL 인증서 자동 생성이 활성화되어 있는지 나타냅니다. |
certificate |
object | SSL 인증서에 대한 정보입니다. |
certificate.subject |
string | SSL 인증서의 주체(subject)이며, 일반적으로 도메인 정보를 담고 있습니다. |
certificate.expired |
date | SSL 인증서가 만료되었는지(true) 또는 아직 유효한지(false)를 나타냅니다. |
certificate.certificate |
string | PEM 형식의 전체 SSL 인증서입니다. |
certificate.certificate_text |
date | 발급자, 유효 기간, 주체 등 인증서 정보를 사람이 읽을 수 있는 텍스트로 표현한 값입니다. |
요청 예시:
curl --request GET \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/pages/domains"
응답 예시:
[
{
"domain": "www.domain.example",
"url": "http://www.domain.example",
"verified": true,
"verification_code": "1234567890abcdef",
"enabled_until": "2020-04-12T14:32:00.000Z",
"auto_ssl_enabled": false,
},
{
"domain": "ssl.domain.example",
"url": "https://ssl.domain.example",
"verified": true,
"verification_code": "1234567890abcdef",
"enabled_until": "2020-04-12T14:32:00.000Z",
"auto_ssl_enabled": false,
"certificate": {
"subject": "/O=Example, Inc./OU=Example Origin CA/CN=Example Origin Certificate",
"expired": false,
"certificate": "-----BEGIN CERTIFICATE-----\n … \n-----END CERTIFICATE-----",
"certificate_text": "Certificate:\n … \n"
}
}
]
Pages 도메인 조회#
지정한 프로젝트에서 Pages 도메인을 조회합니다. 사용자는 Pages 도메인을 조회할 권한이 있어야 합니다.
GET /projects/:id/pages/domains/:domain
지원되는 속성:
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | yes | 프로젝트의 ID 또는 URL 인코딩된 경로 |
domain |
string | yes | 사용자가 지정한 커스텀 도메인 |
성공하면 200을 반환하며 응답 속성은
다음과 같습니다.
| 속성 | 유형 | 설명 |
|---|---|---|
domain |
string | GitLab Pages 사이트의 커스텀 도메인 이름입니다. |
url |
string | 프로토콜을 포함한 Pages 사이트의 전체 URL 입니다. |
verified |
boolean | 도메인이 검증되었는지 여부를 나타냅니다. |
verification_code |
string | 도메인 소유권을 검증하는 데 사용하는 고유 레코드입니다. |
enabled_until |
date | 도메인이 활성 상태로 유지되는 기한입니다. 도메인이 재검증될 때마다 주기적으로 갱신됩니다. |
auto_ssl_enabled |
boolean | 이 도메인에 Let's Encrypt를 사용한 SSL 인증서 자동 생성이 활성화되어 있는지 나타냅니다. |
certificate |
object | SSL 인증서에 대한 정보입니다. |
certificate.subject |
string | SSL 인증서의 주체(subject)이며, 일반적으로 도메인 정보를 담고 있습니다. |
certificate.expired |
date | SSL 인증서가 만료되었는지(true) 또는 아직 유효한지(false)를 나타냅니다. |
certificate.certificate |
string | PEM 형식의 전체 SSL 인증서입니다. |
certificate.certificate_text |
date | 발급자, 유효 기간, 주체 등 인증서 정보를 사람이 읽을 수 있는 텍스트로 표현한 값입니다. |
요청 예시:
curl --request GET \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/pages/domains/ssl.domain.example"
응답 예시:
{
"domain": "ssl.domain.example",
"url": "https://ssl.domain.example",
"verified": true,
"verification_code": "1234567890abcdef",
"enabled_until": "2020-04-12T14:32:00.000Z",
"auto_ssl_enabled": false,
"certificate": {
"subject": "/O=Example, Inc./OU=Example Origin CA/CN=Example Origin Certificate",
"expired": false,
"certificate": "-----BEGIN CERTIFICATE-----\n … \n-----END CERTIFICATE-----",
"certificate_text": "Certificate:\n … \n"
}
}
새 Pages 도메인 생성#
지정한 프로젝트에 Pages 도메인을 생성합니다. 사용자는 새 Pages 도메인을 생성할 권한이 있어야 합니다.
POST /projects/:id/pages/domains
지원되는 속성:
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | yes | 프로젝트의 ID 또는 URL 인코딩된 경로 |
domain |
string | yes | 사용자가 지정한 커스텀 도메인 |
auto_ssl_enabled |
boolean | no | 커스텀 도메인에 대해 Let's Encrypt가 발급하는 SSL 인증서 자동 생성을 활성화합니다. |
certificate |
file/string | no | PEM 형식의 인증서이며, 중간 인증서를 가장 구체적인 것부터 덜 구체적인 순서로 이어서 넣습니다. |
key |
file/string | no | PEM 형식의 인증서 키입니다. |
성공하면 201을 반환하며 응답 속성은
다음과 같습니다.
| 속성 | 유형 | 설명 |
|---|---|---|
domain |
string | GitLab Pages 사이트의 커스텀 도메인 이름입니다. |
url |
string | 프로토콜을 포함한 Pages 사이트의 전체 URL 입니다. |
verified |
boolean | 도메인이 검증되었는지 여부를 나타냅니다. |
verification_code |
string | 도메인 소유권을 검증하는 데 사용하는 고유 레코드입니다. |
enabled_until |
date | 도메인이 활성 상태로 유지되는 기한입니다. 도메인이 재검증될 때마다 주기적으로 갱신됩니다. |
auto_ssl_enabled |
boolean | 이 도메인에 Let's Encrypt를 사용한 SSL 인증서 자동 생성이 활성화되어 있는지 나타냅니다. |
certificate |
object | SSL 인증서에 대한 정보입니다. |
certificate.subject |
string | SSL 인증서의 주체(subject)이며, 일반적으로 도메인 정보를 담고 있습니다. |
certificate.expired |
date | SSL 인증서가 만료되었는지(true) 또는 아직 유효한지(false)를 나타냅니다. |
certificate.certificate |
string | PEM 형식의 전체 SSL 인증서입니다. |
certificate.certificate_text |
date | 발급자, 유효 기간, 주체 등 인증서 정보를 사람이 읽을 수 있는 텍스트로 표현한 값입니다. |
요청 예시:
.pem 파일의 인증서로 새 Pages 도메인을 생성합니다.
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/pages/domains" \
--form "domain=ssl.domain.example" \
--form "certificate=@/path/to/cert.pem" \
--form "key=@/path/to/key.pem"
인증서가 담긴 변수를 사용해 새 Pages 도메인을 생성합니다.
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/pages/domains" \
--form "domain=ssl.domain.example" \
--form "certificate=$CERT_PEM" \
--form "key=$KEY_PEM"
자동 인증서로 새 Pages 도메인을 생성합니다.
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--form "domain=ssl.domain.example" \
--form "auto_ssl_enabled=true" \
--url "https://gitlab.example.com/api/v4/projects/5/pages/domains"
응답 예시:
{
"domain": "ssl.domain.example",
"url": "https://ssl.domain.example",
"auto_ssl_enabled": true,
"certificate": {
"subject": "/O=Example, Inc./OU=Example Origin CA/CN=Example Origin Certificate",
"expired": false,
"certificate": "-----BEGIN CERTIFICATE-----\n … \n-----END CERTIFICATE-----",
"certificate_text": "Certificate:\n … \n"
}
}
Pages 도메인 업데이트#
프로젝트에서 지정한 Pages 도메인을 업데이트합니다. 사용자는 기존 Pages 도메인을 변경할 권한이 있어야 합니다.
PUT /projects/:id/pages/domains/:domain
지원되는 속성:
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | yes | 프로젝트의 ID 또는 URL 인코딩된 경로 |
domain |
string | yes | 사용자가 지정한 커스텀 도메인 |
auto_ssl_enabled |
boolean | no | 커스텀 도메인에 대해 Let's Encrypt가 발급하는 SSL 인증서 자동 생성을 활성화합니다. |
certificate |
file/string | no | PEM 형식의 인증서이며, 중간 인증서를 가장 구체적인 것부터 덜 구체적인 순서로 이어서 넣습니다. |
key |
file/string | no | PEM 형식의 인증서 키입니다. |
성공하면 200을 반환하며 응답 속성은
다음과 같습니다.
| 속성 | 유형 | 설명 |
|---|---|---|
domain |
string | GitLab Pages 사이트의 커스텀 도메인 이름입니다. |
url |
string | 프로토콜을 포함한 Pages 사이트의 전체 URL 입니다. |
verified |
boolean | 도메인이 검증되었는지 여부를 나타냅니다. |
verification_code |
string | 도메인 소유권을 검증하는 데 사용하는 고유 레코드입니다. |
enabled_until |
date | 도메인이 활성 상태로 유지되는 기한입니다. 도메인이 재검증될 때마다 주기적으로 갱신됩니다. |
auto_ssl_enabled |
boolean | 이 도메인에 Let's Encrypt를 사용한 SSL 인증서 자동 생성이 활성화되어 있는지 나타냅니다. |
certificate |
object | SSL 인증서에 대한 정보입니다. |
certificate.subject |
string | SSL 인증서의 주체(subject)이며, 일반적으로 도메인 정보를 담고 있습니다. |
certificate.expired |
date | SSL 인증서가 만료되었는지(true) 또는 아직 유효한지(false)를 나타냅니다. |
certificate.certificate |
string | PEM 형식의 전체 SSL 인증서입니다. |
certificate.certificate_text |
date | 발급자, 유효 기간, 주체 등 인증서 정보를 사람이 읽을 수 있는 텍스트로 표현한 값입니다. |
인증서 추가#
.pem 파일에서 Pages 도메인의 인증서를 추가합니다.
curl --request PUT \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/pages/domains/ssl.domain.example" \
--form "certificate=@/path/to/cert.pem" \
--form "key=@/path/to/key.pem"
인증서가 담긴 변수를 사용해 Pages 도메인의 인증서를 추가합니다.
curl --request PUT \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/pages/domains/ssl.domain.example" \
--form "certificate=$CERT_PEM" \
--form "key=$KEY_PEM"
응답 예시:
{
"domain": "ssl.domain.example",
"url": "https://ssl.domain.example",
"auto_ssl_enabled": false,
"certificate": {
"subject": "/O=Example, Inc./OU=Example Origin CA/CN=Example Origin Certificate",
"expired": false,
"certificate": "-----BEGIN CERTIFICATE-----\n … \n-----END CERTIFICATE-----",
"certificate_text": "Certificate:\n … \n"
}
}
Pages 커스텀 도메인에 Let's Encrypt 통합 활성화#
curl --request PUT \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/pages/domains/ssl.domain.example" \
--form "auto_ssl_enabled=true"
응답 예시:
{
"domain": "ssl.domain.example",
"url": "https://ssl.domain.example",
"auto_ssl_enabled": true
}
인증서 제거#
Pages 도메인에 연결된 SSL 인증서를 제거하려면 다음을 실행합니다.
curl --request PUT \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/pages/domains/ssl.domain.example" \
--form "certificate=" \
--form "key="
응답 예시:
{
"domain": "ssl.domain.example",
"url": "https://ssl.domain.example",
"auto_ssl_enabled": false
}
Pages 도메인 검증#
히스토리
- GitLab 17.7에서 도입되었습니다.
프로젝트에서 지정한 Pages 도메인을 검증합니다. 사용자는 Pages 도메인을 업데이트할 권한이 있어야 합니다.
PUT /projects/:id/pages/domains/:domain/verify
지원되는 속성:
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | yes | 프로젝트의 ID 또는 URL 인코딩된 경로 |
domain |
string | yes | 검증할 커스텀 도메인 |
성공하면 200을 반환하며 응답 속성은
다음과 같습니다.
| 속성 | 유형 | 설명 |
|---|---|---|
domain |
string | GitLab Pages 사이트의 커스텀 도메인 이름입니다. |
url |
string | 프로토콜을 포함한 Pages 사이트의 전체 URL 입니다. |
verified |
boolean | 도메인이 검증되었는지 여부를 나타냅니다. |
verification_code |
string | 도메인 소유권을 검증하는 데 사용하는 고유 레코드입니다. |
enabled_until |
date | 도메인이 활성 상태로 유지되는 기한입니다. 도메인이 재검증될 때마다 주기적으로 갱신됩니다. |
auto_ssl_enabled |
boolean | 이 도메인에 Let's Encrypt를 사용한 SSL 인증서 자동 생성이 활성화되어 있는지 나타냅니다. |
certificate |
object | SSL 인증서에 대한 정보입니다. |
certificate.subject |
string | SSL 인증서의 주체(subject)이며, 일반적으로 도메인 정보를 담고 있습니다. |
certificate.expired |
date | SSL 인증서가 만료되었는지(true) 또는 아직 유효한지(false)를 나타냅니다. |
certificate.certificate |
string | PEM 형식의 전체 SSL 인증서입니다. |
certificate.certificate_text |
date | 발급자, 유효 기간, 주체 등 인증서 정보를 사람이 읽을 수 있는 텍스트로 표현한 값입니다. |
요청 예시:
curl --request PUT \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/pages/domains/ssl.domain.example/verify"
응답 예시:
{
"domain": "ssl.domain.example",
"url": "https://ssl.domain.example",
"auto_ssl_enabled": false,
"verified": true,
"verification_code": "1234567890abcdef",
"enabled_until": "2020-04-12T14:32:00.000Z"
}
Pages 도메인 삭제#
프로젝트에서 지정한 Pages 도메인을 삭제합니다.
DELETE /projects/:id/pages/domains/:domain
지원되는 속성:
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | yes | 프로젝트의 ID 또는 URL 인코딩된 경로 |
domain |
string | yes | 사용자가 지정한 커스텀 도메인 |
성공하면 본문이 비어 있는 204 No Content HTTP 응답이 반환됩니다.
요청 예시:
curl --request DELETE \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/pages/domains/ssl.domain.example"