List apps from the Microsoft Teams app catalog.
This includes apps from the Microsoft Teams store, as well as apps from your organization's app catalog (the tenant app catalog). To get apps from your organization's app catalog only, specify organization as the distributionMethod in the request.
Note
In general, the id of a teamsApp resource is generated by the server. It is not the same as the id specified in a Teams app manifest, unless its distributionMethod is store. For other cases, the id provided by the developer as part of the Teams app manifest is stamped as the externalId in the teamsApp resource.
Permissions
One of the following permissions is required to call this API. To learn more, including how to choose permissions, see Permissions.
Note: Permissions marked with ** are supported only for backward compatibility. We recommend that you update your solutions to use an alternative permission listed in the previous table and avoid using these permissions going forward.
HTTP request
GET /appCatalogs/teamsApps
Optional query parameters
This method supports the $filter, $select, and $expandOData query parameters to help customize the response.
Using $expand=AppDefinitions will return more information about the state of the app, such as the publishingState, which reflects the app submission review status and returns whether an app has been approved, rejected, or remains under review.
Note: You can filter on any of the fields of the teamsApp object to shorten the list of results. You can use any of the following filter operations: Equal, not-equal, and, or, and not.
Request headers
Header
Value
Authorization
Bearer {token}. Required.
Request body
Do not supply a request body for this method.
Response
If successful, this method returns a 200 OK response code and a list of teamsApp objects in the response body.
Examples
Example 1: List all applications specific to the tenant
The following example lists all applications that are specific to your tenant.
GET https://graph.microsoft.com/v1.0/appCatalogs/teamsApps?$filter=distributionMethod eq 'organization'
// Code snippets are only available for the latest version. Current version is 5.x
var graphClient = new GraphServiceClient(requestAdapter);
var result = await graphClient.AppCatalogs.TeamsApps.GetAsync((requestConfiguration) =>
{
requestConfiguration.QueryParameters.Filter = "distributionMethod eq 'organization'";
});
<?php
// THIS SNIPPET IS A PREVIEW FOR THE KIOTA BASED SDK. NON-PRODUCTION USE ONLY
$graphServiceClient = new GraphServiceClient($requestAdapter);
$requestConfiguration = new TeamsAppsRequestBuilderGetRequestConfiguration();
$queryParameters = TeamsAppsRequestBuilderGetRequestConfiguration::createQueryParameters();
$queryParameters->filter = "distributionMethod eq 'organization'";
$requestConfiguration->queryParameters = $queryParameters;
$result = $graphServiceClient->appCatalogs()->teamsApps()->get($requestConfiguration);
GET https://graph.microsoft.com/v1.0/appCatalogs/teamsApps?$filter=id eq 'b1c5353a-7aca-41b3-830f-27d5218fe0e5'
// Code snippets are only available for the latest version. Current version is 5.x
var graphClient = new GraphServiceClient(requestAdapter);
var result = await graphClient.AppCatalogs.TeamsApps.GetAsync((requestConfiguration) =>
{
requestConfiguration.QueryParameters.Filter = "id eq 'b1c5353a-7aca-41b3-830f-27d5218fe0e5'";
});
<?php
// THIS SNIPPET IS A PREVIEW FOR THE KIOTA BASED SDK. NON-PRODUCTION USE ONLY
$graphServiceClient = new GraphServiceClient($requestAdapter);
$requestConfiguration = new TeamsAppsRequestBuilderGetRequestConfiguration();
$queryParameters = TeamsAppsRequestBuilderGetRequestConfiguration::createQueryParameters();
$queryParameters->filter = "id eq 'b1c5353a-7aca-41b3-830f-27d5218fe0e5'";
$requestConfiguration->queryParameters = $queryParameters;
$result = $graphServiceClient->appCatalogs()->teamsApps()->get($requestConfiguration);
Example 3: Find application based on the Teams app manifest ID
The following example lists applications that match the id specified in the Teams app manifest. In the example, the manifest ID of the Teams app is cf1ba4c7-f94e-4d80-ba90-5594b641a8ee.
GET https://graph.microsoft.com/v1.0/appCatalogs/teamsApps?$filter=externalId eq 'cf1ba4c7-f94e-4d80-ba90-5594b641a8ee'
// Code snippets are only available for the latest version. Current version is 5.x
var graphClient = new GraphServiceClient(requestAdapter);
var result = await graphClient.AppCatalogs.TeamsApps.GetAsync((requestConfiguration) =>
{
requestConfiguration.QueryParameters.Filter = "externalId eq 'cf1ba4c7-f94e-4d80-ba90-5594b641a8ee'";
});
<?php
// THIS SNIPPET IS A PREVIEW FOR THE KIOTA BASED SDK. NON-PRODUCTION USE ONLY
$graphServiceClient = new GraphServiceClient($requestAdapter);
$requestConfiguration = new TeamsAppsRequestBuilderGetRequestConfiguration();
$queryParameters = TeamsAppsRequestBuilderGetRequestConfiguration::createQueryParameters();
$queryParameters->filter = "externalId eq 'cf1ba4c7-f94e-4d80-ba90-5594b641a8ee'";
$requestConfiguration->queryParameters = $queryParameters;
$result = $graphServiceClient->appCatalogs()->teamsApps()->get($requestConfiguration);
Example 4: List applications with a given ID, and return the submission review state
The following example lists applications with a given ID, and expands appDefinitions to return the publishingState, which reflects the app's submission review state. Submitted means the review is pending, published means the app was approved by the admin, and rejected means the app was rejected by the admin.
GET https://graph.microsoft.com/v1.0/appCatalogs/teamsApps?$filter=id eq '876df28f-2e78-423b-94a5-44181bd0e225'&$expand=appDefinitions
// Code snippets are only available for the latest version. Current version is 5.x
var graphClient = new GraphServiceClient(requestAdapter);
var result = await graphClient.AppCatalogs.TeamsApps.GetAsync((requestConfiguration) =>
{
requestConfiguration.QueryParameters.Filter = "id eq '876df28f-2e78-423b-94a5-44181bd0e225'";
requestConfiguration.QueryParameters.Expand = new string []{ "appDefinitions" };
});
<?php
// THIS SNIPPET IS A PREVIEW FOR THE KIOTA BASED SDK. NON-PRODUCTION USE ONLY
$graphServiceClient = new GraphServiceClient($requestAdapter);
$requestConfiguration = new TeamsAppsRequestBuilderGetRequestConfiguration();
$queryParameters = TeamsAppsRequestBuilderGetRequestConfiguration::createQueryParameters();
$queryParameters->filter = "id eq '876df28f-2e78-423b-94a5-44181bd0e225'";
$queryParameters->expand = ["appDefinitions"];
$requestConfiguration->queryParameters = $queryParameters;
$result = $graphServiceClient->appCatalogs()->teamsApps()->get($requestConfiguration);
GET https://graph.microsoft.com/v1.0/appCatalogs/teamsApps?$expand=appDefinitions($expand=bot)&$filter=appDefinitions/any(a:a/bot ne null)
// Code snippets are only available for the latest version. Current version is 5.x
var graphClient = new GraphServiceClient(requestAdapter);
var result = await graphClient.AppCatalogs.TeamsApps.GetAsync((requestConfiguration) =>
{
requestConfiguration.QueryParameters.Expand = new string []{ "appDefinitions($expand=bot)" };
requestConfiguration.QueryParameters.Filter = "appDefinitions/any";
});
<?php
// THIS SNIPPET IS A PREVIEW FOR THE KIOTA BASED SDK. NON-PRODUCTION USE ONLY
$graphServiceClient = new GraphServiceClient($requestAdapter);
$requestConfiguration = new TeamsAppsRequestBuilderGetRequestConfiguration();
$queryParameters = TeamsAppsRequestBuilderGetRequestConfiguration::createQueryParameters();
$queryParameters->expand = ["appDefinitions($expand=bot)"];
$queryParameters->filter = "appDefinitions/any";
$requestConfiguration->queryParameters = $queryParameters;
$result = $graphServiceClient->appCatalogs()->teamsApps()->get($requestConfiguration);