azureazure-devopsazure-pipelinesazure-devops-rest-api

How to get the userId field in Azure Devops API


I have to use this API : PATCH https://vsaex.dev.azure.com/{organisation}/_apis/userentitlements/{userId} to give read access to some projects to all users in my organisation. I am able to call this API, with success, but I don't know how to get the right GUID for the users. (To get the right Guid for the user I used Fiddler to spy the request).

When I use this API, (GET https://vssps.dev.azure.com/{organisation}/_apis/graph/users?api-version=6.0-preview.1) I get all users of my organisation, but in the list, there no the userId, I have only the originId, and it is the guid from the AAD, and I cannot update the user with that information.

I tried too to use the descriptor field, without any success. Does somebody have an idea to get this specific userId?

Example of User list I get with this API :

{
    "count": 133,
    "value": [{
        "subjectKind": "user",
        "metaType": "member",
        "directoryAlias": "COD0001",
        "domain": "10a83eaa-05c5-4b22-a201-63cddba4fe8c",
        "principalName": "bidon.person@example.com",
        "mailAddress": "bidon.person@example.com",
        "origin": "aad",
        "originId": "7c3408d6-62f4-43ff-bdbe-5be97000ba30",
        "displayName": "Personne bidon",
        "_links": {
            "self": {
                "href": "https://vssps.dev.azure.com/BIDON/_apis/Graph/Users/aad.ZDYzNzUwNzctNWJjYy03ZTkzLWIzZGUtMDEzNTdhM2JiMDIx"
            },
            "memberships": {
                "href": "https://vssps.dev.azure.com/BIDON/_apis/Graph/Memberships/aad.ZDYzNzUwNzctNWJjYy03ZTkzLWIzZGUtMDEzNTdhM2JiMDIx"
            },
            "membershipState": {
                "href": "https://vssps.dev.azure.com/BIDON/_apis/Graph/MembershipStates/aad.ZDYzNzUwNzctNWJjYy03ZTkzLWIzZGUtMDEzNTdhM2JiMDIx"
            },
            "storageKey": {
                "href": "https://vssps.dev.azure.com/BIDON/_apis/Graph/StorageKeys/aad.ZDYzNzUwNzctNWJjYy03ZTkzLWIzZGUtMDEzNTdhM2JiMDIx"
            },
            "avatar": {
                "href": "https://dev.azure.com/BIDON/_apis/GraphProfile/MemberAvatars/aad.ZDYzNzUwNzctNWJjYy03ZTkzLWIzZGUtMDEzNTdhM2JiMDIx"
            }
        },
        "url": "https://vssps.dev.azure.com/BIDON/_apis/Graph/Users/aad.ZDYzNzUwNzctNWJjYy03ZTkzLWIzZGUtMDEzNTdhM2JiMDIx",
        "descriptor": "aad.ZDYzNzUwNzctNWJjYy03ZTkzLWIzZGUtMDEzNTdhM2JiMDIx"
    },
    ...
    ]

}


Solution

  • To get id you should use User Entitlements - Search User Entitlements which is

    GET https://vsaex.dev.azure.com/{organization}/_apis/userentitlements?api-version=6.0-preview.3
    

    then you will get response like

    "members": [
            {
                "id": "<YOUR ID HERE>",
                "user": {
                    "subjectKind": "user",
                    "metaType": "member",
                    "domain": "Windows Live ID",