List teamsApp
Article
05/12/2022
10 minutes to read
8 contributors
In this article
Namespace: microsoft.graph
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
The id
of a teamsApp resource is generated by the server and is not the same as the id
specified in a Teams app manifest. 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 .
Permission Type
Permissions (from least to most privileged)
Delegated (work or school account)
AppCatalog.Submit, AppCatalog.Read.All, AppCatalog.ReadWrite.All, Directory.Read.All**, Directory.ReadWrite.All**
Delegated (personal Microsoft account)
Not supported.
Application
AppCatalog.Read.All, AppCatalog.ReadWrite.All
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 $expand
OData 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.
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.
Request
GET https://graph.microsoft.com/v1.0/appCatalogs/teamsApps?$filter=distributionMethod eq 'organization'
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var teamsApps = await graphClient.AppCatalogs.TeamsApps
.Request()
.Filter("distributionMethod eq 'organization'")
.GetAsync();
Read the SDK documentation for details on how to add the SDK to your project and create an authProvider instance.
const options = {
authProvider,
};
const client = Client.init(options);
let teamsApps = await client.api('/appCatalogs/teamsApps')
.filter('distributionMethod eq \'organization\'')
.get();
Read the SDK documentation for details on how to add the SDK to your project and create an authProvider instance.
MSHTTPClient *httpClient = [MSClientFactory createHTTPClientWithAuthenticationProvider:authenticationProvider];
NSString *MSGraphBaseURL = @"https://graph.microsoft.com/v1.0/";
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[MSGraphBaseURL stringByAppendingString:@"/appCatalogs/teamsApps?$filter=distributionMethod%20eq%20'organization'"]]];
[urlRequest setHTTPMethod:@"GET"];
MSURLSessionDataTask *meDataTask = [httpClient dataTaskWithRequest:urlRequest
completionHandler: ^(NSData *data, NSURLResponse *response, NSError *nserror) {
NSError *jsonError = nil;
MSCollection *collection = [[MSCollection alloc] initWithData:data error:&jsonError];
MSGraphTeamsApp *teamsApp = [[MSGraphTeamsApp alloc] initWithDictionary:[[collection value] objectAtIndex: 0] error:&nserror];
}];
[meDataTask execute];
Read the SDK documentation for details on how to add the SDK to your project and create an authProvider instance.
GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider( authProvider ).buildClient();
TeamsAppCollectionPage teamsApps = graphClient.appCatalogs().teamsApps()
.buildRequest()
.filter("distributionMethod eq 'organization'")
.get();
Read the SDK documentation for details on how to add the SDK to your project and create an authProvider instance.
//THE GO SDK IS IN PREVIEW. NON-PRODUCTION USE ONLY
graphClient := msgraphsdk.NewGraphServiceClient(requestAdapter)
requestParameters := &msgraphsdk.TeamsAppsRequestBuilderGetQueryParameters{
Filter: "distributionMethod%20eq%20'organization'",
}
options := &msgraphsdk.TeamsAppsRequestBuilderGetRequestConfiguration{
QueryParameters: requestParameters,
}
result, err := graphClient.AppCatalogs().TeamsApps().GetWithRequestConfigurationAndResponseHandler(options, nil)
Read the SDK documentation for details on how to add the SDK to your project and create an authProvider instance.
Response
HTTP/1.1 200 OK
Content-Type: application/json
{
"value": [
{
"id": "b1c5353a-7aca-41b3-830f-27d5218fe0e5",
"externalId": "f31b1263-ba99-435a-a679-911d24850d7c",
"name": "Test App",
"version": "1.0.1",
"distributionMethod": "Organization"
}
]
}
Example 2: List applications with a given ID
The following example lists applications with a given ID.
Request
GET https://graph.microsoft.com/v1.0/appCatalogs/teamsApps?$filter=id%20eq%20'b1c5353a-7aca-41b3-830f-27d5218fe0e5'
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var teamsApps = await graphClient.AppCatalogs.TeamsApps
.Request()
.Filter("id eq 'b1c5353a-7aca-41b3-830f-27d5218fe0e5'")
.GetAsync();
Read the SDK documentation for details on how to add the SDK to your project and create an authProvider instance.
const options = {
authProvider,
};
const client = Client.init(options);
let teamsApps = await client.api('/appCatalogs/teamsApps')
.filter('id eq \'b1c5353a-7aca-41b3-830f-27d5218fe0e5\'')
.get();
Read the SDK documentation for details on how to add the SDK to your project and create an authProvider instance.
MSHTTPClient *httpClient = [MSClientFactory createHTTPClientWithAuthenticationProvider:authenticationProvider];
NSString *MSGraphBaseURL = @"https://graph.microsoft.com/v1.0/";
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[MSGraphBaseURL stringByAppendingString:@"/appCatalogs/teamsApps?$filter=id%20eq%20'b1c5353a-7aca-41b3-830f-27d5218fe0e5'"]]];
[urlRequest setHTTPMethod:@"GET"];
MSURLSessionDataTask *meDataTask = [httpClient dataTaskWithRequest:urlRequest
completionHandler: ^(NSData *data, NSURLResponse *response, NSError *nserror) {
NSError *jsonError = nil;
MSCollection *collection = [[MSCollection alloc] initWithData:data error:&jsonError];
MSGraphTeamsApp *teamsApp = [[MSGraphTeamsApp alloc] initWithDictionary:[[collection value] objectAtIndex: 0] error:&nserror];
}];
[meDataTask execute];
Read the SDK documentation for details on how to add the SDK to your project and create an authProvider instance.
GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider( authProvider ).buildClient();
TeamsAppCollectionPage teamsApps = graphClient.appCatalogs().teamsApps()
.buildRequest()
.filter("id eq 'b1c5353a-7aca-41b3-830f-27d5218fe0e5'")
.get();
Read the SDK documentation for details on how to add the SDK to your project and create an authProvider instance.
//THE GO SDK IS IN PREVIEW. NON-PRODUCTION USE ONLY
graphClient := msgraphsdk.NewGraphServiceClient(requestAdapter)
requestParameters := &msgraphsdk.TeamsAppsRequestBuilderGetQueryParameters{
Filter: "id%20eq%20'b1c5353a-7aca-41b3-830f-27d5218fe0e5'",
}
options := &msgraphsdk.TeamsAppsRequestBuilderGetRequestConfiguration{
QueryParameters: requestParameters,
}
result, err := graphClient.AppCatalogs().TeamsApps().GetWithRequestConfigurationAndResponseHandler(options, nil)
Read the SDK documentation for details on how to add the SDK to your project and create an authProvider instance.
Response
HTTP/1.1 200 OK
Content-Type: application/json
{
"value": [
{
"id": "b1c5353a-7aca-41b3-830f-27d5218fe0e5",
"externalId": "f31b1263-ba99-435a-a679-911d24850d7c",
"name": "Test App",
"version": "1.0.1",
"distributionMethod": "Organization"
}
]
}
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'.
Request
GET https://graph.microsoft.com/v1.0/appCatalogs/teamsApps?$filter=externalId eq 'cf1ba4c7-f94e-4d80-ba90-5594b641a8ee'
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var teamsApps = await graphClient.AppCatalogs.TeamsApps
.Request()
.Filter("externalId eq 'cf1ba4c7-f94e-4d80-ba90-5594b641a8ee'")
.GetAsync();
Read the SDK documentation for details on how to add the SDK to your project and create an authProvider instance.
const options = {
authProvider,
};
const client = Client.init(options);
let teamsApps = await client.api('/appCatalogs/teamsApps')
.filter('externalId eq \'cf1ba4c7-f94e-4d80-ba90-5594b641a8ee\'')
.get();
Read the SDK documentation for details on how to add the SDK to your project and create an authProvider instance.
MSHTTPClient *httpClient = [MSClientFactory createHTTPClientWithAuthenticationProvider:authenticationProvider];
NSString *MSGraphBaseURL = @"https://graph.microsoft.com/v1.0/";
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[MSGraphBaseURL stringByAppendingString:@"/appCatalogs/teamsApps?$filter=externalId%20eq%20'cf1ba4c7-f94e-4d80-ba90-5594b641a8ee'"]]];
[urlRequest setHTTPMethod:@"GET"];
MSURLSessionDataTask *meDataTask = [httpClient dataTaskWithRequest:urlRequest
completionHandler: ^(NSData *data, NSURLResponse *response, NSError *nserror) {
NSError *jsonError = nil;
MSCollection *collection = [[MSCollection alloc] initWithData:data error:&jsonError];
MSGraphTeamsApp *teamsApp = [[MSGraphTeamsApp alloc] initWithDictionary:[[collection value] objectAtIndex: 0] error:&nserror];
}];
[meDataTask execute];
Read the SDK documentation for details on how to add the SDK to your project and create an authProvider instance.
GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider( authProvider ).buildClient();
TeamsAppCollectionPage teamsApps = graphClient.appCatalogs().teamsApps()
.buildRequest()
.filter("externalId eq 'cf1ba4c7-f94e-4d80-ba90-5594b641a8ee'")
.get();
Read the SDK documentation for details on how to add the SDK to your project and create an authProvider instance.
//THE GO SDK IS IN PREVIEW. NON-PRODUCTION USE ONLY
graphClient := msgraphsdk.NewGraphServiceClient(requestAdapter)
requestParameters := &msgraphsdk.TeamsAppsRequestBuilderGetQueryParameters{
Filter: "externalId%20eq%20'cf1ba4c7-f94e-4d80-ba90-5594b641a8ee'",
}
options := &msgraphsdk.TeamsAppsRequestBuilderGetRequestConfiguration{
QueryParameters: requestParameters,
}
result, err := graphClient.AppCatalogs().TeamsApps().GetWithRequestConfigurationAndResponseHandler(options, nil)
Read the SDK documentation for details on how to add the SDK to your project and create an authProvider instance.
Response
HTTP/1.1 200 OK
Content-Type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#appCatalogs/teamsApps",
"value": [
{
"id": "22f73bbe-f67a-4dea-bd54-54cac718cb2b",
"externalId": "cf1ba4c7-f94e-4d80-ba90-5594b641a8ee",
"displayName": "YPA",
"distributionMethod": "organization"
}
]
}
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.
Request
GET https://graph.microsoft.com/v1.0/appCatalogs/teamsApps?$filter=id eq '876df28f-2e78-423b-94a5-44181bd0e225'&$expand=appDefinitions
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var teamsApps = await graphClient.AppCatalogs.TeamsApps
.Request()
.Filter("id eq '876df28f-2e78-423b-94a5-44181bd0e225'")
.Expand("appDefinitions")
.GetAsync();
Read the SDK documentation for details on how to add the SDK to your project and create an authProvider instance.
const options = {
authProvider,
};
const client = Client.init(options);
let teamsApps = await client.api('/appCatalogs/teamsApps')
.filter('id eq \'876df28f-2e78-423b-94a5-44181bd0e225\'')
.expand('appDefinitions')
.get();
Read the SDK documentation for details on how to add the SDK to your project and create an authProvider instance.
MSHTTPClient *httpClient = [MSClientFactory createHTTPClientWithAuthenticationProvider:authenticationProvider];
NSString *MSGraphBaseURL = @"https://graph.microsoft.com/v1.0/";
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[MSGraphBaseURL stringByAppendingString:@"/appCatalogs/teamsApps?$filter=id%20eq%20'876df28f-2e78-423b-94a5-44181bd0e225'&$expand=appDefinitions"]]];
[urlRequest setHTTPMethod:@"GET"];
MSURLSessionDataTask *meDataTask = [httpClient dataTaskWithRequest:urlRequest
completionHandler: ^(NSData *data, NSURLResponse *response, NSError *nserror) {
NSError *jsonError = nil;
MSCollection *collection = [[MSCollection alloc] initWithData:data error:&jsonError];
MSGraphTeamsApp *teamsApp = [[MSGraphTeamsApp alloc] initWithDictionary:[[collection value] objectAtIndex: 0] error:&nserror];
}];
[meDataTask execute];
Read the SDK documentation for details on how to add the SDK to your project and create an authProvider instance.
GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider( authProvider ).buildClient();
TeamsAppCollectionPage teamsApps = graphClient.appCatalogs().teamsApps()
.buildRequest()
.filter("id eq '876df28f-2e78-423b-94a5-44181bd0e225'")
.expand("appDefinitions")
.get();
Read the SDK documentation for details on how to add the SDK to your project and create an authProvider instance.
//THE GO SDK IS IN PREVIEW. NON-PRODUCTION USE ONLY
graphClient := msgraphsdk.NewGraphServiceClient(requestAdapter)
requestParameters := &msgraphsdk.TeamsAppsRequestBuilderGetQueryParameters{
Filter: "id%20eq%20'876df28f-2e78-423b-94a5-44181bd0e225'",
Expand: "appDefinitions",
}
options := &msgraphsdk.TeamsAppsRequestBuilderGetRequestConfiguration{
QueryParameters: requestParameters,
}
result, err := graphClient.AppCatalogs().TeamsApps().GetWithRequestConfigurationAndResponseHandler(options, nil)
Read the SDK documentation for details on how to add the SDK to your project and create an authProvider instance.
Import-Module Microsoft.Graph.Teams
Get-MgAppCatalogTeamApp -Filter "id eq '876df28f-2e78-423b-94a5-44181bd0e225'" -ExpandProperty "appDefinitions"
Read the SDK documentation for details on how to add the SDK to your project and create an authProvider instance.
Response
HTTP/1.1 200 OK
Content-Type: application/json
{
"value": [
{
"id": "876df28f-2e78-423b-94a5-44181bd0e225",
"externalId": "f31b1263-ba99-435a-a679-911d24850d7c",
"name": "Test App",
"version": "1.0.1",
"distributionMethod": "Organization",
"appDefinitions": [
{
"id": "NGQyMGNiNDUtZWViYS00ZTEyLWE3YzktMGQ0NDgzYjYxNzU2IyMxLjAuMA==",
"teamsAppId": "876df28f-2e78-423b-94a5-44181bd0e225",
"azureADAppId": null,
"displayName": "Test App",
"version": "1.0.1",
"requiredResourceSpecificApplicationPermissions": [],
"publishingState": "published"
}
]
}
]
}
Example 5: List the details of only those apps in the catalog that contain a bot
The following example lists only those apps in the catalog that contain a bot.
Request
GET https://graph.microsoft.com/v1.0/appCatalogs/teamsApps?$expand=appDefinitions($expand=bot)&$filter=appDefinitions/any(a:a/bot ne null)
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var teamsApps = await graphClient.AppCatalogs.TeamsApps
.Request()
.Filter("appDefinitions/any(a:a/bot ne null)")
.Expand("appDefinitions($expand=bot)")
.GetAsync();
Read the SDK documentation for details on how to add the SDK to your project and create an authProvider instance.
const options = {
authProvider,
};
const client = Client.init(options);
let teamsApps = await client.api('/appCatalogs/teamsApps')
.filter('appDefinitions/any(a:a/bot ne null)')
.expand('appDefinitions($expand=bot)')
.get();
Read the SDK documentation for details on how to add the SDK to your project and create an authProvider instance.
MSHTTPClient *httpClient = [MSClientFactory createHTTPClientWithAuthenticationProvider:authenticationProvider];
NSString *MSGraphBaseURL = @"https://graph.microsoft.com/v1.0/";
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[MSGraphBaseURL stringByAppendingString:@"/appCatalogs/teamsApps?$expand=appDefinitions($expand=bot)&$filter=appDefinitions/any(a:a/bot%20ne%20null)"]]];
[urlRequest setHTTPMethod:@"GET"];
MSURLSessionDataTask *meDataTask = [httpClient dataTaskWithRequest:urlRequest
completionHandler: ^(NSData *data, NSURLResponse *response, NSError *nserror) {
NSError *jsonError = nil;
MSCollection *collection = [[MSCollection alloc] initWithData:data error:&jsonError];
MSGraphTeamsApp *teamsApp = [[MSGraphTeamsApp alloc] initWithDictionary:[[collection value] objectAtIndex: 0] error:&nserror];
}];
[meDataTask execute];
Read the SDK documentation for details on how to add the SDK to your project and create an authProvider instance.
GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider( authProvider ).buildClient();
TeamsAppCollectionPage teamsApps = graphClient.appCatalogs().teamsApps()
.buildRequest()
.filter("appDefinitions/any(a:a/bot ne null)")
.expand("appDefinitions($expand=bot)")
.get();
Read the SDK documentation for details on how to add the SDK to your project and create an authProvider instance.
//THE GO SDK IS IN PREVIEW. NON-PRODUCTION USE ONLY
graphClient := msgraphsdk.NewGraphServiceClient(requestAdapter)
requestParameters := &msgraphsdk.TeamsAppsRequestBuilderGetQueryParameters{
Expand: "appDefinitions($expand=bot)",
Filter: "appDefinitions/any(a:a/bot%20ne%20null)",
}
options := &msgraphsdk.TeamsAppsRequestBuilderGetRequestConfiguration{
QueryParameters: requestParameters,
}
result, err := graphClient.AppCatalogs().TeamsApps().GetWithRequestConfigurationAndResponseHandler(options, nil)
Read the SDK documentation for details on how to add the SDK to your project and create an authProvider instance.
Import-Module Microsoft.Graph.Teams
Get-MgAppCatalogTeamApp -ExpandProperty "appDefinitions(`$expand=bot)" -Filter "appDefinitions/any(a:a/bot ne null)"
Read the SDK documentation for details on how to add the SDK to your project and create an authProvider instance.
Response
HTTP/1.1 200 OK
Content-Type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#appCatalogs/teamsApps(appDefinitions(bot()))",
"value": [
{
"id": "8a1ed7a3-5c78-46b2-8504-f9da00a1d1a6",
"externalId": "3CAB7543-216D-47C6-986C-6247670F4663",
"displayName": "Ducks-3",
"distributionMethod": "organization",
"appDefinitions": [
{
"@odata.etag": "ImNOTW1CR2V1VzgwczlEblVidU00UHc9PSI=",
"id": "OGExZWQ3YTMtNWM3OC00NmIyLTg1MDQtZjlkYTAwYTFkMWE2IyMxLjAuOSMjUmVqZWN0ZWQ=",
"teamsAppId": "8a1ed7a3-5c78-46b2-8504-f9da00a1d1a6",
"azureADAppId": null,
"displayName": "Ducks-3",
"version": "1.0.9",
"requiredResourceSpecificApplicationPermissions": [],
"publishingState": "rejected",
"shortDescription": "quaerat quasi magnam. slight change. 5",
"description": "Aliquid placeat animi debitis accusamus. Non perferendis ullam. Quis est consequuntur vitae provident. Sunt laudantium id aut. slight change 5",
"lastModifiedDateTime": "2020-11-23T21:36:00.9437445Z",
"createdBy": {
"application": null,
"device": null,
"conversation": null,
"user": {
"id": "70292a90-d2a7-432c-857e-55db6d8f5cd0",
"displayName": null,
"userIdentityType": "aadUser"
}
},
"bot": {
"id": "bb9f67a4-893b-48d7-ab17-40ed466c0f16"
}
}
]
},
{
"id": "30909dee-f7dd-4f89-8b3b-55de2e32489c",
"externalId": "0ebd3f4d-ca91-495b-a227-a17d298e22cc",
"displayName": "Self-Install-App-E2E-Tests",
"distributionMethod": "organization",
"appDefinitions": [
{
"@odata.etag": "IkwzVDlMOTBSSEdTMFducHUyYkpjVmc9PSI=",
"id": "MzA5MDlkZWUtZjdkZC00Zjg5LThiM2ItNTVkZTJlMzI0ODljIyM2LjAuMCMjU3VibWl0dGVk",
"teamsAppId": "30909dee-f7dd-4f89-8b3b-55de2e32489c",
"azureADAppId": "d75abc57-8255-4309-9c29-a3c689e20341",
"displayName": "Self-Install-App-E2E-Tests",
"version": "6.0.0",
"requiredResourceSpecificApplicationPermissions": [],
"publishingState": "submitted",
"shortDescription": "A conversational smart assistant from MSX that surfaces real-time insights.",
"description": "For MSX Users: A conversational role-based smart assistant that will enable Enterprise sellers (AE, ATS, SSP, TSP) to be more productive by surfacing real-time insights, recommendations, actions and notifications, and by automating repetitive tasks.",
"lastModifiedDateTime": "2020-08-25T18:40:13.035341Z",
"createdBy": {
"application": null,
"device": null,
"conversation": null,
"user": {
"id": "c071a180-a220-43a1-adaf-e8db95c4a7d6",
"displayName": null,
"userIdentityType": "aadUser"
}
},
"bot": {
"id": "da7d471b-de7d-4152-8556-1cdf7a564f6c"
}
}
]
}
]
}
See also