feat: add support for using premium apis
Closes #2722
PR Type
- Feature
Description of the changes
Adds the ability for a developer to specify that a chat component should append model=B to graph calls thus enabling higher throughput and attracting cost. Needs to have Azure billing configured.
PR checklist
- [X] Project builds (
yarn build) and changes have been tested in at least two supported browsers (Edge + non-Chromium based browser) - [X] All public APIs (classes, methods, etc) have been documented following the jsdoc syntax
- [X] Stories have been added and existing stories have been tested
- [ ] Added appropriate documentation. Docs PR:
- [X] License header has been added to all new source files (
yarn setLicense) - [X] Contains NO breaking changes
Other information
I think we should add the premium APIs query string parameter only on APIs that support it. This will limit the scope and reduce questions (and confusion).
I think we should add the premium APIs query string parameter only on APIs that support it. This will limit the scope and reduce questions (and confusion).
I was reading the document that said to put it on every teams call: https://microsoft.sharepoint.com/:w:/t/ExtensibilityandFundamentals/EfO9ynUvRptOrpUz5ydmqvEBTMfWipfRkYC73HhUbCClwA?e=UbKVeR
I feel that the scope of this feature is unclear.
🚀 New react-contoso sample application deployed here
Marking as do not merge until we get more clarity on scope and impact
🚀 New react-contoso sample application deployed here
🚀 New react-contoso sample application deployed here
@gavinbarron should we have a generic error state for when the app is not monetized but a chat requested for premium apis?
Yes we should have an error state for that, good call.
Wouldn't it make sense to allow dev to specify model=A in case they had a qualifying use case?
Wouldn't it make sense to allow dev to specify model=A in case they had a qualifying use case?
Given that model=A is reserved for Security and Compliance products I can't see a scenario where an application using delegated permissions could fit in that role, I'm 99% sure that they are also restricted to app only scenarios https://learn.microsoft.com/en-us/graph/teams-licenses#modela-requirements
🚀 New react-contoso sample application deployed here
| Package | Line Rate | Branch Rate | Complexity | Health |
|---|---|---|---|---|
| mgt-chat.src.statefulClient | 89% | 100% | 0 | ✔ |
| mgt-chat.src.utils | 100% | 88% | 0 | ✔ |
| mgt-components.dist.es6.components.mgt-agenda.src.components.mgt-agenda | 14% | 100% | 0 | ❌ |
| mgt-components.dist.es6.components.mgt-contact.src.components.mgt-contact | 62% | 100% | 0 | ➖ |
| mgt-components.dist.es6.components.mgt-file-list.mgt-file-upload.src.components.mgt-file-list.mgt-file-upload | 43% | 100% | 0 | ❌ |
| mgt-components.dist.es6.components.mgt-file-list.src.components.mgt-file-list | 62% | 100% | 0 | ➖ |
| mgt-components.dist.es6.components.mgt-file.src.components.mgt-file | 61% | 100% | 0 | ➖ |
| mgt-components.dist.es6.components.mgt-get.src.components.mgt-get | 19% | 100% | 0 | ❌ |
| mgt-components.dist.es6.components.mgt-login.src.components.mgt-login | 64% | 100% | 0 | ➖ |
| mgt-components.dist.es6.components.mgt-messages.src.components.mgt-messages | 66% | 100% | 0 | ➖ |
| mgt-components.dist.es6.components.mgt-organization.src.components.mgt-organization | 46% | 100% | 0 | ❌ |
| mgt-components.dist.es6.components.mgt-people-picker.src.components.mgt-people-picker | 56% | 100% | 0 | ➖ |
| mgt-components.dist.es6.components.mgt-people.src.components.mgt-people | 72% | 100% | 0 | ➖ |
| mgt-components.dist.es6.components.mgt-person-card.src.components.mgt-person-card | 59% | 33% | 0 | ➖ |
| mgt-components.dist.es6.components.mgt-person.src.components.mgt-person | 53% | 100% | 0 | ➖ |
| mgt-components.dist.es6.components.mgt-picker.src.components.mgt-picker | 78% | 100% | 0 | ✔ |
| mgt-components.dist.es6.components.mgt-planner.src.components.mgt-planner | 55% | 100% | 0 | ➖ |
| mgt-components.dist.es6.components.mgt-profile.src.components.mgt-profile | 39% | 100% | 0 | ❌ |
| mgt-components.dist.es6.components.mgt-search-box.src.components.mgt-search-box | 83% | 100% | 0 | ✔ |
| mgt-components.dist.es6.components.mgt-search-results.src.components.mgt-search-results | 56% | 100% | 0 | ➖ |
| mgt-components.dist.es6.components.mgt-tasks-base.src.components.mgt-tasks-base | 86% | 100% | 0 | ✔ |
| mgt-components.dist.es6.components.mgt-taxonomy-picker.src.components.mgt-taxonomy-picker | 74% | 100% | 0 | ➖ |
| mgt-components.dist.es6.components.mgt-teams-channel-picker.src.components.mgt-teams-channel-picker | 62% | 100% | 0 | ➖ |
| mgt-components.dist.es6.components.mgt-theme-toggle.src.components.mgt-theme-toggle | 74% | 100% | 0 | ➖ |
| mgt-components.dist.es6.components.mgt-todo.src.components.mgt-todo | 78% | 100% | 0 | ✔ |
| mgt-components.dist.es6.components.src.components | 86% | 100% | 0 | ✔ |
| mgt-components.dist.es6.components.sub-components.mgt-arrow-options.src.components.sub-components.mgt-arrow-options | 76% | 100% | 0 | ✔ |
| mgt-components.dist.es6.components.sub-components.mgt-dot-options.src.components.sub-components.mgt-dot-options | 29% | 100% | 0 | ❌ |
| mgt-components.dist.es6.components.sub-components.mgt-flyout.src.components.sub-components.mgt-flyout | 40% | 100% | 0 | ❌ |
| mgt-components.dist.es6.components.sub-components.mgt-spinner.src.components.sub-components.mgt-spinner | 92% | 100% | 0 | ✔ |
| mgt-components.dist.es6.graph.src.graph | 36% | 100% | 0 | ❌ |
| mgt-components.dist.es6.src | 100% | 100% | 0 | ✔ |
| mgt-components.dist.es6.styles.src.styles | 73% | 100% | 0 | ➖ |
| mgt-components.dist.es6.utils.src.utils | 46% | 100% | 0 | ❌ |
| mgt-components.src.components | 84% | 75% | 0 | ✔ |
| mgt-components.src.components.mgt-contact | 68% | 83% | 0 | ➖ |
| mgt-components.src.components.mgt-file | 62% | 100% | 0 | ➖ |
| mgt-components.src.components.mgt-file-list | 46% | 100% | 0 | ❌ |
| mgt-components.src.components.mgt-file-list.mgt-file-upload | 49% | 86% | 0 | ❌ |
| mgt-components.src.components.mgt-get | 22% | 100% | 0 | ❌ |
| mgt-components.src.components.mgt-messages | 68% | 100% | 0 | ➖ |
| mgt-components.src.components.mgt-organization | 47% | 100% | 0 | ❌ |
| mgt-components.src.components.mgt-person | 84% | 76% | 0 | ✔ |
| mgt-components.src.components.mgt-person-card | 67% | 48% | 0 | ➖ |
| mgt-components.src.components.mgt-picker | 80% | 100% | 0 | ✔ |
| mgt-components.src.components.mgt-profile | 40% | 100% | 0 | ❌ |
| mgt-components.src.components.mgt-tasks-base | 87% | 100% | 0 | ✔ |
| mgt-components.src.components.mgt-theme-toggle | 100% | 100% | 0 | ✔ |
| mgt-components.src.components.mgt-todo | 79% | 100% | 0 | ✔ |
| mgt-components.src.components.sub-components.mgt-flyout | 72% | 53% | 0 | ➖ |
| mgt-components.src.components.sub-components.mgt-spinner | 100% | 100% | 0 | ✔ |
| mgt-components.src.graph | 40% | 73% | 0 | ❌ |
| mgt-components.src.styles | 92% | 80% | 0 | ✔ |
| mgt-components.src.utils | 82% | 46% | 0 | ✔ |
| mgt-element.dist.es6.components.src.components | 72% | 74% | 0 | ➖ |
| mgt-element.dist.es6.mock.src.mock | 91% | 77% | 0 | ✔ |
| mgt-element.dist.es6.providers.src.providers | 87% | 83% | 0 | ✔ |
| mgt-element.dist.es6.src | 91% | 80% | 0 | ✔ |
| mgt-element.dist.es6.utils.src.utils | 67% | 73% | 0 | ➖ |
| mgt-element.src | 93% | 40% | 0 | ✔ |
| mgt-element.src.components | 78% | 100% | 0 | ✔ |
| mgt-element.src.mock | 81% | 56% | 0 | ✔ |
| mgt-element.src.providers | 83% | 91% | 0 | ✔ |
| mgt-element.src.utils | 71% | 90% | 0 | ➖ |
| Summary | 60% (28013 / 46551) | 71% (559 / 792) | 0 | ➖ |