Share via


root object

Syntax

{
  "$schema": "{string}",
  "manifestVersion": "devPreview | m365DevPreview",
  "version": "{string}",
  "id": "{string}",
  "packageName": "{string}",
  "localizationInfo": {
    "defaultLanguageTag": "{string}",
    "defaultLanguageFile": "{string}",
    "additionalLanguages": [
      {
        additionalLanguages object
      }
    ]
  },
  "developer": {
    "name": "{string}",
    "mpnId": "{string}",
    "websiteUrl": "{string}",
    "privacyUrl": "{string}",
    "termsOfUseUrl": "{string}",
    "contactInfo": {
      contactInfo object
    }
  },
  "name": {
    "short": "{string}",
    "full": "{string}",
    "abbreviated": "{string}"
  },
  "description": {
    "short": "{string}",
    "full": "{string}"
  },
  "icons": {
    "outline": "{string}",
    "color": "{string}",
    "color32x32": "{string}"
  },
  "accentColor": "{string}",
  "configurableTabs": [
    {
      "id": "{string}",
      "configurationUrl": "{string}",
      "canUpdateConfiguration": {boolean},
      "scopes": [
        "team | groupChat"
      ],
      "meetingSurfaces": [
        "sidePanel | stage"
      ],
      "context": [
        "personalTab | channelTab | privateChatTab | meetingChatTab | meetingDetailsTab | meetingSidePanel | meetingStage | callingSidePanel"
      ],
      "supportedPlatform": [
        "desktop | mobile | teamsMeetingDevices"
      ],
      "sharePointPreviewImage": "{string}",
      "supportedSharePointHosts": [
        "sharePointFullPage | sharePointWebPart"
      ]
    }
  ],
  "staticTabs": [
    {
      "entityId": "{string}",
      "name": "{string}",
      "contentUrl": "{string}",
      "contentBotId": "{string}",
      "websiteUrl": "{string}",
      "searchUrl": "{string}",
      "scopes": [
        "team | personal | groupChat"
      ],
      "context": [
        "personalTab | channelTab | privateChatTab | meetingChatTab | meetingDetailsTab | meetingSidePanel | meetingStage | teamLevelApp"
      ],
      "supportedPlatform": [
        "desktop | mobile | teamsMeetingDevices"
      ],
      "requirementSet": {
        elementRequirementSet object
      }
    }
  ],
  "bots": [
    {
      "botId": "{string}",
      "configuration": {
        configuration object
      },
      "needsChannelSelector": {boolean},
      "isNotificationOnly": {boolean},
      "requiresSecurityEnabledGroup": {boolean},
      "supportsFiles": {boolean},
      "supportsCalling": {boolean},
      "supportsVideo": {boolean},
      "scopes": [
        "team | personal | groupChat | copilot"
      ],
      "commandLists": [
        {
          commandLists object
        }
      ],
      "requirementSet": {
        elementRequirementSet object
      }
    }
  ],
  "connectors": [
    {
      "connectorId": "{string}",
      "configurationUrl": "{string}",
      "scopes": [
        "team"
      ]
    }
  ],
  "subscriptionOffer": {
    "offerId": "{string}"
  },
  "composeExtensions": [
    {
      "id": "{string}",
      "botId": "{string}",
      "composeExtensionType": "botBased | apiBased",
      "authorization": {
        authorization object
      },
      "apiSpecificationFile": "{string}",
      "canUpdateConfiguration": boolean | null,
      "commands": [
        {
          commands object
        }
      ],
      "messageHandlers": [
        {
          messageHandlers object
        }
      ],
      "requirementSet": {
        elementRequirementSet object
      }
    }
  ],
  "scopeConstraints": {
    "teams": [
      {
        teams object
      }
    ],
    "groupChats": [
      {
        groupChats object
      }
    ]
  },
  "permissions": [
    "identity | messageTeamMembers"
  ],
  "devicePermissions": [
    "geolocation | media | notifications | midi | openExternal"
  ],
  "validDomains": [
    "{string}"
  ],
  "webApplicationInfo": {
    "id": "{string}",
    "resource": "{string}",
    "nestedAppAuthInfo": [
      {
        nestedAppAuthInfo object
      }
    ]
  },
  "graphConnector": {
    "notificationUrl": "{string}"
  },
  "showLoadingIndicator": {boolean},
  "isFullScreen": {boolean},
  "activities": {
    "activityTypes": [
      {
        activityTypes object
      }
    ],
    "activityIcons": [
      {
        activityIcons object
      }
    ]
  },
  "supportedChannelTypes": [
    "sharedChannels | privateChannels"
  ],
  "configurableProperties": [
    "name | shortDescription | longDescription | smallImageUrl | largeImageUrl | accentColor | developerUrl | privacyUrl | termsOfUseUrl"
  ],
  "defaultBlockUntilAdminAction": {boolean},
  "publisherDocsUrl": "{string}",
  "defaultInstallScope": "personal | team | groupChat | meetings | copilot",
  "defaultGroupCapability": {
    "team": "tab | bot | connector",
    "groupchat": "tab | bot | connector",
    "meetings": "tab | bot | connector"
  },
  "meetingExtensionDefinition": {
    "scenes": [
      {
        scenes object
      }
    ],
    "supportsCustomShareToStage": {boolean},
    "videoFilters": [
      {
        videoFilters object
      }
    ],
    "videoFiltersConfigurationUrl": "{string}",
    "supportsStreaming": {boolean},
    "supportsAnonymousGuestUsers": {boolean}
  },
  "authorization": {
    "permissions": {
      permissions object
    }
  },
  "extensions": [
    {
      "requirements": {
        requirementsExtensionElement object
      },
      "runtimes": [
        {
          extensionRuntimesArray object
        }
      ],
      "ribbons": [
        {
          extensionRibbonsArray object
        }
      ],
      "autoRunEvents": [
        {
          extensionAutoRunEventsArray object
        }
      ],
      "alternates": [
        {
          extensionAlternateVersionsArray object
        }
      ],
      "audienceClaimUrl": "{string}",
      "appDeeplinks": [
        {
          extensionAppDeeplinksArray object
        }
      ],
      "contentRuntimes": [
        {
          extensionContentRuntimeArray object
        }
      ],
      "getStartedMessages": [
        {
          extensionGetStartedMessageArray object
        }
      ],
      "contextMenus": [
        {
          extensionContextMenuArray object
        }
      ],
      "keyboardShortcuts": [
        {
          extensionKeyboardShortcut object
        }
      ]
    }
  ],
  "actions": [
    {
      "id": "{string}",
      "intent": "create | addTo | open | preview | share | sign | custom",
      "displayName": "{string}",
      "description": "{string}",
      "icons": [
        {
          icons object
        }
      ],
      "handlers": [
        {
          handlers object
        }
      ]
    }
  ],
  "dashboardCards": [
    {
      "id": "{string}",
      "displayName": "{string}",
      "description": "{string}",
      "pickerGroupId": "{string}",
      "icon": {
        dashboardCardIcon object
      },
      "contentSource": {
        dashboardCardContentSource object
      },
      "defaultSize": "medium | large"
    }
  ],
  "intuneInfo": {
    "supportedMobileAppManagementVersion": "{string}"
  },
  "copilotAgents": {
    "declarativeAgents": [
      {
        declarativeAgentRef object
      }
    ],
    "customEngineAgents": [
      {
        customEngineAgents object
      }
    ]
  },
  "elementRelationshipSet": {
    "oneWayDependencies": [
      {
        oneWayDependency object
      }
    ],
    "mutualDependencies": [
      [
        {
          elementReference object
        }
      ]
    ]
  },
  "backgroundLoadConfiguration": {
    "tabConfiguration": {
      tabConfiguration object
    }
  }
}
{
  "$schema": "{string}",
  "manifestVersion": "1.22",
  "version": "{string}",
  "id": "{string}",
  "localizationInfo": {
    "defaultLanguageTag": "{string}",
    "defaultLanguageFile": "{string}",
    "additionalLanguages": [
      {
        additionalLanguages object
      }
    ]
  },
  "developer": {
    "name": "{string}",
    "mpnId": "{string}",
    "websiteUrl": "{string}",
    "privacyUrl": "{string}",
    "termsOfUseUrl": "{string}"
  },
  "name": {
    "short": "{string}",
    "full": "{string}"
  },
  "description": {
    "short": "{string}",
    "full": "{string}"
  },
  "icons": {
    "outline": "{string}",
    "color": "{string}",
    "color32x32": "{string}"
  },
  "accentColor": "{string}",
  "configurableTabs": [
    {
      "id": "{string}",
      "configurationUrl": "{string}",
      "canUpdateConfiguration": {boolean},
      "scopes": [
        "team | groupChat"
      ],
      "meetingSurfaces": [
        "sidePanel | stage"
      ],
      "context": [
        "personalTab | channelTab | privateChatTab | meetingChatTab | meetingDetailsTab | meetingSidePanel | meetingStage"
      ],
      "sharePointPreviewImage": "{string}",
      "supportedSharePointHosts": [
        "sharePointFullPage | sharePointWebPart"
      ]
    }
  ],
  "staticTabs": [
    {
      "entityId": "{string}",
      "name": "{string}",
      "contentUrl": "{string}",
      "contentBotId": "{string}",
      "websiteUrl": "{string}",
      "searchUrl": "{string}",
      "scopes": [
        "team | personal | groupChat"
      ],
      "context": [
        "personalTab | channelTab | privateChatTab | meetingChatTab | meetingDetailsTab | meetingSidePanel | meetingStage | teamLevelApp"
      ],
      "requirementSet": {
        elementRequirementSet object
      }
    }
  ],
  "bots": [
    {
      "botId": "{string}",
      "configuration": {
        configuration object
      },
      "needsChannelSelector": {boolean},
      "isNotificationOnly": {boolean},
      "supportsFiles": {boolean},
      "supportsCalling": {boolean},
      "supportsVideo": {boolean},
      "scopes": [
        "team | personal | groupChat | copilot"
      ],
      "commandLists": [
        {
          commandLists object
        }
      ],
      "requirementSet": {
        elementRequirementSet object
      }
    }
  ],
  "connectors": [
    {
      "connectorId": "{string}",
      "configurationUrl": "{string}",
      "scopes": [
        "team"
      ]
    }
  ],
  "subscriptionOffer": {
    "offerId": "{string}"
  },
  "composeExtensions": [
    {
      "id": "{string}",
      "botId": "{string}",
      "composeExtensionType": "botBased | apiBased",
      "authorization": {
        authorization object
      },
      "apiSpecificationFile": "{string}",
      "canUpdateConfiguration": boolean | null,
      "commands": [
        {
          commands object
        }
      ],
      "messageHandlers": [
        {
          messageHandlers object
        }
      ],
      "requirementSet": {
        elementRequirementSet object
      }
    }
  ],
  "permissions": [
    "identity | messageTeamMembers"
  ],
  "devicePermissions": [
    "geolocation | media | notifications | midi | openExternal"
  ],
  "validDomains": [
    "{string}"
  ],
  "webApplicationInfo": {
    "id": "{string}",
    "resource": "{string}",
    "nestedAppAuthInfo": [
      {
        nestedAppAuthInfo object
      }
    ]
  },
  "graphConnector": {
    "notificationUrl": "{string}"
  },
  "showLoadingIndicator": {boolean},
  "isFullScreen": {boolean},
  "activities": {
    "activityTypes": [
      {
        activityTypes object
      }
    ],
    "activityIcons": [
      {
        activityIcons object
      }
    ]
  },
  "configurableProperties": [
    "name | shortDescription | longDescription | smallImageUrl | largeImageUrl | accentColor | developerUrl | privacyUrl | termsOfUseUrl"
  ],
  "supportedChannelTypes": [
    "sharedChannels | privateChannels"
  ],
  "defaultBlockUntilAdminAction": {boolean},
  "publisherDocsUrl": "{string}",
  "defaultInstallScope": "personal | team | groupChat | meetings | copilot",
  "defaultGroupCapability": {
    "team": "tab | bot | connector",
    "groupchat": "tab | bot | connector",
    "meetings": "tab | bot | connector"
  },
  "meetingExtensionDefinition": {
    "scenes": [
      {
        scenes object
      }
    ],
    "supportsCustomShareToStage": {boolean},
    "supportsStreaming": {boolean},
    "supportsAnonymousGuestUsers": {boolean}
  },
  "authorization": {
    "permissions": {
      permissions object
    }
  },
  "extensions": [
    {
      "requirements": {
        requirementsExtensionElement object
      },
      "runtimes": [
        {
          extensionRuntimesArray object
        }
      ],
      "ribbons": [
        {
          extensionRibbonsArray object
        }
      ],
      "autoRunEvents": [
        {
          extensionAutoRunEventsArray object
        }
      ],
      "alternates": [
        {
          extensionAlternateVersionsArray object
        }
      ],
      "audienceClaimUrl": "{string}"
    }
  ],
  "dashboardCards": [
    {
      "id": "{string}",
      "displayName": "{string}",
      "description": "{string}",
      "pickerGroupId": "{string}",
      "icon": {
        dashboardCardIcon object
      },
      "contentSource": {
        dashboardCardContentSource object
      },
      "defaultSize": "medium | large"
    }
  ],
  "copilotAgents": {
    "declarativeAgents": [
      {
        declarativeAgentRef object
      }
    ],
    "customEngineAgents": [
      {
        customEngineAgents object
      }
    ]
  },
  "intuneInfo": {
    "supportedMobileAppManagementVersion": "{string}"
  },
  "elementRelationshipSet": {
    "oneWayDependencies": [
      {
        oneWayDependency object
      }
    ],
    "mutualDependencies": [
      [
        {
          elementReference object
        }
      ]
    ]
  },
  "backgroundLoadConfiguration": {
    "tabConfiguration": {
      tabConfiguration object
    }
  }
}
{
  "$schema": "{string}",
  "manifestVersion": "1.21",
  "version": "{string}",
  "id": "{string}",
  "localizationInfo": {
    "defaultLanguageTag": "{string}",
    "defaultLanguageFile": "{string}",
    "additionalLanguages": [
      {
        additionalLanguages object
      }
    ]
  },
  "developer": {
    "name": "{string}",
    "mpnId": "{string}",
    "websiteUrl": "{string}",
    "privacyUrl": "{string}",
    "termsOfUseUrl": "{string}"
  },
  "name": {
    "short": "{string}",
    "full": "{string}"
  },
  "description": {
    "short": "{string}",
    "full": "{string}"
  },
  "icons": {
    "outline": "{string}",
    "color": "{string}",
    "color32x32": "{string}"
  },
  "accentColor": "{string}",
  "configurableTabs": [
    {
      "id": "{string}",
      "configurationUrl": "{string}",
      "canUpdateConfiguration": {boolean},
      "scopes": [
        "team | groupChat"
      ],
      "meetingSurfaces": [
        "sidePanel | stage"
      ],
      "context": [
        "personalTab | channelTab | privateChatTab | meetingChatTab | meetingDetailsTab | meetingSidePanel | meetingStage"
      ],
      "sharePointPreviewImage": "{string}",
      "supportedSharePointHosts": [
        "sharePointFullPage | sharePointWebPart"
      ]
    }
  ],
  "staticTabs": [
    {
      "entityId": "{string}",
      "name": "{string}",
      "contentUrl": "{string}",
      "contentBotId": "{string}",
      "websiteUrl": "{string}",
      "searchUrl": "{string}",
      "scopes": [
        "team | personal | groupChat"
      ],
      "context": [
        "personalTab | channelTab | privateChatTab | meetingChatTab | meetingDetailsTab | meetingSidePanel | meetingStage | teamLevelApp"
      ],
      "requirementSet": {
        elementRequirementSet object
      }
    }
  ],
  "bots": [
    {
      "botId": "{string}",
      "configuration": {
        configuration object
      },
      "needsChannelSelector": {boolean},
      "isNotificationOnly": {boolean},
      "supportsFiles": {boolean},
      "supportsCalling": {boolean},
      "supportsVideo": {boolean},
      "scopes": [
        "team | personal | groupChat | copilot"
      ],
      "commandLists": [
        {
          commandLists object
        }
      ],
      "requirementSet": {
        elementRequirementSet object
      }
    }
  ],
  "connectors": [
    {
      "connectorId": "{string}",
      "configurationUrl": "{string}",
      "scopes": [
        "team"
      ]
    }
  ],
  "subscriptionOffer": {
    "offerId": "{string}"
  },
  "composeExtensions": [
    {
      "id": "{string}",
      "botId": "{string}",
      "composeExtensionType": "botBased | apiBased",
      "authorization": {
        authorization object
      },
      "apiSpecificationFile": "{string}",
      "canUpdateConfiguration": boolean | null,
      "commands": [
        {
          commands object
        }
      ],
      "messageHandlers": [
        {
          messageHandlers object
        }
      ],
      "requirementSet": {
        elementRequirementSet object
      }
    }
  ],
  "permissions": [
    "identity | messageTeamMembers"
  ],
  "devicePermissions": [
    "geolocation | media | notifications | midi | openExternal"
  ],
  "validDomains": [
    "{string}"
  ],
  "webApplicationInfo": {
    "id": "{string}",
    "resource": "{string}"
  },
  "graphConnector": {
    "notificationUrl": "{string}"
  },
  "showLoadingIndicator": {boolean},
  "isFullScreen": {boolean},
  "activities": {
    "activityTypes": [
      {
        activityTypes object
      }
    ]
  },
  "configurableProperties": [
    "name | shortDescription | longDescription | smallImageUrl | largeImageUrl | accentColor | developerUrl | privacyUrl | termsOfUseUrl"
  ],
  "supportedChannelTypes": [
    "sharedChannels | privateChannels"
  ],
  "defaultBlockUntilAdminAction": {boolean},
  "publisherDocsUrl": "{string}",
  "defaultInstallScope": "personal | team | groupChat | meetings | copilot",
  "defaultGroupCapability": {
    "team": "tab | bot | connector",
    "groupchat": "tab | bot | connector",
    "meetings": "tab | bot | connector"
  },
  "meetingExtensionDefinition": {
    "scenes": [
      {
        scenes object
      }
    ],
    "supportsCustomShareToStage": {boolean},
    "supportsStreaming": {boolean},
    "supportsAnonymousGuestUsers": {boolean}
  },
  "authorization": {
    "permissions": {
      permissions object
    }
  },
  "extensions": [
    {
      "requirements": {
        requirementsExtensionElement object
      },
      "runtimes": [
        {
          extensionRuntimesArray object
        }
      ],
      "ribbons": [
        {
          extensionRibbonsArray object
        }
      ],
      "autoRunEvents": [
        {
          extensionAutoRunEventsArray object
        }
      ],
      "alternates": [
        {
          extensionAlternateVersionsArray object
        }
      ],
      "audienceClaimUrl": "{string}"
    }
  ],
  "dashboardCards": [
    {
      "id": "{string}",
      "displayName": "{string}",
      "description": "{string}",
      "pickerGroupId": "{string}",
      "icon": {
        dashboardCardIcon object
      },
      "contentSource": {
        dashboardCardContentSource object
      },
      "defaultSize": "medium | large"
    }
  ],
  "copilotAgents": {
    "declarativeAgents": [
      {
        declarativeAgentRef object
      }
    ],
    "customEngineAgents": [
      {
        customEngineAgents object
      }
    ]
  },
  "intuneInfo": {
    "supportedMobileAppManagementVersion": "{string}"
  },
  "elementRelationshipSet": {
    "oneWayDependencies": [
      {
        oneWayDependency object
      }
    ],
    "mutualDependencies": [
      [
        {
          elementReference object
        }
      ]
    ]
  },
  "backgroundLoadConfiguration": {
    "tabConfiguration": {
      tabConfiguration object
    }
  }
}
{
  "$schema": "{string}",
  "manifestVersion": "1.20",
  "version": "{string}",
  "id": "{string}",
  "localizationInfo": {
    "defaultLanguageTag": "{string}",
    "defaultLanguageFile": "{string}",
    "additionalLanguages": [
      {
        additionalLanguages object
      }
    ]
  },
  "developer": {
    "name": "{string}",
    "mpnId": "{string}",
    "websiteUrl": "{string}",
    "privacyUrl": "{string}",
    "termsOfUseUrl": "{string}"
  },
  "name": {
    "short": "{string}",
    "full": "{string}"
  },
  "description": {
    "short": "{string}",
    "full": "{string}"
  },
  "icons": {
    "outline": "{string}",
    "color": "{string}"
  },
  "accentColor": "{string}",
  "configurableTabs": [
    {
      "id": "{string}",
      "configurationUrl": "{string}",
      "canUpdateConfiguration": {boolean},
      "scopes": [
        "team | groupChat"
      ],
      "meetingSurfaces": [
        "sidePanel | stage"
      ],
      "context": [
        "personalTab | channelTab | privateChatTab | meetingChatTab | meetingDetailsTab | meetingSidePanel | meetingStage"
      ],
      "sharePointPreviewImage": "{string}",
      "supportedSharePointHosts": [
        "sharePointFullPage | sharePointWebPart"
      ]
    }
  ],
  "staticTabs": [
    {
      "entityId": "{string}",
      "name": "{string}",
      "contentUrl": "{string}",
      "contentBotId": "{string}",
      "websiteUrl": "{string}",
      "searchUrl": "{string}",
      "scopes": [
        "team | personal | groupChat"
      ],
      "context": [
        "personalTab | channelTab | privateChatTab | meetingChatTab | meetingDetailsTab | meetingSidePanel | meetingStage | teamLevelApp"
      ],
      "requirementSet": {
        elementRequirementSet object
      }
    }
  ],
  "bots": [
    {
      "botId": "{string}",
      "configuration": {
        configuration object
      },
      "needsChannelSelector": {boolean},
      "isNotificationOnly": {boolean},
      "supportsFiles": {boolean},
      "supportsCalling": {boolean},
      "supportsVideo": {boolean},
      "scopes": [
        "team | personal | groupChat"
      ],
      "commandLists": [
        {
          commandLists object
        }
      ],
      "requirementSet": {
        elementRequirementSet object
      }
    }
  ],
  "connectors": [
    {
      "connectorId": "{string}",
      "configurationUrl": "{string}",
      "scopes": [
        "team"
      ]
    }
  ],
  "subscriptionOffer": {
    "offerId": "{string}"
  },
  "composeExtensions": [
    {
      "id": "{string}",
      "botId": "{string}",
      "composeExtensionType": "botBased | apiBased",
      "authorization": {
        authorization object
      },
      "apiSpecificationFile": "{string}",
      "canUpdateConfiguration": boolean | null,
      "commands": [
        {
          commands object
        }
      ],
      "messageHandlers": [
        {
          messageHandlers object
        }
      ],
      "requirementSet": {
        elementRequirementSet object
      }
    }
  ],
  "permissions": [
    "identity | messageTeamMembers"
  ],
  "devicePermissions": [
    "geolocation | media | notifications | midi | openExternal"
  ],
  "validDomains": [
    "{string}"
  ],
  "webApplicationInfo": {
    "id": "{string}",
    "resource": "{string}"
  },
  "graphConnector": {
    "notificationUrl": "{string}"
  },
  "showLoadingIndicator": {boolean},
  "isFullScreen": {boolean},
  "activities": {
    "activityTypes": [
      {
        activityTypes object
      }
    ]
  },
  "configurableProperties": [
    "name | shortDescription | longDescription | smallImageUrl | largeImageUrl | accentColor | developerUrl | privacyUrl | termsOfUseUrl"
  ],
  "supportedChannelTypes": [
    "sharedChannels | privateChannels"
  ],
  "defaultBlockUntilAdminAction": {boolean},
  "publisherDocsUrl": "{string}",
  "defaultInstallScope": "personal | team | groupChat | meetings",
  "defaultGroupCapability": {
    "team": "tab | bot | connector",
    "groupchat": "tab | bot | connector",
    "meetings": "tab | bot | connector"
  },
  "meetingExtensionDefinition": {
    "scenes": [
      {
        scenes object
      }
    ],
    "supportsStreaming": {boolean},
    "supportsAnonymousGuestUsers": {boolean}
  },
  "authorization": {
    "permissions": {
      permissions object
    }
  },
  "extensions": [
    {
      "requirements": {
        requirementsExtensionElement object
      },
      "runtimes": [
        {
          extensionRuntimesArray object
        }
      ],
      "ribbons": [
        {
          extensionRibbonsArray object
        }
      ],
      "autoRunEvents": [
        {
          extensionAutoRunEventsArray object
        }
      ],
      "alternates": [
        {
          extensionAlternateVersionsArray object
        }
      ],
      "audienceClaimUrl": "{string}"
    }
  ],
  "dashboardCards": [
    {
      "id": "{string}",
      "displayName": "{string}",
      "description": "{string}",
      "pickerGroupId": "{string}",
      "icon": {
        dashboardCardIcon object
      },
      "contentSource": {
        dashboardCardContentSource object
      },
      "defaultSize": "medium | large"
    }
  ],
  "copilotAgents": {
    "declarativeAgents": [
      {
        declarativeAgentRef object
      }
    ],
    "customEngineAgents": [
      {
        customEngineAgents object
      }
    ]
  },
  "intuneInfo": {
    "supportedMobileAppManagementVersion": "{string}"
  },
  "elementRelationshipSet": {
    "oneWayDependencies": [
      {
        oneWayDependency object
      }
    ],
    "mutualDependencies": [
      [
        {
          elementReference object
        }
      ]
    ]
  }
}
{
  "$schema": "{string}",
  "manifestVersion": "1.19",
  "version": "{string}",
  "id": "{string}",
  "localizationInfo": {
    "defaultLanguageTag": "{string}",
    "defaultLanguageFile": "{string}",
    "additionalLanguages": [
      {
        additionalLanguages object
      }
    ]
  },
  "developer": {
    "name": "{string}",
    "mpnId": "{string}",
    "websiteUrl": "{string}",
    "privacyUrl": "{string}",
    "termsOfUseUrl": "{string}"
  },
  "name": {
    "short": "{string}",
    "full": "{string}"
  },
  "description": {
    "short": "{string}",
    "full": "{string}"
  },
  "icons": {
    "outline": "{string}",
    "color": "{string}"
  },
  "accentColor": "{string}",
  "configurableTabs": [
    {
      "configurationUrl": "{string}",
      "canUpdateConfiguration": {boolean},
      "scopes": [
        "team | groupChat"
      ],
      "meetingSurfaces": [
        "sidePanel | stage"
      ],
      "context": [
        "personalTab | channelTab | privateChatTab | meetingChatTab | meetingDetailsTab | meetingSidePanel | meetingStage"
      ],
      "sharePointPreviewImage": "{string}",
      "supportedSharePointHosts": [
        "sharePointFullPage | sharePointWebPart"
      ]
    }
  ],
  "staticTabs": [
    {
      "entityId": "{string}",
      "name": "{string}",
      "contentUrl": "{string}",
      "contentBotId": "{string}",
      "websiteUrl": "{string}",
      "searchUrl": "{string}",
      "scopes": [
        "team | personal | groupChat"
      ],
      "context": [
        "personalTab | channelTab | privateChatTab | meetingChatTab | meetingDetailsTab | meetingSidePanel | meetingStage | teamLevelApp"
      ]
    }
  ],
  "bots": [
    {
      "botId": "{string}",
      "configuration": {
        configuration object
      },
      "needsChannelSelector": {boolean},
      "isNotificationOnly": {boolean},
      "supportsFiles": {boolean},
      "supportsCalling": {boolean},
      "supportsVideo": {boolean},
      "scopes": [
        "team | personal | groupChat"
      ],
      "commandLists": [
        {
          commandLists object
        }
      ]
    }
  ],
  "connectors": [
    {
      "connectorId": "{string}",
      "configurationUrl": "{string}",
      "scopes": [
        "team"
      ]
    }
  ],
  "subscriptionOffer": {
    "offerId": "{string}"
  },
  "composeExtensions": [
    {
      "botId": "{string}",
      "composeExtensionType": "botBased | apiBased",
      "authorization": {
        authorization object
      },
      "apiSpecificationFile": "{string}",
      "canUpdateConfiguration": boolean | null,
      "commands": [
        {
          commands object
        }
      ],
      "messageHandlers": [
        {
          messageHandlers object
        }
      ]
    }
  ],
  "permissions": [
    "identity | messageTeamMembers"
  ],
  "devicePermissions": [
    "geolocation | media | notifications | midi | openExternal"
  ],
  "validDomains": [
    "{string}"
  ],
  "webApplicationInfo": {
    "id": "{string}",
    "resource": "{string}"
  },
  "graphConnector": {
    "notificationUrl": "{string}"
  },
  "showLoadingIndicator": {boolean},
  "isFullScreen": {boolean},
  "activities": {
    "activityTypes": [
      {
        activityTypes object
      }
    ]
  },
  "configurableProperties": [
    "name | shortDescription | longDescription | smallImageUrl | largeImageUrl | accentColor | developerUrl | privacyUrl | termsOfUseUrl"
  ],
  "supportedChannelTypes": [
    "sharedChannels | privateChannels"
  ],
  "defaultBlockUntilAdminAction": {boolean},
  "publisherDocsUrl": "{string}",
  "defaultInstallScope": "personal | team | groupChat | meetings",
  "defaultGroupCapability": {
    "team": "tab | bot | connector",
    "groupchat": "tab | bot | connector",
    "meetings": "tab | bot | connector"
  },
  "meetingExtensionDefinition": {
    "scenes": [
      {
        scenes object
      }
    ],
    "supportsStreaming": {boolean},
    "supportsAnonymousGuestUsers": {boolean}
  },
  "authorization": {
    "permissions": {
      permissions object
    }
  },
  "extensions": [
    {
      "requirements": {
        requirementsExtensionElement object
      },
      "runtimes": [
        {
          extensionRuntimesArray object
        }
      ],
      "ribbons": [
        {
          extensionRibbonsArray object
        }
      ],
      "autoRunEvents": [
        {
          extensionAutoRunEventsArray object
        }
      ],
      "alternates": [
        {
          extensionAlternateVersionsArray object
        }
      ],
      "audienceClaimUrl": "{string}"
    }
  ],
  "dashboardCards": [
    {
      "id": "{string}",
      "displayName": "{string}",
      "description": "{string}",
      "pickerGroupId": "{string}",
      "icon": {
        dashboardCardIcon object
      },
      "contentSource": {
        dashboardCardContentSource object
      },
      "defaultSize": "medium | large"
    }
  ],
  "copilotAgents": {
    "declarativeAgents": [
      {
        declarativeAgentRef object
      }
    ]
  }
}

