InfoGrab DocsInfoGrab Docs

피처 플래그 API

요약

이 API를 사용하여 GitLab 기능 플래그를 다룹니다. 요청한 프로젝트의 모든 기능 플래그를 가져옵니다. 결과의 페이지네이션을 제어하려면 page와 per_page 페이지네이션 파라미터를 사용합니다. 지정한 프로젝트에 기능 플래그를 생성합니다.

히스토리
  • GitLab Premium 12.5에서 도입되었습니다.
  • 13.5에서 GitLab Free로 이동되었습니다.

이 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라는 이름의 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다.
Feature flag

이 기능 플래그는 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라는 이름의 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다.
Feature flag

이 기능 플래그는 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"
}

각 값의 의미는 기능 플래그를 관리할 수 있는 대상 제한을 참고합니다.

피처 플래그 API

GitLab v19.5
Tier: Free, Premium, Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
원문 보기

요약

이 API를 사용하여 GitLab 기능 플래그를 다룹니다. 요청한 프로젝트의 모든 기능 플래그를 가져옵니다. 결과의 페이지네이션을 제어하려면 page와 per_page 페이지네이션 파라미터를 사용합니다. 지정한 프로젝트에 기능 플래그를 생성합니다.

히스토리
  • GitLab Premium 12.5에서 도입되었습니다.
  • 13.5에서 GitLab Free로 이동되었습니다.

이 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라는 이름의 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다.
Feature flag

이 기능 플래그는 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라는 이름의 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다.
Feature flag

이 기능 플래그는 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"
}

각 값의 의미는 기능 플래그를 관리할 수 있는 대상 제한을 참고합니다.