30 characters that defined a list of decades

Developer preview manifest schema for Microsoft Teams

  • 13 minutes to read

The Microsoft Teams manifest describes how the app integrates into the Microsoft Teams product. Your manifest must conform to the schema hosted at.

For more information on the features available see: Features in the Public Developer Preview for Microsoft Teams.

Sample full manifest

The schema defines the following properties:

$ schema $ schema

Optional but recommended - stringOptional, but recommended - string

The https: // URL referencing the JSON Schema for the manifest.

manifestVersionmanifestVersion

Required - stringRequired - string

The version of the manifest schema this manifest is using.It should be "devPreview". It should be "devPreview".

Version version

Required - stringRequired - string

The version of the specific app. If you update something in your manifest, the version must be incremented as well Installing the new manifest will overwrite the existing one, and the user will get the new functionality. This way, when the new manifest is installed, it will overwrite the existing one and the user will get the new functionality. If this app was submitted to the store, the new manifest will have to be re-submitted and re-validated. Then users of this app will automatically receive the new updated manifest in a few hours. Then, users of this app will get the new updated manifest automatically in a few hours, after it is approved.

If the app requested permissions change, users will be prompted to upgrade and re-consent to the app.

This version string must follow the semver standard (MAJOR.MINOR.PATCH).

idid

Required - Microsoft App IDRequired - Microsoft app ID

The unique Microsoft-generated identifier for this app.If you have registered a bot through the Microsoft Bot Framework or the web app on your tab is already signed in to Microsoft, you should already have a ID and enter it here. If you have registered a bot via the Microsoft Bot Framework, or your tab's web app already signs in with Microsoft, you should already have an ID and should enter it here. Otherwise, you should enter a new ID in the Microsoft Otherwise, you should generate a new ID at the Microsoft Application Registration Portal (My Applications), enter it here, and then reuse it when you add a bot.

packageNamepackageName

Required - stringRequired - string

A unique identifier for this app in reverse domain notation; z. B. com.example.myapp.A unique identifier for this app in reverse domain notation; for example, com.example.myapp.

developerdeveloper

RequiredRequired

Specifies information about your company.For apps submitted to AppSource (formerly Office Store), these values ​​must match the information in your AppSource entry.For apps submitted to AppSource (formerly Office Store), these values ​​must match the information in your AppSource entry.

NameNameMaximum sizeRequiredDescriptionDescription
32 characters✔✔The display name for the developer.
2048 characters✔✔The https: // URL to the developer's website. This link should take users to your company or product-specific landing page .
2048 characters✔✔The https: // URL to the developer's privacy policy.
2048 characters✔✔The https: // URL to the developer's terms of use.
10 characters✔✔Optional The Microsoft Partner Network ID, which identifies the partner organization that creates the app.Optional The Microsoft Partner Network ID that identifies the partner organization building the app.

localizationInfolocalizationInfo

OptionalOptional

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

NameNameMaximum sizeRequiredDescriptionDescription
4 characters✔✔The language tag of the strings in this top level manifest file.

localizationInfo.additionalLanguages ​​localizationInfo.additionalLanguages

An array of objects specifying additional language translations.

NameNameMaximum sizeRequiredDescriptionDescription
4 characters✔✔The language tag of the strings in the provided file.
4 characters✔✔A relative file path to a the .json file containing the translated strings.

namename

RequiredRequired

The name of your app experience, displayed to users in the Teams experience.Für apps submitted to AppSource, these values ​​must match the information in your AppSource entry.For apps submitted to AppSource, these values ​​must match the information in your AppSource entry. The values ​​of and should not be the same.

NameNameMaximum sizeRequiredDescriptionDescription
30 characters✔✔The short display name for the app.
100 charactersThe full name of the app, used if the full app name exceeds 30 characters.

descriptiondescription

RequiredRequired

Describes your app to users.For apps submitted to AppSource, these values ​​must match the information in your AppSource entry.For apps submitted to AppSource, these values ​​must match the information in your AppSource entry.

Ensure that your description accurately describes your experience and provides information to help potential customers understand what your experience does. You should also note, in the full description, if an external account is required for use. The values ​​of and should not be the same Your short description must not be repeated within the long description and must not include any other app name.

NameNameMaximum sizeRequiredDescriptionDescription
80 characters✔✔A short description of your app experience, used when space is limited.
4000 characters✔✔The full description of your app.

Symbol icons

RequiredRequired

