Azure DevOps REST API : Identifier les features actives d’un projet

Azure DevOps propose de nombreuses fonctionnalités qui peuvent être activées ou désactivées selon les besoins au niveau de chaque projet créés au sein de votre organisation.

L’API REST mise à disposition par Microsoft permet de récupérer bon nombre des informations stockées dans les projets hébergés sur Azure DevOps. Malheureusement, selon cette documentation officielle, il n’existe pas de possibilités pour identifier les fonctionnalités activées et/ou désactivées au niveau d’un projet.

Mais un manque de documentation ne signifie pas que cela n’est pas possible, d’autant plus que le site web permet de le faire. Une petite analyse des appels réseaux (merci Charles ou Fiddler) entre le site web et l’API REST permet de voir qu’en réalité une API existe.

Pour interroger celle-ci, il suffit d’effectuer une requête avec les paramètres ci-dessous, en remplaçant {OrganizationName} et {ProjectId} par les valeurs adéquates, sans oublier de passer les en-têtes d’authentification selon le mode de sécurité que vous utilisez :

POST https://dev.azure.com/{OrganizationName}/_apis/featuremanagement/featurestatesquery?api-version=5.1-preview
{
  "featureIds": ["ms.vss-work.agile", "ms.vss-code.version-control", "ms.vss-build.pipelines", "ms.feed.feed", "ms.vss-test-web.test"],
  "scopeValues": {
    "project": "{ProjectId}"
  }
}

En soumettant cette requête, vous obtenez pour le projet souhaité, le statut de chacune des fonctionnalités pouvant être activées/désactivées pour un projet. Ci-dessous un exemple de la réponse renvoyée par l’API REST :

{
  "featureIds": [
    "ms.vss-work.agile",
    "ms.vss-code.version-control",
    "ms.vss-build.pipelines",
    "ms.feed.feed",
    "ms.vss-test-web.test"
  ],
  "featureStates": {
    "ms.vss-work.agile": {
      "featureId": "ms.vss-work.agile",
      "scope": {
        "userScoped": false,
        "settingScope": "project"
      },
      "state": "disabled"
    },
    "ms.vss-code.version-control": {
      "featureId": "ms.vss-code.version-control",
      "scope": null,
      "state": "enabled"
    },
    "ms.vss-build.pipelines": {
      "featureId": "ms.vss-build.pipelines",
      "scope": null,
      "state": "enabled"
    },
    "ms.feed.feed": {
      "featureId": "ms.feed.feed",
      "scope": {
        "userScoped": false,
        "settingScope": "project"
      },
      "state": "disabled"
    },
    "ms.vss-test-web.test": {
      "featureId": "ms.vss-test-web.test",
      "scope": null,
      "state": "disabled",
      "reason": "\"Test Plans\" is off because the \"Boards\" feature is off. In order to manage \"Test Plans\", you must turn on \"Boards\".",
      "overridden": true
    }
  },
  "scopeValues": {
    "project": "12345678-1234-1234-1234-1234567890ab"
  }
}

En espérant que cette API vous sera utile même si elle n’apparait pas sur la documentation officielle disponible sur le site de Microsoft.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.