Back to Gitlabhq

API des feature flags

doc-locale/fr-fr/api/feature_flags.md

19.1.015.1 KB
Original Source

{{< details >}}

  • Édition : Gratuite, GitLab Premium, GitLab Ultimate
  • Offre : GitLab.com, GitLab Self-Managed, GitLab Dedicated

{{< /details >}}

{{< history >}}

{{< /history >}}

Utilisez cette API pour interagir avec les feature flags GitLab.

Prérequis :

  • Vous devez disposer du rôle Développeur, Chargé de maintenance ou Propriétaire.

Lister les feature flags d'un projet {#list-feature-flags-for-a-project}

Récupère tous les feature flags du projet demandé.

plaintext
GET /projects/:id/feature_flags

Utilisez les paramètres de pagination page et per_page pour contrôler la pagination des résultats.

AttributTypeObligatoireDescription
identier ou chaîneouiL'ID ou le chemin encodé en URL du projet.
scopestringnonLa condition des feature flags, parmi : enabled, disabled.
shell
curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/1/feature_flags"

Exemple de réponse :

json
[
   {
      "name":"merge_train",
      "description":"This feature is about merge train",
      "active": true,
      "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"
            }
          ],
          "user_list": null
        }
      ]
   },
   {
      "name":"new_live_trace",
      "description":"This is a new live trace feature",
      "active": true,
      "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"
            }
          ],
          "user_list": null
        }
      ]
   },
   {
      "name":"user_list",
      "description":"This feature is about user list",
      "active": true,
      "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": "gitlabUserList",
          "parameters": {},
          "scopes": [
            {
              "id": 2,
              "environment_scope": "staging"
            }
          ],
          "user_list": {
            "id": 1,
            "iid": 1,
            "name": "My user list",
            "user_xids": "user1,user2,user3"
          }
        }
      ]
   }
]

Récupérer un feature flag {#retrieve-a-feature-flag}

Récupère un feature flag spécifié.

plaintext
GET /projects/:id/feature_flags/:feature_flag_name

Utilisez les paramètres de pagination page et per_page pour contrôler la pagination des résultats.

AttributTypeObligatoireDescription
identier ou chaîneouiL'ID ou le chemin encodé en URL du projet.
feature_flag_namestringouiLe nom du feature flag.
shell
curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/1/feature_flags/awesome_feature"

Exemple de réponse :

json
{
  "name": "awesome_feature",
  "description": null,
  "active": true,
  "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"
        }
      ],
      "user_list": null
    }
  ]
}

Créer un feature flag {#create-a-feature-flag}

Crée un feature flag pour un projet spécifié.

plaintext
POST /projects/:id/feature_flags
AttributTypeObligatoireDescription
identier ou chaîneouiL'ID ou le chemin encodé en URL du projet.
namestringouiLe nom du feature flag.
versionstringouiDéprécié La version du feature flag. Doit être new_version_flag. Omettre pour créer un feature flag Legacy.
descriptionstringnonLa description du feature flag.
activebooleannonL'état actif du flag. La valeur par défaut est true.
strategiestableau d'objets JSON de stratégienonLes stratégies du feature flag.
strategies:nameJSONnonLe nom de la stratégie. Peut être default, gradualRolloutUserId, userWithId ou gitlabUserList. Dans GitLab 13.5 et les versions ultérieures, peut être flexibleRollout.
strategies:parametersJSONnonLes paramètres de la stratégie.
strategies:scopesJSONnonLes portées de la stratégie.
strategies:scopes:environment_scopestringnonLa portée d'environnement de la portée.
strategies:user_list_identier ou chaînenonL'ID de la liste d'utilisateurs du feature flag. Si la stratégie est gitlabUserList.
shell
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

Exemple de réponse :

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

Mettre à jour un feature flag {#update-a-feature-flag}

Met à jour un feature flag spécifié.

plaintext
PUT /projects/:id/feature_flags/:feature_flag_name
AttributTypeObligatoireDescription
identier ou chaîneouiL'ID ou le chemin encodé en URL du projet.
feature_flag_namestringouiLe nom actuel du feature flag.
descriptionstringnonLa description du feature flag.
activebooleannonL'état actif du flag.
namestringnonLe nouveau nom du feature flag.
strategiestableau d'objets JSON de stratégienonLes stratégies du feature flag.
strategies:idJSONnonL'ID de la stratégie du feature flag.
strategies:nameJSONnonLe nom de la stratégie.
strategies:_destroybooleannonSupprimer la stratégie si la valeur est true.
strategies:parametersJSONnonLes paramètres de la stratégie.
strategies:scopesJSONnonLes portées de la stratégie.
strategies:scopes:idJSONnonL'ID de la portée d'environnement.
strategies:scopes:environment_scopestringnonLa portée d'environnement de la portée.
strategies:scopes:_destroybooleannonSupprimer la portée si la valeur est true.
strategies:user_list_identier ou chaînenonL'ID de la liste d'utilisateurs du feature flag. Si la stratégie est gitlabUserList.
shell
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

Exemple de réponse :

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

Supprimer un feature flag {#delete-a-feature-flag}

Supprime un feature flag spécifié.

plaintext
DELETE /projects/:id/feature_flags/:feature_flag_name
AttributTypeObligatoireDescription
identier ou chaîneouiL'ID ou le chemin encodé en URL du projet.
feature_flag_namestringouiLe nom du feature flag.
shell
curl --request DELETE \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/1/feature_flags/awesome_feature"