-
Notifications
You must be signed in to change notification settings - Fork 500
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Doc Feature] [Requirements Targeting][3259380] #11018
base: main
Are you sure you want to change the base?
Conversation
Acrolinx ScorecardsWe currently enforce a minimum score of 80. Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology:
More info about Acrolinx Use the Acrolinx extension, or sidebar, in Visual Studio Code to check spelling, grammar, style, tone, clarity, and key terminology when you're creating or updating content. For more information, see Use the Visual Studio Code extension to run Acrolinx locally. |
Learn Build status updates of commit 317662a: ✅ Validation status: passed
For more details, please refer to the build report. For any questions, please:
|
This comment was marked as outdated.
This comment was marked as outdated.
Learn Build status updates of commit 11e2e5d: ✅ Validation status: passed
For more details, please refer to the build report. For any questions, please:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added my comments. Overall great job Erika! Thx so much!
msteams-platform/resources/schema/manifest-schema-dev-preview.md
Outdated
Show resolved
Hide resolved
|Name| Type| Maximum size | Required | Description| | ||
|---|---|---|---|---| | ||
| `element`| Object||✔️| Represents an individual app component that has a one-way runtime dependency on another component being loaded | | ||
| `element.name`| String|| ✔️| The type of app component. Supported values: `bots`, `staticTabs`, `composeExtensions`, `configurableTabs`| |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
element.name
should be enum
type
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm seeing String enum
elsewhere in the manifest reference. I'll use that unless you have objections--
msteams-platform/resources/schema/manifest-schema-dev-preview.md
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Shall we include all validation rules for RT properties? Did we do that previously when a new property was added to the manifest that also has validation rules associated with it? Here're all the validation rules for RT properties - RT validation rules loop . Note that Anuj might add some more per his actual implementation, but the current ones in the loop should cover majority of it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Validation rules aren't typically documented in manifest reference, as most should (hopefully) be implied by property descriptions. But I did add this note to the RT article based on the validation rules you shared:
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmm, I do think in RT's case we might want to explicitly mention some validation rules, as they might not be so straightforward. At least the following tree from my loop doc should be mentioned I think, as they're not easily implied from the property name or description:
- dependencies
(
element/
commandIds) specified in
oneWayDependenciesor
mutualDependencies` should exist in the manifest. - [Updated from existing rule in schema to have more clarity] No cyclic dependencies in
oneWayDependencies
. ie (A -> B), (B -> A) or (A->B, B->C, C->A) will not be allowed. Developers should usemutualDependencies
property for such scenarios. - Same set of
elements
wil not be allowed to havemutualDependency
andoneWayDependency
. Example -oneWayDependency
A -> B, andmutualDependency
A<->B will not be allowed since A->B is redundant here.
Acrolinx ScorecardsWe currently enforce a minimum score of 80. Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology:
More info about Acrolinx Use the Acrolinx extension, or sidebar, in Visual Studio Code to check spelling, grammar, style, tone, clarity, and key terminology when you're creating or updating content. For more information, see Use the Visual Studio Code extension to run Acrolinx locally. |
Learn Build status updates of commit ecb8dad: ✅ Validation status: passed
For more details, please refer to the build report. For any questions, please:
|
Acrolinx ScorecardsWe currently enforce a minimum score of 80. Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology:
More info about Acrolinx Use the Acrolinx extension, or sidebar, in Visual Studio Code to check spelling, grammar, style, tone, clarity, and key terminology when you're creating or updating content. For more information, see Use the Visual Studio Code extension to run Acrolinx locally. |
Learn Build status updates of commit c39253e: ✅ Validation status: passed
For more details, please refer to the build report. For any questions, please:
|
Acrolinx ScorecardsWe currently enforce a minimum score of 80. Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology:
More info about Acrolinx Use the Acrolinx extension, or sidebar, in Visual Studio Code to check spelling, grammar, style, tone, clarity, and key terminology when you're creating or updating content. For more information, see Use the Visual Studio Code extension to run Acrolinx locally. |
Learn Build status updates of commit 2ea0173: ✅ Validation status: passed
For more details, please refer to the build report. For any questions, please:
|
Acrolinx ScorecardsWe currently enforce a minimum score of 80. Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology:
More info about Acrolinx Use the Acrolinx extension, or sidebar, in Visual Studio Code to check spelling, grammar, style, tone, clarity, and key terminology when you're creating or updating content. For more information, see Use the Visual Studio Code extension to run Acrolinx locally. |
Learn Build status updates of commit 922e2a6: ✅ Validation status: passed
For more details, please refer to the build report. For any questions, please:
|
Acrolinx ScorecardsWe currently enforce a minimum score of 80. Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology:
More info about Acrolinx Use the Acrolinx extension, or sidebar, in Visual Studio Code to check spelling, grammar, style, tone, clarity, and key terminology when you're creating or updating content. For more information, see Use the Visual Studio Code extension to run Acrolinx locally. |
|
||
> [!NOTE] | ||
> | ||
> The ability to specify Microsoft 365 host runtime requirements in the app manifest is currently in [public developer preview](../resources/schema/manifest-schema-dev-preview.md) and supported in Teams and Outlook mobile hosts. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
> The ability to specify Microsoft 365 host runtime requirements in the app manifest is currently in [public developer preview](../resources/schema/manifest-schema-dev-preview.md) and supported in Teams and Outlook mobile hosts. | |
> The ability to specify Microsoft 365 host runtime requirements in app manifest is currently in [public developer preview](../resources/schema/manifest-schema-dev-preview.md) and supported in Teams and Outlook mobile hosts. |
|
||
Currently, a subset of Microsoft 365 host applications support the ability to specify runtime requirements in the app manifest. This support will expand over time. The following hosts will ensure only applicable apps and their applicable components are made available to end-users: | ||
|
||
|Microsoft 365 host application| Web | Desktop | Mobile | Notes| |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| Notes|
@erikadoyle, is this placeholder text for notes to be added later?
You can specify relationships among the individual components of your app by including a [`elementRelationshipSet`](../resources/schema/manifest-schema-dev-preview.md#elementrelationshipset) in your app manifest. Use this object to specify both [one-way dependencies](#one-way-dependencies) and [mutual dependencies](#mutual-dependencies) among app components. | ||
|
||
> [!NOTE] | ||
> A given pair of app components can only be grouped once, by either a `oneWayDependency` or `mutualDependency`. Similarly, cyclical `oneWayDependencies` (where for example, components *A* and *B* mutually declare each other as one-way dependency) are not allowed and will not pass manifest validation. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
> A given pair of app components can only be grouped once, by either a `oneWayDependency` or `mutualDependency`. Similarly, cyclical `oneWayDependencies` (where for example, components *A* and *B* mutually declare each other as one-way dependency) are not allowed and will not pass manifest validation. | |
> A given pair of app components can only be grouped once, either by `oneWayDependency` or `mutualDependency`. Similarly, cyclical `oneWayDependencies`—where, for example, components *A* and *B* mutually declare each other as a one-way dependency—aren't allowed and will fail manifest validation. |
> [!NOTE] | ||
> A given pair of app components can only be grouped once, by either a `oneWayDependency` or `mutualDependency`. Similarly, cyclical `oneWayDependencies` (where for example, components *A* and *B* mutually declare each other as one-way dependency) are not allowed and will not pass manifest validation. | ||
|
||
Currently, a subset of Teams app elements can be specified as runtime requirements in the app manifest. This support will expand over time. The following app manifest elements can be specified as having one-way or mutual dependencies: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Currently, a subset of Teams app elements can be specified as runtime requirements in the app manifest. This support will expand over time. The following app manifest elements can be specified as having one-way or mutual dependencies: | |
Only a subset of Teams app capabilities can be specified as runtime requirements in app manifest. This support will expand over time. The following app manifest elements can be specified as having one-way or mutual dependencies: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@erikadoyle, replacing elements with capabilities is just a suggestion for consistency as most developers reading Teams dev docs would have seen it referred to as capabilities throughout the docs. However, I would defer the final word to you and Surbhi.
I've noticed that capabilities/components/elements are used interchangeably and this might potentially cause confusion to readers.
- Personal tabs (`staticTabs`) | ||
- Message extensions (`composeExtensions`), including individual commands | ||
- Bots (`bots`) | ||
- Configurable tabs (`configurableTabs`) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@erikadoyle, can we combine Personal tabs and Configurable tabs to a single point?
- Bots (`bots`) | ||
- Configurable tabs (`configurableTabs`) | ||
|
||
Each app element is denoted by an `id`, which maps to `botId` for bots, `entityId` for staticTabs, `id` for configurableTabs, and `id` for composeExtensions. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Each app element is denoted by an `id`, which maps to `botId` for bots, `entityId` for staticTabs, `id` for configurableTabs, and `id` for composeExtensions. | |
Each app element is denoted by an `id`, which maps to `botId` for bots, `entityId` for static tabs, and `id` for configurable tabs and message extensions. |
> [!NOTE] | ||
> This feature introduces `id` properties to configurableTabs and composeExtensions definitions. Currently, Teams and other Microsoft 365 hosts only support apps containing a single configurableTab and/or single composeExtension. These ID properties were added to future-proof your app in case host support expands to accommodate multiple instances of these components. | ||
> | ||
> The `id` property must be specified on a configurableTab or composeExtension for it to be recognized in an `elementRelationshipSet`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
> The `id` property must be specified on a configurableTab or composeExtension for it to be recognized in an `elementRelationshipSet`. | |
> The `id` property must be specified in a `configurableTab` or a `composeExtension` for it to be recognized in an `elementRelationshipSet`. |
|
||
### One-way dependencies | ||
|
||
Use the [`oneWayDependencies`](../resources/schema/manifest-schema-dev-preview.md#elementrelationshipsetonewaydependency) array to describe cases where one component of your app depends upon another component. For each object in the array, specify the dependent component (`element`) and the component it depends on (`dependsOn`). For example: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For example:
@erikadoyle, is it necessary to replace this sentence to describe the code snippet briefly (this extends to all the other code snippets in the article)? If you think it isn't necessary, resolve the suggestion.
Suggestion: The following JSON payload shows a message extension with a one-way dependency on a bot:
"element" : { | ||
"name" : "composeExtensions", | ||
"id" : "composeExtension-id", | ||
"commandIds": ["command-1-id", "command-2-id"] // Developers can add more commands. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"commandIds": ["command-1-id", "command-2-id"] // Developers can add more commands. | |
"commandIds": ["command-1-id", "command-2-id"] // You can add more commands. |
], | ||
``` | ||
|
||
Currently, a subset of TeamsJS capabilities can be specified as runtime requirements for individual components of an app. This support will expand over time. The following TeamsJS capabilities can be specified as runtime requirements for [`staticTabs`](../resources/schema/manifest-schema-dev-preview.md#statictabsrequirementset), [`composeExtensions`](../resources/schema/manifest-schema-dev-preview.md#composeextensionsrequirementset), and [`bots`](../resources/schema/manifest-schema-dev-preview.md#botsrequirementset): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Currently, a subset of TeamsJS capabilities can be specified as runtime requirements for individual components of an app. This support will expand over time. The following TeamsJS capabilities can be specified as runtime requirements for [`staticTabs`](../resources/schema/manifest-schema-dev-preview.md#statictabsrequirementset), [`composeExtensions`](../resources/schema/manifest-schema-dev-preview.md#composeextensionsrequirementset), and [`bots`](../resources/schema/manifest-schema-dev-preview.md#botsrequirementset): | |
Only a subset of TeamsJS capabilities can be specified as runtime requirements for individual components of an app. This support will expand over time. The following TeamsJS capabilities can be specified as runtime requirements for [`staticTabs`](../resources/schema/manifest-schema-dev-preview.md#statictabsrequirementset), [`composeExtensions`](../resources/schema/manifest-schema-dev-preview.md#composeextensionsrequirementset), and [`bots`](../resources/schema/manifest-schema-dev-preview.md#botsrequirementset): |
@@ -167,6 +167,9 @@ The `{hostName}` [URL placeholder value](./access-teams-context.md#get-context-b | |||
* **Do** use *hostName* to differentiate the theme of your application based on the host it's running in. For example, you can use Microsoft Teams purple as the main accent color when running in Teams, and Outlook blue when running in Outlook. | |||
* **Do** use *hostName* to differentiate messages shown to the user based on which host it's running in. For example, show *Manage your tasks in Microsoft 365* when running in Microsoft 365 on the web, and *Manage your tasks in Teams* when running in Teams. | |||
|
|||
> [!TIP] | |||
> Best practice is to target the runtime requirements and dependencies of your app in a host-agnostic way, rather than special casing your app code with host-specific logic. For more info, see [Specify Microsoft 365 host runtime requirements in your app manifest](../../m365-apps/specify-runtime-requirements.md). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
> Best practice is to target the runtime requirements and dependencies of your app in a host-agnostic way, rather than special casing your app code with host-specific logic. For more info, see [Specify Microsoft 365 host runtime requirements in your app manifest](../../m365-apps/specify-runtime-requirements.md). | |
> The best practice is to target the runtime requirements and dependencies of your app in a host-agnostic way, rather than special casing your app code with host-specific logic. For more information, see [how to specify Microsoft 365 host runtime requirements in your app manifest](../../m365-apps/specify-runtime-requirements.md). |
@@ -0,0 +1,5 @@ | |||
### Specify host runtime requirements (preview) | |||
|
|||
To ensure intentional and deliberate customer experiences with your app, you can tailor your app's behavior in applicable Microsoft 365 hosts, or omit it from surfacing in contexts that you're not ready to support. Use the app manifest to specify any [dependency relationships](../m365-apps/specify-runtime-requirements.md#specify-relationships-between-components-of-your-app-elementrelationshipset) across components of your app, and specific [runtime requirements](../m365-apps/specify-runtime-requirements.md#specify-runtime-capability-requirements-for-specific-app-components-requirementset) of your static tabs, message extensions, and bots. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To ensure intentional and deliberate customer experiences with your app, you can tailor your app's behavior in applicable Microsoft 365 hosts, or omit it from surfacing in contexts that you're not ready to support. Use the app manifest to specify any [dependency relationships](../m365-apps/specify-runtime-requirements.md#specify-relationships-between-components-of-your-app-elementrelationshipset) across components of your app, and specific [runtime requirements](../m365-apps/specify-runtime-requirements.md#specify-runtime-capability-requirements-for-specific-app-components-requirementset) of your static tabs, message extensions, and bots. | |
To ensure intentional and deliberate customer experiences with your app, you can tailor your app's behavior in applicable Microsoft 365 hosts, or omit it from surfacing in contexts that you're not ready to support. Use app manifest to specify any [dependency relationships](../m365-apps/specify-runtime-requirements.md#specify-relationships-between-components-of-your-app-elementrelationshipset) across components of your app, and specific [runtime requirements](../m365-apps/specify-runtime-requirements.md#specify-runtime-capability-requirements-for-specific-app-components-requirementset) of your static tabs, message extensions, and bots. |
|
||
## Microsoft 365 host support | ||
|
||
Currently, a subset of Microsoft 365 host applications support the ability to specify runtime requirements in the app manifest. This support will expand over time. The following hosts will ensure only applicable apps and their applicable components are made available to end-users: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Currently, a subset of Microsoft 365 host applications support the ability to specify runtime requirements in the app manifest. This support will expand over time. The following hosts will ensure only applicable apps and their applicable components are made available to end-users: | |
Only a subset of Microsoft 365 host applications supports the ability to specify runtime requirements in the app manifest. This support will expand over time. The following hosts ensure only applicable apps and their applicable components are made available to users: |
} | ||
``` | ||
|
||
For message extensions, you can optionally specify individual commands that require support for specific app components. If those components aren't supported in the runtime host, they will not be made available to the end-user (though all other commands will run). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For message extensions, you can optionally specify individual commands that require support for specific app components. If those components aren't supported in the runtime host, they will not be made available to the end-user (though all other commands will run). | |
For message extensions, you can optionally specify individual commands that require support for specific app components. If those components aren't supported in the runtime host, they won't be made available to the user (though all other commands will run). |
|
||
## Specify runtime capability requirements for specific app components (`requirementSet`) | ||
|
||
When you're defining an individual app component, you can specify it's specific TeamsJS runtime requirements using a [`requirementSet`](../resources/schema/manifest-schema-dev-preview.md#statictabsrequirementset). This will ensure the component only loads in Microsoft 365 hosts with support for the critical TeamsJS capabilities. For example: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When you're defining an individual app component, you can specify it's specific TeamsJS runtime requirements using a [`requirementSet`](../resources/schema/manifest-schema-dev-preview.md#statictabsrequirementset). This will ensure the component only loads in Microsoft 365 hosts with support for the critical TeamsJS capabilities. For example: | |
When you're defining an individual app component, you can specify its specific TeamsJS runtime requirements using a [`requirementSet`](../resources/schema/manifest-schema-dev-preview.md#statictabsrequirementset). This ensures that the component only loads in Microsoft 365 hosts with support for the critical TeamsJS capabilities. For example: |
@@ -9,9 +9,6 @@ ms.date: 11/15/2021 | |||
|
|||
For information on how to enable developer preview, see [public developer preview for Microsoft Teams](~/resources/dev-preview/developer-preview-intro.md). | |||
|
|||
> [!NOTE] | |||
> If you aren't using developer preview features, including running [Teams personal tabs and message extensions in Outlook and Microsoft 365 app](../../m365-apps/overview.md), use the [app manifest](~/resources/schema/manifest-schema.md) (previously called Teams app manifest) for generally available (GA) features instead. | |||
|
|||
The app manifest describes how the app integrates into the Microsoft Teams platform. Your app manifest must conform to the schema hosted at [`https://developer.microsoft.com/json-schemas/teams/vDevPreview/MicrosoftTeams.schema.json`](https://developer.microsoft.com/json-schemas/teams/vDevPreview/MicrosoftTeams.schema.json). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The app manifest describes how the app integrates into the Microsoft Teams platform. Your app manifest must conform to the schema hosted at [`https://developer.microsoft.com/json-schemas/teams/vDevPreview/MicrosoftTeams.schema.json`](https://developer.microsoft.com/json-schemas/teams/vDevPreview/MicrosoftTeams.schema.json). | |
App manifest describes how the app integrates into the Microsoft Teams platform. Your app manifest must conform to the schema hosted at [`https://developer.microsoft.com/json-schemas/teams/vDevPreview/MicrosoftTeams.schema.json`](https://developer.microsoft.com/json-schemas/teams/vDevPreview/MicrosoftTeams.schema.json). |
"element" : { | ||
"name" : "composeExtensions", | ||
"id" : "composeExtension-id", | ||
"commandIds": ["command-1-id", "command-2-id"] // Developers can add more commands. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"commandIds": ["command-1-id", "command-2-id"] // Developers can add more commands. | |
"commandIds": ["command-1-id", "command-2-id"] // You can add more commands. |
|
||
**Optional** – Object | ||
|
||
Describes relationships among individual app components, including `staticTabs`, `configurableTabs`, `composeExtensions`, and `bots`. Used to specify runtime dependencies to ensure that the app only launches from applicable Microsoft 365 hosts, such as Teams, Outlook, and the Microsoft 365 (Office) app. See [Specify runtime requirements in your app manifest](../../m365-apps/specify-runtime-requirements.md) for more info. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Describes relationships among individual app components, including `staticTabs`, `configurableTabs`, `composeExtensions`, and `bots`. Used to specify runtime dependencies to ensure that the app only launches from applicable Microsoft 365 hosts, such as Teams, Outlook, and the Microsoft 365 (Office) app. See [Specify runtime requirements in your app manifest](../../m365-apps/specify-runtime-requirements.md) for more info. | |
Describes relationships among individual app components, including `staticTabs`, `configurableTabs`, `composeExtensions`, and `bots`. It's used to specify runtime dependencies to ensure that the app only launches from 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](../../m365-apps/specify-runtime-requirements.md). |
|
||
|Name| Type| Maximum size | Required | Description| | ||
|---|---|---|---|---| | ||
| `oneWayDependencies`| Array|||Array containing one or more unidirectional dependency relationships among app components (each represented by `oneWayDependency` object with *dependent* (`element`) and *depended on* (`dependsOn`) [`element` objects](#element-object))| |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Array containing one or more unidirectional dependency relationships among app components
@erikadoyle, since we have already mentioned the data type as an array, can we simply start the sentence as "Contains one or more..."?
|Name| Type| Maximum size | Required | Description| | ||
|---|---|---|---|---| | ||
| `name`| String enum|| ✔️| The type of app component. Supported values: `bots`, `staticTabs`, `composeExtensions`, `configurableTabs`| | ||
| `id` | String|| ✔️| The specific instance of the bot, tab, or message extension. Maps to `botId` for bots, `entityId` for staticTabs, `id` for configurableTabs, and `id` for composeExtensions.| |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| `id` | String|| ✔️| The specific instance of the bot, tab, or message extension. Maps to `botId` for bots, `entityId` for staticTabs, `id` for configurableTabs, and `id` for composeExtensions.| | |
| `id` | String|| ✔️| The specific instance of the bot, tab, or message extension. Maps to `botId` for bots, `entityId` for static tabs, and `id` for configurable tabs, and message extensions.| |
|
||
### elementRelationshipSet.oneWayDependency | ||
|
||
Describes a unidirectional dependency of one app component (X) to another (Y). If a Microsoft 365 runtime host doesn't support a required component (Y), the dependent component (X) won't load or otherwise surface to the end-user. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Describes a unidirectional dependency of one app component (X) to another (Y). If a Microsoft 365 runtime host doesn't support a required component (Y), the dependent component (X) won't load or otherwise surface to the end-user. | |
Describes a unidirectional dependency of one app component (X) to another (Y). If a Microsoft 365 runtime host doesn't support a required component (Y), the dependent component (X) won't load or otherwise surface to the user. |
|
||
|Name| Type| Maximum size | Required | Description| | ||
|---|---|---|---|---| | ||
| `oneWayDependencies`| Array|||Array containing one or more unidirectional dependency relationships among app components (each represented by `oneWayDependency` object with *dependent* (`element`) and *depended on* (`dependsOn`) [`element` objects](#element-object))| |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| `oneWayDependencies`| Array|||Array containing one or more unidirectional dependency relationships among app components (each represented by `oneWayDependency` object with *dependent* (`element`) and *depended on* (`dependsOn`) [`element` objects](#element-object))| | |
| `oneWayDependencies`| Array|||Array containing one or more unidirectional dependency relationships among app components (each represented by `oneWayDependency` object with *dependent* (`element`) and *depended on* (`dependsOn`) [`element` objects](#element-object)).| |
|Name| Type| Maximum size | Required | Description| | ||
|---|---|---|---|---| | ||
| `oneWayDependencies`| Array|||Array containing one or more unidirectional dependency relationships among app components (each represented by `oneWayDependency` object with *dependent* (`element`) and *depended on* (`dependsOn`) [`element` objects](#element-object))| | ||
| `mutualDependencies`| Array|||Array containing one or more mutual dependency relationships among app components (each represented by `mutualDependency` array of [`element` objects](#element-object))| |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| `mutualDependencies`| Array|||Array containing one or more mutual dependency relationships among app components (each represented by `mutualDependency` array of [`element` objects](#element-object))| | |
| `mutualDependencies`| Array|||Array containing one or more mutual dependency relationships among app components (each represented by `mutualDependency` array of [`element` objects](#element-object)).| |
|
||
|Name| Type| Maximum size | Required | Description| | ||
|---|---|---|---|---| | ||
| `name`| String enum|| ✔️| The type of app component. Supported values: `bots`, `staticTabs`, `composeExtensions`, `configurableTabs`| |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| `name`| String enum|| ✔️| The type of app component. Supported values: `bots`, `staticTabs`, `composeExtensions`, `configurableTabs`| | |
| `name`| String enum|| ✔️| The type of app component. Supported values: `bots`, `staticTabs`, `composeExtensions`, `configurableTabs`.| |
|
||
|Name| Type| Maximum size | Required | Description| | ||
|---|---|---|---|---| | ||
| `element`| Object||✔️| Represents an individual app component (represented by [`element` object](#element-object)) that has a one-way runtime dependency on another component being loaded | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| `element`| Object||✔️| Represents an individual app component (represented by [`element` object](#element-object)) that has a one-way runtime dependency on another component being loaded | | |
| `element`| Object||✔️| Represents an individual app component (represented by [`element` object](#element-object)) that has a one-way runtime dependency on another component being loaded. | |
|Name| Type| Maximum size | Required | Description| | ||
|---|---|---|---|---| | ||
| `element`| Object||✔️| Represents an individual app component (represented by [`element` object](#element-object)) that has a one-way runtime dependency on another component being loaded | | ||
| `dependsOn`| Array|| ✔️| Denotes one or more app components (each represented by [`element` object](#element-object)) required for the specified `element` to load| |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| `dependsOn`| Array|| ✔️| Denotes one or more app components (each represented by [`element` object](#element-object)) required for the specified `element` to load| | |
| `dependsOn`| Array|| ✔️| Denotes one or more app components (each represented by [`element` object](#element-object)) required for the specified `element` to load| |
| `dependsOn`| Array|| ✔️| Denotes one or more app components (each represented by [`element` object](#element-object)) required for the specified `element` to load| | |
| `dependsOn`| Array|| ✔️| Denotes one or more app components (each represented by [`element` object](#element-object)) required for the specified `element` to load.| |
"element" : { | ||
"name" : "composeExtensions", | ||
"id" : "composeExtension-id", | ||
"commandIds": ["command-1-id", "command-2-id"] // Developers can add more commands. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"commandIds": ["command-1-id", "command-2-id"] // Developers can add more commands. | |
"commandIds": ["command-1-id", "command-2-id"] // You can add more commands. |
|
||
### elementRelationshipSet.mutualDependencies | ||
|
||
Describes a set of mutual dependencies between two or more app components. A Microsoft 365 runtime host must support all required components in order for any of those components to be available for end-users in that host. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Describes a set of mutual dependencies between two or more app components. A Microsoft 365 runtime host must support all required components in order for any of those components to be available for end-users in that host. | |
Describes a set of mutual dependencies between two or more app components. A Microsoft 365 runtime host must support all required components for any of those components to be available for users in that host. |
|
||
### staticTabs.requirementSet | ||
|
||
Describes the runtime requirements for the tab to function properly in the Microsoft 365 host application. If one or more of the requirements aren't supported by the runtime host, the host won't load the tab. See [Specify runtime requirements in your app manifest](../../m365-apps/specify-runtime-requirements.md) for more info. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Describes the runtime requirements for the tab to function properly in the Microsoft 365 host application. If one or more of the requirements aren't supported by the runtime host, the host won't load the tab. See [Specify runtime requirements in your app manifest](../../m365-apps/specify-runtime-requirements.md) for more info. | |
Describes the runtime requirements for the tab to function properly in the Microsoft 365 host application. If one or more of the requirements aren't supported by the runtime host, the host won't load the tab. For more information, see [how to specify runtime requirements in your app manifest](../../m365-apps/specify-runtime-requirements.md). |
|
||
|Name| Type| Maximum size | Required | Description| | ||
|---|---|---|---|---| | ||
| `requirementSet.hostMustSupportFunctionalities`|Array of objects| |✔️| Species one or more runtime capabilities that are required by the tab to function properly.| |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| `requirementSet.hostMustSupportFunctionalities`|Array of objects| |✔️| Species one or more runtime capabilities that are required by the tab to function properly.| | |
| `requirementSet.hostMustSupportFunctionalities`|Array of objects| |✔️| Specifies one or more runtime capabilities the tab requires to function properly.| |
|
||
|Name| Type| Maximum size | Required | Description| | ||
|---|---|---|---|---| | ||
| `requirementSet.hostMustSupportFunctionalities`|Array of objects| |✔️| List of one or more runtime capabilities that are required for the tab to function properly, specified as name/value pairs, for example: `{ "name": "dialogUrl" }`. Supported values: `dialogUrl`, `dialogUrlBot`, `dialogAdaptiveCard`, `dialogAdaptiveCardBot`. | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| `requirementSet.hostMustSupportFunctionalities`|Array of objects| |✔️| List of one or more runtime capabilities that are required for the tab to function properly, specified as name/value pairs, for example: `{ "name": "dialogUrl" }`. Supported values: `dialogUrl`, `dialogUrlBot`, `dialogAdaptiveCard`, `dialogAdaptiveCardBot`. | | |
| `requirementSet.hostMustSupportFunctionalities`|Array of objects| |✔️| List of one or more runtime capabilities that are required for the tab to function properly, specified as name/value pairs. For example, `{ "name": "dialogUrl" }`. Supported values: `dialogUrl`, `dialogUrlBot`, `dialogAdaptiveCard`, `dialogAdaptiveCardBot`. | |
| `requirementSet.hostMustSupportFunctionalities`|Array of objects| |✔️| List of one or more runtime capabilities that are required for the tab to function properly, specified as name/value pairs, for example: `{ "name": "dialogUrl" }`. Supported values: `dialogUrl`, `dialogUrlBot`, `dialogAdaptiveCard`, `dialogAdaptiveCardBot`. | | |
| `requirementSet.hostMustSupportFunctionalities`|Array of objects| |✔️| List of one or more runtime capabilities that are required for the tab to function properly, specified as name/value pairs, for example: `{ "name": "dialogUrl" }`. Supported values: `dialogUrl`, `dialogUrlBot`, `dialogAdaptiveCard`, `dialogAdaptiveCardBot`. | |
@@ -520,6 +647,26 @@ An optional list of commands that your bot can recommend to users. The object is | |||
|`items.scopes`|Array of enum|3|✔️|Specifies the scope for which the command list is valid. Options are `team`, `personal`, and `groupChat`.| | |||
|`items.commands`|Array of objects|10|✔️|An array of commands the bot supports:<br>`title`: the bot command name (string, 32).<br>`description`: a simple description or example of the command syntax and its argument (string, 128).| | |||
|
|||
### bots.requirementSet | |||
|
|||
Describes the runtime requirements for the bot to function properly in the Microsoft 365 host application. If one or more of the requirements aren't supported by the runtime host, the host won't load the bot. See [Specify runtime requirements in your app manifest](../../m365-apps/specify-runtime-requirements.md) for more info. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Describes the runtime requirements for the bot to function properly in the Microsoft 365 host application. If one or more of the requirements aren't supported by the runtime host, the host won't load the bot. See [Specify runtime requirements in your app manifest](../../m365-apps/specify-runtime-requirements.md) for more info. | |
Describes the runtime requirements for the bot to function properly in the Microsoft 365 host application. If one or more of the requirements aren't supported by the runtime host, the host won't load the bot. For more information, see [how to specify runtime requirements in your app manifest](../../m365-apps/specify-runtime-requirements.md). |
|
||
|Name| Type| Maximum size | Required | Description| | ||
|---|---|---|---|---| | ||
| `requirementSet.hostMustSupportFunctionalities`|Array of objects| |✔️| Species on or more runtime capabilities that are required by the bot to function properly.| |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| `requirementSet.hostMustSupportFunctionalities`|Array of objects| |✔️| Species on or more runtime capabilities that are required by the bot to function properly.| | |
| `requirementSet.hostMustSupportFunctionalities`|Array of objects| |✔️| Specifies one or more runtime capabilities the bot requires to function properly.| |
|
||
|Name| Type| Maximum size | Required | Description| | ||
|---|---|---|---|---| | ||
| `requirementSet.hostMustSupportFunctionalities`|Array of objects| |✔️| List of one or more runtime capabilities that are required for the bot to function properly, specified as name/value pairs, for example: `{ "name": "dialogUrl" }`. Supported values: `dialogUrl`, `dialogUrlBot`, `dialogAdaptiveCard`, `dialogAdaptiveCardBot`. | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| `requirementSet.hostMustSupportFunctionalities`|Array of objects| |✔️| List of one or more runtime capabilities that are required for the bot to function properly, specified as name/value pairs, for example: `{ "name": "dialogUrl" }`. Supported values: `dialogUrl`, `dialogUrlBot`, `dialogAdaptiveCard`, `dialogAdaptiveCardBot`. | | |
| `requirementSet.hostMustSupportFunctionalities`|Array of objects| |✔️| List of one or more runtime capabilities that are required for the bot to function properly, specified as name/value pairs. For example, `{ "name": "dialogUrl" }`. Supported values: `dialogUrl`, `dialogUrlBot`, `dialogAdaptiveCard`, `dialogAdaptiveCardBot`. | |
@@ -547,6 +694,7 @@ The object is an array (maximum of 1 element) with all elements of type `object` | |||
|
|||
|Name| Type | Maximum Size | Required | Description| | |||
|---|---|---|---|---| | |||
|`id`|String||| Unique identifier for compose extension. Used when defining one-way and mutual app component dependencies as [elementRelationshipSet](#elementrelationshipset).| |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Unique identifier for compose extension.
@erikadoyle, do you mean composeExtension
or message extension?
@@ -599,6 +748,26 @@ Each command item is an object with the following structure: | |||
|`parameter.choices.title`|String|128 characters|✔️|Title of the choice.| | |||
|`parameter.choices.value`|String|512 characters|✔️|Value of the choice.| | |||
|
|||
### composeExtensions.requirementSet | |||
|
|||
Describes the runtime requirements for the message extension to function properly in the Microsoft 365 host application. If one or more of the requirements aren't supported by the runtime host, the host won't load the message extension. See [Specify runtime requirements in your app manifest](../../m365-apps/specify-runtime-requirements.md) for more info. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Describes the runtime requirements for the message extension to function properly in the Microsoft 365 host application. If one or more of the requirements aren't supported by the runtime host, the host won't load the message extension. See [Specify runtime requirements in your app manifest](../../m365-apps/specify-runtime-requirements.md) for more info. | |
Describes the runtime requirements for the message extension to function properly in the Microsoft 365 host application. If one or more of the requirements aren't supported by the runtime host, the host won't load the message extension. For more information, see [how to specify runtime requirements in your app manifest](../../m365-apps/specify-runtime-requirements.md). |
|
||
|Name| Type| Maximum size | Required | Description| | ||
|---|---|---|---|---| | ||
| `requirementSet.hostMustSupportFunctionalities`|Array of objects| |✔️| Species on or more runtime capabilities that are required by the message extension to function properly.| |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| `requirementSet.hostMustSupportFunctionalities`|Array of objects| |✔️| Species on or more runtime capabilities that are required by the message extension to function properly.| | |
| `requirementSet.hostMustSupportFunctionalities`|Array of objects| |✔️| Specifies one or more runtime capabilities the message extension requires to function properly.| |
|
||
|Name| Type| Maximum size | Required | Description| | ||
|---|---|---|---|---| | ||
| `requirementSet.hostMustSupportFunctionalities`|Array of objects| |✔️| List of one or more runtime capabilities that are required for the message extension to function properly, specified as name/value pairs, for example: `{ "name": "dialogUrl" }`. Supported values: `dialogUrl`, `dialogUrlBot`, `dialogAdaptiveCard`, `dialogAdaptiveCardBot`. | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| `requirementSet.hostMustSupportFunctionalities`|Array of objects| |✔️| List of one or more runtime capabilities that are required for the message extension to function properly, specified as name/value pairs, for example: `{ "name": "dialogUrl" }`. Supported values: `dialogUrl`, `dialogUrlBot`, `dialogAdaptiveCard`, `dialogAdaptiveCardBot`. | | |
| `requirementSet.hostMustSupportFunctionalities`|Array of objects| |✔️| List of one or more runtime capabilities that are required for the message extension to function properly, specified as name/value pairs. For example, `{ "name": "dialogUrl" }`. Supported values: `dialogUrl`, `dialogUrlBot`, `dialogAdaptiveCard`, `dialogAdaptiveCardBot`. | |
|
||
## Specify relationships between components of your app (`elementRelationshipSet`) | ||
|
||
You can specify relationships among the individual components of your app by including a [`elementRelationshipSet`](../resources/schema/manifest-schema-dev-preview.md#elementrelationshipset) in your app manifest. Use this object to specify both [one-way dependencies](#one-way-dependencies) and [mutual dependencies](#mutual-dependencies) among app components. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You can specify relationships among the individual components of your app by including a [`elementRelationshipSet`](../resources/schema/manifest-schema-dev-preview.md#elementrelationshipset) in your app manifest. Use this object to specify both [one-way dependencies](#one-way-dependencies) and [mutual dependencies](#mutual-dependencies) among app components. | |
You can specify relationships among the individual components of your app by including an [`elementRelationshipSet`](../resources/schema/manifest-schema-dev-preview.md#elementrelationshipset) in your app manifest. Use this object to specify both [one-way dependencies](#one-way-dependencies) and [mutual dependencies](#mutual-dependencies) among app components. |
Public preview content for app manifest requirements targeting