기능 플래그 API

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated

GitLab 기능 플래그의 리소스에 접근하기 위한 API입니다.

최소한 개발자 역할을 가진 사용자만 기능 플래그 API에 접근할 수 있습니다.

기능 플래그 페이지 매김

기본적으로, GET 요청은 한 번에 20개의 결과를 반환합니다. API 결과는 페이지네이션됩니다.

프로젝트의 기능 플래그 목록

요청된 프로젝트의 모든 기능 플래그를 가져옵니다.

GET /projects/:id/feature_flags  
속성 유형 필수 설명
id integer/string 프로젝트의 ID 또는 URL 인코딩된 경로입니다.
scope string 아니오 기능 플래그의 조건, 다음 중 하나: enabled, disabled.
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/feature_flags"  

예시 응답:

[  
   {  
      "name":"merge_train",  
      "description":"이 기능은 병합 기차에 관한 것입니다.",  
      "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":"이것은 새로운 실시간 추적 기능입니다.",  
      "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":"이 기능은 사용자 목록에 관한 것입니다.",  
      "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": "내 사용자 목록",  
            "user_xids": "user1,user2,user3"  
          }  
        }  
      ]  
   }  
]  

단일 기능 플래그 가져오기

단일 기능 플래그를 가져옵니다.

GET /projects/:id/feature_flags/:feature_flag_name
속성 유형 필수 설명
id integer/string 프로젝트의 ID 또는 URL 인코딩된 경로.
feature_flag_name string 기능 플래그의 이름입니다.
curl --header "PRIVATE-TOKEN: <your_access_token>" "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/string 프로젝트의 ID 또는 URL 인코딩된 경로.
name string 기능 플래그의 이름입니다.
version string 사용 중단됨 기능 플래그의 버전입니다. new_version_flag이어야 합니다. 레거시 기능 플래그를 생성하려면 생략하세요.
description string 아니 기능 플래그의 설명입니다.
active boolean 아니 플래그의 활성 상태입니다. 기본값은 true입니다.
strategies 전략 JSON 객체의 배열 아니 기능 플래그 전략.
strategies:name JSON 아니 전략 이름입니다. default, gradualRolloutUserId, userWithId, 또는 gitlabUserList가 될 수 있습니다. GitLab 13.5 및 이후 버전에서는 flexibleRollout도 가능합니다.
strategies:parameters JSON 아니 전략 매개변수입니다.
strategies:scopes JSON 아니 전략에 대한 범위입니다.
strategies:scopes:environment_scope string 아니 범위의 환경 범위입니다.
strategies:user_list_id integer/string 아니 기능 플래그 사용자 목록의 ID입니다. 전략이 gitlabUserList일 경우.
curl "https://gitlab.example.com/api/v4/projects/1/feature_flags" \
     --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Content-type: application/json" \
     --data @- << 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 정수/문자열 프로젝트의 ID 또는 URL 인코딩된 경로.
feature_flag_name 문자열 기능 플래그의 현재 이름.
description 문자열 아니오 기능 플래그의 설명.
active 불리언 아니오 플래그의 활성 상태.
name 문자열 아니오 기능 플래그의 새 이름.
strategies 전략 JSON 객체 배열 아니오 기능 플래그의 전략.
strategies:id JSON 아니오 기능 플래그 전략 ID.
strategies:name JSON 아니오 전략 이름.
strategies:_destroy 불리언 아니오 true일 경우 전략을 삭제합니다.
strategies:parameters JSON 아니오 전략 매개변수.
strategies:scopes JSON 아니오 전략에 대한 범위.
strategies:scopes:id JSON 아니오 환경 범위 ID.
strategies:scopes:environment_scope 문자열 아니오 범위의 환경 범위.
strategies:scopes:_destroy 불리언 아니오 true일 경우 범위를 삭제합니다.
strategies:user_list_id 정수/문자열 아니오 기능 플래그 사용자 목록의 ID. 전략이 gitlabUserList인 경우.
curl "https://gitlab.example.com/api/v4/projects/1/feature_flags/awesome_feature" \
     --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Content-type: application/json" \
     --data @- << 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 정수/문자열 프로젝트의 ID 또는 URL 인코딩 경로입니다.
feature_flag_name 문자열 기능 플래그의 이름입니다.
curl --header "PRIVATE-TOKEN: <your_access_token>" --request DELETE "https://gitlab.example.com/api/v4/projects/1/feature_flags/awesome_feature"