The icon files must be included as part of the upload package.

NameNameMaximum sizeRequiredDescriptionDescription
2048 characters✔✔A relative file path to a transparent 32x32 PNG outline icon.
2048 characters✔✔A relative file path to a full color 192x192 PNG icon.

accentColoraccentColor

Required - stringRequired - string

A color to use in conjunction with and as a background for your outline icons.

The value must be a valid # A0 that begins with "#", e.g. B. The value must be a valid HTML color code starting with '#', for example.

configurableTabsconfigurableTabs

OptionalOptional

Used when your app experience has a team channel tab experience that requires extra configuration before it is added. Configurable tabs are only added in the area Teams supported, and currently only one tab per app is supported.

The object is an array with all elements of the type. This block is required only for solutions that provide a configurable channel tab solution.

NameNameTypTypeMaximum sizeRequiredDescriptionDescription
StringString2048 characters✔✔The https: // URL to use when configuring the tab.
Boolean value BooleanA value indicating whether an instance of the tab's configuration can be updated by the user after creation.Standard: Default:
Array of enum11✔✔Currently, configurable tabs support only the and scopes.
StringString20482048A relative file path to a tab preview image for use in SharePoint.Size 1024 x 768.Size 1024x768.
Array of enum11Defines how your tab will be made available in SharePoint. Options are and Options are and

staticTabsstaticTabs

OptionalOptional

Defines a set of tabs that can be "pinned" by default, without the user adding them manually.Static tabs declared in the pane Static tabs declared in scope are always pinned to the app's personal experience. Static tabs declared in the scope are currently not supported .

The object is an array (maximum of 16 elements) with all elements of the type. This block is only required for solutions that provide a static tab solution is required only for solutions that provide a static tab solution.

NameNameTypTypeMaximum sizeRequiredDescriptionDescription
StringString64 characters✔✔A unique identifier for the entity that the tab displays.
StringString128 characters✔✔The display name of the tab in the channel interface.
StringString2048 characters✔✔The https: // URL that points to the entity UI to be displayed in the Teams canvas.
StringString2048 charactersThe https: // URL to point at if a user opts to view in a browser.
Array of enum11✔✔Currently, static tabs only support the area; i.e., it can only be provided as part of the personal experience. Currently, static tabs support only the scope, which means it can be provisioned only as part of the personal experience.

Botsbots

OptionalOptional

Defines a bot solution along with optional information, e.g. B. Default command properties. Defines a bot solution, along with optional information such as default command properties.

The object is an array (maximum of only 1 element — currently only one bot is allowed per app) with all elements of the type .This block is required only for solutions that provide a bot experience.

NameNameTypTypeMaximum sizeRequiredDescriptionDescription
StringString64 characters✔✔The unique Microsoft app ID for the bot as registered with the Bot Framework. This may well be the same as the overall app ID.
BooleanDescribes whether or not the bot utilizes a user hint to add the bot to a specific channel.Standard: Default:
BooleanIndicates whether a bot is a one-way, notification-only bot, as opposed to a conversational bot. Standard: Default:
BooleanIndicates whether the bot supports the ability to upload / download files in personal chat.Standard: Default:
Array of enum33✔✔Specifies whether the bot offers an experience in the context of a channel in a, in a group chat (), or an experience scoped to an individual user alone (). These options are non-exclusive.

bots.commandListsbots.commandLists

An optional list of commands that your bot can recommend to users.The object is an array (maximum 2 elements) with all elements of the type. You need to define a separate command list for each area your bot supports. The object is an array (maximum of 2 elements) with all elements of type; You must define a separate command list for each scope that your bot supports. See Bot menus for more information.

NameNameTypTypeMaximum sizeRequiredDescriptionDescription
Array of enum33✔✔Specifies the scope for which the command list is valid. Possible options are, and. Options are,, and.
Array of objects10 10✔✔An array of commands the bot supports:
: The bot command name (string, 32)
: a simple description or example of the command syntax and its argument (string, 128)

Connector connectors

OptionalOptional

The block defines an Office 365 Connector for the app.

The object is an array (maximum of 1 element) with all elements of type. This block is only required for solutions that provide a connector.This block is required only for solutions that provide a connector.

NameNameTypTypeMaximum sizeRequiredDescriptionDescription
StringString2048 characters✔✔The https: // URL to use when configuring the connector.
StringString64 characters✔✔A unique identifier for the Connector that matches its ID in the Connectors Developer Dashboard.
Array of enum11✔✔Specifies whether the Connector offers an experience in the context of a channel in a, or an experience scoped to an individual user alone (). Currently, only the scope is supported.

