List apps from the Microsoft Teams app catalog, including apps from the Microsoft Teams store and 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.
Important
Currently, this API is only supported in the user context and not in the admin view.
The Teams Apps that this API returns comply with the app management policies established by the admin.
After the Teams apps are published, it typically takes 24-48 hours for the policies to be applied, so some apps might not appear in the API results immediately.
Choose the permission or permissions marked as least privileged for this API. Use a higher privileged permission or permissions only if your app requires it. For details about delegated and application permissions, see Permission types. To learn more about these permissions, see the permissions reference.
The Directory.Read.All and Directory.ReadWrite.All permissions are supported only for backward compatibility. We recommend that you update your solutions to use an alternative permission 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 returns more information about the state of the app, such as the publishingState, which reflects the app submission review status and returns whether an app is 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.
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
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.AppCatalogs.TeamsApps.GetAsync((requestConfiguration) =>
{
requestConfiguration.QueryParameters.Filter = "distributionMethod eq 'organization'";
});
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphappcatalogs "github.com/microsoftgraph/msgraph-sdk-go/appcatalogs"
//other-imports
)
requestFilter := "distributionMethod eq 'organization'"
requestParameters := &graphappcatalogs.AppCatalogsTeamsAppsRequestBuilderGetQueryParameters{
Filter: &requestFilter,
}
configuration := &graphappcatalogs.AppCatalogsTeamsAppsRequestBuilderGetRequestConfiguration{
QueryParameters: requestParameters,
}
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
teamsApps, err := graphClient.AppCatalogs().TeamsApps().Get(context.Background(), configuration)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
TeamsAppCollectionResponse result = graphClient.appCatalogs().teamsApps().get(requestConfiguration -> {
requestConfiguration.queryParameters.filter = "distributionMethod eq 'organization'";
});
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.app_catalogs.teams_apps.teams_apps_request_builder import TeamsAppsRequestBuilder
from kiota_abstractions.base_request_configuration import RequestConfiguration
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
query_params = TeamsAppsRequestBuilder.TeamsAppsRequestBuilderGetQueryParameters(
filter = "distributionMethod eq 'organization'",
)
request_configuration = RequestConfiguration(
query_parameters = query_params,
)
result = await graph_client.app_catalogs.teams_apps.get(request_configuration = request_configuration)
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
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.AppCatalogs.TeamsApps.GetAsync((requestConfiguration) =>
{
requestConfiguration.QueryParameters.Filter = "id eq 'b1c5353a-7aca-41b3-830f-27d5218fe0e5'";
});
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphappcatalogs "github.com/microsoftgraph/msgraph-sdk-go/appcatalogs"
//other-imports
)
requestFilter := "id eq 'b1c5353a-7aca-41b3-830f-27d5218fe0e5'"
requestParameters := &graphappcatalogs.AppCatalogsTeamsAppsRequestBuilderGetQueryParameters{
Filter: &requestFilter,
}
configuration := &graphappcatalogs.AppCatalogsTeamsAppsRequestBuilderGetRequestConfiguration{
QueryParameters: requestParameters,
}
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
teamsApps, err := graphClient.AppCatalogs().TeamsApps().Get(context.Background(), configuration)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
TeamsAppCollectionResponse result = graphClient.appCatalogs().teamsApps().get(requestConfiguration -> {
requestConfiguration.queryParameters.filter = "id eq 'b1c5353a-7aca-41b3-830f-27d5218fe0e5'";
});
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.app_catalogs.teams_apps.teams_apps_request_builder import TeamsAppsRequestBuilder
from kiota_abstractions.base_request_configuration import RequestConfiguration
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
query_params = TeamsAppsRequestBuilder.TeamsAppsRequestBuilderGetQueryParameters(
filter = "id eq 'b1c5353a-7aca-41b3-830f-27d5218fe0e5'",
)
request_configuration = RequestConfiguration(
query_parameters = query_params,
)
result = await graph_client.app_catalogs.teams_apps.get(request_configuration = request_configuration)
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
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.AppCatalogs.TeamsApps.GetAsync((requestConfiguration) =>
{
requestConfiguration.QueryParameters.Filter = "externalId eq 'cf1ba4c7-f94e-4d80-ba90-5594b641a8ee'";
});
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphappcatalogs "github.com/microsoftgraph/msgraph-sdk-go/appcatalogs"
//other-imports
)
requestFilter := "externalId eq 'cf1ba4c7-f94e-4d80-ba90-5594b641a8ee'"
requestParameters := &graphappcatalogs.AppCatalogsTeamsAppsRequestBuilderGetQueryParameters{
Filter: &requestFilter,
}
configuration := &graphappcatalogs.AppCatalogsTeamsAppsRequestBuilderGetRequestConfiguration{
QueryParameters: requestParameters,
}
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
teamsApps, err := graphClient.AppCatalogs().TeamsApps().Get(context.Background(), configuration)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
TeamsAppCollectionResponse result = graphClient.appCatalogs().teamsApps().get(requestConfiguration -> {
requestConfiguration.queryParameters.filter = "externalId eq 'cf1ba4c7-f94e-4d80-ba90-5594b641a8ee'";
});
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.app_catalogs.teams_apps.teams_apps_request_builder import TeamsAppsRequestBuilder
from kiota_abstractions.base_request_configuration import RequestConfiguration
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
query_params = TeamsAppsRequestBuilder.TeamsAppsRequestBuilderGetQueryParameters(
filter = "externalId eq 'cf1ba4c7-f94e-4d80-ba90-5594b641a8ee'",
)
request_configuration = RequestConfiguration(
query_parameters = query_params,
)
result = await graph_client.app_catalogs.teams_apps.get(request_configuration = request_configuration)
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 admin approved the app, and rejected means the admin rejected the app.
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
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.AppCatalogs.TeamsApps.GetAsync((requestConfiguration) =>
{
requestConfiguration.QueryParameters.Filter = "id eq '876df28f-2e78-423b-94a5-44181bd0e225'";
requestConfiguration.QueryParameters.Expand = new string []{ "appDefinitions" };
});
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphappcatalogs "github.com/microsoftgraph/msgraph-sdk-go/appcatalogs"
//other-imports
)
requestFilter := "id eq '876df28f-2e78-423b-94a5-44181bd0e225'"
requestParameters := &graphappcatalogs.AppCatalogsTeamsAppsRequestBuilderGetQueryParameters{
Filter: &requestFilter,
Expand: [] string {"appDefinitions"},
}
configuration := &graphappcatalogs.AppCatalogsTeamsAppsRequestBuilderGetRequestConfiguration{
QueryParameters: requestParameters,
}
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
teamsApps, err := graphClient.AppCatalogs().TeamsApps().Get(context.Background(), configuration)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
TeamsAppCollectionResponse result = graphClient.appCatalogs().teamsApps().get(requestConfiguration -> {
requestConfiguration.queryParameters.filter = "id eq '876df28f-2e78-423b-94a5-44181bd0e225'";
requestConfiguration.queryParameters.expand = new String []{"appDefinitions"};
});
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.app_catalogs.teams_apps.teams_apps_request_builder import TeamsAppsRequestBuilder
from kiota_abstractions.base_request_configuration import RequestConfiguration
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
query_params = TeamsAppsRequestBuilder.TeamsAppsRequestBuilderGetQueryParameters(
filter = "id eq '876df28f-2e78-423b-94a5-44181bd0e225'",
expand = ["appDefinitions"],
)
request_configuration = RequestConfiguration(
query_parameters = query_params,
)
result = await graph_client.app_catalogs.teams_apps.get(request_configuration = request_configuration)
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
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.AppCatalogs.TeamsApps.GetAsync((requestConfiguration) =>
{
requestConfiguration.QueryParameters.Expand = new string []{ "appDefinitions($expand=bot)" };
requestConfiguration.QueryParameters.Filter = "appDefinitions/any(a:a/bot ne null)";
});
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphappcatalogs "github.com/microsoftgraph/msgraph-sdk-go/appcatalogs"
//other-imports
)
requestFilter := "appDefinitions/any(a:a/bot ne null)"
requestParameters := &graphappcatalogs.AppCatalogsTeamsAppsRequestBuilderGetQueryParameters{
Expand: [] string {"appDefinitions($expand=bot)"},
Filter: &requestFilter,
}
configuration := &graphappcatalogs.AppCatalogsTeamsAppsRequestBuilderGetRequestConfiguration{
QueryParameters: requestParameters,
}
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
teamsApps, err := graphClient.AppCatalogs().TeamsApps().Get(context.Background(), configuration)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
TeamsAppCollectionResponse result = graphClient.appCatalogs().teamsApps().get(requestConfiguration -> {
requestConfiguration.queryParameters.expand = new String []{"appDefinitions($expand=bot)"};
requestConfiguration.queryParameters.filter = "appDefinitions/any(a:a/bot ne null)";
});
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.app_catalogs.teams_apps.teams_apps_request_builder import TeamsAppsRequestBuilder
from kiota_abstractions.base_request_configuration import RequestConfiguration
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
query_params = TeamsAppsRequestBuilder.TeamsAppsRequestBuilderGetQueryParameters(
expand = ["appDefinitions($expand=bot)"],
filter = "appDefinitions/any(a:a/bot ne null)",
)
request_configuration = RequestConfiguration(
query_parameters = query_params,
)
result = await graph_client.app_catalogs.teams_apps.get(request_configuration = request_configuration)
GET https://graph.microsoft.com/v1.0/appCatalogs/teamsApps?$filter=id+eq+'a5228c26-a9ae-4702-90e0-79a5246d2f7d'&$expand=appDefinitions($select=id,authorization)
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.AppCatalogs.TeamsApps.GetAsync((requestConfiguration) =>
{
requestConfiguration.QueryParameters.Filter = "id eq 'a5228c26-a9ae-4702-90e0-79a5246d2f7d'";
requestConfiguration.QueryParameters.Expand = new string []{ "appDefinitions($select=id,authorization)" };
});
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphappcatalogs "github.com/microsoftgraph/msgraph-sdk-go/appcatalogs"
//other-imports
)
requestFilter := "id eq 'a5228c26-a9ae-4702-90e0-79a5246d2f7d'"
requestParameters := &graphappcatalogs.AppCatalogsTeamsAppsRequestBuilderGetQueryParameters{
Filter: &requestFilter,
Expand: [] string {"appDefinitions($select=id,authorization)"},
}
configuration := &graphappcatalogs.AppCatalogsTeamsAppsRequestBuilderGetRequestConfiguration{
QueryParameters: requestParameters,
}
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
teamsApps, err := graphClient.AppCatalogs().TeamsApps().Get(context.Background(), configuration)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
TeamsAppCollectionResponse result = graphClient.appCatalogs().teamsApps().get(requestConfiguration -> {
requestConfiguration.queryParameters.filter = "id eq 'a5228c26-a9ae-4702-90e0-79a5246d2f7d'";
requestConfiguration.queryParameters.expand = new String []{"appDefinitions($select=id,authorization)"};
});
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.app_catalogs.teams_apps.teams_apps_request_builder import TeamsAppsRequestBuilder
from kiota_abstractions.base_request_configuration import RequestConfiguration
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
query_params = TeamsAppsRequestBuilder.TeamsAppsRequestBuilderGetQueryParameters(
filter = "id eq 'a5228c26-a9ae-4702-90e0-79a5246d2f7d'",
expand = ["appDefinitions($select=id,authorization)"],
)
request_configuration = RequestConfiguration(
query_parameters = query_params,
)
result = await graph_client.app_catalogs.teams_apps.get(request_configuration = request_configuration)