피처 플래그 API
GitLab v19.5Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
요약
이 API를 사용하여 GitLab 기능 플래그를 다룹니다. 요청한 프로젝트의 모든 기능 플래그를 가져옵니다. 결과의 페이지네이션을 제어하려면 page와 per_page 페이지네이션 파라미터를 사용합니다. 지정한 프로젝트에 기능 플래그를 생성합니다.
이 API를 사용하여 GitLab 기능 플래그를 다룹니다.
사전 요구 사항:
- Developer, Maintainer 또는 Owner 권한이 있어야 합니다.
프로젝트의 기능 플래그 목록 조회#
요청한 프로젝트의 모든 기능 플래그를 가져옵니다.
GET /projects/:id/feature_flags
결과의 페이지네이션을 제어하려면 page와 per_page 페이지네이션 파라미터를
사용합니다.
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
scope |
string | 아니요 | 기능 플래그의 조건이며 enabled, disabled 중 하나입니다. |
curl --request GET \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/1/feature_flags"
응답 예시:
[
{
"name":"merge_train",
"description":"This feature is about merge train",
"active": true,
"version": "new_version_flag",
"created_at":"2019-11-04T08:13:51.423Z",
"updated_at":"2019-11-04T08:13:51.423Z",
"scopes":[],
"strategies": [
{
"id": 1,
"name": "userWithId",
"parameters": {
"userIds": "user1"
},
"scopes": [
{
"id": 1,
"environment_scope": "production"
}
],
"user_list": null
}
]
},
{
"name":"new_live_trace",
"description":"This is a new live trace feature",
"active": true,
"version": "new_version_flag",
"created_at":"2019-11-04T08:13:10.507Z",
"updated_at":"2019-11-04T08:13:10.507Z",
"scopes":[],
"strategies": [
{
"id": 2,
"name": "default",
"parameters": {},
"scopes": [
{
"id": 2,
"environment_scope": "staging"
}
],
"user_list": null
}
]
},
{
"name":"user_list",
"description":"This feature is about user list",
"active": true,
"version": "new_version_flag",
"created_at":"2019-11-04T08:13:10.507Z",
"updated_at":"2019-11-04T08:13:10.507Z",
"scopes":[],
"strategies": [
{
"id": 2,
"name": "gitlabUserList",
"parameters": {},
"scopes": [
{
"id": 2,
"environment_scope": "staging"
}
],
"user_list": {
"id": 1,
"iid": 1,
"name": "My user list",
"user_xids": "user1,user2,user3"
}
}
]
}
]
기능 플래그 조회#
지정한 기능 플래그를 조회합니다.
GET /projects/:id/feature_flags/:feature_flag_name
결과의 페이지네이션을 제어하려면 page와 per_page 페이지네이션 파라미터를
사용합니다.
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
feature_flag_name |
string | 예 | 기능 플래그의 이름입니다. |
curl --request GET \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/1/feature_flags/awesome_feature"
응답 예시:
{
"name": "awesome_feature",
"description": null,
"active": true,
"version": "new_version_flag",
"created_at": "2020-05-13T19:56:33.119Z",
"updated_at": "2020-05-13T19:56:33.119Z",
"scopes": [],
"strategies": [
{
"id": 36,
"name": "default",
"parameters": {},
"scopes": [
{
"id": 37,
"environment_scope": "production"
}
],
"user_list": null
}
]
}
기능 플래그 생성#
지정한 프로젝트에 기능 플래그를 생성합니다.
POST /projects/:id/feature_flags
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
name |
string | 예 | 기능 플래그의 이름입니다. |
version |
string | 예 | Deprecated 기능 플래그의 버전입니다. new_version_flag 여야 합니다. 레거시 기능 플래그를 생성하려면 생략합니다. |
description |
string | 아니요 | 기능 플래그의 설명입니다. |
active |
boolean | 아니요 | 플래그의 활성 상태입니다. 기본값은 true 입니다. |
strategies |
array of strategy JSON objects | 아니요 | 기능 플래그 전략입니다. |
strategies:name |
JSON | 아니요 | 전략 이름입니다. default, gradualRolloutUserId, userWithId, gitlabUserList, flexibleRollout 중 하나일 수 있습니다. |
strategies:parameters |
JSON | 아니요 | 전략 파라미터입니다. |
strategies:scopes |
JSON | 아니요 | 전략의 스코프입니다. |
strategies:scopes:environment_scope |
string | 아니요 | 해당 스코프의 환경 스코프입니다. |
strategies:user_list_id |
integer or string | 아니요 | 기능 플래그 사용자 목록의 ID 입니다. 전략이 gitlabUserList 인 경우에 사용합니다. |
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-type: application/json" \
--data @- \
--url "https://gitlab.example.com/api/v4/projects/1/feature_flags" << EOF
{
"name": "awesome_feature",
"version": "new_version_flag",
"strategies": [{ "name": "default", "parameters": {}, "scopes": [{ "environment_scope": "production" }] }]
}
EOF
응답 예시:
{
"name": "awesome_feature",
"description": null,
"active": true,
"version": "new_version_flag",
"created_at": "2020-05-13T19:56:33.119Z",
"updated_at": "2020-05-13T19:56:33.119Z",
"scopes": [],
"strategies": [
{
"id": 36,
"name": "default",
"parameters": {},
"scopes": [
{
"id": 37,
"environment_scope": "production"
}
]
}
]
}
기능 플래그 업데이트#
지정한 기능 플래그를 업데이트합니다.
PUT /projects/:id/feature_flags/:feature_flag_name
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
feature_flag_name |
string | 예 | 기능 플래그의 현재 이름입니다. |
description |
string | 아니요 | 기능 플래그의 설명입니다. |
active |
boolean | 아니요 | 플래그의 활성 상태입니다. |
name |
string | 아니요 | 기능 플래그의 새 이름입니다. |
strategies |
array of strategy JSON objects | 아니요 | 기능 플래그 전략입니다. |
strategies:id |
JSON | 아니요 | 기능 플래그 전략 ID 입니다. |
strategies:name |
JSON | 아니요 | 전략 이름입니다. |
strategies:_destroy |
boolean | 아니요 | true 이면 전략을 삭제합니다. |
strategies:parameters |
JSON | 아니요 | 전략 파라미터입니다. |
strategies:scopes |
JSON | 아니요 | 전략의 스코프입니다. |
strategies:scopes:id |
JSON | 아니요 | 환경 스코프 ID 입니다. |
strategies:scopes:environment_scope |
string | 아니요 | 해당 스코프의 환경 스코프입니다. |
strategies:scopes:_destroy |
boolean | 아니요 | true 이면 해당 스코프를 삭제합니다. |
strategies:user_list_id |
integer or string | 아니요 | 기능 플래그 사용자 목록의 ID 입니다. 전략이 gitlabUserList 인 경우에 사용합니다. |
curl --request PUT \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-type: application/json" \
--data @- \
--url "https://gitlab.example.com/api/v4/projects/1/feature_flags/awesome_feature" << EOF
{
"strategies": [{ "name": "gradualRolloutUserId", "parameters": { "groupId": "default", "percentage": "25" }, "scopes": [{ "environment_scope": "staging" }] }]
}
EOF
응답 예시:
{
"name": "awesome_feature",
"description": null,
"active": true,
"version": "new_version_flag",
"created_at": "2020-05-13T20:10:32.891Z",
"updated_at": "2020-05-13T20:10:32.891Z",
"scopes": [],
"strategies": [
{
"id": 38,
"name": "gradualRolloutUserId",
"parameters": {
"groupId": "default",
"percentage": "25"
},
"scopes": [
{
"id": 40,
"environment_scope": "staging"
}
]
},
{
"id": 37,
"name": "default",
"parameters": {},
"scopes": [
{
"id": 39,
"environment_scope": "production"
}
]
}
]
}
기능 플래그 삭제#
지정한 기능 플래그를 삭제합니다.
DELETE /projects/:id/feature_flags/:feature_flag_name
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
feature_flag_name |
string | 예 | 기능 플래그의 이름입니다. |
curl --request DELETE \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/1/feature_flags/awesome_feature"
기능 플래그 설정 조회#
히스토리
- GitLab 19.4에서
feature_flag_management_permissions라는 이름의 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다.
이 기능 플래그는 minimum_role의 적용 여부를 제어하며, 이 엔드포인트에 대한 접근은 제어하지 않습니다.
자세한 내용은 히스토리를 참고합니다.
지정한 프로젝트의 기능 플래그 설정을 조회합니다.
GET /projects/:id/feature_flags_settings
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
curl --request GET \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/1/feature_flags_settings"
응답 예시:
{
"minimum_role": "developer"
}
기능 플래그 설정 업데이트#
히스토리
- GitLab 19.4에서
feature_flag_management_permissions라는 이름의 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다.
이 기능 플래그는 minimum_role의 적용 여부를 제어하며, 이 엔드포인트에 대한 접근은 제어하지 않습니다.
자세한 내용은 히스토리를 참고합니다.
지정한 프로젝트의 기능 플래그 설정을 업데이트합니다.
사전 요구 사항:
- 프로젝트에 대해 최소 Maintainer 권한이 있어야 합니다.
minimum_role을owner또는no_one_allowed이외의 값으로 변경하려면 프로젝트에 대해 Owner 권한이 있어야 합니다.
PUT /projects/:id/feature_flags_settings
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
minimum_role |
string | 예 | 기능 플래그를 관리하는 데 필요한 최소 권한입니다. no_one_allowed, developer, maintainer, owner 중 하나입니다. |
curl --request PUT \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/1/feature_flags_settings?minimum_role=maintainer"
응답 예시:
{
"minimum_role": "maintainer"
}
각 값의 의미는 기능 플래그를 관리할 수 있는 대상 제한을 참고합니다.