composeExtensions composeExtensions

OptionalOptional

Defines a messaging extension for the app.

Note

The name of the feature was changed from "compose extension" to "messaging extension" in November, 2017, but the manifest name remains the same so that existing extensions continue to function.

The object is an array (maximum of 1 element) with all elements of type. This block is required only for solutions that provide a messaging extension only for solutions that provide a messaging extension.

NameNameTypTypeMaximum sizeRequiredDescriptionDescription
StringString6464✔✔The unique Microsoft app ID for the bot that backs the messaging extension, as registered with the Bot Framework. This can be done with the general app This may well be the same as the overall app ID.
Boolean value BooleanA value indicating whether the configuration of a messaging extension can be updated by the user. The default is.
Array of object10 10✔✔Array of commands the messaging extension supports

composeExtensions.commandscomposeExtensions.commands

Your messaging extension should declare one or more commands. Each command appears in Microsoft Teams as a potential interaction from the UI-based entry point There is a maximum of 10 commands.

Each command item is an object with the following structure:

NameNameTypTypeMaximum sizeRequiredDescriptionDescription
StringString64 characters✔✔The ID for the command
StringString64 charactersType of the command.Einer or .One of or .Standard: Default:
StringString32 characters✔✔The user-friendly command name
StringString128 charactersThe description that appears to users to indicate the purpose of this command
Boolean value BooleanA Boolean value that indicates whether the command should be run initially with no parameters.Standard: Default:
Array of strings33Defines where the message extension can be invoked from. Any combination of,,. Any combination of,,. Default is Default is
Boolean value BooleanA boolean value that indicates if it should fetch the task module dynamically
ObjectObjectSpecify the task module to preload when using a messaging extension command
StringString6464Initial dialog title
StringStringDialog width - either a number in pixels or default layout such as 'large', 'medium', or 'small'
StringStringDialog height - either a number in pixels or default layout such as 'large', 'medium', or 'small'
StringStringInitial webview url Initial webview url
Array of Objects5 5A list of handlers that allow apps to be invoked when certain conditions are met. Domains must also be listed in
StringStringThe type of message handler.Muss sein.Must be.
Array of stringsArray of domains that the link message handler can register for.
Array of object5 5✔✔The list of parameters the command takes.Minimum: 1; maximum: 5Minimum: 1; maximum: 5
StringString64 characters✔✔The name of the parameter as it appears in the client.This is included in the user request.
StringString32 characters✔✔User-friendly title for the parameter.
StringString128 charactersUser-friendly string that describes this parameter’s purpose.
StringString128 charactersDefines the type of control displayed on a task module for.
Array of Objects10 10The choice options for the .Use only if this is the Use only when
StringString128128Title of the choice
StringString512512Value of the choice

Permissions permissions

OptionalOptional

An array of which specifies which permissions the app requests, which lets end users know how the extension will perform. The following options are non-exclusive: The following options are non-exclusive:

  • Requires user identity information
  • Requires permission to send direct messages to team members

Changing these permissions when updating your app will cause your users to repeat the consent process the first time they run the updated app .

devicePermissionsdevicePermissions

Optional Array of stringsOptional Array of strings

Specifies the native features on a user's device that your app may request access to.Possible options are: Options are:

    validDomainsvalidDomains

    Optional, With Exception required if indicatedOptional, except Required where noted

    A list of valid domains from which the app expects to load any content. B. Domain listings can include wildcards, for example. This corresponds to exactly one section of the domain. if you need to match, use .This matches exactly one segment of the domain; if you need to match then use. If your tab configuration or content UI needs to navigate to any other domain besides the one use for tab configuration, that domain must be specified here.

    It is However not required to use the domains of identity providers that you want to support in your app not necessary to include the domains of identity providers you want to support in your app, however. For example, to authenticate using a Google ID, it's necessary to redirect to accounts.google .com, but you should not include accounts.google.com in.

    Important

    Do not add domains that are outside your control, either directly or via wildcards. For example, is valid, but is not valid.

    The object is an array with all elements of the type.

    webApplicationInfowebApplicationInfo

    OptionalOptional

    Specify your AAD App ID and Graph information to help users seamlessly sign into your AAD app.

    NameNameTypTypeMaximum sizeRequiredDescriptionDescription
    StringString36 characters