List teamsApp
Namespace: microsoft.graph
Important
APIs under the /beta
version in Microsoft Graph are subject to change. Use of these APIs in production applications is not supported. To determine whether an API is available in v1.0, use the Version selector.
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.
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.
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.
Request
The following is an example of a request.
GET https://graph.microsoft.com/beta/appCatalogs/teamsApps?$filter=distributionMethod eq 'organization'
Response
The following is an example of the response.
HTTP/1.1 200 OK
Content-Type: application/json
{
"value": [
{
"id": "b1c5353a-7aca-41b3-830f-27d5218fe0e5",
"externalId": "f31b1263-ba99-435a-a679-911d24850d7c",
"displayName": "Test App",
"distributionMethod": "organization"
}
]
}
Example 2: List applications with a given ID
The following example lists applications with a given ID.
Request
The following is an example of a request.
GET https://graph.microsoft.com/beta/appCatalogs/teamsApps?$filter=id eq 'b1c5353a-7aca-41b3-830f-27d5218fe0e5'
Response
The following is an example of the response.
HTTP/1.1 200 OK
Content-Type: application/json
{
"value": [
{
"id": "b1c5353a-7aca-41b3-830f-27d5218fe0e5",
"externalId": "f31b1263-ba99-435a-a679-911d24850d7c",
"displayName": "Test App",
"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
The following is an example of a request.
GET https://graph.microsoft.com/beta/appCatalogs/teamsApps?$filter=externalId eq 'cf1ba4c7-f94e-4d80-ba90-5594b641a8ee'
Response
The following is an example of the response.
HTTP/1.1 200 OK
Content-Type: application/json
{
"@odata.context": "https://graph.microsoft.com/beta/$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 submission review state of the app. 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
The following is an example of a request.
GET https://graph.microsoft.com/beta/appCatalogs/teamsApps?$filter=id eq '876df28f-2e78-423b-94a5-44181bd0e225'&$expand=appDefinitions
Response
The following is an example of the response.
HTTP/1.1 200 OK
Content-Type: application/json
{
"value": [
{
"id": "876df28f-2e78-423b-94a5-44181bd0e225",
"externalId": "f31b1263-ba99-435a-a679-911d24850d7c",
"displayName": "Test App",
"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
The following is an example of a request.
GET https://graph.microsoft.com/beta/appCatalogs/teamsApps?$expand=appDefinitions($expand=bot)&$filter=appDefinitions/any(a:a/bot ne null)
Response
The following is an example of the response.
HTTP/1.1 200 OK
Content-Type: application/json
{
"@odata.context": "https://graph.microsoft.com/beta/$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"
}
}
]
}
]
}
Example 6: List the details of apps filtered by app installation scope
The following example lists only those apps that can be installed in the personal scope of a user.
Request
The following is an example of a request.
GET https://graph.microsoft.com/beta/appCatalogs/teamsApps?$expand=appDefinitions($select=id,displayName,allowedInstallationScopes)&$filter=appDefinitions/any(a:a/allowedInstallationScopes has 'personal')
Response
The following is an example of the response.
HTTP/1.1 200 OK
Content-Type: application/json
{
"@odata.context": "https://graph.microsoft.com/beta/$metadata#appCatalogs/teamsApps(appDefinitions(id,displayName,allowedInstallationScopes))",
"value": [
{
"id": "5a542e1c-5f8c-4793-8b0c-6082464b2378",
"externalId": "4b3ec336-b998-4623-9e25-d4182fb82159",
"displayName": "Carriage",
"distributionMethod": "organization",
"appDefinitions": [
{
"id": "MWE1NDJlMWMtNWY4Yy00NzkzLThiMGMtNjA4MjQ2NGIyMzc4IyMxLjAuMCMjUHVibGlzaGVk",
"displayName": "Carriage",
"allowedInstallationScopes": "personal"
}
]
}
]
}
See also
Feedback
Submit and view feedback for