Properties

$schema

The https:// URL referencing the JSON Schema for the app manifest. Optional, but recommended.

Type
string

Required

Constraints

Supported values

manifestVersion

The version of the app manifest schema that this app is using.

Type
string

Required

Constraints

Supported values
Allowed values: devPreview, m365DevPreview.

manifestVersion

The version of the app manifest schema that this app is using.

Type
string

Required

Constraints

Supported values
Allowed values: 1.22.

manifestVersion

The version of the app manifest schema that this app is using.

Type
string

Required

Constraints

Supported values
Allowed values: 1.21.

manifestVersion

The version of the app manifest schema that this app is using.

Type
string

Required

Constraints

Supported values
Allowed values: 1.20.

manifestVersion

The version of the app manifest schema that this app is using.

Type
string

Required

Constraints

Supported values
Allowed values: 1.19.

version

The version of the app, in semver standard (http://semver.org) format.

Update or additions to your app manifest require the version to be incremented. This way, when the new app manifest is installed, it overwrites the existing one and the user gets the new functionality. If the app was submitted to the Microsoft Teams Store, the new app manifest must be resubmitted and revalidated. After it's approved, users of this app receive the new updated app manifest automatically.

If there is a change to the app's requested permissions, users are prompted to upgrade and re-consent to the app.

Note

If your app includes an Office Add-in, each segment of the version string is limited to a maximum of five digits. The semver standard's prerelease and metadata version string extensions aren't supported.

Type
string

Required

Constraints
Maximum string length: 256.

Supported values

id

Microsoft Entra application registration ID for your app.

The ID is a unique Microsoft-generated identifier for the app in the form of a GUID. You have an ID if your bot is registered through the Microsoft Bot Framework. You have an ID if your tab's web app already signs in with Microsoft. You must enter the ID here. Otherwise, you must generate a new ID at the Microsoft Application Registration Portal. Use the same ID if you add a bot.

The ID stored in Teams admin center is the External App ID and it's visible as ExternalID on the traces.

Note

If you are submitting an update to your existing app in AppSource, the ID in your app manifest must not be modified.

Type
string

Required

Constraints

Supported values
The string value must be a guid.

packageName

A unique identifier for this app in reverse ___domain notation. E.g: com.example.myapp

Type
string

Required

Constraints
Maximum string length: 64.

Supported values

localizationInfo

Allows the specification of a default language, and pointers to additional language files. See localization.

Required

Constraints

Supported values

developer

Specifies information about your company. For apps submitted to the Teams Store, these values must match the information in your Teams Store listing. For more information, see the Teams Store publishing guidelines. Developer name helps improve your app discoverability in the Teams Store.

Type
developer

Required

Constraints

Supported values

name

The name of your app experience, displayed to users in the Teams experience. For apps submitted to AppSource, these values must match the information in your AppSource entry. The values of short and full must be different. App name helps improve your app discoverability in the Teams Store.

Type
name

Required

Constraints

Supported values

description

Describes your app to users.

Required

Constraints

Supported values

icons

Icons used within the Teams app. The icon files must be included as part of the upload package. For more information, see Icons.

Type
icons

Required

Constraints

Supported values

accentColor

A color to use in conjunction with the icon. The value must be a valid HTML color code starting with '#', for example #4464ee.

Type
string

Required

Constraints

Supported values
Value must be a hexidecimal color value, like #FFFFF.

configurableTabs

These are tabs users can optionally add to their channels and 1:1 or group chats and require extra configuration before they are added. Configurable tabs are not supported in the personal scope. Currently only one configurable tab per app is supported.

Type
Array of configurableTabs

Required

Constraints
Maximum array items: 1.

Supported values

staticTabs

A set of tabs that may be 'pinned' by default, without the user adding them manually. Static tabs declared in personal scope are always pinned to the app's personal experience. Static tabs do not currently support the 'teams' scope.

This property is required only for solutions that provide a static tab solution.

Type
Array of staticTabs

Required

Constraints
Maximum array items: 16. Array items must be unique.

Supported values

bots

The set of bots for this app. Currently only one bot per app is supported.

Type
Array of bots

Required

Constraints
Maximum array items: 1.

Supported values

connectors

The set of Office365 connectors for this app. Currently only one connector per app is supported.

Type
Array of connectors

Required

Constraints
Maximum array items: 1.

Supported values

subscriptionOffer

Subscription offer associated with this app.

Required

Constraints

Supported values

composeExtensions

The set of compose extensions for this app. Currently only one compose extension per app is supported.

Type
Array of composeExtensions

Required

Constraints
Maximum array items: 1.

Supported values

scopeConstraints

The scope constraints imposed on an app to specify in which threads you can install the app. When no constraints are specified, you can install the app to all threads within the specific scope.

Required

Constraints

Supported values

permissions

Deprecated. Specifies the permissions the app requests from users.

Type
Array of enum

Required

Constraints
Maximum array items: 2.

Supported values
Allowed values: identity, messageTeamMembers.

devicePermissions

Specifies the permissions the app requests for accessing the user's device capabilities.

Type
Array of enum

Required

Constraints
Maximum array items: 5.

Supported values
Allowed values: geolocation, media, notifications, midi, openExternal.

validDomains

A list of valid domains from which the Microsoft 365 app expects to load any content.

The rules for valid values vary depending on whether the item is being added to the array to support a Teams app or an Office Add-in. If your Microsoft 365 app includes both a Teams app and an add-in and they both load content from the same ___domain, then include the ___domain twice in the validDomains array, once following the rules for Teams and once following the rules for add-ins.

Teams rules
  • Domain listings can include wildcards, for example *.example.com. When using wildcards, the following rules apply:

    • If a subdomain segment includes a wildcard, it must be the only character in the segment.
    • Any segment preceding a wildcard segment must also be a wildcard segment.

    For example, *.*.___domain.com is valid, but foo.*.myteam.___domain.com isn't valid.

  • The ___domain part of the value of a staticTabs.contentUrl property is automatically trusted, so it doesn't need to be included.

  • Don't include the domains of identity providers supported by your app.

  • If your app relies on SharePoint, you can include the associated root SharePoint site as a valid ___domain using the Teams JavaScript client library teamSiteDomain property from the SharePointSiteInfo context interface.

Important

Don't add domains that are outside your control, either directly or through wildcards (*). For example, *.yoursite.com is valid, but *.onmicrosoft.com isn't valid as it isn't under your control.

Office Add-in rules

Office Add-ins, configured with an extensions property in the manifest, use the validDomains array to do the following:

  • Enable pages, routes, or other resources in the ___domain to be opened directly in the root task pane of the add-in on desktop Office platforms. (Specifying a ___domain in a validDomains isn't necessary for Office on the web or to open a resource in an IFrame, nor it is necessary for opening a resource in a dialog opened with the Dialog API.)
  • Enable pages in the ___domain to make Office.js API calls from IFrames within the add-in.

The following rules govern valid validDomains items that are intended to support Office Add-ins.

  • Office Add-ins disregard domains containing a wildcard. If your app incorporates an Office Add-in, specify the full ___domain name for the domains that the add-in accesses.

    Tip

    For add-ins running only in Office on Windows, there's a way to designate additional trusted domains with wildcards. See Wildcard trusted domains.

  • The value of a validDomains item must include the protocol (for example, https://myappdomain.com), and the protocol must be either http or https.

  • If there is an explicit port for the ___domain, include it (for example, https://myappdomain.com:9999).

  • If a subdomain needs to be trusted, include it (for example, https://mysubdomain.myappdomain.com). Note that mysubdomain.mydomain.com and mydomain.com are different domains. If both need to be trusted, then both need to be in separate validDomains items.

  • The ___domain part of the value of either the page or script child properties of an extensions.runtimes.code or extensions.contentRuntimes.code property are automatically valid, so they don't need to be included.

  • When developing on localhost, you don't usually need to create a validDomains item for it. However, if you're implementing the Dialog API in an add-in that runs on Outlook on the web or the new Outlook on Windows, you must include a validDomains item for localhost; for example https://localhost:3000.

  • Don't include any segments of a URL past the ___domain. For example, don't include the full URL of a page.

  • Don't put a closing slash, "/", on the value.

Type
Array of string

Required

Constraints
Maximum string length: 2048. Maximum array items: 16.

Supported values

webApplicationInfo

Specifies information about the app's Microsoft Entra ID application registration.

If your app is registered with Microsoft Entra ID, use this object to provide application ID information. Administrators can easily review permissions and grant consent in Teams admin center.

The webApplicationInfo property is related to a single ___domain and isn't supported for multiple domains. Therefore, if you've two apps hosted on different domains, you need to create separate app manifests for each app.

Required

Constraints

Supported values

graphConnector

Specify the app's Graph connector configuration. If this is present then webApplicationInfo.id must also be specified.

Required

Constraints

Supported values

showLoadingIndicator

Specifies whether or not to display a loading indicator when opening a tab or dialog in the app. If you set as true, follow the Teams platform guidance to show a native loading indicator, otherwise your page won't load correctly and will display the error message There was a problem reaching this app.

Type
boolean

Required

Constraints

Supported values
Default value: False.

isFullScreen

Specifies if a tab app is rendered without a tab header bar (signifying full screen mode).

This property only applies to apps published to your organization; it's ignored for uploaded and published third-party apps.

An isFullScreen value of true eliminates the app header bar and title for apps with tabs and dialogs. Best practice for chat bot apps is to leave this parameter as false.

Type
boolean

Required

Constraints

Supported values
Default value: False.

activities

Defines the notifications your app posts to the user's activity feed in Teams.

Type
activities

Required

Constraints

Supported values

supportedChannelTypes

Enables your app in non-standard channels. If your app supports a team scope and this property is defined, Teams enables your app in each channel type accordingly.

If your app supports a team scope, it functions in the standard channels regardless of the values that are defined in this property.

Your app can account for the unique properties of each of the channel types to function properly. To enable your tab for private and shared channels, see retrieve context in private channels and get context in shared channels.

Type
Array of enum

Required

Constraints
Maximum array items: 2.

Supported values
Allowed values: sharedChannels, privateChannels.

configurableProperties

Defines the app properties that Administrators can customize. For more information, see Enable customization for your app.

If present, a minimum of one property must be specified.

App customization isn't supported for custom apps uploaded or built for your org (line-of-business apps).

Administrators can define any of the following properties:

  • name: The app's display name.
  • shortDescription: The app's short description.
  • longDescription: The app's detailed description.
  • smallImageUrl: The app's outline icon.
  • largeImageUrl: The app's color icon.
  • accentColor: The color to use with and as a background for your outline icons.
  • developerUrl: The HTTPS URL of the developer's website.
  • privacyUrl: The HTTPS URL of the developer's privacy policy.
  • termsOfUseUrl: The HTTPS URL of the developer's terms of use.

Type
Array of enum

Required

Constraints
Maximum array items: 9.

Supported values
Allowed values: name, shortDescription, longDescription, smallImageUrl, largeImageUrl, accentColor, developerUrl, privacyUrl, termsOfUseUrl.

defaultBlockUntilAdminAction

A value indicating whether an app is blocked by default until admin allows it.

Type
boolean

Required

Constraints

Supported values
Default value: False.

publisherDocsUrl

The https:// URL to a page that provides additional information about your app.

Type
string

Required

Constraints
Maximum string length: 2048.

Supported values
The string must start with https://.

defaultInstallScope

The install scope defined for this app by default. This will be the option displayed with a Recommended option adjacent to the corresponding scope in the scope selection dialog, after the user adds the app.

Type
string

Required

Constraints

Supported values
Allowed values: personal, team, groupChat, meetings, copilot.

defaultInstallScope

The install scope defined for this app by default. This will be the option displayed with a Recommended option adjacent to the corresponding scope in the scope selection dialog, after the user adds the app.

Type
string

Required

Constraints

Supported values
Allowed values: personal, team, groupChat, meetings.

defaultGroupCapability

When a group install scope is selected, this will define the default capability when the user installs the app.

Required

Constraints

Supported values

meetingExtensionDefinition

Specify meeting extension definition.

Required

Constraints

Supported values

authorization

Specify and consolidates authorization related information for the App.

Required

Constraints

Supported values

extensions

Specifies Outlook Add-ins within an app manifest and simplifies the distribution and acquisition across the Microsoft 365 ecosystem. Each app supports only one extension. For more information, see Office Add-ins manifest for Microsoft 365.

Type
Array of elementExtensions

Required

Constraints
Maximum array items: 1.

Supported values

actions

Defines one or more custom file handling actions your app can perform when invoked by the user from the context menu of a file in Microsoft 365 (Office) app.

Type
Array of elementActions

Required

Constraints
Minimum array items: 1.

Supported values

dashboardCards

Defines a list of cards that can be pinned to a dashboard, such as Microsoft Viva Connections, to provide a summarized view of app information. To learn more about creating cards for Viva Connections Dashboard, see Overview of Bot Powered Adaptive Card Extensions.

Type
Array of dashboardCard

Required

Constraints

Supported values

intuneInfo

Properties related to app support for Microsoft Intune.

Type
intuneInfo

Required

Constraints

Supported values

copilotAgents

Defines one or more agents to Microsoft 365 Copilot. Declarative agents are customizations of Microsoft 365 Copilot that run on its same orchestrator and foundation models.

Required

Constraints

Supported values

elementRelationshipSet

Describes relationships among individual app capabilities, including staticTabs, configurableTabs, composeExtensions, and bots. It's used to specify runtime dependencies to ensure that the app only launches in applicable Microsoft 365 hosts, such as Teams, Outlook, and the Microsoft 365 (Office) app. For more information, see how to specify runtime requirements in your app manifest.

Required

Constraints

Supported values

backgroundLoadConfiguration

Optional property containing background loading configuration. By opting in to this performance enhancement, your app is eligible to be loaded in the background in any Microsoft 365 application host that supports this feature.

Required

Constraints

Supported values