As of now there is no unique graph endpoint for teams to list all Teams in an organization. Microsoft Teams uses Office 365 groups (Unified Group) as its base service for identity and some other features, so there is a one-to-one relationship between Office 365 groups and Teams. When you create a Team, the back-end will automatically create an Office 365 Group.
To list all teams in a tenant, first we have to find all unified groups and then in code find the groups that have a resourceProvisioningOptions property that contains “Team”
List all unified groups:
https://graph.microsoft.com/v1.0/groups?$filter=groupTypes/any(a:a eq 'unified')
List only required properties for all unified groups:
The group object includes large number properties, so we can list only required properties using $select query
https://graph.microsoft.com/v1.0/groups?$filter=groupTypes/any(a:a eq 'unified')&$select=id,resourceProvisioningOptions
Sample output:
In below result, Teams enabled in one group and not enabled in the other group.
{ "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#groups(id,resourceProvisioningOptions)", "value": [ { "id": "08f62f70-9727-4e6e-63ef-8e0f2d9b7b23", #Teams not enabled "resourceProvisioningOptions": [] }, { "id": "02cd9fd6-8f93-4756-87c3-1fb73740a315", #Teams enabled group "resourceProvisioningOptions": ["Team"] }, ] }
As of now (23-March-2019), $filter with the property resourceProvisioningOptions is not supported, but using the Beta APIs you can apply $filter with resourceProvisioningOptions to return only the groups that have teams.
https://graph.microsoft.com/beta/groups?$filter=resourceProvisioningOptions/Any(x:x eq 'Team')
Get Team specific information
Now you have got list of teams enabled groups and the group object includes only limited amount of teams related properties (for ex: id and name of the teams). To get information for the team in a particular group, call the below API and include the group ID.
https://graph.microsoft.com/v1.0/teams/{teamGroupId} #For example: https://graph.microsoft.com/v1.0/teams/02cd9fd6-8f93-4756-87c3-1fb73740a315
Find teams in which current user is a member of
You can use the joinedTeams endpoint to list all the teams in which current user or specific user is member.
https://graph.microsoft.com/v1.0/me/joinedTeams
Find teams where a specific user is member of
https://graph.microsoft.com/v1.0/users/{id}/joinedTeams #For example https://graph.microsoft.com/v1.0/users/63cd9fd6-8f93-4756-87c3-1fb63740a315/joinedTeams
What about get Teams using Display Name ?
You have to filter groups by displayName.
https://graph.microsoft.com/v1.0/groups?$filter=displayName eq ‘TeamName’
Once you find the required group (Team), you can get team details by using the groupId (TeamId):
https://graph.microsoft.com/v1.0/teams/{teamGroupId}