# Feature Flags API

> 原文：[https://docs.gitlab.com/ee/api/feature_flags.html](https://docs.gitlab.com/ee/api/feature_flags.html)

*   [Feature Flags pagination](#feature-flags-pagination)
*   [List feature flags for a project](#list-feature-flags-for-a-project)
*   [Get a single feature flag](#get-a-single-feature-flag)
*   [Create a feature flag](#create-a-feature-flag)
*   [Update a feature flag](#update-a-feature-flag)
*   [Delete a feature flag](#delete-a-feature-flag)

# Feature Flags API[](#feature-flags-api-premium "Permalink")

[Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/9566) in [GitLab Premium](https://about.gitlab.com/pricing/) 12.5.

**注意：**此 API 位于[功能标志的](../operations/feature_flags.html#enable-or-disable-feature-flag-strategies)后面. 如果您的环境中未启用此标志，则可以使用[旧功能标志 API](feature_flags_legacy.html) .

用于访问[GitLab 功能标记](../operations/feature_flags.html)资源的 API.

具有开发者或更高[权限的用户](../user/permissions.html)可以访问功能标记 API.

## Feature Flags pagination[](#feature-flags-pagination "Permalink")

默认情况下，因为 API 结果是[分页的](README.html#pagination) ，所以`GET`请求一次返回 20 个结果.

## List feature flags for a project[](#list-feature-flags-for-a-project "Permalink")

获取所请求项目的所有功能标志.

```
GET /projects/:id/feature_flags 
```

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | integer/string | yes | 项目的 ID 或[URL 编码的路径](README.html#namespaced-path-encoding) . |
| `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":"This feature is about merge train",  "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"  }  ]  }  ]  },  {  "name":"new_live_trace",  "description":"This is a new live trace feature",  "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"  }  ]  }  ]  }  ] 
```

## Get a single feature flag[](#get-a-single-feature-flag "Permalink")

获取单个功能标志.

```
GET /projects/:id/feature_flags/:name 
```

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | integer/string | yes | 项目的 ID 或[URL 编码的路径](README.html#namespaced-path-encoding) . |
| `name` | string | yes | The name of the feature flag. |

```
curl --header "PRIVATE-TOKEN: <your_access_token>" https://gitlab.example.com/api/v4/projects/1/feature_flags/awesome_feature 
```

响应示例：

```
{  "name":  "awesome_feature",  "description":  null,  "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"  }  ]  }  ]  } 
```

## Create a feature flag[](#create-a-feature-flag "Permalink")

创建一个新的功能标志.

```
POST /projects/:id/feature_flags 
```

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | integer/string | yes | 项目的 ID 或[URL 编码的路径](README.html#namespaced-path-encoding) . |
| `name` | string | yes | 功能标志的名称. |
| `version` | string | yes | 功能标志的版本. 必须是`new_version_flag` . 省略或设置为`legacy_flag`即可创建[旧版功能标志](feature_flags_legacy.html) . |
| `description` | string | no | 功能标志的描述. |
| `strategies` | JSON | no | 特征标志[策略](../operations/feature_flags.html#feature-flag-strategies) . |
| `strategies:name` | JSON | no | 策略名称. |
| `strategies:parameters` | JSON | no | 策略参数. |
| `strategies:scopes` | JSON | no | 策略的范围. |
| `strategies:scopes:environment_scope` | string | no | 范围的环境规格. |

```
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,  "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"  }  ]  }  ]  } 
```

## Update a feature flag[](#update-a-feature-flag "Permalink")

更新功能标志.

```
PUT /projects/:id/feature_flags/:name 
```

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | integer/string | yes | 项目的 ID 或[URL 编码的路径](README.html#namespaced-path-encoding) . |
| `name` | string | yes | 功能标志的名称. |
| `description` | string | no | 功能标志的描述. |
| `strategies` | JSON | no | 特征标志[策略](../operations/feature_flags.html#feature-flag-strategies) . |
| `strategies:id` | JSON | no | 功能标记策略 ID. |
| `strategies:name` | JSON | no | 策略名称. |
| `strategies:parameters` | JSON | no | 策略参数. |
| `strategies:scopes` | JSON | no | 策略的范围. |
| `strategies:scopes:id` | JSON | no | 范围 ID. |
| `strategies:scopes:environment_scope` | string | no | 范围的环境规格. |

```
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,  "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 a feature flag[](#delete-a-feature-flag "Permalink")

删除功能标志.

```
DELETE /projects/:id/feature_flags/:name 
```

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | integer/string | yes | 项目的 ID 或[URL 编码的路径](README.html#namespaced-path-encoding) . |
| `name` | string | yes | 功能标志的名称. |

```
curl --header "PRIVATE-TOKEN: <your_access_token>" --request DELETE "https://gitlab.example.com/api/v4/projects/1/feature_flags/awesome_feature" 
```