@microsoft/app-manifest 1.0.2-beta.2025070907.0 → 1.0.2-beta.2025072206.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1523 @@
1
+ export interface TeamsManifestV1D22 {
2
+ $schema?: string;
3
+ /**
4
+ * The version of the schema this manifest is using. This schema version supports extending
5
+ * Teams apps to other parts of the Microsoft 365 ecosystem. More info at
6
+ * https://aka.ms/extendteamsapps.
7
+ */
8
+ manifestVersion: "1.22";
9
+ /**
10
+ * The version of the app. Changes to your manifest should cause a version change. This
11
+ * version string must follow the semver standard (http://semver.org).
12
+ */
13
+ version: string;
14
+ /**
15
+ * A unique identifier for this app. This id must be a GUID.
16
+ */
17
+ id: string;
18
+ localizationInfo?: LocalizationInfo;
19
+ developer: Developer;
20
+ name: NameClass;
21
+ description: Description;
22
+ icons: Icons;
23
+ /**
24
+ * A color to use in conjunction with the icon. The value must be a valid HTML color code
25
+ * starting with '#', for example `#4464ee`.
26
+ */
27
+ accentColor: string;
28
+ /**
29
+ * These are tabs users can optionally add to their channels and 1:1 or group chats and
30
+ * require extra configuration before they are added. Configurable tabs are not supported in
31
+ * the personal scope. Currently only one configurable tab per app is supported.
32
+ */
33
+ configurableTabs?: ConfigurableTab[];
34
+ /**
35
+ * A set of tabs that may be 'pinned' by default, without the user adding them manually.
36
+ * Static tabs declared in personal scope are always pinned to the app's personal
37
+ * experience. Static tabs do not currently support the 'teams' scope.
38
+ */
39
+ staticTabs?: StaticTab[];
40
+ /**
41
+ * The set of bots for this app. Currently only one bot per app is supported.
42
+ */
43
+ bots?: Bot[];
44
+ /**
45
+ * The set of Office365 connectors for this app. Currently only one connector per app is
46
+ * supported.
47
+ */
48
+ connectors?: Connector[];
49
+ /**
50
+ * Subscription offer associated with this app.
51
+ */
52
+ subscriptionOffer?: SubscriptionOffer;
53
+ /**
54
+ * The set of compose extensions for this app. Currently only one compose extension per app
55
+ * is supported.
56
+ */
57
+ composeExtensions?: ComposeExtension[];
58
+ /**
59
+ * Specifies the permissions the app requests from users.
60
+ */
61
+ permissions?: Permission[];
62
+ /**
63
+ * Specify the native features on a user's device that your app may request access to.
64
+ */
65
+ devicePermissions?: DevicePermission[];
66
+ /**
67
+ * A list of valid domains from which the tabs expect to load any content. Domain listings
68
+ * can include wildcards, for example `*.example.com`. If your tab configuration or content
69
+ * UI needs to navigate to any other domain besides the one use for tab configuration, that
70
+ * domain must be specified here.
71
+ */
72
+ validDomains?: string[];
73
+ /**
74
+ * Specify your AAD App ID and Graph information to help users seamlessly sign into your AAD
75
+ * app.
76
+ */
77
+ webApplicationInfo?: WebApplicationInfo;
78
+ /**
79
+ * Specify the app's Graph connector configuration. If this is present then
80
+ * webApplicationInfo.id must also be specified.
81
+ */
82
+ graphConnector?: GraphConnector;
83
+ /**
84
+ * A value indicating whether or not show loading indicator when app/tab is loading
85
+ */
86
+ showLoadingIndicator?: boolean;
87
+ /**
88
+ * A value indicating whether a personal app is rendered without a tab header-bar
89
+ */
90
+ isFullScreen?: boolean;
91
+ activities?: Activities;
92
+ /**
93
+ * A list of tenant configured properties for an app
94
+ */
95
+ configurableProperties?: ConfigurableProperty[];
96
+ /**
97
+ * List of 'non-standard' channel types that the app supports. Note: Channels of standard
98
+ * type are supported by default if the app supports team scope.
99
+ */
100
+ supportedChannelTypes?: SupportedChannelType[];
101
+ /**
102
+ * A value indicating whether an app is blocked by default until admin allows it
103
+ */
104
+ defaultBlockUntilAdminAction?: boolean;
105
+ /**
106
+ * The url to the page that provides additional app information for the admins
107
+ */
108
+ publisherDocsUrl?: string;
109
+ /**
110
+ * The install scope defined for this app by default. This will be the option displayed on
111
+ * the button when a user tries to add the app
112
+ */
113
+ defaultInstallScope?: DefaultInstallScope;
114
+ /**
115
+ * When a group install scope is selected, this will define the default capability when the
116
+ * user installs the app
117
+ */
118
+ defaultGroupCapability?: DefaultGroupCapability;
119
+ /**
120
+ * Specify meeting extension definition.
121
+ */
122
+ meetingExtensionDefinition?: MeetingExtensionDefinition;
123
+ /**
124
+ * Specify and consolidates authorization related information for the App.
125
+ */
126
+ authorization?: TeamsManifestV1D22Authorization;
127
+ extensions?: ElementExtension[];
128
+ /**
129
+ * Defines the list of cards which could be pinned to dashboards that can provide summarized
130
+ * view of information relevant to user.
131
+ */
132
+ dashboardCards?: DashboardCard[];
133
+ copilotAgents?: CopilotAgents;
134
+ /**
135
+ * The Intune-related properties for the app.
136
+ */
137
+ intuneInfo?: IntuneInfo;
138
+ elementRelationshipSet?: ElementRelationshipSet;
139
+ /**
140
+ * Optional property containing background loading configuration. By opting in to this
141
+ * performance enhancement, your app is eligible to be loaded in the background in any
142
+ * Microsoft 365 application host that supports this feature.
143
+ */
144
+ backgroundLoadConfiguration?: BackgroundLoadConfiguration;
145
+ }
146
+ export interface Activities {
147
+ /**
148
+ * Specify the types of activites that your app can post to a users activity feed
149
+ */
150
+ activityTypes?: ActivityType[];
151
+ /**
152
+ * Specify the customized icons that your app can post to a users activity feed
153
+ */
154
+ activityIcons?: ActivityIcon[];
155
+ }
156
+ export interface ActivityIcon {
157
+ /**
158
+ * Represents the unique icon ID.
159
+ */
160
+ id: string;
161
+ /**
162
+ * Represents the relative path to the icon image. Image should be size 32x32.
163
+ */
164
+ iconFile: string;
165
+ }
166
+ export interface ActivityType {
167
+ type: string;
168
+ description: string;
169
+ templateText: string;
170
+ /**
171
+ * An array containing valid icon IDs per activity type.
172
+ */
173
+ allowedIconIds?: string[];
174
+ }
175
+ /**
176
+ * Specify and consolidates authorization related information for the App.
177
+ */
178
+ export interface TeamsManifestV1D22Authorization {
179
+ /**
180
+ * List of permissions that the app needs to function.
181
+ */
182
+ permissions?: Permissions;
183
+ }
184
+ /**
185
+ * List of permissions that the app needs to function.
186
+ */
187
+ export interface Permissions {
188
+ /**
189
+ * Permissions that must be granted on a per resource instance basis.
190
+ */
191
+ resourceSpecific?: ResourceSpecific[];
192
+ }
193
+ export interface ResourceSpecific {
194
+ /**
195
+ * The name of the resource-specific permission.
196
+ */
197
+ name: string;
198
+ /**
199
+ * The type of the resource-specific permission: delegated vs application.
200
+ */
201
+ type: ResourceSpecificType;
202
+ }
203
+ /**
204
+ * The type of the resource-specific permission: delegated vs application.
205
+ */
206
+ export type ResourceSpecificType = "Application" | "Delegated";
207
+ /**
208
+ * Optional property containing background loading configuration. By opting in to this
209
+ * performance enhancement, your app is eligible to be loaded in the background in any
210
+ * Microsoft 365 application host that supports this feature.
211
+ */
212
+ export interface BackgroundLoadConfiguration {
213
+ /**
214
+ * Optional property within backgroundLoadConfiguration containing tab settings for
215
+ * background loading.
216
+ */
217
+ tabConfiguration?: TabConfiguration;
218
+ }
219
+ /**
220
+ * Optional property within backgroundLoadConfiguration containing tab settings for
221
+ * background loading.
222
+ */
223
+ export interface TabConfiguration {
224
+ /**
225
+ * Required URL for background loading. This can be the same contentUrl from the staticTabs
226
+ * section or an alternative endpoint used for background loading.
227
+ */
228
+ contentUrl: string;
229
+ }
230
+ export interface Bot {
231
+ /**
232
+ * The Microsoft App ID specified for the bot in the Bot Framework portal
233
+ * (https://dev.botframework.com/bots)
234
+ */
235
+ botId: string;
236
+ configuration?: Configuration;
237
+ /**
238
+ * This value describes whether or not the bot utilizes a user hint to add the bot to a
239
+ * specific channel.
240
+ */
241
+ needsChannelSelector?: boolean;
242
+ /**
243
+ * A value indicating whether or not the bot is a one-way notification only bot, as opposed
244
+ * to a conversational bot.
245
+ */
246
+ isNotificationOnly?: boolean;
247
+ /**
248
+ * A value indicating whether the bot supports uploading/downloading of files.
249
+ */
250
+ supportsFiles?: boolean;
251
+ /**
252
+ * A value indicating whether the bot supports audio calling.
253
+ */
254
+ supportsCalling?: boolean;
255
+ /**
256
+ * A value indicating whether the bot supports video calling.
257
+ */
258
+ supportsVideo?: boolean;
259
+ /**
260
+ * Specifies whether the bot offers an experience in the context of a channel in a team, in
261
+ * a group chat (groupChat), an experience scoped to an individual user alone (personal) OR
262
+ * within Copilot surfaces. These options are non-exclusive.
263
+ */
264
+ scopes: CommandListScope[];
265
+ /**
266
+ * The list of commands that the bot supplies, including their usage, description, and the
267
+ * scope for which the commands are valid. A separate command list should be used for each
268
+ * scope.
269
+ */
270
+ commandLists?: CommandList[];
271
+ requirementSet?: ElementRequirementSet;
272
+ }
273
+ export interface CommandList {
274
+ /**
275
+ * Specifies the scopes for which the command list is valid
276
+ */
277
+ scopes: CommandListScope[];
278
+ commands: CommandListCommand[];
279
+ }
280
+ export interface CommandListCommand {
281
+ /**
282
+ * The bot command name
283
+ */
284
+ title: string;
285
+ /**
286
+ * A simple text description or an example of the command syntax and its arguments.
287
+ */
288
+ description: string;
289
+ }
290
+ export type CommandListScope = "team" | "personal" | "groupChat" | "copilot";
291
+ export interface Configuration {
292
+ team?: Team;
293
+ groupChat?: Team;
294
+ }
295
+ export interface Team {
296
+ fetchTask?: boolean;
297
+ taskInfo?: TaskInfo;
298
+ }
299
+ export interface TaskInfo {
300
+ /**
301
+ * Initial dialog title
302
+ */
303
+ title?: string;
304
+ /**
305
+ * Dialog width - either a number in pixels or default layout such as 'large', 'medium', or
306
+ * 'small'
307
+ */
308
+ width?: string;
309
+ /**
310
+ * Dialog height - either a number in pixels or default layout such as 'large', 'medium', or
311
+ * 'small'
312
+ */
313
+ height?: string;
314
+ /**
315
+ * Initial webview URL
316
+ */
317
+ url?: string;
318
+ }
319
+ /**
320
+ * An object representing a set of requirements that the host must support for the element.
321
+ */
322
+ export interface ElementRequirementSet {
323
+ hostMustSupportFunctionalities: HostFunctionality[];
324
+ }
325
+ /**
326
+ * An object representing a specific functionality that a host must support.
327
+ */
328
+ export interface HostFunctionality {
329
+ /**
330
+ * The name of the functionality.
331
+ */
332
+ name: HostMustSupportFunctionalityName;
333
+ }
334
+ /**
335
+ * The name of the functionality.
336
+ */
337
+ export type HostMustSupportFunctionalityName = "dialogUrl" | "dialogUrlBot" | "dialogAdaptiveCard" | "dialogAdaptiveCardBot";
338
+ export interface ComposeExtension {
339
+ /**
340
+ * A unique identifier for the compose extension.
341
+ */
342
+ id?: string;
343
+ /**
344
+ * The Microsoft App ID specified for the bot powering the compose extension in the Bot
345
+ * Framework portal (https://dev.botframework.com/bots)
346
+ */
347
+ botId?: string;
348
+ /**
349
+ * Type of the compose extension.
350
+ */
351
+ composeExtensionType?: ComposeExtensionType;
352
+ /**
353
+ * Object capturing authorization information.
354
+ */
355
+ authorization?: ComposeExtensionAuthorization;
356
+ /**
357
+ * A relative file path to the api specification file in the manifest package.
358
+ */
359
+ apiSpecificationFile?: string;
360
+ /**
361
+ * A value indicating whether the configuration of a compose extension can be updated by the
362
+ * user.
363
+ */
364
+ canUpdateConfiguration?: boolean | null;
365
+ commands?: ComposeExtensionCommand[];
366
+ /**
367
+ * A list of handlers that allow apps to be invoked when certain conditions are met
368
+ */
369
+ messageHandlers?: MessageHandler[];
370
+ requirementSet?: ElementRequirementSet;
371
+ }
372
+ /**
373
+ * Object capturing authorization information.
374
+ */
375
+ export interface ComposeExtensionAuthorization {
376
+ /**
377
+ * Enum of possible authentication types.
378
+ */
379
+ authType?: AuthType;
380
+ /**
381
+ * Object capturing details needed to do single aad auth flow. It will be only present when
382
+ * auth type is entraId.
383
+ */
384
+ microsoftEntraConfiguration?: MicrosoftEntraConfiguration;
385
+ /**
386
+ * Object capturing details needed to do service auth. It will be only present when auth
387
+ * type is apiSecretServiceAuth.
388
+ */
389
+ apiSecretServiceAuthConfiguration?: APISecretServiceAuthConfiguration;
390
+ }
391
+ /**
392
+ * Object capturing details needed to do service auth. It will be only present when auth
393
+ * type is apiSecretServiceAuth.
394
+ */
395
+ export interface APISecretServiceAuthConfiguration {
396
+ /**
397
+ * Registration id returned when developer submits the api key through Developer Portal.
398
+ */
399
+ apiSecretRegistrationId?: string;
400
+ }
401
+ /**
402
+ * Enum of possible authentication types.
403
+ */
404
+ export type AuthType = "none" | "apiSecretServiceAuth" | "microsoftEntra";
405
+ /**
406
+ * Object capturing details needed to do single aad auth flow. It will be only present when
407
+ * auth type is entraId.
408
+ */
409
+ export interface MicrosoftEntraConfiguration {
410
+ /**
411
+ * Boolean indicating whether single sign on is configured for the app.
412
+ */
413
+ supportsSingleSignOn?: boolean;
414
+ }
415
+ export interface ComposeExtensionCommand {
416
+ /**
417
+ * Id of the command.
418
+ */
419
+ id: string;
420
+ /**
421
+ * Type of the command
422
+ */
423
+ type?: CommandType;
424
+ samplePrompts?: SamplePrompt[];
425
+ /**
426
+ * A relative file path for api response rendering template file.
427
+ */
428
+ apiResponseRenderingTemplateFile?: string;
429
+ /**
430
+ * Context where the command would apply
431
+ */
432
+ context?: CommandContext[];
433
+ /**
434
+ * Title of the command.
435
+ */
436
+ title: string;
437
+ /**
438
+ * Description of the command.
439
+ */
440
+ description?: string;
441
+ /**
442
+ * A boolean value that indicates if the command should be run once initially with no
443
+ * parameter.
444
+ */
445
+ initialRun?: boolean;
446
+ /**
447
+ * A boolean value that indicates if it should fetch task module dynamically
448
+ */
449
+ fetchTask?: boolean;
450
+ /**
451
+ * Semantic description for the command.
452
+ */
453
+ semanticDescription?: string;
454
+ parameters?: Parameter[];
455
+ taskInfo?: TaskInfo;
456
+ }
457
+ export type CommandContext = "compose" | "commandBox" | "message";
458
+ export interface Parameter {
459
+ /**
460
+ * Name of the parameter.
461
+ */
462
+ name: string;
463
+ /**
464
+ * Type of the parameter
465
+ */
466
+ inputType?: InputType;
467
+ /**
468
+ * Title of the parameter.
469
+ */
470
+ title: string;
471
+ /**
472
+ * Description of the parameter.
473
+ */
474
+ description?: string;
475
+ /**
476
+ * Initial value for the parameter
477
+ */
478
+ value?: string;
479
+ /**
480
+ * The value indicates if this parameter is a required field.
481
+ */
482
+ isRequired?: boolean;
483
+ /**
484
+ * Semantic description for the parameter.
485
+ */
486
+ semanticDescription?: string;
487
+ /**
488
+ * The choice options for the parameter
489
+ */
490
+ choices?: Choice[];
491
+ }
492
+ export interface Choice {
493
+ /**
494
+ * Title of the choice
495
+ */
496
+ title: string;
497
+ /**
498
+ * Value of the choice
499
+ */
500
+ value: string;
501
+ }
502
+ /**
503
+ * Type of the parameter
504
+ */
505
+ export type InputType = "text" | "textarea" | "number" | "date" | "time" | "toggle" | "choiceset";
506
+ export interface SamplePrompt {
507
+ /**
508
+ * This string will hold the sample prompt
509
+ */
510
+ text: string;
511
+ }
512
+ /**
513
+ * Type of the command
514
+ */
515
+ export type CommandType = "query" | "action";
516
+ /**
517
+ * Type of the compose extension.
518
+ */
519
+ export type ComposeExtensionType = "botBased" | "apiBased";
520
+ export interface MessageHandler {
521
+ /**
522
+ * Type of the message handler
523
+ */
524
+ type: "link";
525
+ value: Value;
526
+ }
527
+ /**
528
+ * Type of the message handler
529
+ */
530
+ export interface Value {
531
+ /**
532
+ * A list of domains that the link message handler can register for, and when they are
533
+ * matched the app will be invoked
534
+ */
535
+ domains?: string[];
536
+ /**
537
+ * A boolean that indicates whether the app's link message handler supports anonymous invoke
538
+ * flow.
539
+ */
540
+ supportsAnonymizedPayloads?: boolean;
541
+ }
542
+ export type ConfigurableProperty = "name" | "shortDescription" | "longDescription" | "smallImageUrl" | "largeImageUrl" | "accentColor" | "developerUrl" | "privacyUrl" | "termsOfUseUrl";
543
+ export interface ConfigurableTab {
544
+ /**
545
+ * A unique identifier for the tab. This id must be unique within the app manifest.
546
+ */
547
+ id?: string;
548
+ /**
549
+ * The url to use when configuring the tab.
550
+ */
551
+ configurationUrl: string;
552
+ /**
553
+ * A value indicating whether an instance of the tab's configuration can be updated by the
554
+ * user after creation.
555
+ */
556
+ canUpdateConfiguration?: boolean;
557
+ /**
558
+ * Specifies whether the tab offers an experience in the context of a channel in a team, in
559
+ * a 1:1 or group chat, or in an experience scoped to an individual user alone. These
560
+ * options are non-exclusive. Currently, configurable tabs are only supported in the teams
561
+ * and groupchats scopes.
562
+ */
563
+ scopes: ConfigurableTabScope[];
564
+ /**
565
+ * The set of meetingSurfaceItem scopes that a tab belong to
566
+ */
567
+ meetingSurfaces?: MeetingSurface[];
568
+ /**
569
+ * The set of contextItem scopes that a tab belong to
570
+ */
571
+ context?: ConfigurableTabContext[];
572
+ /**
573
+ * A relative file path to a tab preview image for use in SharePoint. Size 1024x768.
574
+ */
575
+ sharePointPreviewImage?: string;
576
+ /**
577
+ * Defines how your tab will be made available in SharePoint.
578
+ */
579
+ supportedSharePointHosts?: SupportedSharePointHost[];
580
+ }
581
+ export type ConfigurableTabContext = "personalTab" | "channelTab" | "privateChatTab" | "meetingChatTab" | "meetingDetailsTab" | "meetingSidePanel" | "meetingStage";
582
+ export type MeetingSurface = "sidePanel" | "stage";
583
+ export type ConfigurableTabScope = "team" | "groupChat";
584
+ export type SupportedSharePointHost = "sharePointFullPage" | "sharePointWebPart";
585
+ export interface Connector {
586
+ /**
587
+ * A unique identifier for the connector which matches its ID in the Connectors Developer
588
+ * Portal.
589
+ */
590
+ connectorId: string;
591
+ /**
592
+ * The url to use for configuring the connector using the inline configuration experience.
593
+ */
594
+ configurationUrl?: string;
595
+ /**
596
+ * Specifies whether the connector offers an experience in the context of a channel in a
597
+ * team, or an experience scoped to an individual user alone. Currently, only the team scope
598
+ * is supported.
599
+ */
600
+ scopes: "team"[];
601
+ }
602
+ export interface CopilotAgents {
603
+ /**
604
+ * An array of declarative agent elements references. Currently, only one declarative agent
605
+ * per application is supported.
606
+ */
607
+ declarativeAgents?: DeclarativeAgentRef[];
608
+ /**
609
+ * An array of Custom Engine Agents. Currently only one Custom Engine Agent per application
610
+ * is supported. Support is currently in public preview.
611
+ */
612
+ customEngineAgents?: CustomEngineAgent[];
613
+ }
614
+ export interface CustomEngineAgent {
615
+ /**
616
+ * The id of the Custom Engine Agent. If it is of type bot, the id must match the id
617
+ * specified in a bot in the bots node and the referenced bot must have personal scope. The
618
+ * app short name and short description must also be defined.
619
+ */
620
+ id: string;
621
+ /**
622
+ * The type of the Custom Engine Agent. Currently only type bot is supported.
623
+ */
624
+ type: "bot";
625
+ disclaimer?: Disclaimer;
626
+ }
627
+ export interface Disclaimer {
628
+ /**
629
+ * The message shown to users before they interact with this application.
630
+ */
631
+ text: string;
632
+ [property: string]: any;
633
+ }
634
+ /**
635
+ * The type of the Custom Engine Agent. Currently only type bot is supported.
636
+ *
637
+ * The content of the dashboard card is sourced from a bot.
638
+ */
639
+ /**
640
+ * A reference to a declarative agent element. The element's definition is in a separate
641
+ * file.
642
+ */
643
+ export interface DeclarativeAgentRef {
644
+ /**
645
+ * A unique identifier for this declarative agent element.
646
+ */
647
+ id: string;
648
+ /**
649
+ * Relative file path to this declarative agent element file in the application package.
650
+ */
651
+ file: string;
652
+ }
653
+ /**
654
+ * Cards wich could be pinned to dashboard providing summarized view of information relevant
655
+ * to user.
656
+ */
657
+ export interface DashboardCard {
658
+ /**
659
+ * Unique Id for the card. Must be unique inside the app.
660
+ */
661
+ id: string;
662
+ /**
663
+ * Represents the name of the card. Maximum length is 255 characters.
664
+ */
665
+ displayName: string;
666
+ /**
667
+ * Description of the card.Maximum length is 255 characters.
668
+ */
669
+ description: string;
670
+ /**
671
+ * Id of the group in the card picker. This must be guid.
672
+ */
673
+ pickerGroupId: string;
674
+ icon?: DashboardCardIcon;
675
+ contentSource: DashboardCardContentSource;
676
+ /**
677
+ * Rendering Size for dashboard card.
678
+ */
679
+ defaultSize: DefaultSize;
680
+ }
681
+ /**
682
+ * Represents a configuration for the source of the card’s content.
683
+ */
684
+ export interface DashboardCardContentSource {
685
+ /**
686
+ * The content of the dashboard card is sourced from a bot.
687
+ */
688
+ sourceType?: "bot";
689
+ /**
690
+ * The configuration for the bot source. Required if sourceType is set to bot.
691
+ */
692
+ botConfiguration?: BotConfiguration;
693
+ }
694
+ /**
695
+ * The configuration for the bot source. Required if sourceType is set to bot.
696
+ */
697
+ export interface BotConfiguration {
698
+ /**
699
+ * The unique Microsoft app ID for the bot as registered with the Bot Framework.
700
+ */
701
+ botId?: string;
702
+ }
703
+ /**
704
+ * Rendering Size for dashboard card.
705
+ */
706
+ export type DefaultSize = "medium" | "large";
707
+ /**
708
+ * Represents a configuration for the source of the card’s content
709
+ */
710
+ export interface DashboardCardIcon {
711
+ /**
712
+ * The icon for the card, to be displayed in the toolbox and card bar, represented as URL.
713
+ */
714
+ iconUrl?: string;
715
+ /**
716
+ * Office UI Fabric/Fluent UI icon friendly name for the card. This value will be used if
717
+ * ‘iconUrl’ is not specified.
718
+ */
719
+ officeUIFabricIconName?: string;
720
+ }
721
+ /**
722
+ * When a group install scope is selected, this will define the default capability when the
723
+ * user installs the app
724
+ */
725
+ export interface DefaultGroupCapability {
726
+ /**
727
+ * When the install scope selected is Team, this field specifies the default capability
728
+ * available
729
+ */
730
+ team?: Groupchat;
731
+ /**
732
+ * When the install scope selected is GroupChat, this field specifies the default capability
733
+ * available
734
+ */
735
+ groupchat?: Groupchat;
736
+ /**
737
+ * When the install scope selected is Meetings, this field specifies the default capability
738
+ * available
739
+ */
740
+ meetings?: Groupchat;
741
+ }
742
+ /**
743
+ * When the install scope selected is GroupChat, this field specifies the default capability
744
+ * available
745
+ *
746
+ * When the install scope selected is Meetings, this field specifies the default capability
747
+ * available
748
+ *
749
+ * When the install scope selected is Team, this field specifies the default capability
750
+ * available
751
+ */
752
+ export type Groupchat = "tab" | "bot" | "connector";
753
+ /**
754
+ * The install scope defined for this app by default. This will be the option displayed on
755
+ * the button when a user tries to add the app
756
+ */
757
+ export type DefaultInstallScope = "personal" | "team" | "groupChat" | "meetings" | "copilot";
758
+ export interface Description {
759
+ /**
760
+ * A short description of the app used when space is limited. Maximum length is 80
761
+ * characters.
762
+ */
763
+ short: string;
764
+ /**
765
+ * The full description of the app. Maximum length is 4000 characters.
766
+ */
767
+ full: string;
768
+ }
769
+ export interface Developer {
770
+ /**
771
+ * The display name for the developer.
772
+ */
773
+ name: string;
774
+ /**
775
+ * The Microsoft Partner Network ID that identifies the partner organization building the
776
+ * app. This field is not required, and should only be used if you are already part of the
777
+ * Microsoft Partner Network. More info at https://aka.ms/partner
778
+ */
779
+ mpnId?: string;
780
+ /**
781
+ * The url to the page that provides support information for the app.
782
+ */
783
+ websiteUrl: string;
784
+ /**
785
+ * The url to the page that provides privacy information for the app.
786
+ */
787
+ privacyUrl: string;
788
+ /**
789
+ * The url to the page that provides the terms of use for the app.
790
+ */
791
+ termsOfUseUrl: string;
792
+ }
793
+ export type DevicePermission = "geolocation" | "media" | "notifications" | "midi" | "openExternal";
794
+ export interface ElementRelationshipSet {
795
+ /**
796
+ * An array containing multiple instances of unidirectional dependency relationships (each
797
+ * represented by a oneWayDependency object).
798
+ */
799
+ oneWayDependencies?: OneWayDependency[];
800
+ /**
801
+ * An array containing multiple instances of mutual dependency relationships between
802
+ * elements (each represented by a mutualDependency object).
803
+ */
804
+ mutualDependencies?: Array<ElementReference[]>;
805
+ }
806
+ /**
807
+ * A specific instance of mutual dependency between two or more elements, indicating that
808
+ * each element depends on the others in a bidirectional manner.
809
+ */
810
+ export interface ElementReference {
811
+ name: MutualDependencyName;
812
+ id: string;
813
+ commandIds?: string[];
814
+ }
815
+ export type MutualDependencyName = "bots" | "staticTabs" | "composeExtensions" | "configurableTabs";
816
+ /**
817
+ * An object representing a unidirectional dependency relationship, where one specific
818
+ * element (referred to as the `element`) relies on an array of other elements (referred to
819
+ * as the `dependsOn`) in a single direction.
820
+ */
821
+ export interface OneWayDependency {
822
+ element: ElementReference;
823
+ dependsOn: ElementReference[];
824
+ }
825
+ /**
826
+ * The set of extensions for this app. Currently only one extensions per app is supported.
827
+ */
828
+ export interface ElementExtension {
829
+ requirements?: RequirementsExtensionElement;
830
+ runtimes?: ExtensionRuntimesArray[];
831
+ ribbons?: ExtensionRibbonsArray[];
832
+ autoRunEvents?: ExtensionAutoRunEventsArray[];
833
+ alternates?: ExtensionAlternateVersionsArray[];
834
+ /**
835
+ * The url for your extension, used to validate Exchange user identity tokens.
836
+ */
837
+ audienceClaimUrl?: string;
838
+ }
839
+ export interface ExtensionAlternateVersionsArray {
840
+ requirements?: RequirementsExtensionElement;
841
+ prefer?: Prefer;
842
+ hide?: Hide;
843
+ alternateIcons?: AlternateIcons;
844
+ }
845
+ export interface AlternateIcons {
846
+ icon: ExtensionCommonIcon;
847
+ highResolutionIcon: ExtensionCommonIcon;
848
+ }
849
+ export interface ExtensionCommonIcon {
850
+ /**
851
+ * Size in pixels of the icon. Three image sizes are required (16, 32, and 80 pixels)
852
+ */
853
+ size: number;
854
+ /**
855
+ * Absolute Url to the icon.
856
+ */
857
+ url: string;
858
+ }
859
+ export interface Hide {
860
+ storeOfficeAddin?: StoreOfficeAddin;
861
+ customOfficeAddin?: CustomOfficeAddin;
862
+ [property: string]: any;
863
+ }
864
+ export interface CustomOfficeAddin {
865
+ /**
866
+ * Solution ID of the in-market add-in to hide. Maximum length is 64 characters.
867
+ */
868
+ officeAddinId: string;
869
+ }
870
+ export interface StoreOfficeAddin {
871
+ /**
872
+ * Solution ID of an in-market add-in to hide. Maximum length is 64 characters.
873
+ */
874
+ officeAddinId: string;
875
+ /**
876
+ * Asset ID of the in-market add-in to hide. Maximum length is 64 characters.
877
+ */
878
+ assetId: string;
879
+ }
880
+ export interface Prefer {
881
+ comAddin?: COMAddin;
882
+ [property: string]: any;
883
+ }
884
+ export interface COMAddin {
885
+ /**
886
+ * Program ID of the alternate com extension. Maximum length is 64 characters.
887
+ */
888
+ progId: string;
889
+ }
890
+ export interface RequirementsExtensionElement {
891
+ capabilities?: Capability[];
892
+ /**
893
+ * Identifies the scopes in which the add-in can run.
894
+ */
895
+ scopes?: RequirementsScope[];
896
+ /**
897
+ * Identifies the form factors that support the add-in. Supported values: mobile, desktop.
898
+ */
899
+ formFactors?: FormFactor[];
900
+ }
901
+ export interface Capability {
902
+ /**
903
+ * Identifies the name of the requirement sets that the add-in needs to run.
904
+ */
905
+ name: string;
906
+ /**
907
+ * Identifies the minimum version for the requirement sets that the add-in needs to run.
908
+ */
909
+ minVersion?: string;
910
+ /**
911
+ * Identifies the maximum version for the requirement sets that the add-in needs to run.
912
+ */
913
+ maxVersion?: string;
914
+ }
915
+ export type FormFactor = "desktop" | "mobile";
916
+ export type RequirementsScope = "mail" | "workbook" | "document" | "presentation";
917
+ export interface ExtensionAutoRunEventsArray {
918
+ requirements?: RequirementsExtensionElement;
919
+ /**
920
+ * Specifies the type of event. For supported types, please see:
921
+ * https://review.learn.microsoft.com/en-us/office/dev/add-ins/outlook/autolaunch?tabs=xmlmanifest#supported-events.
922
+ */
923
+ events: Event[];
924
+ }
925
+ export interface Event {
926
+ type: string;
927
+ /**
928
+ * The ID of an action defined in runtimes. Maximum length is 64 characters.
929
+ */
930
+ actionId: string;
931
+ /**
932
+ * Configures how Outlook responds to the event.
933
+ */
934
+ options?: Options;
935
+ }
936
+ /**
937
+ * Configures how Outlook responds to the event.
938
+ */
939
+ export interface Options {
940
+ sendMode: SendMode;
941
+ }
942
+ export type SendMode = "promptUser" | "softBlock" | "block";
943
+ export interface ExtensionRibbonsArray {
944
+ requirements?: RequirementsExtensionElement;
945
+ contexts?: ExtensionContext[];
946
+ tabs: ExtensionRibbonsArrayTabsItem[];
947
+ fixedControls?: ExtensionRibbonsArrayFixedControlItem[];
948
+ spamPreProcessingDialog?: ExtensionRibbonsSpamPreProcessingDialog;
949
+ }
950
+ /**
951
+ * Specifies the Office application windows in which the ribbon customization is available
952
+ * to the user. Each item in the array is a member of a string array. Possible values are:
953
+ * mailRead, mailCompose, meetingDetailsOrganizer, meetingDetailsAttendee,
954
+ * onlineMeetingDetailsOrganizer, logEventMeetingDetailsAttendee, spamReportingOverride.
955
+ */
956
+ export type ExtensionContext = "mailRead" | "mailCompose" | "meetingDetailsOrganizer" | "meetingDetailsAttendee" | "onlineMeetingDetailsOrganizer" | "logEventMeetingDetailsAttendee" | "default" | "spamReportingOverride";
957
+ export interface ExtensionRibbonsArrayFixedControlItem {
958
+ /**
959
+ * A unique identifier for this control within the app. Maximum length is 64 characters.
960
+ */
961
+ id: string;
962
+ /**
963
+ * Defines the type of control.
964
+ */
965
+ type: "button";
966
+ /**
967
+ * Displayed text for the control. Maximum length is 64 characters.
968
+ */
969
+ label: string;
970
+ icons: ExtensionCommonIcon[];
971
+ supertip: ExtensionCommonSuperToolTip;
972
+ /**
973
+ * The ID of an execution-type action that handles this key combination. Maximum length is
974
+ * 64 characters.
975
+ */
976
+ actionId: string;
977
+ /**
978
+ * Whether the control is initially enabled.
979
+ */
980
+ enabled: boolean;
981
+ }
982
+ export interface ExtensionCommonSuperToolTip {
983
+ /**
984
+ * Title text of the super tip. Maximum length is 64 characters.
985
+ */
986
+ title: string;
987
+ /**
988
+ * Description of the super tip. Maximum length is 250 characters.
989
+ */
990
+ description: string;
991
+ }
992
+ /**
993
+ * Defines the type of control.
994
+ */
995
+ export interface ExtensionRibbonsSpamPreProcessingDialog {
996
+ /**
997
+ * Specifies the custom title of the preprocessing dialog.
998
+ */
999
+ title: string;
1000
+ /**
1001
+ * Specifies the custom text that appears in the preprocessing dialog.
1002
+ */
1003
+ description: string;
1004
+ /**
1005
+ * Indicating if the developer will allow the user to permanently bypass the PreProcessing
1006
+ * Dialog for this add-in. "false" is the default value if not specified.
1007
+ */
1008
+ spamNeverShowAgainOption?: boolean;
1009
+ /**
1010
+ * Specifies whether the bot offers an experience in the context of a channel in a team, in
1011
+ * a 1:1 or group chat, or in an experience scoped to an individual user alone. These
1012
+ * options are non-exclusive.
1013
+ */
1014
+ spamReportingOptions?: SpamReportingOptions;
1015
+ /**
1016
+ * A text box to the preprocessing dialog to allow users to provide additional information
1017
+ * on the message they're reporting. This value is the title of that text box.
1018
+ */
1019
+ spamFreeTextSectionTitle?: string;
1020
+ /**
1021
+ * Specifies the custom text and URL to provide informational resources to the users.
1022
+ */
1023
+ spamMoreInfo?: SpamMoreInfo;
1024
+ }
1025
+ /**
1026
+ * Specifies the custom text and URL to provide informational resources to the users.
1027
+ */
1028
+ export interface SpamMoreInfo {
1029
+ /**
1030
+ * Specifies display content of the hyperlink pointing to the site containing informational
1031
+ * resources in the preprocessing dialog of a spam-reporting add-in.
1032
+ */
1033
+ text: string;
1034
+ /**
1035
+ * Specifies the URL of the hyperlink pointing to the site containing informational
1036
+ * resources in the preprocessing dialog of a spam-reporting add-in.
1037
+ */
1038
+ url: string;
1039
+ [property: string]: any;
1040
+ }
1041
+ /**
1042
+ * Specifies whether the bot offers an experience in the context of a channel in a team, in
1043
+ * a 1:1 or group chat, or in an experience scoped to an individual user alone. These
1044
+ * options are non-exclusive.
1045
+ */
1046
+ export interface SpamReportingOptions {
1047
+ /**
1048
+ * Specifies the title listed before the reporting options list.
1049
+ */
1050
+ title: string;
1051
+ /**
1052
+ * Specifies the custom options that a user can select from the preprocessing dialog to
1053
+ * provide a reason for reporting a message.
1054
+ */
1055
+ options: string[];
1056
+ /**
1057
+ * Can be set to "radio" or "checkbox". This determines if Radio Buttons or checkboxes are
1058
+ * used for the options. "checkbox" is the default if this value is not specified.
1059
+ */
1060
+ type?: SpamReportingOptionsType;
1061
+ [property: string]: any;
1062
+ }
1063
+ /**
1064
+ * Can be set to "radio" or "checkbox". This determines if Radio Buttons or checkboxes are
1065
+ * used for the options. "checkbox" is the default if this value is not specified.
1066
+ */
1067
+ export type SpamReportingOptionsType = "radio" | "checkbox";
1068
+ export interface ExtensionRibbonsArrayTabsItem {
1069
+ /**
1070
+ * A unique identifier for this tab within the app. Maximum length is 64 characters.
1071
+ */
1072
+ id?: string;
1073
+ /**
1074
+ * Displayed text for the tab. Maximum length is 64 characters.
1075
+ */
1076
+ label?: string;
1077
+ position?: Position;
1078
+ /**
1079
+ * Id of the existing office Tab. Maximum length is 64 characters.
1080
+ */
1081
+ builtInTabId?: string;
1082
+ /**
1083
+ * Defines tab groups.
1084
+ */
1085
+ groups?: ExtensionRibbonsCustomTabGroupsItem[];
1086
+ /**
1087
+ * Defines mobile group item.
1088
+ */
1089
+ customMobileRibbonGroups?: ExtensionRibbonsCustomMobileGroupItem[];
1090
+ }
1091
+ export interface ExtensionRibbonsCustomMobileGroupItem {
1092
+ /**
1093
+ * Specify the Id of the group. Used for mobileMessageRead ext point.
1094
+ */
1095
+ id: string;
1096
+ /**
1097
+ * Short label of the control. Maximum length is 32 characters.
1098
+ */
1099
+ label: string;
1100
+ controls: ExtensionRibbonsCustomMobileControlButtonItem[];
1101
+ [property: string]: any;
1102
+ }
1103
+ export interface ExtensionRibbonsCustomMobileControlButtonItem {
1104
+ /**
1105
+ * Specify the Id of the button like msgReadFunctionButton.
1106
+ */
1107
+ id: string;
1108
+ type: "mobileButton";
1109
+ /**
1110
+ * Short label of the control. Maximum length is 32 characters.
1111
+ */
1112
+ label: string;
1113
+ icons: ExtensionCustomMobileIcon[];
1114
+ /**
1115
+ * The ID of an action defined in runtimes. Maximum length is 64 characters.
1116
+ */
1117
+ actionId: string;
1118
+ [property: string]: any;
1119
+ }
1120
+ export interface ExtensionCustomMobileIcon {
1121
+ /**
1122
+ * Size in pixels of the icon. Three image sizes are required (25, 32, and 48 pixels).
1123
+ */
1124
+ size: number;
1125
+ /**
1126
+ * Url to the icon.
1127
+ */
1128
+ url: string;
1129
+ /**
1130
+ * How to scale - 1,2,3 for each image. This attribute specifies the UIScreen.scale property
1131
+ * for iOS devices.
1132
+ */
1133
+ scale: number;
1134
+ }
1135
+ export interface ExtensionRibbonsCustomTabGroupsItem {
1136
+ /**
1137
+ * A unique identifier for this group within the app. Maximum length is 64 characters.
1138
+ */
1139
+ id?: string;
1140
+ /**
1141
+ * Displayed text for the group. Maximum length is 64 characters.
1142
+ */
1143
+ label?: string;
1144
+ icons?: ExtensionCommonIcon[];
1145
+ controls?: ExtensionCommonCustomGroupControlsItem[];
1146
+ /**
1147
+ * Id of a built-in Group. Maximum length is 64 characters.
1148
+ */
1149
+ builtInGroupId?: string;
1150
+ }
1151
+ export interface ExtensionCommonCustomGroupControlsItem {
1152
+ /**
1153
+ * A unique identifier for this control within the app. Maximum length is 64 characters.
1154
+ */
1155
+ id: string;
1156
+ /**
1157
+ * Defines the type of control whether button or menu.
1158
+ */
1159
+ type: FluffyType;
1160
+ /**
1161
+ * Id of the existing office control. Maximum length is 64 characters.
1162
+ */
1163
+ builtInControlId?: string;
1164
+ /**
1165
+ * Displayed text for the control. Maximum length is 64 characters.
1166
+ */
1167
+ label: string;
1168
+ icons: ExtensionCommonIcon[];
1169
+ supertip: ExtensionCommonSuperToolTip;
1170
+ /**
1171
+ * The ID of an execution-type action that handles this key combination. Maximum length is
1172
+ * 64 characters.
1173
+ */
1174
+ actionId?: string;
1175
+ /**
1176
+ * Specifies whether a group, button, menu, or menu item will be hidden on application and
1177
+ * platform combinations that support the API (Office.ribbon.requestCreateControls) that
1178
+ * installs custom contextual tabs on the ribbon. Default is false.
1179
+ */
1180
+ overriddenByRibbonApi?: boolean;
1181
+ /**
1182
+ * Whether the control is initially enabled.
1183
+ */
1184
+ enabled?: boolean;
1185
+ /**
1186
+ * Configures the items for a menu control.
1187
+ */
1188
+ items?: ExtensionCommonCustomControlMenuItem[];
1189
+ }
1190
+ export interface ExtensionCommonCustomControlMenuItem {
1191
+ /**
1192
+ * A unique identifier for this control within the app. Maximum length is 64 characters.
1193
+ */
1194
+ id: string;
1195
+ /**
1196
+ * Supported values: menuItem.
1197
+ */
1198
+ type: "menuItem";
1199
+ /**
1200
+ * Displayed text for the control. Maximum length is 64 characters.
1201
+ */
1202
+ label: string;
1203
+ icons?: ExtensionCommonIcon[];
1204
+ supertip: ExtensionCommonSuperToolTip;
1205
+ /**
1206
+ * The ID of an action defined in runtimes. Maximum length is 64 characters.
1207
+ */
1208
+ actionId: string;
1209
+ /**
1210
+ * Whether the control is initially enabled.
1211
+ */
1212
+ enabled?: boolean;
1213
+ overriddenByRibbonApi?: boolean;
1214
+ }
1215
+ /**
1216
+ * Supported values: menuItem.
1217
+ */
1218
+ /**
1219
+ * Defines the type of control whether button or menu.
1220
+ */
1221
+ export type FluffyType = "button" | "menu";
1222
+ export interface Position {
1223
+ /**
1224
+ * The id of the built-in tab. Maximum length is 64 characters.
1225
+ */
1226
+ builtInTabId: string;
1227
+ /**
1228
+ * Define alignment of this custom tab relative to the specified built-in tab.
1229
+ */
1230
+ align: Align;
1231
+ }
1232
+ /**
1233
+ * Define alignment of this custom tab relative to the specified built-in tab.
1234
+ */
1235
+ export type Align = "after" | "before";
1236
+ /**
1237
+ * A runtime environment for a page or script
1238
+ */
1239
+ export interface ExtensionRuntimesArray {
1240
+ requirements?: RequirementsExtensionElement;
1241
+ /**
1242
+ * A unique identifier for this runtime within the app. Maximum length is 64 characters.
1243
+ */
1244
+ id: string;
1245
+ /**
1246
+ * Supports running functions and launching pages.
1247
+ */
1248
+ type?: "general";
1249
+ code: ExtensionRuntimeCode;
1250
+ /**
1251
+ * Runtimes with a short lifetime do not preserve state across executions. Runtimes with a
1252
+ * long lifetime do.
1253
+ */
1254
+ lifetime?: Lifetime;
1255
+ actions?: ExtensionRuntimesActionsItem[];
1256
+ }
1257
+ /**
1258
+ * Specifies the set of actions supported by this runtime. An action is either running a
1259
+ * JavaScript function or opening a view such as a task pane.
1260
+ */
1261
+ export interface ExtensionRuntimesActionsItem {
1262
+ /**
1263
+ * Identifier for this action. Maximum length is 64 characters. This value is passed to the
1264
+ * code file.
1265
+ */
1266
+ id: string;
1267
+ /**
1268
+ * executeFunction: Run a script function without waiting for it to finish. openPate: Open a
1269
+ * page in a view.
1270
+ */
1271
+ type: ActionType;
1272
+ /**
1273
+ * Display name of the action. Maximum length is 64 characters.
1274
+ */
1275
+ displayName?: string;
1276
+ /**
1277
+ * Specifies that a task pane supports pinning, which keeps the task pane open when the user
1278
+ * changes the selection.
1279
+ */
1280
+ pinnable?: boolean;
1281
+ /**
1282
+ * View where the page should be opened. Maximum length is 64 characters.
1283
+ */
1284
+ view?: string;
1285
+ /**
1286
+ * Whether allows the action to have multiple selection.
1287
+ */
1288
+ multiselect?: boolean;
1289
+ /**
1290
+ * Whether allows task pane add-ins to activate without the Reading Pane enabled or a
1291
+ * message selected.
1292
+ */
1293
+ supportsNoItemContext?: boolean;
1294
+ }
1295
+ /**
1296
+ * executeFunction: Run a script function without waiting for it to finish. openPate: Open a
1297
+ * page in a view.
1298
+ */
1299
+ export type ActionType = "executeFunction" | "openPage";
1300
+ export interface ExtensionRuntimeCode {
1301
+ /**
1302
+ * URL of the .html page to be loaded in browser-based runtimes.
1303
+ */
1304
+ page: string;
1305
+ /**
1306
+ * URL of the .js script file to be loaded in UI-less runtimes.
1307
+ */
1308
+ script?: string;
1309
+ }
1310
+ /**
1311
+ * Runtimes with a short lifetime do not preserve state across executions. Runtimes with a
1312
+ * long lifetime do.
1313
+ */
1314
+ export type Lifetime = "short" | "long";
1315
+ /**
1316
+ * Supports running functions and launching pages.
1317
+ */
1318
+ /**
1319
+ * Specify the app's Graph connector configuration. If this is present then
1320
+ * webApplicationInfo.id must also be specified.
1321
+ */
1322
+ export interface GraphConnector {
1323
+ /**
1324
+ * The url where Graph-connector notifications for the application should be sent.
1325
+ */
1326
+ notificationUrl: string;
1327
+ }
1328
+ export interface Icons {
1329
+ /**
1330
+ * A relative file path to a transparent PNG outline icon. The border color needs to be
1331
+ * white. Size 32x32.
1332
+ */
1333
+ outline: string;
1334
+ /**
1335
+ * A relative file path to a full color PNG icon. Size 192x192.
1336
+ */
1337
+ color: string;
1338
+ /**
1339
+ * A relative file path to a full color PNG icon with transparent background. Size 32x32.
1340
+ */
1341
+ color32x32?: string;
1342
+ }
1343
+ /**
1344
+ * The Intune-related properties for the app.
1345
+ */
1346
+ export interface IntuneInfo {
1347
+ /**
1348
+ * Supported mobile app managment version that the app is compliant with.
1349
+ */
1350
+ supportedMobileAppManagementVersion?: string;
1351
+ }
1352
+ export interface LocalizationInfo {
1353
+ /**
1354
+ * The language tag of the strings in this top level manifest file.
1355
+ */
1356
+ defaultLanguageTag: string;
1357
+ /**
1358
+ * A relative file path to a the .json file containing strings in the default language.
1359
+ */
1360
+ defaultLanguageFile?: string;
1361
+ additionalLanguages?: AdditionalLanguage[];
1362
+ }
1363
+ export interface AdditionalLanguage {
1364
+ /**
1365
+ * The language tag of the strings in the provided file.
1366
+ */
1367
+ languageTag: string;
1368
+ /**
1369
+ * A relative file path to a the .json file containing the translated strings.
1370
+ */
1371
+ file: string;
1372
+ }
1373
+ /**
1374
+ * Specify meeting extension definition.
1375
+ */
1376
+ export interface MeetingExtensionDefinition {
1377
+ /**
1378
+ * Meeting supported scenes.
1379
+ */
1380
+ scenes?: Scene[];
1381
+ /**
1382
+ * Represents if the app has added support for sharing to stage.
1383
+ */
1384
+ supportsCustomShareToStage?: boolean;
1385
+ /**
1386
+ * A boolean value indicating whether this app can stream the meeting's audio video content
1387
+ * to an RTMP endpoint.
1388
+ */
1389
+ supportsStreaming?: boolean;
1390
+ /**
1391
+ * A boolean value indicating whether this app allows management by anonymous users.
1392
+ */
1393
+ supportsAnonymousGuestUsers?: boolean;
1394
+ }
1395
+ export interface Scene {
1396
+ /**
1397
+ * A unique identifier for this scene. This id must be a GUID.
1398
+ */
1399
+ id: string;
1400
+ /**
1401
+ * Scene name.
1402
+ */
1403
+ name: string;
1404
+ /**
1405
+ * A relative file path to a scene metadata json file.
1406
+ */
1407
+ file: string;
1408
+ /**
1409
+ * A relative file path to a scene PNG preview icon.
1410
+ */
1411
+ preview: string;
1412
+ /**
1413
+ * Maximum audiences supported in scene.
1414
+ */
1415
+ maxAudience: number;
1416
+ /**
1417
+ * Number of seats reserved for organizers or presenters.
1418
+ */
1419
+ seatsReservedForOrganizersOrPresenters: number;
1420
+ }
1421
+ export interface NameClass {
1422
+ /**
1423
+ * A short display name for the app.
1424
+ */
1425
+ short: string;
1426
+ /**
1427
+ * The full name of the app, used if the full app name exceeds 30 characters.
1428
+ */
1429
+ full?: string;
1430
+ }
1431
+ export type Permission = "identity" | "messageTeamMembers";
1432
+ export interface StaticTab {
1433
+ /**
1434
+ * A unique identifier for the entity which the tab displays.
1435
+ */
1436
+ entityId: string;
1437
+ /**
1438
+ * The display name of the tab.
1439
+ */
1440
+ name?: string;
1441
+ /**
1442
+ * The url which points to the entity UI to be displayed in the canvas.
1443
+ */
1444
+ contentUrl?: string;
1445
+ /**
1446
+ * The Microsoft App ID specified for the bot in the Bot Framework portal
1447
+ * (https://dev.botframework.com/bots)
1448
+ */
1449
+ contentBotId?: string;
1450
+ /**
1451
+ * The url to point at if a user opts to view in a browser.
1452
+ */
1453
+ websiteUrl?: string;
1454
+ /**
1455
+ * The url to direct a user's search queries.
1456
+ */
1457
+ searchUrl?: string;
1458
+ /**
1459
+ * Specifies whether the tab offers an experience in the context of a channel in a team, or
1460
+ * an experience scoped to an individual user alone or group chat. These options are
1461
+ * non-exclusive. Currently static tabs are only supported in the 'personal' scope.
1462
+ */
1463
+ scopes: StaticTabScope[];
1464
+ /**
1465
+ * The set of contextItem scopes that a tab belong to
1466
+ */
1467
+ context?: StaticTabContext[];
1468
+ requirementSet?: ElementRequirementSet;
1469
+ }
1470
+ export type StaticTabContext = "personalTab" | "channelTab" | "privateChatTab" | "meetingChatTab" | "meetingDetailsTab" | "meetingSidePanel" | "meetingStage" | "teamLevelApp";
1471
+ export type StaticTabScope = "team" | "personal" | "groupChat";
1472
+ /**
1473
+ * Subscription offer associated with this app.
1474
+ */
1475
+ export interface SubscriptionOffer {
1476
+ /**
1477
+ * A unique identifier for the Commercial Marketplace Software as a Service Offer.
1478
+ */
1479
+ offerId: string;
1480
+ }
1481
+ export type SupportedChannelType = "sharedChannels" | "privateChannels";
1482
+ /**
1483
+ * Specify your AAD App ID and Graph information to help users seamlessly sign into your AAD
1484
+ * app.
1485
+ */
1486
+ export interface WebApplicationInfo {
1487
+ /**
1488
+ * AAD application id of the app. This id must be a GUID.
1489
+ */
1490
+ id: string;
1491
+ /**
1492
+ * Resource url of app for acquiring auth token for SSO.
1493
+ */
1494
+ resource?: string;
1495
+ /**
1496
+ * By including this property, an NAA token based on its contents will be prefetched when
1497
+ * the tab is loaded.
1498
+ */
1499
+ nestedAppAuthInfo?: NestedAppAuthInfo[];
1500
+ }
1501
+ export interface NestedAppAuthInfo {
1502
+ /**
1503
+ * Represents the nested app's valid redirect URI (always a base origin).
1504
+ */
1505
+ redirectUri: string;
1506
+ /**
1507
+ * Represents the stringified list of scopes the access token requested requires. Order must
1508
+ * match that of the proceeding NAA request in the app.
1509
+ */
1510
+ scopes: string[];
1511
+ /**
1512
+ * An optional JSON formatted object of client capabilities that represents if the resource
1513
+ * server is CAE capable. Do not use an empty string for this value. If unsupported, keep
1514
+ * the field undefined. If supported, use the following string exactly:
1515
+ * '{"access_token":{"xms_cc":{"values":["CP1"]}}}'. More info on client capabilities here:
1516
+ * https://learn.microsoft.com/en-us/entra/identity-platform/claims-challenge?tabs=dotnet#how-to-communicate-client-capabilities-to-microsoft-entra-id
1517
+ */
1518
+ claims?: string;
1519
+ }
1520
+ export declare class Convert {
1521
+ static toTeamsManifestV1D22(json: string): TeamsManifestV1D22;
1522
+ static teamsManifestV1D22ToJson(value: TeamsManifestV1D22): string;
1523
+ }