Azure DevOps REST API : Renvoyer les enums sous forme de nombres

Comme dans quasiment toutes les API REST existantes, celle d’Azure DevOps utilise de nombreuses énumérations pour certaines propriétés renvoyées.

Prenons l’exemple de la réponse renvoyée lors de la récupération de la liste des projets d’une organisation :

{
  "count": 1,
  "value": [
    {
      "id": "12345678-1234-1234-1234-123456789123",
      "name": "Project Name",
      "url": "https://dev.azure.com/OrganizationName/_apis/projects/12345678-1234-1234-1234-123456789123",
      "state": "wellFormed",
      "revision": 1,
      "visibility": "private",
      "lastUpdateTime": "2019-10-01T12:00:00.000Z"
    }
  ]
}

On constate que l’objet renvoyé contient 2 propriétés nommées state et visibility qui sont en réalité des énumérations qui peuvent contenir les valeurs de type String suivantes :

Même si cela est très clair au demeurant, tous les langages de développement ne sont pas nécessairement capables de gérer les énumérations sous la forme de valeurs de type String (ex: C# où les énumérations doivent être numériques).

Si vous êtes dans ce cas et que malgré tout vous souhaitez utiliser des énumérations dans votre code, il existe la possibilité de personnaliser le fonctionnement de l’API REST en modifiant les en-têtes HTTP envoyés lors des appels à l’API.

Cela se passe en modifiant la valeur de l’en-tête Accept sous la forme ci-dessous :

Accept: application/json;enumsAsNumbers=true

En passant cette valeur d’en-tête lors de vos appels, ceux-ci renverront désormais les valeurs d’enumérations sous forme de nombres. Exemple avec notre requête précédente :

{
  "count": 1,
  "value": [
    {
      "id": "12345678-1234-1234-1234-123456789123",
      "name": "Project Name",
      "url": "https://dev.azure.com/OrganizationName/_apis/projects/12345678-1234-1234-1234-123456789123",
      "state": 1,
      "revision": 1,
      "visibility": 0,
      "lastUpdateTime": "2019-10-01T12:00:00.000Z"
    }
  ]
}

En espérant que cela pourra vous être utile si vous êtes dans le cas de figure d’un langage ne supportant pas les énumérations de type String.

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.