313.md 7.4 KB
Newer Older
Lab机器人's avatar
readme  
Lab机器人 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
# 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" 
```