피처 플래그 API

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

GitLab 피처 플래그의 리소스에 액세스하기 위한 API입니다.

최소한 개발자 역할을 가진 사용자가 피처 플래그 API에 액세스할 수 있습니다.

피처 플래그 페이지네이션

기본적으로 GET 요청은 페이지별로 20개의 결과를 반환합니다.

프로젝트용 피처 플래그 목록

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

GET /projects/:id/feature_flags
속성 타입 필수 설명
id integer/string yes 프로젝트의 ID 또는 URL 인코딩된 경로.
scope string no 피처 플래그의 조건 중 하나, 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": "My user list",
            "user_xids": "user1,user2,user3"
          }
        }
      ]
   }
]

단일 피처 플래그 가져오기

단일 피처 플래그를 가져옵니다.

GET /projects/:id/feature_flags/:feature_flag_name
속성 타입 필수 설명
id integer/string yes 프로젝트의 ID 또는 URL 인코딩된 경로.
feature_flag_name string yes 피처 플래그의 이름.
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 yes 프로젝트의 ID 또는 URL 인코딩된 경로.
name string yes 피처 플래그의 이름.
version string yes Deprecated 피처 플래그의 버전. new_version_flag여야 합니다. Legacy 피처 플래그를 만들려면 생략하세요.
description string no 피처 플래그의 설명.
active boolean no 플래그의 활성 상태. 기본값은 true입니다.
strategies 전략 JSON 객체의 배열 no 피처 플래그 전략들.
strategies:name JSON no 전략 이름. default, gradualRolloutUserId, userWithId, 또는 gitlabUserList가 될 수 있습니다. GitLab 13.5 및 이후에는 flexibleRollout가 될 수 있습니다.
strategies:parameters JSON no 전략의 매개변수.
strategies:scopes JSON no 전략의 범위.
strategies:scopes:environment_scope string no 범위의 환경 범위.
strategies:user_list_id integer/string no 피처 플래그 사용자 목록의 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 integer/string 프로젝트의 ID 또는 URL-encoded path.
feature_flag_name string 현재 기능 플래그의 이름.
description string 아니요 기능 플래그의 설명.
active boolean 아니요 플래그의 활성 상태.
name string 아니요 새로운 기능 플래그의 이름.
strategies 전략 JSON 객체의 배열 아니요 기능 플래그 전략.
strategies:id JSON 아니요 기능 플래그 전략 ID.
strategies:name JSON 아니요 전략 이름.
strategies:_destroy boolean 아니요 참일 경우 전략 삭제.
strategies:parameters JSON 아니요 전략 매개변수.
strategies:scopes JSON 아니요 전략의 범위.
strategies:scopes:id JSON 아니요 환경 범위 ID.
strategies:scopes:environment_scope string 아니요 범위의 환경 범위.
strategies:scopes:_destroy boolean 아니요 참일 경우 범위 삭제.
strategies:user_list_id integer/string 아니요 기능 플래그 사용자 목록의 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 integer/string 프로젝트의 ID 또는 URL-encoded path.
feature_flag_name string 기능 플래그의 이름.
curl --header "PRIVATE-TOKEN: <your_access_token>" --request DELETE "https://gitlab.example.com/api/v4/projects/1/feature_flags/awesome_feature"