機能フラグAPI
GitLabの開発で使われるFlipperベースの機能フラグを管理するためのAPIです。
すべてのメソッドには管理者の作成権限が必要です。
現在、APIはブール値とパーセンテージオブタイムゲート値のみをサポートしていることに注意してください。
全機能のリスト
永続化されたすべてのフィーチャとそのゲート値のリストを取得します。
GET /features
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/features"
応答例
[
{
"name": "experimental_feature",
"state": "off",
"gates": [
{
"key": "boolean",
"value": false
}
],
"definition": null
},
{
"name": "my_user_feature",
"state": "on",
"gates": [
{
"key": "percentage_of_actors",
"value": 34
}
],
"definition": {
"name": "my_user_feature",
"introduced_by_url": "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/40880",
"rollout_issue_url": "https://gitlab.com/gitlab-org/gitlab/-/issues/244905",
"group": "group::ci",
"type": "development",
"default_enabled": false
}
},
{
"name": "new_library",
"state": "on",
"gates": [
{
"key": "boolean",
"value": true
}
],
"definition": null
}
]
すべての機能定義のリスト
すべてのフィーチャ定義のリストを取得します。
GET /features/definitions
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/features/definitions"
応答例
[
{
"name": "geo_pages_deployment_replication",
"introduced_by_url": "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/68662",
"rollout_issue_url": "https://gitlab.com/gitlab-org/gitlab/-/issues/337676",
"milestone": "14.3",
"log_state_changes": null,
"type": "development",
"group": "group::geo",
"default_enabled": true
}
]
機能の設定または作成
フィーチャーのゲート値を設定します。指定した名前のフィーチャがまだ存在しない場合は、作成されます。値はブール値か、時間のパーセンテージを示す整数です。
まだ開発中の機能を有効にする前に、セキュリティと安定性のリスクを理解する必要があります。
POST /features/:name
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
name | 文字列です。 | yes | 作成または更新する機能の名前 |
value | 整数/文字列 | yes |
true またはfalse で有効/無効を、整数で時間の割合を指定します。 |
key | 文字列です。 | いいえ |
percentage_of_actors またはpercentage_of_time (デフォルト) |
feature_group | 文字列です。 | いいえ | Aフィーチャーグループ名 |
user | 文字列です。 | いいえ | GitLab ユーザー名、またはカンマで区切られた複数のユーザー名 |
group | 文字列です。 | いいえ | GitLabグループのパス、例えばgitlab-org 、またはカンマで区切られた複数のグループパス。 |
namespace | 文字列です。 | いいえ | GitLabグループまたはユーザーネームスペースのパス、例えばjohn-doe 、またはカンマで区切られた複数のネームスペースのパス。GitLab 15.0で導入されました。 |
project | 文字列です。 | いいえ | プロジェクトパス、例えばgitlab-org/gitlab-foss 、またはカンマで区切られた複数のプロジェクトパス |
repository | 文字列です。 | いいえ | リポジトリのパスです。例:gitlab-org/gitlab-test.git 、gitlab-org/gitlab-test.wiki.git 、snippets/21.git など。カンマで複数のリポジトリパスを区切ります。 |
force | boolean | いいえ | YAML定義などの機能フラグ検証チェックをスキップ |
feature_group
、user
、group
、namespace
、project
、repository
の機能を1回のAPIコールで有効または無効にできます。
curl --data "value=30" --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/features/new_library"
応答例
{
"name": "new_library",
"state": "conditional",
"gates": [
{
"key": "boolean",
"value": false
},
{
"key": "percentage_of_time",
"value": 30
}
],
"definition": {
"name": "my_user_feature",
"introduced_by_url": "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/40880",
"rollout_issue_url": "https://gitlab.com/gitlab-org/gitlab/-/issues/244905",
"group": "group::ci",
"type": "development",
"default_enabled": false
}
}
俳優のロールアウト率を設定
ロールアウトをアクターのパーセンテージに設定します。
POST https://gitlab.example.com/api/v4/features/my_user_feature?private_token=<your_access_token>
Content-Type: application/x-www-form-urlencoded
value=42&key=percentage_of_actors&
応答例
{
"name": "my_user_feature",
"state": "conditional",
"gates": [
{
"key": "boolean",
"value": false
},
{
"key": "percentage_of_actors",
"value": 42
}
],
"definition": {
"name": "my_user_feature",
"introduced_by_url": "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/40880",
"rollout_issue_url": "https://gitlab.com/gitlab-org/gitlab/-/issues/244905",
"group": "group::ci",
"type": "development",
"default_enabled": false
}
}
my_user_feature
をアクターの42%
に展開します。
機能の削除
フィーチャーゲートを削除します。応答は、ゲートが存在する場合と存在しない場合に等しくなります。
DELETE /features/:name