gitlab-org--gitlab-foss/doc/api/features.md
Zeger-Jan van de Weg 5396594a83
Allow setting of feature gates per project
For features the feature gates are sometimes projects, not groups or
users. For example for git object pools:
https://gitlab.com/gitlab-com/gl-infra/infrastructure/issues/5872

This commit allows for setting feature group gates based on projects, by its
path as that seems most convenient.
2019-01-14 14:29:51 +01:00

2 KiB

Features flags API

All methods require administrator authorization.

Notice that currently the API only supports boolean and percentage-of-time gate values.

List all features

Get a list of all persisted features, with its gate values.

GET /features
curl --header "PRIVATE-TOKEN: <your_access_token>" https://gitlab.example.com/api/v4/features

Example response:

[
  {
    "name": "experimental_feature",
    "state": "off",
    "gates": [
      {
        "key": "boolean",
        "value": false
      }
    ]
  },
  {
    "name": "new_library",
    "state": "on",
    "gates": [
      {
        "key": "boolean",
        "value": true
      }
    ]
  }
]

Set or create a feature

Set a feature's gate value. If a feature with the given name doesn't exist yet it will be created. The value can be a boolean, or an integer to indicate percentage of time.

POST /features/:name
Attribute Type Required Description
name string yes Name of the feature to create or update
value integer/string yes true or false to enable/disable, or an integer for percentage of time
feature_group string no A Feature group name
user string no A GitLab username
project string no A projects path, for example 'gitlab-org/gitlab-ce'

Note that you can enable or disable a feature for a feature_group, a user, and a project in a single API call.

curl --data "value=30" --header "PRIVATE-TOKEN: <your_access_token>" https://gitlab.example.com/api/v4/features/new_library

Example response:

{
  "name": "new_library",
  "state": "conditional",
  "gates": [
    {
      "key": "boolean",
      "value": false
    },
    {
      "key": "percentage_of_time",
      "value": 30
    }
  ]
}

Delete a feature

Removes a feature gate. Response is equal when the gate exists, or doesn't.

DELETE /features/:name