機能フラグ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
  }
]

機能の設定または作成

フィーチャーのゲート値を設定します。指定した名前のフィーチャがまだ存在しない場合は、作成されます。値はブール値か、時間のパーセンテージを示す整数です。

caution
まだ開発中の機能を有効にする前に、セキュリティと安定性のリスクを理解する必要があります。
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.gitgitlab-org/gitlab-test.wiki.gitsnippets/21.gitなど。カンマで複数のリポジトリパスを区切ります。
forcebooleanいいえYAML定義などの機能フラグ検証チェックをスキップ

feature_groupusergroupnamespaceprojectrepository の機能を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