Get all organizations in Azure DevOps using REST API
If you load the current landing page, it displays all your organizations tied to your account. I assumed it had to get that information some way. I captured the network traffic and I believe you could get to the data you want using a system API call. However, it might change or might become unsupported without notice, so use at your own discretion.
You can get the information you want using this API:
Post https://dev.azure.com/{organization1}/_apis/Contribution/HierarchyQuery?api-version=5.0-preview.1
Body:
{ "contributionIds": ["ms.vss-features.my-organizations-data-provider"], "dataProviderContext": { "properties":{} }}
Response:
{ "dataProviderSharedData": {}, "dataProviders": { "ms.vss-web.component-data": {}, "ms.vss-web.shared-data": null, "ms.vss-features.my-organizations-data-provider": { "organizations": [ { "id": "{redacted id}", "name": "{organization1}", "url": "https://{organization1}.visualstudio.com/" }, { "id": "{redacted id}", "name": "{organization2}", "url": "https://dev.azure.com/{organization2}/" } ], "createNewOrgUrl": "https://app.vsaex.visualstudio.com/go/signup?account=true" } } }
you can do it simply by making a call to get all the account you are member/ owner of. However for that you need your id, which can be easily fetched by making get profile call. Here are steps below:
- Make a VSTS API call to get profile details using Bearer token or PAT
https://app.vssps.visualstudio.com/_apis/profile/profiles/me?api-version=5.1
This will return you, your Id:
{ "displayName": "xxxx", "publicAlias": "xxx", "emailAddress": "xxx", "coreRevision": xxx, "timeStamp": "2019-06-17T09:29:11.1917804+00:00", "id": "{{We need this}}", "revision": 298459751}
- Next, make a call to get all the accounts you are member of or owner of:
https://app.vssps.visualstudio.com/_apis/accounts?api-version=5.1&memberId={{Your Id}}
Response:
{ "count": 1, "value": [ { "accountId": "xxx", "accountUri": "xxx", "accountName": "xxx", "properties": {} } ]}
It will return list of accounts you are associated with.
A REST API request/response pair can be separated into five components:
The request URI, in the following form:
VERB https://{instance}[/{team-project}]/_apis[/{area}]/{resource}?api-version={version}
instance: The Azure DevOps Services organization or TFS server you're sending the request to.
They are structured as follows:Azure DevOps Services: dev.azure.com/{organization}
The REST API's are organization specific. This is not documented at present. You could submit a feature request here: https://developercommunity.visualstudio.com/spaces/21/index.html
Our PM and product team will kindly review your suggestion. Sorry for any inconvenience.
As a workaround, you could use the API which captured from network traffic just as Matt mentioned.