@microsoft/app-manifest 1.0.5 → 1.0.6-alpha.bca8bf68d3.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.
Files changed (74) hide show
  1. package/build/generated-types/index.d.ts +2 -0
  2. package/build/generated-types/index.js +38 -8
  3. package/build/generated-types/index.js.map +1 -1
  4. package/build/json-schemas/copilot/declarative-agent/v1.0/schema.json +327 -0
  5. package/build/json-schemas/copilot/declarative-agent/v1.2/schema.json +413 -0
  6. package/build/json-schemas/copilot/declarative-agent/v1.3/schema.json +610 -0
  7. package/build/json-schemas/copilot/declarative-agent/v1.4/schema.json +884 -0
  8. package/build/json-schemas/copilot/declarative-agent/v1.5/schema.json +904 -0
  9. package/build/json-schemas/copilot/declarative-agent/v1.6/schema.json +1102 -0
  10. package/build/json-schemas/copilot/plugin/v2.1/schema.json +684 -0
  11. package/build/json-schemas/copilot/plugin/v2.2/schema.json +716 -0
  12. package/build/json-schemas/copilot/plugin/v2.3/schema.json +772 -0
  13. package/build/json-schemas/copilot/plugin/v2.4/schema.json +853 -0
  14. package/build/json-schemas/teams/v1.0/MicrosoftTeams.schema.json +461 -0
  15. package/build/json-schemas/teams/v1.1/MicrosoftTeams.schema.json +458 -0
  16. package/build/json-schemas/teams/v1.10/MicrosoftTeams.Localization.schema.json +81 -0
  17. package/build/json-schemas/teams/v1.10/MicrosoftTeams.schema.json +963 -0
  18. package/build/json-schemas/teams/v1.11/MicrosoftTeams.Localization.schema.json +81 -0
  19. package/build/json-schemas/teams/v1.11/MicrosoftTeams.schema.json +958 -0
  20. package/build/json-schemas/teams/v1.12/MicrosoftTeams.Localization.schema.json +81 -0
  21. package/build/json-schemas/teams/v1.12/MicrosoftTeams.schema.json +993 -0
  22. package/build/json-schemas/teams/v1.13/MicrosoftTeams.Localization.schema.json +81 -0
  23. package/build/json-schemas/teams/v1.13/MicrosoftTeams.schema.json +993 -0
  24. package/build/json-schemas/teams/v1.14/MicrosoftTeams.Localization.schema.json +81 -0
  25. package/build/json-schemas/teams/v1.14/MicrosoftTeams.schema.json +1009 -0
  26. package/build/json-schemas/teams/v1.15/MicrosoftTeams.Localization.schema.json +81 -0
  27. package/build/json-schemas/teams/v1.15/MicrosoftTeams.schema.json +1014 -0
  28. package/build/json-schemas/teams/v1.16/MicrosoftTeams.Localization.schema.json +82 -0
  29. package/build/json-schemas/teams/v1.16/MicrosoftTeams.schema.json +1028 -0
  30. package/build/json-schemas/teams/v1.17/MicrosoftTeams.Localization.schema.json +166 -0
  31. package/build/json-schemas/teams/v1.17/MicrosoftTeams.ResponseRenderingTemplate.schema.json +89 -0
  32. package/build/json-schemas/teams/v1.17/MicrosoftTeams.schema.json +2135 -0
  33. package/build/json-schemas/teams/v1.19/MicrosoftTeams.Localization.schema.json +174 -0
  34. package/build/json-schemas/teams/v1.19/MicrosoftTeams.ResponseRenderingTemplate.schema.json +89 -0
  35. package/build/json-schemas/teams/v1.19/MicrosoftTeams.schema.json +2174 -0
  36. package/build/json-schemas/teams/v1.2/MicrosoftTeams.schema.json +458 -0
  37. package/build/json-schemas/teams/v1.20/MicrosoftTeams.Localization.schema.json +214 -0
  38. package/build/json-schemas/teams/v1.20/MicrosoftTeams.ResponseRenderingTemplate.schema.json +89 -0
  39. package/build/json-schemas/teams/v1.20/MicrosoftTeams.schema.json +2503 -0
  40. package/build/json-schemas/teams/v1.21/MicrosoftTeams.Localization.schema.json +224 -0
  41. package/build/json-schemas/teams/v1.21/MicrosoftTeams.ResponseRenderingTemplate.schema.json +89 -0
  42. package/build/json-schemas/teams/v1.21/MicrosoftTeams.schema.json +2534 -0
  43. package/build/json-schemas/teams/v1.22/MicrosoftTeams.Localization.schema.json +228 -0
  44. package/build/json-schemas/teams/v1.22/MicrosoftTeams.ResponseRenderingTemplate.schema.json +89 -0
  45. package/build/json-schemas/teams/v1.22/MicrosoftTeams.schema.json +2622 -0
  46. package/build/json-schemas/teams/v1.23/MicrosoftTeams.Localization.schema.json +316 -0
  47. package/build/json-schemas/teams/v1.23/MicrosoftTeams.ResponseRenderingTemplate.schema.json +89 -0
  48. package/build/json-schemas/teams/v1.23/MicrosoftTeams.schema.json +3056 -0
  49. package/build/json-schemas/teams/v1.24/MicrosoftTeams.Localization.schema.json +320 -0
  50. package/build/json-schemas/teams/v1.24/MicrosoftTeams.ResponseRenderingTemplate.schema.json +89 -0
  51. package/build/json-schemas/teams/v1.24/MicrosoftTeams.schema.json +3175 -0
  52. package/build/json-schemas/teams/v1.25/MicrosoftTeams.AgenticUser.schema.json +44 -0
  53. package/build/json-schemas/teams/v1.25/MicrosoftTeams.Localization.schema.json +328 -0
  54. package/build/json-schemas/teams/v1.25/MicrosoftTeams.ResponseRenderingTemplate.schema.json +89 -0
  55. package/build/json-schemas/teams/v1.25/MicrosoftTeams.schema.json +3313 -0
  56. package/build/json-schemas/teams/v1.26/MicrosoftTeams.schema.json +3408 -0
  57. package/build/json-schemas/teams/v1.3/MicrosoftTeams.schema.json +473 -0
  58. package/build/json-schemas/teams/v1.4/MicrosoftTeams.schema.json +543 -0
  59. package/build/json-schemas/teams/v1.5/MicrosoftTeams.Localization.schema.json +69 -0
  60. package/build/json-schemas/teams/v1.5/MicrosoftTeams.schema.json +713 -0
  61. package/build/json-schemas/teams/v1.6/MicrosoftTeams.Localization.schema.json +69 -0
  62. package/build/json-schemas/teams/v1.6/MicrosoftTeams.schema.json +725 -0
  63. package/build/json-schemas/teams/v1.7/MicrosoftTeams.Localization.schema.json +77 -0
  64. package/build/json-schemas/teams/v1.7/MicrosoftTeams.schema.json +759 -0
  65. package/build/json-schemas/teams/v1.8/MicrosoftTeams.Localization.schema.json +77 -0
  66. package/build/json-schemas/teams/v1.8/MicrosoftTeams.schema.json +799 -0
  67. package/build/json-schemas/teams/v1.9/MicrosoftTeams.Localization.schema.json +77 -0
  68. package/build/json-schemas/teams/v1.9/MicrosoftTeams.schema.json +885 -0
  69. package/build/json-schemas/teams/vDevPreview/MicrosoftTeams.AgenticUser.schema.json +44 -0
  70. package/build/json-schemas/teams/vDevPreview/MicrosoftTeams.Localization.schema.json +256 -0
  71. package/build/json-schemas/teams/vDevPreview/MicrosoftTeams.ResponseRenderingTemplate.schema.json +89 -0
  72. package/build/json-schemas/teams/vDevPreview/MicrosoftTeams.schema.json +4020 -0
  73. package/build/tsconfig.tsbuildinfo +1 -1
  74. package/package.json +3 -3
@@ -0,0 +1,3175 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-04/schema#",
3
+ "type": "object",
4
+ "additionalProperties": false,
5
+ "properties": {
6
+ "$schema": {
7
+ "type": "string",
8
+ "format": "uri"
9
+ },
10
+ "manifestVersion": {
11
+ "type": "string",
12
+ "description": "The version of the schema this manifest is using. This schema version supports extending Teams apps to other parts of the Microsoft 365 ecosystem. More info at https://aka.ms/extendteamsapps.",
13
+ "const": "1.24"
14
+ },
15
+ "version": {
16
+ "type": "string",
17
+ "description": "The version of the app. Changes to your manifest should cause a version change. This version string must follow the semver standard (http://semver.org).",
18
+ "maxLength": 256
19
+ },
20
+ "id": {
21
+ "$ref": "#/definitions/guid",
22
+ "description": "A unique identifier for this app. This id must be a GUID."
23
+ },
24
+ "localizationInfo": {
25
+ "type": "object",
26
+ "additionalProperties": false,
27
+ "properties": {
28
+ "defaultLanguageTag": {
29
+ "$ref": "#/definitions/languageTag",
30
+ "description": "The language tag of the strings in this top level manifest file.",
31
+ "default": "en-us"
32
+ },
33
+ "defaultLanguageFile": {
34
+ "$ref": "#/definitions/relativePath",
35
+ "description": "A relative file path to a the .json file containing strings in the default language."
36
+ },
37
+ "additionalLanguages": {
38
+ "type": "array",
39
+ "uniqueItems": true,
40
+ "items": {
41
+ "type": "object",
42
+ "additionalProperties": false,
43
+ "properties": {
44
+ "languageTag": {
45
+ "$ref": "#/definitions/languageTag",
46
+ "description": "The language tag of the strings in the provided file."
47
+ },
48
+ "file": {
49
+ "$ref": "#/definitions/relativePath",
50
+ "description": "A relative file path to a the .json file containing the translated strings."
51
+ }
52
+ },
53
+ "required": [
54
+ "languageTag",
55
+ "file"
56
+ ]
57
+ }
58
+ }
59
+ },
60
+ "required": [
61
+ "defaultLanguageTag"
62
+ ]
63
+ },
64
+ "developer": {
65
+ "type": "object",
66
+ "additionalProperties": false,
67
+ "properties": {
68
+ "name": {
69
+ "type": "string",
70
+ "description": "The display name for the developer.",
71
+ "maxLength": 32
72
+ },
73
+ "mpnId": {
74
+ "type": "string",
75
+ "description": "The Microsoft Partner Network ID that identifies the partner organization building the app. This field is not required, and should only be used if you are already part of the Microsoft Partner Network. More info at https://aka.ms/partner",
76
+ "maxLength": 10
77
+ },
78
+ "websiteUrl": {
79
+ "$ref": "#/definitions/httpsUrl",
80
+ "description": "The url to the page that provides support information for the app."
81
+ },
82
+ "privacyUrl": {
83
+ "$ref": "#/definitions/httpsUrl",
84
+ "description": "The url to the page that provides privacy information for the app."
85
+ },
86
+ "termsOfUseUrl": {
87
+ "$ref": "#/definitions/httpsUrl",
88
+ "description": "The url to the page that provides the terms of use for the app."
89
+ }
90
+ },
91
+ "required": [
92
+ "name",
93
+ "websiteUrl",
94
+ "privacyUrl",
95
+ "termsOfUseUrl"
96
+ ]
97
+ },
98
+ "name": {
99
+ "type": "object",
100
+ "additionalProperties": false,
101
+ "properties": {
102
+ "short": {
103
+ "type": "string",
104
+ "description": "A short display name for the app.",
105
+ "maxLength": 30
106
+ },
107
+ "full": {
108
+ "type": "string",
109
+ "description": "The full name of the app, used if the full app name exceeds 30 characters.",
110
+ "maxLength": 100
111
+ }
112
+ },
113
+ "required": [
114
+ "short"
115
+ ]
116
+ },
117
+ "description": {
118
+ "type": "object",
119
+ "additionalProperties": false,
120
+ "properties": {
121
+ "short": {
122
+ "type": "string",
123
+ "description": "A short description of the app used when space is limited. Maximum length is 80 characters.",
124
+ "maxLength": 80
125
+ },
126
+ "full": {
127
+ "type": "string",
128
+ "description": "The full description of the app. Maximum length is 4000 characters.",
129
+ "maxLength": 4000
130
+ }
131
+ },
132
+ "required": [
133
+ "short",
134
+ "full"
135
+ ]
136
+ },
137
+ "icons": {
138
+ "type": "object",
139
+ "additionalProperties": false,
140
+ "properties": {
141
+ "outline": {
142
+ "$ref": "#/definitions/relativePath",
143
+ "description": "A relative file path to a transparent PNG outline icon. The border color needs to be white. Size 32x32."
144
+ },
145
+ "color": {
146
+ "$ref": "#/definitions/relativePath",
147
+ "description": "A relative file path to a full color PNG icon. Size 192x192."
148
+ },
149
+ "color32x32": {
150
+ "$ref": "#/definitions/relativePath",
151
+ "description": "A relative file path to a full color PNG icon with transparent background. Size 32x32."
152
+ }
153
+ },
154
+ "required": [
155
+ "outline",
156
+ "color"
157
+ ]
158
+ },
159
+ "accentColor": {
160
+ "$ref": "#/definitions/hexColor",
161
+ "description": "A color to use in conjunction with the icon. The value must be a valid HTML color code starting with '#', for example `#4464ee`."
162
+ },
163
+ "configurableTabs": {
164
+ "type": "array",
165
+ "description": "These are tabs users can optionally add to their channels and 1:1 or group chats and require extra configuration before they are added. Configurable tabs are not supported in the personal scope. Currently only one configurable tab per app is supported.",
166
+ "maxItems": 1,
167
+ "items": {
168
+ "type": "object",
169
+ "additionalProperties": false,
170
+ "properties": {
171
+ "id": {
172
+ "type": "string",
173
+ "description": "A unique identifier for the tab. This id must be unique within the app manifest.",
174
+ "maxLength": 64
175
+ },
176
+ "configurationUrl": {
177
+ "$ref": "#/definitions/httpsUrl",
178
+ "description": "The url to use when configuring the tab."
179
+ },
180
+ "canUpdateConfiguration": {
181
+ "type": "boolean",
182
+ "description": "A value indicating whether an instance of the tab's configuration can be updated by the user after creation.",
183
+ "default": true
184
+ },
185
+ "scopes": {
186
+ "type": "array",
187
+ "description": "Specifies whether the tab offers an experience in the context of a channel in a team, in a 1:1 or group chat, or in an experience scoped to an individual user alone. These options are non-exclusive. Currently, configurable tabs are only supported in the teams and groupchats scopes.",
188
+ "maxItems": 2,
189
+ "items": {
190
+ "enum": [
191
+ "team",
192
+ "groupChat"
193
+ ]
194
+ }
195
+ },
196
+ "meetingSurfaces": {
197
+ "type": "array",
198
+ "description": "The set of meetingSurfaceItem scopes that a tab belong to",
199
+ "maxItems": 2,
200
+ "items": {
201
+ "enum": [
202
+ "sidePanel",
203
+ "stage"
204
+ ]
205
+ }
206
+ },
207
+ "context": {
208
+ "type": "array",
209
+ "description": "The set of contextItem scopes that a tab belong to",
210
+ "maxItems": 7,
211
+ "items": {
212
+ "enum": [
213
+ "personalTab",
214
+ "channelTab",
215
+ "privateChatTab",
216
+ "meetingChatTab",
217
+ "meetingDetailsTab",
218
+ "meetingSidePanel",
219
+ "meetingStage"
220
+ ]
221
+ }
222
+ },
223
+ "sharePointPreviewImage": {
224
+ "$ref": "#/definitions/relativePath",
225
+ "description": "A relative file path to a tab preview image for use in SharePoint. Size 1024x768."
226
+ },
227
+ "supportedSharePointHosts": {
228
+ "type": "array",
229
+ "description": "Defines how your tab will be made available in SharePoint.",
230
+ "maxItems": 2,
231
+ "uniqueItems": true,
232
+ "items": {
233
+ "enum": [
234
+ "sharePointFullPage",
235
+ "sharePointWebPart"
236
+ ]
237
+ }
238
+ }
239
+ },
240
+ "required": [
241
+ "configurationUrl",
242
+ "scopes"
243
+ ]
244
+ }
245
+ },
246
+ "staticTabs": {
247
+ "type": "array",
248
+ "description": "A set of tabs that may be 'pinned' by default, without the user adding them manually. Static tabs declared in personal scope are always pinned to the app's personal experience. Static tabs do not currently support the 'teams' scope.",
249
+ "maxItems": 16,
250
+ "uniqueItems": true,
251
+ "items": {
252
+ "type": "object",
253
+ "additionalProperties": false,
254
+ "properties": {
255
+ "entityId": {
256
+ "type": "string",
257
+ "description": "A unique identifier for the entity which the tab displays.",
258
+ "maxLength": 64
259
+ },
260
+ "name": {
261
+ "type": "string",
262
+ "description": "The display name of the tab.",
263
+ "maxLength": 128
264
+ },
265
+ "contentUrl": {
266
+ "$ref": "#/definitions/httpsUrl",
267
+ "description": "The url which points to the entity UI to be displayed in the canvas."
268
+ },
269
+ "contentBotId": {
270
+ "$ref": "#/definitions/guid",
271
+ "description": "The Microsoft App ID specified for the bot in the Bot Framework portal (https://dev.botframework.com/bots)"
272
+ },
273
+ "websiteUrl": {
274
+ "$ref": "#/definitions/httpsUrl",
275
+ "description": "The url to point at if a user opts to view in a browser."
276
+ },
277
+ "searchUrl": {
278
+ "$ref": "#/definitions/httpsUrl",
279
+ "description": "The url to direct a user's search queries."
280
+ },
281
+ "scopes": {
282
+ "type": "array",
283
+ "description": "Specifies whether the tab offers an experience in the context of a channel in a team, or an experience scoped to an individual user alone or group chat. These options are non-exclusive. Currently static tabs are only supported in the 'personal' scope.",
284
+ "maxItems": 3,
285
+ "items": {
286
+ "enum": [
287
+ "team",
288
+ "personal",
289
+ "groupChat"
290
+ ]
291
+ }
292
+ },
293
+ "context": {
294
+ "type": "array",
295
+ "description": "The set of contextItem scopes that a tab belong to",
296
+ "maxItems": 8,
297
+ "items": {
298
+ "enum": [
299
+ "personalTab",
300
+ "channelTab",
301
+ "privateChatTab",
302
+ "meetingChatTab",
303
+ "meetingDetailsTab",
304
+ "meetingSidePanel",
305
+ "meetingStage",
306
+ "teamLevelApp"
307
+ ]
308
+ }
309
+ },
310
+ "requirementSet": {
311
+ "$ref": "#/definitions/elementRequirementSet"
312
+ }
313
+ },
314
+ "required": [
315
+ "entityId",
316
+ "scopes"
317
+ ]
318
+ }
319
+ },
320
+ "bots": {
321
+ "type": "array",
322
+ "description": "The set of bots for this app. Currently only one bot per app is supported.",
323
+ "maxItems": 1,
324
+ "items": {
325
+ "type": "object",
326
+ "additionalProperties": false,
327
+ "properties": {
328
+ "botId": {
329
+ "$ref": "#/definitions/guid",
330
+ "description": "The Microsoft App ID specified for the bot in the Bot Framework portal (https://dev.botframework.com/bots)"
331
+ },
332
+ "configuration": {
333
+ "type": "object",
334
+ "additionalProperties": false,
335
+ "properties": {
336
+ "team": {
337
+ "type": "object",
338
+ "additionalProperties": false,
339
+ "properties": {
340
+ "fetchTask": {
341
+ "$ref": "#/properties/composeExtensions/items/properties/commands/items/properties/fetchTask"
342
+ },
343
+ "taskInfo": {
344
+ "$ref": "#/properties/composeExtensions/items/properties/commands/items/properties/taskInfo"
345
+ }
346
+ }
347
+ },
348
+ "groupChat": {
349
+ "$ref": "#/properties/bots/items/properties/configuration/properties/team"
350
+ }
351
+ }
352
+ },
353
+ "needsChannelSelector": {
354
+ "type": "boolean",
355
+ "description": "This value describes whether or not the bot utilizes a user hint to add the bot to a specific channel.",
356
+ "default": false
357
+ },
358
+ "isNotificationOnly": {
359
+ "type": "boolean",
360
+ "description": "A value indicating whether or not the bot is a one-way notification only bot, as opposed to a conversational bot.",
361
+ "default": false
362
+ },
363
+ "supportsFiles": {
364
+ "type": "boolean",
365
+ "description": "A value indicating whether the bot supports uploading/downloading of files.",
366
+ "default": false
367
+ },
368
+ "supportsCalling": {
369
+ "type": "boolean",
370
+ "description": "A value indicating whether the bot supports audio calling.",
371
+ "default": false
372
+ },
373
+ "supportsVideo": {
374
+ "type": "boolean",
375
+ "description": "A value indicating whether the bot supports video calling.",
376
+ "default": false
377
+ },
378
+ "scopes": {
379
+ "type": "array",
380
+ "description": "Specifies whether the bot offers an experience in the context of a channel in a team, in a group chat (groupChat), an experience scoped to an individual user alone (personal) OR within Copilot surfaces. These options are non-exclusive.",
381
+ "maxItems": 4,
382
+ "items": {
383
+ "enum": [
384
+ "team",
385
+ "personal",
386
+ "groupChat",
387
+ "copilot"
388
+ ]
389
+ }
390
+ },
391
+ "commandLists": {
392
+ "type": "array",
393
+ "maxItems": 3,
394
+ "description": "The list of commands that the bot supplies, including their usage, description, and the scope for which the commands are valid. A separate command list should be used for each scope.",
395
+ "items": {
396
+ "type": "object",
397
+ "additionalProperties": false,
398
+ "properties": {
399
+ "scopes": {
400
+ "type": "array",
401
+ "description": "Specifies the scopes for which the command list is valid",
402
+ "maxItems": 4,
403
+ "items": {
404
+ "enum": [
405
+ "team",
406
+ "personal",
407
+ "groupChat",
408
+ "copilot"
409
+ ]
410
+ }
411
+ },
412
+ "commands": {
413
+ "type": "array",
414
+ "maxItems": 12,
415
+ "items": {
416
+ "type": "object",
417
+ "additionalProperties": false,
418
+ "properties": {
419
+ "title": {
420
+ "type": "string",
421
+ "description": "The bot command name",
422
+ "maxLength": 128
423
+ },
424
+ "description": {
425
+ "type": "string",
426
+ "description": "A simple text description or an example of the command syntax and its arguments.",
427
+ "maxLength": 4000
428
+ }
429
+ },
430
+ "required": [
431
+ "title",
432
+ "description"
433
+ ]
434
+ }
435
+ }
436
+ },
437
+ "required": [
438
+ "scopes",
439
+ "commands"
440
+ ]
441
+ }
442
+ },
443
+ "requirementSet": {
444
+ "$ref": "#/definitions/elementRequirementSet"
445
+ },
446
+ "registrationInfo": {
447
+ "description": "System‑generated metadata. This information is maintained by Microsoft services and must not be modified manually.",
448
+ "type": "object",
449
+ "properties": {
450
+ "source": {
451
+ "type": "string",
452
+ "enum": [ "standard", "microsoftCopilotStudio", "onedriveSharepoint" ],
453
+ "description": "The partner source through which the bot is registered. System‑generated metadata. This information is maintained by Microsoft services and must not be modified manually."
454
+ },
455
+ "environment": {
456
+ "type": "string",
457
+ "description": "A Power Platform environment that serves as a container for building apps under a Microsoft 365 tenant and can only be accessed by users within that tenant. System‑generated metadata. This information is maintained by Microsoft services and must not be modified manually.",
458
+ "maxLength": 128
459
+ },
460
+ "schemaName": {
461
+ "type": "string",
462
+ "description": "The Copilot Studio copilot schema name. System‑generated metadata. This information is maintained by Microsoft services and must not be modified manually.",
463
+ "maxLength": 128
464
+ },
465
+ "clusterCategory": {
466
+ "type": "string",
467
+ "description": "The core services cluster category for Copilot Studio copilots. System‑generated metadata. This information is maintained by Microsoft services and must not be modified manually.",
468
+ "maxLength": 128
469
+ }
470
+ },
471
+ "required": [ "source" ],
472
+ "additionalProperties": false
473
+ }
474
+ },
475
+ "required": [
476
+ "botId",
477
+ "scopes"
478
+ ]
479
+ }
480
+ },
481
+ "connectors": {
482
+ "type": "array",
483
+ "description": "The set of Office365 connectors for this app. Currently only one connector per app is supported.",
484
+ "maxItems": 1,
485
+ "items": {
486
+ "type": "object",
487
+ "additionalProperties": false,
488
+ "properties": {
489
+ "connectorId": {
490
+ "type": "string",
491
+ "description": "A unique identifier for the connector which matches its ID in the Connectors Developer Portal.",
492
+ "maxLength": 64
493
+ },
494
+ "configurationUrl": {
495
+ "$ref": "#/definitions/httpsUrl",
496
+ "description": "The url to use for configuring the connector using the inline configuration experience."
497
+ },
498
+ "scopes": {
499
+ "type": "array",
500
+ "description": "Specifies whether the connector offers an experience in the context of a channel in a team, or an experience scoped to an individual user alone. Currently, only the team scope is supported.",
501
+ "maxItems": 1,
502
+ "items": {
503
+ "enum": [
504
+ "team"
505
+ ]
506
+ }
507
+ }
508
+ },
509
+ "required": [
510
+ "connectorId",
511
+ "scopes"
512
+ ]
513
+ }
514
+ },
515
+ "subscriptionOffer": {
516
+ "type": "object",
517
+ "description": "Subscription offer associated with this app.",
518
+ "properties": {
519
+ "offerId": {
520
+ "type": "string",
521
+ "description": "A unique identifier for the Commercial Marketplace Software as a Service Offer.",
522
+ "maxLength": 2048
523
+ }
524
+ },
525
+ "required": [
526
+ "offerId"
527
+ ],
528
+ "additionalProperties": false
529
+ },
530
+ "composeExtensions": {
531
+ "type": "array",
532
+ "description": "The set of compose extensions for this app. Currently only one compose extension per app is supported.",
533
+ "maxItems": 1,
534
+ "items": {
535
+ "type": "object",
536
+ "additionalProperties": false,
537
+ "properties": {
538
+ "id": {
539
+ "type": "string",
540
+ "description": "A unique identifier for the compose extension.",
541
+ "maxLength": 64
542
+ },
543
+ "botId": {
544
+ "$ref": "#/definitions/guid",
545
+ "description": "The Microsoft App ID specified for the bot powering the compose extension in the Bot Framework portal (https://dev.botframework.com/bots)"
546
+ },
547
+ "composeExtensionType": {
548
+ "type": "string",
549
+ "enum": [
550
+ "botBased",
551
+ "apiBased"
552
+ ],
553
+ "description": "Type of the compose extension."
554
+ },
555
+ "authorization": {
556
+ "type": "object",
557
+ "description": "Object capturing authorization information.",
558
+ "properties": {
559
+ "authType": {
560
+ "type": "string",
561
+ "enum": [
562
+ "none",
563
+ "apiSecretServiceAuth",
564
+ "microsoftEntra"
565
+ ],
566
+ "description": "Enum of possible authentication types."
567
+ },
568
+ "microsoftEntraConfiguration": {
569
+ "type": "object",
570
+ "description": "Object capturing details needed to do single aad auth flow. It will be only present when auth type is entraId.",
571
+ "properties": {
572
+ "supportsSingleSignOn": {
573
+ "type": "boolean",
574
+ "default": false,
575
+ "description": "Boolean indicating whether single sign on is configured for the app."
576
+ }
577
+ },
578
+ "additionalProperties": false
579
+ },
580
+ "apiSecretServiceAuthConfiguration": {
581
+ "type": "object",
582
+ "description": "Object capturing details needed to do service auth. It will be only present when auth type is apiSecretServiceAuth.",
583
+ "properties": {
584
+ "apiSecretRegistrationId": {
585
+ "type": "string",
586
+ "description": "Registration id returned when developer submits the api key through Developer Portal.",
587
+ "maxLength": 128
588
+ }
589
+ },
590
+ "additionalProperties": false
591
+ }
592
+ },
593
+ "additionalProperties": false
594
+ },
595
+ "apiSpecificationFile": {
596
+ "$ref": "#/definitions/relativePath",
597
+ "description": "A relative file path to the api specification file in the manifest package."
598
+ },
599
+ "canUpdateConfiguration": {
600
+ "type": [ "boolean", "null" ],
601
+ "description": "A value indicating whether the configuration of a compose extension can be updated by the user.",
602
+ "default": "null"
603
+ },
604
+ "commands": {
605
+ "type": "array",
606
+ "maxItems": 10,
607
+ "items": {
608
+ "type": "object",
609
+ "additionalProperties": false,
610
+ "properties": {
611
+ "id": {
612
+ "type": "string",
613
+ "description": "Id of the command.",
614
+ "maxLength": 64
615
+ },
616
+ "type": {
617
+ "type": "string",
618
+ "enum": [
619
+ "query",
620
+ "action"
621
+ ],
622
+ "description": "Type of the command",
623
+ "default": "query"
624
+ },
625
+ "samplePrompts": {
626
+ "type": "array",
627
+ "maxItems": 5,
628
+ "minItems": 1,
629
+ "items": {
630
+ "type": "object",
631
+ "additionalProperties": false,
632
+ "properties": {
633
+ "text": {
634
+ "type": "string",
635
+ "description": "This string will hold the sample prompt",
636
+ "maxLength": 128
637
+ }
638
+ },
639
+ "required": [
640
+ "text"
641
+ ]
642
+ }
643
+ },
644
+ "apiResponseRenderingTemplateFile": {
645
+ "$ref": "#/definitions/relativePath",
646
+ "description": "A relative file path for api response rendering template file."
647
+ },
648
+ "context": {
649
+ "type": "array",
650
+ "maxItems": 3,
651
+ "items": {
652
+ "enum": [
653
+ "compose",
654
+ "commandBox",
655
+ "message"
656
+ ]
657
+ },
658
+ "description": "Context where the command would apply",
659
+ "default": [
660
+ "compose",
661
+ "commandBox"
662
+ ]
663
+ },
664
+ "title": {
665
+ "type": "string",
666
+ "description": "Title of the command.",
667
+ "maxLength": 32
668
+ },
669
+ "description": {
670
+ "type": "string",
671
+ "description": "Description of the command.",
672
+ "maxLength": 128
673
+ },
674
+ "initialRun": {
675
+ "type": "boolean",
676
+ "description": "A boolean value that indicates if the command should be run once initially with no parameter.",
677
+ "default": false
678
+ },
679
+ "fetchTask": {
680
+ "type": "boolean",
681
+ "description": "A boolean value that indicates if it should fetch task module dynamically",
682
+ "default": false
683
+ },
684
+ "semanticDescription": {
685
+ "type": "string",
686
+ "description": "Semantic description for the command.",
687
+ "maxLength": 5000
688
+ },
689
+ "parameters": {
690
+ "type": "array",
691
+ "maxItems": 5,
692
+ "minItems": 1,
693
+ "items": {
694
+ "type": "object",
695
+ "additionalProperties": false,
696
+ "properties": {
697
+ "name": {
698
+ "type": "string",
699
+ "description": "Name of the parameter.",
700
+ "maxLength": 64
701
+ },
702
+ "inputType": {
703
+ "type": "string",
704
+ "enum": [
705
+ "text",
706
+ "textarea",
707
+ "number",
708
+ "date",
709
+ "time",
710
+ "toggle",
711
+ "choiceset"
712
+ ],
713
+ "description": "Type of the parameter",
714
+ "default": "text"
715
+ },
716
+ "title": {
717
+ "type": "string",
718
+ "description": "Title of the parameter.",
719
+ "maxLength": 32
720
+ },
721
+ "description": {
722
+ "type": "string",
723
+ "description": "Description of the parameter.",
724
+ "maxLength": 128
725
+ },
726
+ "value": {
727
+ "type": "string",
728
+ "description": "Initial value for the parameter",
729
+ "maxLength": 512
730
+ },
731
+ "isRequired": {
732
+ "type": "boolean",
733
+ "description": "The value indicates if this parameter is a required field.",
734
+ "default": false
735
+ },
736
+ "semanticDescription": {
737
+ "type": "string",
738
+ "description": "Semantic description for the parameter.",
739
+ "maxLength": 2000
740
+ },
741
+ "choices": {
742
+ "type": "array",
743
+ "maxItems": 10,
744
+ "description": "The choice options for the parameter",
745
+ "items": {
746
+ "type": "object",
747
+ "properties": {
748
+ "title": {
749
+ "type": "string",
750
+ "description": "Title of the choice",
751
+ "maxLength": 128
752
+ },
753
+ "value": {
754
+ "type": "string",
755
+ "description": "Value of the choice",
756
+ "maxLength": 512
757
+ }
758
+ },
759
+ "additionalProperties": false,
760
+ "required": [
761
+ "title",
762
+ "value"
763
+ ]
764
+ }
765
+ }
766
+ },
767
+ "required": [
768
+ "name",
769
+ "title"
770
+ ]
771
+ }
772
+ },
773
+ "taskInfo": {
774
+ "type": "object",
775
+ "additionalProperties": false,
776
+ "properties": {
777
+ "title": {
778
+ "type": "string",
779
+ "description": "Initial dialog title",
780
+ "maxLength": 64
781
+ },
782
+ "width": {
783
+ "$ref": "#/definitions/taskInfoDimension",
784
+ "description": "Dialog width - either a number in pixels or default layout such as 'large', 'medium', or 'small'"
785
+ },
786
+ "height": {
787
+ "$ref": "#/definitions/taskInfoDimension",
788
+ "description": "Dialog height - either a number in pixels or default layout such as 'large', 'medium', or 'small'"
789
+ },
790
+ "url": {
791
+ "$ref": "#/definitions/httpsUrl",
792
+ "description": "Initial webview URL"
793
+ }
794
+ }
795
+ }
796
+ },
797
+ "required": [
798
+ "id",
799
+ "title"
800
+ ]
801
+ }
802
+ },
803
+ "messageHandlers": {
804
+ "type": "array",
805
+ "maxItems": 5,
806
+ "description": "A list of handlers that allow apps to be invoked when certain conditions are met",
807
+ "items": {
808
+ "type": "object",
809
+ "properties": {
810
+ "type": {
811
+ "type": "string",
812
+ "enum": [
813
+ "link"
814
+ ],
815
+ "description": "Type of the message handler"
816
+ },
817
+ "value": {
818
+ "type": "object",
819
+ "properties": {
820
+ "domains": {
821
+ "type": "array",
822
+ "description": "A list of domains that the link message handler can register for, and when they are matched the app will be invoked",
823
+ "items": {
824
+ "type": "string",
825
+ "maxLength": 2048
826
+ }
827
+ },
828
+ "supportsAnonymizedPayloads": {
829
+ "type": "boolean",
830
+ "description": "A boolean that indicates whether the app's link message handler supports anonymous invoke flow.",
831
+ "default": false
832
+ }
833
+ },
834
+ "additionalProperties": false
835
+ }
836
+ },
837
+ "required": [
838
+ "type",
839
+ "value"
840
+ ],
841
+ "additionalProperties": false
842
+ }
843
+ },
844
+ "requirementSet": {
845
+ "$ref": "#/definitions/elementRequirementSet"
846
+ }
847
+ }
848
+ }
849
+ },
850
+ "permissions": {
851
+ "type": "array",
852
+ "description": "Specifies the permissions the app requests from users.",
853
+ "maxItems": 2,
854
+ "items": {
855
+ "enum": [
856
+ "identity",
857
+ "messageTeamMembers"
858
+ ]
859
+ }
860
+ },
861
+ "devicePermissions": {
862
+ "type": "array",
863
+ "description": "Specify the native features on a user's device that your app may request access to.",
864
+ "maxItems": 5,
865
+ "items": {
866
+ "enum": [
867
+ "geolocation",
868
+ "media",
869
+ "notifications",
870
+ "midi",
871
+ "openExternal"
872
+ ]
873
+ }
874
+ },
875
+ "validDomains": {
876
+ "type": "array",
877
+ "description": "A list of valid domains from which the tabs expect to load any content. Domain listings can include wildcards, for example `*.example.com`. If your tab configuration or content UI needs to navigate to any other domain besides the one use for tab configuration, that domain must be specified here.",
878
+ "maxItems": 16,
879
+ "items": {
880
+ "type": "string",
881
+ "maxLength": 2048
882
+ }
883
+ },
884
+ "webApplicationInfo": {
885
+ "type": "object",
886
+ "description": "Specify your AAD App ID and Graph information to help users seamlessly sign into your AAD app.",
887
+ "properties": {
888
+ "id": {
889
+ "$ref": "#/definitions/guid",
890
+ "description": "AAD application id of the app. This id must be a GUID."
891
+ },
892
+ "resource": {
893
+ "type": "string",
894
+ "description": "Resource url of app for acquiring auth token for SSO.",
895
+ "maxLength": 2048
896
+ },
897
+ "nestedAppAuthInfo": {
898
+ "type": "array",
899
+ "maxItems": 5,
900
+ "description": "By including this property, an NAA token based on its contents will be prefetched when the tab is loaded.",
901
+ "items": {
902
+ "type": "object",
903
+ "properties": {
904
+ "redirectUri": {
905
+ "type": "string",
906
+ "description": "Represents the nested app's valid redirect URI (always a base origin)."
907
+ },
908
+ "scopes": {
909
+ "type": "array",
910
+ "description": "Represents the stringified list of scopes the access token requested requires. Order must match that of the proceeding NAA request in the app.",
911
+ "maxItems": 20,
912
+ "items": {
913
+ "type": "string"
914
+ }
915
+ },
916
+ "claims": {
917
+ "type": "string",
918
+ "description": "An optional JSON formatted object of client capabilities that represents if the resource server is CAE capable. Do not use an empty string for this value. If unsupported, keep the field undefined. If supported, use the following string exactly: '{\"access_token\":{\"xms_cc\":{\"values\":[\"CP1\"]}}}'. More info on client capabilities here: https://learn.microsoft.com/en-us/entra/identity-platform/claims-challenge?tabs=dotnet#how-to-communicate-client-capabilities-to-microsoft-entra-id ",
919
+ "minLength": 1
920
+ }
921
+ },
922
+ "required": [ "redirectUri", "scopes" ],
923
+ "additionalProperties": false
924
+ }
925
+ }
926
+ },
927
+ "required": [
928
+ "id"
929
+ ],
930
+ "additionalProperties": false
931
+ },
932
+ "graphConnector": {
933
+ "type": "object",
934
+ "description": "Specify the app's Graph connector configuration. If this is present then webApplicationInfo.id must also be specified.",
935
+ "properties": {
936
+ "notificationUrl": {
937
+ "$ref": "#/definitions/httpsUrl",
938
+ "description": "The url where Graph-connector notifications for the application should be sent."
939
+ }
940
+ },
941
+ "required": [
942
+ "notificationUrl"
943
+ ],
944
+ "additionalProperties": false
945
+ },
946
+ "showLoadingIndicator": {
947
+ "type": "boolean",
948
+ "description": "A value indicating whether or not show loading indicator when app/tab is loading",
949
+ "default": false
950
+ },
951
+ "isFullScreen": {
952
+ "type": "boolean",
953
+ "description": "A value indicating whether a personal app is rendered without a tab header-bar",
954
+ "default": false
955
+ },
956
+ "activities": {
957
+ "type": "object",
958
+ "properties": {
959
+ "activityTypes": {
960
+ "type": "array",
961
+ "description": "Specify the types of activites that your app can post to a users activity feed",
962
+ "maxItems": 128,
963
+ "items": {
964
+ "type": "object",
965
+ "properties": {
966
+ "type": {
967
+ "type": "string",
968
+ "maxLength": 64
969
+ },
970
+ "description": {
971
+ "type": "string",
972
+ "maxLength": 128
973
+ },
974
+ "templateText": {
975
+ "type": "string",
976
+ "maxLength": 128
977
+ },
978
+ "allowedIconIds": {
979
+ "type": "array",
980
+ "description": "An array containing valid icon IDs per activity type.",
981
+ "maxItems": 50,
982
+ "items": {
983
+ "type": "string"
984
+ }
985
+ }
986
+ },
987
+ "required": [
988
+ "type",
989
+ "description",
990
+ "templateText"
991
+ ],
992
+ "additionalProperties": false
993
+ }
994
+ },
995
+ "activityIcons": {
996
+ "type": "array",
997
+ "description": "Specify the customized icons that your app can post to a users activity feed",
998
+ "maxItems": 50,
999
+ "items": {
1000
+ "type": "object",
1001
+ "properties": {
1002
+ "id": {
1003
+ "type": "string",
1004
+ "maxLength": 64,
1005
+ "description": "Represents the unique icon ID."
1006
+ },
1007
+ "iconFile": {
1008
+ "type": "string",
1009
+ "maxLength": 128,
1010
+ "description": "Represents the relative path to the icon image. Image should be size 32x32."
1011
+ }
1012
+ },
1013
+ "required": [
1014
+ "id",
1015
+ "iconFile"
1016
+ ],
1017
+ "additionalProperties": false
1018
+ }
1019
+ }
1020
+ },
1021
+ "additionalProperties": false
1022
+ },
1023
+ "configurableProperties": {
1024
+ "type": "array",
1025
+ "description": "A list of tenant configured properties for an app",
1026
+ "maxItems": 9,
1027
+ "items": {
1028
+ "enum": [
1029
+ "name",
1030
+ "shortDescription",
1031
+ "longDescription",
1032
+ "smallImageUrl",
1033
+ "largeImageUrl",
1034
+ "accentColor",
1035
+ "developerUrl",
1036
+ "privacyUrl",
1037
+ "termsOfUseUrl"
1038
+ ]
1039
+ }
1040
+ },
1041
+ "supportedChannelTypes": {
1042
+ "type": "array",
1043
+ "description": "List of 'non-standard' channel types that the app supports. Note: Channels of standard type are supported by default if the app supports team scope.",
1044
+ "maxItems": 2,
1045
+ "items": {
1046
+ "enum": [
1047
+ "sharedChannels",
1048
+ "privateChannels"
1049
+ ]
1050
+ }
1051
+ },
1052
+ "defaultBlockUntilAdminAction": {
1053
+ "type": "boolean",
1054
+ "description": "A value indicating whether an app is blocked by default until admin allows it",
1055
+ "default": false
1056
+ },
1057
+ "publisherDocsUrl": {
1058
+ "$ref": "#/definitions/httpsUrl",
1059
+ "description": "The url to the page that provides additional app information for the admins"
1060
+ },
1061
+ "defaultInstallScope": {
1062
+ "type": "string",
1063
+ "enum": [
1064
+ "personal",
1065
+ "team",
1066
+ "groupChat",
1067
+ "meetings",
1068
+ "copilot"
1069
+ ],
1070
+ "description": "The install scope defined for this app by default. This will be the option displayed on the button when a user tries to add the app"
1071
+ },
1072
+ "defaultGroupCapability": {
1073
+ "type": "object",
1074
+ "properties": {
1075
+ "team": {
1076
+ "type": "string",
1077
+ "enum": [
1078
+ "tab",
1079
+ "bot",
1080
+ "connector"
1081
+ ],
1082
+ "description": "When the install scope selected is Team, this field specifies the default capability available"
1083
+ },
1084
+ "groupchat": {
1085
+ "type": "string",
1086
+ "enum": [
1087
+ "tab",
1088
+ "bot",
1089
+ "connector"
1090
+ ],
1091
+ "description": "When the install scope selected is GroupChat, this field specifies the default capability available"
1092
+ },
1093
+ "meetings": {
1094
+ "type": "string",
1095
+ "enum": [
1096
+ "tab",
1097
+ "bot",
1098
+ "connector"
1099
+ ],
1100
+ "description": "When the install scope selected is Meetings, this field specifies the default capability available"
1101
+ }
1102
+ },
1103
+ "description": "When a group install scope is selected, this will define the default capability when the user installs the app",
1104
+ "additionalProperties": false
1105
+ },
1106
+ "meetingExtensionDefinition": {
1107
+ "type": "object",
1108
+ "properties": {
1109
+ "scenes": {
1110
+ "description": "Meeting supported scenes.",
1111
+ "items": {
1112
+ "type": "object",
1113
+ "additionalProperties": false,
1114
+ "properties": {
1115
+ "id": {
1116
+ "$ref": "#/definitions/guid",
1117
+ "description": "A unique identifier for this scene. This id must be a GUID."
1118
+ },
1119
+ "name": {
1120
+ "type": "string",
1121
+ "description": "Scene name.",
1122
+ "maxLength": 128
1123
+ },
1124
+ "file": {
1125
+ "$ref": "#/definitions/relativePath",
1126
+ "description": "A relative file path to a scene metadata json file."
1127
+ },
1128
+ "preview": {
1129
+ "$ref": "#/definitions/relativePath",
1130
+ "description": "A relative file path to a scene PNG preview icon."
1131
+ },
1132
+ "maxAudience": {
1133
+ "type": "integer",
1134
+ "description": "Maximum audiences supported in scene.",
1135
+ "maximum": 50
1136
+ },
1137
+ "seatsReservedForOrganizersOrPresenters": {
1138
+ "type": "integer",
1139
+ "description": "Number of seats reserved for organizers or presenters.",
1140
+ "maximum": 50
1141
+ }
1142
+ },
1143
+ "required": [
1144
+ "id",
1145
+ "name",
1146
+ "file",
1147
+ "preview",
1148
+ "maxAudience",
1149
+ "seatsReservedForOrganizersOrPresenters"
1150
+ ]
1151
+ },
1152
+ "maxItems": 5,
1153
+ "type": "array",
1154
+ "uniqueItems": true
1155
+ },
1156
+ "supportsCustomShareToStage": {
1157
+ "description": "Represents if the app has added support for sharing to stage.",
1158
+ "type": "boolean",
1159
+ "default": false
1160
+ },
1161
+ "supportsStreaming": {
1162
+ "type": "boolean",
1163
+ "description": "A boolean value indicating whether this app can stream the meeting's audio video content to an RTMP endpoint.",
1164
+ "default": false
1165
+ },
1166
+ "supportsAnonymousGuestUsers": {
1167
+ "type": "boolean",
1168
+ "description": "A boolean value indicating whether this app allows management by anonymous users.",
1169
+ "default": false
1170
+ }
1171
+ },
1172
+ "description": "Specify meeting extension definition.",
1173
+ "additionalProperties": false
1174
+ },
1175
+ "authorization": {
1176
+ "type": "object",
1177
+ "description": "Specify and consolidates authorization related information for the App.",
1178
+ "additionalProperties": false,
1179
+ "properties": {
1180
+ "permissions": {
1181
+ "type": "object",
1182
+ "description": "List of permissions that the app needs to function.",
1183
+ "additionalProperties": false,
1184
+ "properties": {
1185
+ "resourceSpecific": {
1186
+ "description": "Permissions that must be granted on a per resource instance basis.",
1187
+ "maxItems": 16,
1188
+ "type": "array",
1189
+ "uniqueItems": true,
1190
+ "items": {
1191
+ "type": "object",
1192
+ "additionalProperties": false,
1193
+ "properties": {
1194
+ "name": {
1195
+ "type": "string",
1196
+ "description": "The name of the resource-specific permission.",
1197
+ "maxLength": 128
1198
+ },
1199
+ "type": {
1200
+ "type": "string",
1201
+ "enum": [
1202
+ "Application",
1203
+ "Delegated"
1204
+ ],
1205
+ "description": "The type of the resource-specific permission: delegated vs application."
1206
+ }
1207
+ },
1208
+ "required": [
1209
+ "name",
1210
+ "type"
1211
+ ]
1212
+ }
1213
+ }
1214
+ }
1215
+ }
1216
+ }
1217
+ },
1218
+ "extensions": {
1219
+ "$ref": "#/definitions/elementExtensions"
1220
+ },
1221
+ "dashboardCards": {
1222
+ "type": "array",
1223
+ "description": "Defines the list of cards which could be pinned to dashboards that can provide summarized view of information relevant to user.",
1224
+ "items": {
1225
+ "$ref": "#/definitions/dashboardCard"
1226
+ },
1227
+ "additionalProperties": false
1228
+ },
1229
+ "copilotAgents": {
1230
+ "type": "object",
1231
+ "properties": {
1232
+ "declarativeAgents": {
1233
+ "type": "array",
1234
+ "description": "An array of declarative agent elements references. Currently, only one declarative agent per application is supported.",
1235
+ "items": {
1236
+ "$ref": "#/definitions/declarativeAgentRef"
1237
+ },
1238
+ "minItems": 1,
1239
+ "maxItems": 1
1240
+ },
1241
+ "customEngineAgents": {
1242
+ "type": "array",
1243
+ "description": "An array of Custom Engine Agents. Currently only one Custom Engine Agent per application is supported. Support is currently in public preview.",
1244
+ "items": {
1245
+ "type": "object",
1246
+ "properties": {
1247
+ "id": {
1248
+ "$ref": "#/definitions/guid",
1249
+ "description": "The id of the Custom Engine Agent. If it is of type bot, the id must match the id specified in a bot in the bots node and the referenced bot must have personal scope. The app short name and short description must also be defined."
1250
+ },
1251
+ "type": {
1252
+ "type": "string",
1253
+ "enum": [
1254
+ "bot"
1255
+ ],
1256
+ "description": "The type of the Custom Engine Agent. Currently only type bot is supported."
1257
+ },
1258
+ "disclaimer": {
1259
+ "type": "object",
1260
+ "properties": {
1261
+ "text": {
1262
+ "type": "string",
1263
+ "description": "The message shown to users before they interact with this application. ",
1264
+ "maxLength": 500
1265
+ }
1266
+ },
1267
+ "required": [
1268
+ "text"
1269
+ ]
1270
+ }
1271
+ },
1272
+ "required": [
1273
+ "id",
1274
+ "type"
1275
+ ],
1276
+ "additionalProperties": false
1277
+ },
1278
+ "minItems": 1,
1279
+ "maxItems": 1
1280
+ }
1281
+ },
1282
+ "additionalProperties": false,
1283
+ "oneOf": [
1284
+ {
1285
+ "required": [
1286
+ "declarativeAgents"
1287
+ ]
1288
+ },
1289
+ {
1290
+ "required": [
1291
+ "customEngineAgents"
1292
+ ]
1293
+ }
1294
+ ]
1295
+ },
1296
+ "intuneInfo": {
1297
+ "type": "object",
1298
+ "description": "The Intune-related properties for the app.",
1299
+ "properties": {
1300
+ "supportedMobileAppManagementVersion": {
1301
+ "type": "string",
1302
+ "description": "Supported mobile app managment version that the app is compliant with.",
1303
+ "maxLength": 64
1304
+ }
1305
+ },
1306
+ "additionalProperties": false
1307
+ },
1308
+ "elementRelationshipSet": {
1309
+ "type": "object",
1310
+ "properties": {
1311
+ "oneWayDependencies": {
1312
+ "type": "array",
1313
+ "items": {
1314
+ "$ref": "#/definitions/oneWayDependency"
1315
+ },
1316
+ "minItems": 1,
1317
+ "description": "An array containing multiple instances of unidirectional dependency relationships (each represented by a oneWayDependency object)."
1318
+ },
1319
+ "mutualDependencies": {
1320
+ "type": "array",
1321
+ "items": {
1322
+ "$ref": "#/definitions/mutualDependency"
1323
+ },
1324
+ "minItems": 1,
1325
+ "description": "An array containing multiple instances of mutual dependency relationships between elements (each represented by a mutualDependency object)."
1326
+ }
1327
+ },
1328
+ "anyOf": [
1329
+ {
1330
+ "required": [
1331
+ "oneWayDependencies"
1332
+ ]
1333
+ },
1334
+ {
1335
+ "required": [
1336
+ "mutualDependencies"
1337
+ ]
1338
+ }
1339
+ ],
1340
+ "additionalProperties": false
1341
+ },
1342
+ "backgroundLoadConfiguration": {
1343
+ "type": "object",
1344
+ "description": "Optional property containing background loading configuration. By opting in to this performance enhancement, your app is eligible to be loaded in the background in any Microsoft 365 application host that supports this feature.",
1345
+ "properties": {
1346
+ "tabConfiguration": {
1347
+ "type": "object",
1348
+ "description": "Optional property within backgroundLoadConfiguration containing tab settings for background loading.",
1349
+ "properties": {
1350
+ "contentUrl": {
1351
+ "$ref": "#/definitions/httpsUrl",
1352
+ "description": "Required URL for background loading. This can be the same contentUrl from the staticTabs section or an alternative endpoint used for background loading."
1353
+ }
1354
+ },
1355
+ "required": [ "contentUrl" ],
1356
+ "additionalProperties": false
1357
+ }
1358
+ },
1359
+ "additionalProperties": false
1360
+ }
1361
+ },
1362
+ "required": [
1363
+ "manifestVersion",
1364
+ "version",
1365
+ "id",
1366
+ "developer",
1367
+ "name",
1368
+ "description",
1369
+ "icons",
1370
+ "accentColor"
1371
+ ],
1372
+ "definitions": {
1373
+ "relativePath": {
1374
+ "type": "string",
1375
+ "maxLength": 2048
1376
+ },
1377
+ "httpsUrl": {
1378
+ "type": "string",
1379
+ "maxLength": 2048,
1380
+ "pattern": "^[Hh][Tt][Tt][Pp][Ss]?://"
1381
+ },
1382
+ "semver": {
1383
+ "type": "string",
1384
+ "maxLength": 256,
1385
+ "pattern": "^([0-9]|[1-9]+[0-9]*)\\.([0-9]|[1-9]+[0-9]*)\\.([0-9]|[1-9]+[0-9]*)$"
1386
+ },
1387
+ "hexColor": {
1388
+ "type": "string",
1389
+ "pattern": "^#[0-9a-fA-F]{6}$"
1390
+ },
1391
+ "guid": {
1392
+ "type": "string",
1393
+ "pattern": "^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$"
1394
+ },
1395
+ "languageTag": {
1396
+ "type": "string",
1397
+ "pattern": "^[A-Za-z0-9]{1,8}(-[A-Za-z0-9]{1,8}){0,2}$"
1398
+ },
1399
+ "taskInfoDimension": {
1400
+ "type": "string",
1401
+ "pattern": "^((([0-9]*\\.)?[0-9]+)|[lL][aA][rR][gG][eE]|[mM][eE][dD][iI][uU][mM]|[sS][mM][aA][lL][lL])$",
1402
+ "maxLength": 16
1403
+ },
1404
+ "elementReference": {
1405
+ "type": "object",
1406
+ "properties": {
1407
+ "name": {
1408
+ "type": "string",
1409
+ "enum": [
1410
+ "bots",
1411
+ "staticTabs",
1412
+ "composeExtensions",
1413
+ "configurableTabs"
1414
+ ]
1415
+ },
1416
+ "id": {
1417
+ "type": "string"
1418
+ },
1419
+ "commandIds": {
1420
+ "type": "array",
1421
+ "minItems": 1,
1422
+ "items": {
1423
+ "type": "string"
1424
+ }
1425
+ }
1426
+ },
1427
+ "required": [
1428
+ "name",
1429
+ "id"
1430
+ ],
1431
+ "additionalProperties": false
1432
+ },
1433
+ "oneWayDependency": {
1434
+ "type": "object",
1435
+ "properties": {
1436
+ "element": {
1437
+ "$ref": "#/definitions/elementReference"
1438
+ },
1439
+ "dependsOn": {
1440
+ "type": "array",
1441
+ "minItems": 1,
1442
+ "items": {
1443
+ "$ref": "#/definitions/elementReference"
1444
+ }
1445
+ }
1446
+ },
1447
+ "required": [
1448
+ "element",
1449
+ "dependsOn"
1450
+ ],
1451
+ "additionalProperties": false,
1452
+ "description": "An object representing a unidirectional dependency relationship, where one specific element (referred to as the `element`) relies on an array of other elements (referred to as the `dependsOn`) in a single direction."
1453
+ },
1454
+ "mutualDependency": {
1455
+ "type": "array",
1456
+ "minItems": 2,
1457
+ "items": {
1458
+ "$ref": "#/definitions/elementReference"
1459
+ },
1460
+ "description": "A specific instance of mutual dependency between two or more elements, indicating that each element depends on the others in a bidirectional manner."
1461
+ },
1462
+ "elementRequirementSet": {
1463
+ "type": "object",
1464
+ "properties": {
1465
+ "hostMustSupportFunctionalities": {
1466
+ "type": "array",
1467
+ "items": {
1468
+ "$ref": "#/definitions/hostFunctionality"
1469
+ },
1470
+ "minItems": 1
1471
+ }
1472
+ },
1473
+ "required": [
1474
+ "hostMustSupportFunctionalities"
1475
+ ],
1476
+ "additionalProperties": false,
1477
+ "description": "An object representing a set of requirements that the host must support for the element."
1478
+ },
1479
+ "hostFunctionality": {
1480
+ "type": "object",
1481
+ "properties": {
1482
+ "name": {
1483
+ "type": "string",
1484
+ "enum": [
1485
+ "dialogUrl",
1486
+ "dialogUrlBot",
1487
+ "dialogAdaptiveCard",
1488
+ "dialogAdaptiveCardBot"
1489
+ ],
1490
+ "description": "The name of the functionality."
1491
+ }
1492
+ },
1493
+ "required": [
1494
+ "name"
1495
+ ],
1496
+ "additionalProperties": false,
1497
+ "description": "An object representing a specific functionality that a host must support."
1498
+ },
1499
+ "elementExtensions": {
1500
+ "type": "array",
1501
+ "description": "The set of extensions for this app. Currently only one extensions per app is supported.",
1502
+ "maxItems": 1,
1503
+ "items": {
1504
+ "type": "object",
1505
+ "minProperties": 1,
1506
+ "properties": {
1507
+ "requirements": {
1508
+ "$ref": "#/definitions/requirementsExtensionElement"
1509
+ },
1510
+ "runtimes": {
1511
+ "$ref": "#/definitions/extensionRuntimesArray"
1512
+ },
1513
+ "ribbons": {
1514
+ "$ref": "#/definitions/extensionRibbonsArray"
1515
+ },
1516
+ "autoRunEvents": {
1517
+ "$ref": "#/definitions/extensionAutoRunEventsArray"
1518
+ },
1519
+ "alternates": {
1520
+ "$ref": "#/definitions/extensionAlternateVersionsArray"
1521
+ },
1522
+ "contentRuntimes": {
1523
+ "$ref": "#/definitions/extensionContentRuntimeArray"
1524
+ },
1525
+ "getStartedMessages": {
1526
+ "$ref": "#/definitions/extensionGetStartedMessageArray"
1527
+ },
1528
+ "contextMenus": {
1529
+ "$ref": "#/definitions/extensionContextMenuArray"
1530
+ },
1531
+ "keyboardShortcuts": {
1532
+ "type": "array",
1533
+ "items": {
1534
+ "$ref": "#/definitions/extensionKeyboardShortcut"
1535
+ },
1536
+ "minItems": 1,
1537
+ "maxItems": 10
1538
+ },
1539
+ "audienceClaimUrl": {
1540
+ "$ref": "#/definitions/httpsUrl",
1541
+ "description": "The url for your extension, used to validate Exchange user identity tokens."
1542
+ }
1543
+ },
1544
+ "additionalProperties": false
1545
+ },
1546
+ "additionalProperties": false
1547
+ },
1548
+ "requirementsExtensionElement": {
1549
+ "type": "object",
1550
+ "description": "Specifies limitations on which clients the add-in can be installed on, including limitations on the Office host application, the form factors, and the requirement sets that the client must support.",
1551
+ "minProperties": 1,
1552
+ "properties": {
1553
+ "capabilities": {
1554
+ "type": "array",
1555
+ "minItems": 1,
1556
+ "maxItems": 100,
1557
+ "items": {
1558
+ "type": "object",
1559
+ "properties": {
1560
+ "name": {
1561
+ "type": "string",
1562
+ "description": "Identifies the name of the requirement sets that the add-in needs to run.",
1563
+ "maxLength": 128
1564
+ },
1565
+ "minVersion": {
1566
+ "type": "string",
1567
+ "description": "Identifies the minimum version for the requirement sets that the add-in needs to run."
1568
+ },
1569
+ "maxVersion": {
1570
+ "type": "string",
1571
+ "description": "Identifies the maximum version for the requirement sets that the add-in needs to run."
1572
+ }
1573
+ },
1574
+ "additionalProperties": false,
1575
+ "required": [
1576
+ "name"
1577
+ ]
1578
+ }
1579
+ },
1580
+ "scopes": {
1581
+ "type": "array",
1582
+ "description": "Identifies the scopes in which the add-in can run. Supported values: 'mail', 'workbook', 'document', 'presentation'.",
1583
+ "minItems": 1,
1584
+ "maxItems": 4,
1585
+ "items": {
1586
+ "type": "string",
1587
+ "enum": [
1588
+ "mail",
1589
+ "workbook",
1590
+ "document",
1591
+ "presentation"
1592
+ ]
1593
+ }
1594
+ },
1595
+ "formFactors": {
1596
+ "type": "array",
1597
+ "description": "Identifies the form factors that support the add-in. Supported values: mobile, desktop.",
1598
+ "minItems": 1,
1599
+ "maxItems": 2,
1600
+ "items": {
1601
+ "type": "string",
1602
+ "enum": [
1603
+ "desktop",
1604
+ "mobile"
1605
+ ]
1606
+ }
1607
+ }
1608
+ },
1609
+ "additionalProperties": false
1610
+ },
1611
+ "extensionRuntimesArray": {
1612
+ "type": "array",
1613
+ "minItems": 1,
1614
+ "maxItems": 20,
1615
+ "items": {
1616
+ "type": "object",
1617
+ "description": "A runtime environment for a page or script",
1618
+ "properties": {
1619
+ "requirements": {
1620
+ "$ref": "#/definitions/requirementsExtensionElement"
1621
+ },
1622
+ "id": {
1623
+ "type": "string",
1624
+ "description": "A unique identifier for this runtime within the app. Maximum length is 64 characters.",
1625
+ "maxLength": 64
1626
+ },
1627
+ "type": {
1628
+ "type": "string",
1629
+ "enum": [
1630
+ "general"
1631
+ ],
1632
+ "default": "general",
1633
+ "description": "Supports running functions and launching pages."
1634
+ },
1635
+ "code": {
1636
+ "$ref": "#/definitions/extensionRuntimeCode"
1637
+ },
1638
+ "lifetime": {
1639
+ "type": "string",
1640
+ "default": "short",
1641
+ "enum": [
1642
+ "short",
1643
+ "long"
1644
+ ],
1645
+ "description": "Runtimes with a short lifetime do not preserve state across executions. Runtimes with a long lifetime do."
1646
+ },
1647
+ "actions": {
1648
+ "$ref": "#/definitions/extensionRuntimesActions"
1649
+ },
1650
+ "customFunctions": {
1651
+ "$ref": "#/definitions/extensionCustomFunctions"
1652
+ }
1653
+ },
1654
+ "additionalProperties": false,
1655
+ "required": [
1656
+ "id",
1657
+ "code"
1658
+ ]
1659
+ }
1660
+ },
1661
+ "extensionCustomFunctions": {
1662
+ "type": "object",
1663
+ "description": "Custom function enable developers to add new functions to Excel by defining those functions in JavaScript as part of an add-in. Users within Excel can access custom functions just as they would any native function in Excel, such as SUM().",
1664
+ "properties": {
1665
+ "functions": {
1666
+ "description": "Array of function object which defines function metadata.",
1667
+ "items": {
1668
+ "$ref": "#/definitions/extensionFunction"
1669
+ },
1670
+ "maxItems": 20000,
1671
+ "minItems": 1,
1672
+ "type": "array"
1673
+ },
1674
+ "namespace": {
1675
+ "$ref": "#/definitions/extensionCustomFunctionsNamespace"
1676
+ },
1677
+ "allowCustomDataForDataTypeAny": {
1678
+ "type": "boolean",
1679
+ "description": "Allows a custom function to accept Excel data types as parameters and return values.",
1680
+ "default": false
1681
+ },
1682
+ "metadataUrl": {
1683
+ "$ref": "#/definitions/httpsUrl",
1684
+ "description": "The full URL of a metadata json file with default locale."
1685
+ }
1686
+ },
1687
+ "additionalProperties": false
1688
+ },
1689
+ "extensionCustomFunctionsNamespace": {
1690
+ "type": "object",
1691
+ "description": "Defines the namespace for your custom functions. A namespace prepends itself to your custom functions to help customers identify your functions as part of your add-in.",
1692
+ "properties": {
1693
+ "id": {
1694
+ "type": "string",
1695
+ "description": "Non-localizable version of the namespace.",
1696
+ "pattern": "^[A-Za-z][A-Za-z0-9._]*$",
1697
+ "minLength": 1,
1698
+ "maxLength": 32
1699
+ },
1700
+ "name": {
1701
+ "type": "string",
1702
+ "description": "Localizable version of the namespace.",
1703
+ "pattern": "^[A-Za-z][A-Za-z0-9._]*$",
1704
+ "minLength": 1,
1705
+ "maxLength": 32
1706
+ }
1707
+ },
1708
+ "required": [
1709
+ "id",
1710
+ "name"
1711
+ ]
1712
+ },
1713
+ "extensionFunction": {
1714
+ "type": "object",
1715
+ "properties": {
1716
+ "id": {
1717
+ "type": "string",
1718
+ "description": "A unique ID for the function.",
1719
+ "pattern": "^[a-zA-Z][a-zA-Z0-9._]*$",
1720
+ "minLength": 3,
1721
+ "maxLength": 64
1722
+ },
1723
+ "name": {
1724
+ "type": "string",
1725
+ "description": "The name of the function that end users see in Excel. In Excel, this function name is prefixed by the custom functions namespace that's specified in the manifest file.",
1726
+ "pattern": "^[\\p{L}][\\p{L}0-9._]*$",
1727
+ "minLength": 3,
1728
+ "maxLength": 64
1729
+ },
1730
+ "description": {
1731
+ "type": "string",
1732
+ "description": "The description of the function that end users see in Excel.",
1733
+ "minLength": 1,
1734
+ "maxLength": 128
1735
+ },
1736
+ "helpUrl": {
1737
+ "type": "string",
1738
+ "description": "URL that provides information about the function. (It is displayed in a task pane.)",
1739
+ "format": "uri",
1740
+ "minLength": 1,
1741
+ "maxLength": 2048
1742
+ },
1743
+ "parameters": {
1744
+ "type": "array",
1745
+ "description": "Array that defines the input parameters for the function.",
1746
+ "items": {
1747
+ "$ref": "#/definitions/extensionFunctionParameter"
1748
+ },
1749
+ "minItems": 0,
1750
+ "maxItems": 128
1751
+ },
1752
+ "result": {
1753
+ "$ref": "#/definitions/extensionResult"
1754
+ },
1755
+ "stream": {
1756
+ "type": "boolean",
1757
+ "description": "If true, the function can output repeatedly to the cell even when invoked only once. This option is useful for rapidly-changing data sources, such as a stock price. The function should have no return statement. Instead, the result value is passed as the argument of the StreamingInvocation.setResult callback function.",
1758
+ "default": false
1759
+ },
1760
+ "volatile": {
1761
+ "type": "boolean",
1762
+ "description": "If true, the function recalculates each time Excel recalculates, instead of only when the formula's dependent values have changed. A function can't use both the stream and volatile properties. If the stream and volatile properties are both set to true, the volatile property will be ignored.",
1763
+ "default": false
1764
+ },
1765
+ "cancelable": {
1766
+ "type": "boolean",
1767
+ "description": "If true, Excel calls the CancelableInvocation handler whenever the user takes an action that has the effect of canceling the function; for example, manually triggering recalculation or editing a cell that is referenced by the function. Cancelable functions are typically only used for asynchronous functions that return a single result and need to handle the cancellation of a request for data. A function can't use both the stream and cancelable properties.",
1768
+ "default": false
1769
+ },
1770
+ "requiresAddress": {
1771
+ "type": "boolean",
1772
+ "description": "If true, your custom function can access the address of the cell that invoked it. The address property of the invocation parameter contains the address of the cell that invoked your custom function. A function can't use both the stream and requiresAddress properties.",
1773
+ "default": false
1774
+ },
1775
+ "requiresParameterAddress": {
1776
+ "type": "boolean",
1777
+ "description": "If true, your custom function can access the addresses of the function's input parameters. This property must be used in combination with the dimensionality property of the result object, and dimensionality must be set to matrix.",
1778
+ "default": false
1779
+ }
1780
+ },
1781
+ "required": [
1782
+ "id",
1783
+ "name",
1784
+ "parameters",
1785
+ "result"
1786
+ ]
1787
+ },
1788
+ "extensionFunctionParameter": {
1789
+ "type": "object",
1790
+ "properties": {
1791
+ "name": {
1792
+ "type": "string",
1793
+ "description": "The name of the parameter. This name is displayed in Excel's IntelliSense.",
1794
+ "minLength": 1,
1795
+ "maxLength": 64
1796
+ },
1797
+ "description": {
1798
+ "type": "string",
1799
+ "description": "A description of the parameter. This is displayed in Excel's IntelliSense.",
1800
+ "minLength": 1,
1801
+ "maxLength": 128
1802
+ },
1803
+ "type": {
1804
+ "type": "string",
1805
+ "minLength": 1,
1806
+ "maxLength": 128,
1807
+ "description": "The data type of the parameter. It can only be 'boolean', 'number', 'string', 'any', 'CustomFunctions.Invocation', 'CustomFunctions.StreamingInvocation' or 'CustomFunctions.CancelableInvocation', 'any' allows you to use any of other types.",
1808
+ "default": "any"
1809
+ },
1810
+ "cellValueType": {
1811
+ "type": "string",
1812
+ "enum": [
1813
+ "cellvalue",
1814
+ "booleancellvalue",
1815
+ "doublecellvalue",
1816
+ "entitycellvalue",
1817
+ "errorcellvalue",
1818
+ "formattednumbercellvalue",
1819
+ "linkedentitycellvalue",
1820
+ "localimagecellvalue",
1821
+ "stringcellvalue",
1822
+ "webimagecellvalue",
1823
+ null
1824
+ ],
1825
+ "description": "A subfield of the type property. Specifies the Excel data types accepted by the custom function. Accepts the values 'cellvalue', 'booleancellvalue', 'doublecellvalue', 'entitycellvalue', 'errorcellvalue', 'formattednumbercellvalue', 'linkedentitycellvalue', 'localimagecellvalue', 'stringcellvalue', 'webimagecellvalue'"
1826
+ },
1827
+ "dimensionality": {
1828
+ "type": "string",
1829
+ "enum": [
1830
+ "scalar",
1831
+ "matrix"
1832
+ ],
1833
+ "default": "scalar",
1834
+ "description": "Must be either scalar (a non-array value) or matrix (a 2-dimensional array)."
1835
+ },
1836
+ "optional": {
1837
+ "type": [ "boolean", "null" ],
1838
+ "description": "If true, the parameter is optional."
1839
+ },
1840
+ "repeating": {
1841
+ "type": "boolean",
1842
+ "default": false,
1843
+ "description": "If true, parameters populate from a specified array. Note that functions all repeating parameters are considered optional parameters by definition."
1844
+ }
1845
+ },
1846
+ "required": [ "name" ]
1847
+ },
1848
+ "extensionResult": {
1849
+ "type": "object",
1850
+ "description": "Object that defines the type of information that is returned by the function.",
1851
+ "properties": {
1852
+ "dimensionality": {
1853
+ "type": "string",
1854
+ "enum": [
1855
+ "scalar",
1856
+ "matrix"
1857
+ ],
1858
+ "default": "scalar",
1859
+ "description": "Must be either scalar (a non-array value) or matrix (a 2-dimensional array). Default: scalar."
1860
+ }
1861
+ }
1862
+ },
1863
+ "extensionRuntimesActions": {
1864
+ "type": "array",
1865
+ "description": "Specifies the set of actions supported by this runtime. An action is either running a JavaScript function or opening a view such as a task pane.",
1866
+ "minItems": 1,
1867
+ "maxItems": 150,
1868
+ "items": {
1869
+ "$ref": "#/definitions/extensionRuntimesActionsItem"
1870
+ },
1871
+ "additionalProperties": false
1872
+ },
1873
+ "extensionRuntimesActionsItem": {
1874
+ "type": "object",
1875
+ "properties": {
1876
+ "id": {
1877
+ "type": "string",
1878
+ "description": "Identifier for this action. Maximum length is 64 characters. This value is passed to the code file.",
1879
+ "maxLength": 64
1880
+ },
1881
+ "type": {
1882
+ "type": "string",
1883
+ "enum": [
1884
+ "executeFunction",
1885
+ "openPage",
1886
+ "executeDataFunction"
1887
+ ],
1888
+ "description": "executeFunction: Run a script function without waiting for it to finish. openPage: Open a page in a view. executeDataFunction: invoke command and retrieve data."
1889
+ },
1890
+ "displayName": {
1891
+ "type": "string",
1892
+ "description": "Display name of the action. Maximum length is 64 characters.",
1893
+ "maxLength": 64
1894
+ },
1895
+ "pinnable": {
1896
+ "type": "boolean",
1897
+ "description": "Specifies that a task pane supports pinning, which keeps the task pane open when the user changes the selection."
1898
+ },
1899
+ "view": {
1900
+ "type": "string",
1901
+ "description": "View where the page should be opened. Maximum length is 64 characters. ",
1902
+ "maxLength": 64
1903
+ },
1904
+ "multiselect": {
1905
+ "type": "boolean",
1906
+ "description": "Whether allows the action to have multiple selection.",
1907
+ "default": false
1908
+ },
1909
+ "supportsNoItemContext": {
1910
+ "type": "boolean",
1911
+ "description": "Whether allows task pane add-ins to activate without the Reading Pane enabled or a message selected. ",
1912
+ "default": false
1913
+ }
1914
+ },
1915
+ "additionalProperties": false,
1916
+ "required": [
1917
+ "id",
1918
+ "type"
1919
+ ]
1920
+ },
1921
+ "extensionRibbonsArray": {
1922
+ "type": "array",
1923
+ "minItems": 1,
1924
+ "maxItems": 20,
1925
+ "items": {
1926
+ "type": "object",
1927
+ "properties": {
1928
+ "requirements": {
1929
+ "$ref": "#/definitions/requirementsExtensionElement"
1930
+ },
1931
+ "contexts": {
1932
+ "$ref": "#/definitions/extensionContexts"
1933
+ },
1934
+ "tabs": {
1935
+ "type": "array",
1936
+ "maxItems": 20,
1937
+ "items": {
1938
+ "$ref": "#/definitions/extensionRibbonsArrayTabsItem"
1939
+ }
1940
+ },
1941
+ "fixedControls": {
1942
+ "type": "array",
1943
+ "items": {
1944
+ "$ref": "#/definitions/extensionRibbonsArrayFixedControlItem"
1945
+ },
1946
+ "minItems": 1,
1947
+ "maxItems": 1
1948
+ },
1949
+ "spamPreProcessingDialog": {
1950
+ "$ref": "#/definitions/extensionRibbonsSpamPreProcessingDialog"
1951
+ }
1952
+ },
1953
+ "additionalProperties": false,
1954
+ "required": [
1955
+ "tabs"
1956
+ ]
1957
+ }
1958
+ },
1959
+ "extensionContexts": {
1960
+ "type": "array",
1961
+ "description": "Specifies the Office application windows in which the ribbon customization is available to the user. Each item in the array is a member of a string array. Possible values are: mailRead, mailCompose, meetingDetailsOrganizer, meetingDetailsAttendee, onlineMeetingDetailsOrganizer, logEventMeetingDetailsAttendee, spamReportingOverride.",
1962
+ "minItems": 1,
1963
+ "maxItems": 8,
1964
+ "items": {
1965
+ "type": "string",
1966
+ "enum": [
1967
+ "mailRead",
1968
+ "mailCompose",
1969
+ "meetingDetailsOrganizer",
1970
+ "meetingDetailsAttendee",
1971
+ "onlineMeetingDetailsOrganizer",
1972
+ "logEventMeetingDetailsAttendee",
1973
+ "default",
1974
+ "spamReportingOverride"
1975
+ ]
1976
+ }
1977
+ },
1978
+ "extensionRibbonsArrayTabsItem": {
1979
+ "type": "object",
1980
+ "minProperties": 1,
1981
+ "properties": {
1982
+ "id": {
1983
+ "type": "string",
1984
+ "description": "A unique identifier for this tab within the app. Maximum length is 64 characters. ",
1985
+ "maxLength": 64
1986
+ },
1987
+ "label": {
1988
+ "type": "string",
1989
+ "description": "Displayed text for the tab. Maximum length is 64 characters.",
1990
+ "maxLength": 64
1991
+ },
1992
+ "position": {
1993
+ "type": "object",
1994
+ "properties": {
1995
+ "builtInTabId": {
1996
+ "type": "string",
1997
+ "description": "The id of the built-in tab. Maximum length is 64 characters.",
1998
+ "maxLength": 64
1999
+ },
2000
+ "align": {
2001
+ "type": "string",
2002
+ "description": "Define alignment of this custom tab relative to the specified built-in tab.",
2003
+ "enum": [
2004
+ "after",
2005
+ "before"
2006
+ ]
2007
+ }
2008
+ },
2009
+ "additionalProperties": false,
2010
+ "required": [
2011
+ "builtInTabId",
2012
+ "align"
2013
+ ]
2014
+ },
2015
+ "builtInTabId": {
2016
+ "type": "string",
2017
+ "description": "Id of the existing office Tab. Maximum length is 64 characters.",
2018
+ "maxLength": 64
2019
+ },
2020
+ "groups": {
2021
+ "type": "array",
2022
+ "minItems": 1,
2023
+ "maxItems": 10,
2024
+ "description": "Defines tab groups.",
2025
+ "items": {
2026
+ "$ref": "#/definitions/extensionRibbonsCustomTabGroupsItem"
2027
+ }
2028
+ },
2029
+ "customMobileRibbonGroups": {
2030
+ "type": "array",
2031
+ "minItems": 1,
2032
+ "maxItems": 10,
2033
+ "description": "Defines mobile group item.",
2034
+ "items": {
2035
+ "$ref": "#/definitions/extensionRibbonsCustomMobileGroupItem"
2036
+ }
2037
+ }
2038
+ },
2039
+ "dependencies": {
2040
+ "builtInTabId": {
2041
+ "properties": {
2042
+ "groups": {
2043
+ "type": "array",
2044
+ "maxItems": 10,
2045
+ "items": {
2046
+ "$ref": "#/definitions/extensionCommonCustomGroup"
2047
+ }
2048
+ }
2049
+ },
2050
+ "required": [
2051
+ "builtInTabId"
2052
+ ]
2053
+ },
2054
+ "id": {
2055
+ "anyOf": [
2056
+ {
2057
+ "required": [
2058
+ "id",
2059
+ "label",
2060
+ "groups"
2061
+ ]
2062
+ },
2063
+ {
2064
+ "required": [
2065
+ "id",
2066
+ "label",
2067
+ "customMobileRibbonGroups"
2068
+ ]
2069
+ }
2070
+ ]
2071
+ }
2072
+ },
2073
+ "additionalProperties": false
2074
+ },
2075
+ "extensionRibbonsCustomTabGroupsItem": {
2076
+ "type": "object",
2077
+ "properties": {
2078
+ "id": {
2079
+ "type": "string",
2080
+ "description": "A unique identifier for this group within the app. Maximum length is 64 characters. ",
2081
+ "maxLength": 64
2082
+ },
2083
+ "label": {
2084
+ "type": "string",
2085
+ "description": "Displayed text for the group. Maximum length is 64 characters.",
2086
+ "maxLength": 64
2087
+ },
2088
+ "icons": {
2089
+ "type": "array",
2090
+ "minItems": 1,
2091
+ "maxItems": 3,
2092
+ "items": {
2093
+ "$ref": "#/definitions/extensionCommonIcon"
2094
+ }
2095
+ },
2096
+ "controls": {
2097
+ "type": "array",
2098
+ "items": {
2099
+ "$ref": "#/definitions/extensionCommonCustomGroupControlsItem"
2100
+ },
2101
+ "minItems": 1,
2102
+ "maxItems": 20
2103
+ },
2104
+ "builtInGroupId": {
2105
+ "type": "string",
2106
+ "description": "Id of a built-in Group. Maximum length is 64 characters.",
2107
+ "maxLength": 64
2108
+ },
2109
+ "overriddenByRibbonApi": {
2110
+ "type": "boolean",
2111
+ "description": "Specifies whether a group will be hidden on application and platform combinations that support the API (Office.ribbon.requestCreateControls) that installs custom contextual tabs on the ribbon. Default is false.",
2112
+ "default": "false"
2113
+ }
2114
+ },
2115
+ "additionalProperties": false
2116
+ },
2117
+ "extensionCommonCustomGroup": {
2118
+ "type": "object",
2119
+ "properties": {
2120
+ "id": {
2121
+ "type": "string",
2122
+ "description": "A unique identifier for this group within the app. Maximum length is 64 characters. ",
2123
+ "maxLength": 64
2124
+ },
2125
+ "label": {
2126
+ "type": "string",
2127
+ "description": "Displayed text for the group. Maximum length is 64 characters.",
2128
+ "maxLength": 64
2129
+ },
2130
+ "icons": {
2131
+ "type": "array",
2132
+ "description": "Displayed icons for the group.",
2133
+ "minItems": 1,
2134
+ "maxItems": 3,
2135
+ "items": {
2136
+ "$ref": "#/definitions/extensionCommonIcon"
2137
+ }
2138
+ },
2139
+ "controls": {
2140
+ "type": "array",
2141
+ "description": "Configures the buttons and menus in the group.",
2142
+ "items": {
2143
+ "$ref": "#/definitions/extensionCommonCustomGroupControlsItem"
2144
+ },
2145
+ "minItems": 1,
2146
+ "maxItems": 20
2147
+ }
2148
+ },
2149
+ "required": [
2150
+ "id",
2151
+ "label",
2152
+ "controls"
2153
+ ],
2154
+ "additionalProperties": false
2155
+ },
2156
+ "extensionCommonCustomGroupControlsItem": {
2157
+ "type": "object",
2158
+ "additionalProperties": false,
2159
+ "properties": {
2160
+ "id": {
2161
+ "type": "string",
2162
+ "description": "A unique identifier for this control within the app. Maximum length is 64 characters. ",
2163
+ "maxLength": 64
2164
+ },
2165
+ "type": {
2166
+ "type": "string",
2167
+ "description": "Defines the type of control whether button or menu.",
2168
+ "enum": [
2169
+ "button",
2170
+ "menu"
2171
+ ]
2172
+ },
2173
+ "builtInControlId": {
2174
+ "type": "string",
2175
+ "description": "Id of an existing office control. Maximum length is 64 characters.",
2176
+ "maxLength": 64
2177
+ },
2178
+ "label": {
2179
+ "type": "string",
2180
+ "description": "Displayed text for the control. Maximum length is 64 characters.",
2181
+ "maxLength": 64
2182
+ },
2183
+ "icons": {
2184
+ "type": "array",
2185
+ "description": "Configures the icons for the custom control.",
2186
+ "minItems": 1,
2187
+ "maxItems": 3,
2188
+ "items": {
2189
+ "$ref": "#/definitions/extensionCommonIcon"
2190
+ }
2191
+ },
2192
+ "supertip": {
2193
+ "$ref": "#/definitions/extensionCommonSuperToolTip"
2194
+ },
2195
+ "actionId": {
2196
+ "type": "string",
2197
+ "description": "The ID of an execution-type action that handles this key combination. Maximum length is 64 characters.",
2198
+ "maxLength": 64
2199
+ },
2200
+ "overriddenByRibbonApi": {
2201
+ "type": "boolean",
2202
+ "description": "Specifies whether a group, button, menu, or menu item will be hidden on application and platform combinations that support the API (Office.ribbon.requestCreateControls) that installs custom contextual tabs on the ribbon. Default is false.",
2203
+ "default": "false"
2204
+ },
2205
+ "enabled": {
2206
+ "type": "boolean",
2207
+ "description": "Whether the control is initially enabled.",
2208
+ "default": true
2209
+ },
2210
+ "items": {
2211
+ "type": "array",
2212
+ "description": "Configures the items for a menu control.",
2213
+ "minItems": 1,
2214
+ "maxItems": 30,
2215
+ "items": {
2216
+ "$ref": "#/definitions/extensionCommonCustomControlMenuItem"
2217
+ }
2218
+ }
2219
+ },
2220
+ "required": [
2221
+ "id",
2222
+ "type",
2223
+ "label",
2224
+ "icons",
2225
+ "supertip"
2226
+ ]
2227
+ },
2228
+ "extensionRibbonsCustomMobileGroupItem": {
2229
+ "type": "object",
2230
+ "properties": {
2231
+ "id": {
2232
+ "type": "string",
2233
+ "description": "Specify the Id of the group. Used for mobileMessageRead ext point.",
2234
+ "maxLength": 250
2235
+ },
2236
+ "label": {
2237
+ "type": "string",
2238
+ "description": "Short label of the control. Maximum length is 32 characters.",
2239
+ "maxLength": 32
2240
+ },
2241
+ "controls": {
2242
+ "type": "array",
2243
+ "minItems": 1,
2244
+ "maxItems": 20,
2245
+ "items": {
2246
+ "$ref": "#/definitions/extensionRibbonsCustomMobileControlButtonItem"
2247
+ }
2248
+ }
2249
+ },
2250
+ "required": [
2251
+ "id",
2252
+ "label",
2253
+ "controls"
2254
+ ]
2255
+ },
2256
+ "extensionCommonCustomControlMenuItem": {
2257
+ "type": "object",
2258
+ "properties": {
2259
+ "id": {
2260
+ "type": "string",
2261
+ "description": "A unique identifier for this control within the app. Maximum length is 64 characters. ",
2262
+ "maxLength": 64
2263
+ },
2264
+ "type": {
2265
+ "type": "string",
2266
+ "description": "Supported values: menuItem.",
2267
+ "enum": [
2268
+ "menuItem"
2269
+ ]
2270
+ },
2271
+ "label": {
2272
+ "type": "string",
2273
+ "description": "Displayed text for the control. Maximum length is 64 characters.",
2274
+ "maxLength": 64
2275
+ },
2276
+ "icons": {
2277
+ "type": "array",
2278
+ "minItems": 1,
2279
+ "maxItems": 3,
2280
+ "items": {
2281
+ "$ref": "#/definitions/extensionCommonIcon"
2282
+ }
2283
+ },
2284
+ "supertip": {
2285
+ "$ref": "#/definitions/extensionCommonSuperToolTip"
2286
+ },
2287
+ "actionId": {
2288
+ "type": "string",
2289
+ "description": "The ID of an action defined in runtimes. Maximum length is 64 characters.",
2290
+ "maxLength": 64
2291
+ },
2292
+ "enabled": {
2293
+ "type": "boolean",
2294
+ "description": "Whether the control is initially enabled.",
2295
+ "default": true
2296
+ },
2297
+ "overriddenByRibbonApi": {
2298
+ "type": "boolean",
2299
+ "default": "false"
2300
+ }
2301
+ },
2302
+ "additionalProperties": false,
2303
+ "required": [
2304
+ "id",
2305
+ "type",
2306
+ "label",
2307
+ "supertip",
2308
+ "actionId"
2309
+ ]
2310
+ },
2311
+ "extensionRibbonsCustomMobileControlButtonItem": {
2312
+ "type": "object",
2313
+ "properties": {
2314
+ "id": {
2315
+ "type": "string",
2316
+ "description": "Specify the Id of the button like msgReadFunctionButton.",
2317
+ "maxLength": 250
2318
+ },
2319
+ "type": {
2320
+ "type": "string",
2321
+ "enum": [
2322
+ "mobileButton"
2323
+ ]
2324
+ },
2325
+ "label": {
2326
+ "type": "string",
2327
+ "description": "Short label of the control. Maximum length is 32 characters.",
2328
+ "maxLength": 32
2329
+ },
2330
+ "icons": {
2331
+ "type": "array",
2332
+ "items": {
2333
+ "$ref": "#/definitions/extensionCustomMobileIcon"
2334
+ },
2335
+ "minItems": 9,
2336
+ "maxItems": 9
2337
+ },
2338
+ "actionId": {
2339
+ "type": "string",
2340
+ "description": "The ID of an action defined in runtimes. Maximum length is 64 characters.",
2341
+ "maxLength": 64
2342
+ }
2343
+ },
2344
+ "required": [
2345
+ "id",
2346
+ "type",
2347
+ "label",
2348
+ "icons",
2349
+ "actionId"
2350
+ ]
2351
+ },
2352
+ "extensionCustomMobileIcon": {
2353
+ "type": "object",
2354
+ "properties": {
2355
+ "size": {
2356
+ "type": "number",
2357
+ "description": "Size in pixels of the icon. Three image sizes are required (25, 32, and 48 pixels).",
2358
+ "enum": [
2359
+ 25,
2360
+ 32,
2361
+ 48
2362
+ ]
2363
+ },
2364
+ "url": {
2365
+ "$ref": "#/definitions/httpsUrl",
2366
+ "description": "Url to the icon."
2367
+ },
2368
+ "scale": {
2369
+ "type": "number",
2370
+ "description": "How to scale - 1,2,3 for each image. This attribute specifies the UIScreen.scale property for iOS devices.",
2371
+ "enum": [
2372
+ 1,
2373
+ 2,
2374
+ 3
2375
+ ]
2376
+ }
2377
+ },
2378
+ "additionalProperties": false,
2379
+ "required": [
2380
+ "size",
2381
+ "url",
2382
+ "scale"
2383
+ ]
2384
+ },
2385
+ "extensionCommonSuperToolTip": {
2386
+ "type": "object",
2387
+ "properties": {
2388
+ "title": {
2389
+ "type": "string",
2390
+ "description": "Title text of the super tip. Maximum length is 64 characters.",
2391
+ "maxLength": 64
2392
+ },
2393
+ "description": {
2394
+ "type": "string",
2395
+ "description": "Description of the super tip. Maximum length is 250 characters.",
2396
+ "maxLength": 250
2397
+ }
2398
+ },
2399
+ "additionalProperties": false,
2400
+ "required": [
2401
+ "title",
2402
+ "description"
2403
+ ]
2404
+ },
2405
+ "extensionCommonIcon": {
2406
+ "type": "object",
2407
+ "properties": {
2408
+ "size": {
2409
+ "type": "number",
2410
+ "description": "Size in pixels of the icon. Three image sizes are required (16, 32, and 80 pixels)",
2411
+ "enum": [
2412
+ 16,
2413
+ 20,
2414
+ 24,
2415
+ 32,
2416
+ 40,
2417
+ 48,
2418
+ 64,
2419
+ 80
2420
+ ]
2421
+ },
2422
+ "url": {
2423
+ "$ref": "#/definitions/httpsUrl",
2424
+ "description": "Absolute Url to the icon."
2425
+ }
2426
+ },
2427
+ "additionalProperties": false,
2428
+ "required": [
2429
+ "size",
2430
+ "url"
2431
+ ]
2432
+ },
2433
+ "extensionAutoRunEventsArray": {
2434
+ "type": "array",
2435
+ "minItems": 1,
2436
+ "maxItems": 10,
2437
+ "items": {
2438
+ "type": "object",
2439
+ "properties": {
2440
+ "requirements": {
2441
+ "$ref": "#/definitions/requirementsExtensionElement"
2442
+ },
2443
+ "events": {
2444
+ "type": "array",
2445
+ "maxItems": 20,
2446
+ "description": "Specifies the type of event. For supported types, please see: https://learn.microsoft.com/en-us/office/dev/add-ins/outlook/autolaunch?tabs=xmlmanifest#supported-events.",
2447
+ "items": {
2448
+ "type": "object",
2449
+ "properties": {
2450
+ "type": {
2451
+ "type": "string",
2452
+ "maxLength": 64
2453
+ },
2454
+ "actionId": {
2455
+ "type": "string",
2456
+ "description": "The ID of an action defined in runtimes. Maximum length is 64 characters.",
2457
+ "maxLength": 64
2458
+ },
2459
+ "options": {
2460
+ "type": "object",
2461
+ "description": "Configures how Outlook responds to the event.",
2462
+ "properties": {
2463
+ "sendMode": {
2464
+ "type": "string",
2465
+ "enum": [
2466
+ "promptUser",
2467
+ "softBlock",
2468
+ "block"
2469
+ ]
2470
+ }
2471
+ },
2472
+ "additionalProperties": false,
2473
+ "required": [
2474
+ "sendMode"
2475
+ ]
2476
+ }
2477
+ },
2478
+ "additionalProperties": false,
2479
+ "required": [
2480
+ "type",
2481
+ "actionId"
2482
+ ]
2483
+ }
2484
+ }
2485
+ },
2486
+ "additionalProperties": false,
2487
+ "required": [
2488
+ "events"
2489
+ ]
2490
+ }
2491
+ },
2492
+ "extensionAlternateVersionsArray": {
2493
+ "type": "array",
2494
+ "minItems": 1,
2495
+ "maxItems": 10,
2496
+ "items": {
2497
+ "type": "object",
2498
+ "properties": {
2499
+ "requirements": {
2500
+ "$ref": "#/definitions/requirementsExtensionElement"
2501
+ },
2502
+ "prefer": {
2503
+ "type": "object",
2504
+ "properties": {
2505
+ "comAddin": {
2506
+ "type": "object",
2507
+ "properties": {
2508
+ "progId": {
2509
+ "type": "string",
2510
+ "description": "Program ID of the alternate com extension. Maximum length is 64 characters.",
2511
+ "maxLength": 64
2512
+ }
2513
+ },
2514
+ "additionalProperties": false,
2515
+ "required": [
2516
+ "progId"
2517
+ ]
2518
+ },
2519
+ "xllCustomFunctions": {
2520
+ "$ref": "#/definitions/extensionXllCustomFunctions"
2521
+ }
2522
+ },
2523
+ "minProperties": 1
2524
+ },
2525
+ "hide": {
2526
+ "type": "object",
2527
+ "properties": {
2528
+ "storeOfficeAddin": {
2529
+ "type": "object",
2530
+ "properties": {
2531
+ "officeAddinId": {
2532
+ "type": "string",
2533
+ "description": "Solution ID of an in-market add-in to hide. Maximum length is 64 characters.",
2534
+ "maxLength": 64
2535
+ },
2536
+ "assetId": {
2537
+ "type": "string",
2538
+ "description": "Asset ID of the in-market add-in to hide. Maximum length is 64 characters.",
2539
+ "maxLength": 64
2540
+ }
2541
+ },
2542
+ "additionalProperties": false,
2543
+ "required": [
2544
+ "officeAddinId",
2545
+ "assetId"
2546
+ ]
2547
+ },
2548
+ "customOfficeAddin": {
2549
+ "type": "object",
2550
+ "properties": {
2551
+ "officeAddinId": {
2552
+ "type": "string",
2553
+ "description": "Solution ID of the in-market add-in to hide. Maximum length is 64 characters.",
2554
+ "maxLength": 64
2555
+ }
2556
+ },
2557
+ "additionalProperties": false,
2558
+ "required": [
2559
+ "officeAddinId"
2560
+ ]
2561
+ },
2562
+ "windowsExtensions": {
2563
+ "type": "object",
2564
+ "description": "Configures how to hide windows native extensions",
2565
+ "properties": {
2566
+ "effect": {
2567
+ "type": "string",
2568
+ "description": "Specifies the effect to take while installing the web add-in if the equivalent add-in is installed.",
2569
+ "enum": [
2570
+ "userOptionToDisable",
2571
+ "disableWithNotification"
2572
+ ]
2573
+ },
2574
+ "comAddin": {
2575
+ "type": "object",
2576
+ "description": "Specifies the equivalent COM add-ins",
2577
+ "properties": {
2578
+ "progIds": {
2579
+ "type": "array",
2580
+ "description": "Specifies the program Ids of the equivalent COM add-ins",
2581
+ "minItems": 1,
2582
+ "maxItems": 5,
2583
+ "items": {
2584
+ "type": "string",
2585
+ "minLength": 1,
2586
+ "maxLength": 64
2587
+ }
2588
+ }
2589
+ },
2590
+ "additionalProperties": false,
2591
+ "required": [
2592
+ "progIds"
2593
+ ]
2594
+ },
2595
+ "automationAddin": {
2596
+ "type": "object",
2597
+ "description": "Specifies the equivalent automation add-ins",
2598
+ "properties": {
2599
+ "progIds": {
2600
+ "type": "array",
2601
+ "description": "Specifies the program Ids of the equivalent automation add-ins",
2602
+ "minItems": 1,
2603
+ "maxItems": 5,
2604
+ "items": {
2605
+ "type": "string",
2606
+ "minLength": 1,
2607
+ "maxLength": 64
2608
+ }
2609
+ }
2610
+ },
2611
+ "additionalProperties": false,
2612
+ "required": [
2613
+ "progIds"
2614
+ ]
2615
+ },
2616
+ "xllCustomFunctions": {
2617
+ "type": "object",
2618
+ "description": "Specifies the XLL-based add-ins custom function",
2619
+ "properties": {
2620
+ "fileNames": {
2621
+ "type": "array",
2622
+ "description": "Specifies the file names of the XLL-based add-ins custom function",
2623
+ "minItems": 1,
2624
+ "maxItems": 5,
2625
+ "items": {
2626
+ "type": "string",
2627
+ "minLength": 1,
2628
+ "maxLength": 64
2629
+ }
2630
+ }
2631
+ },
2632
+ "additionalProperties": false,
2633
+ "required": [
2634
+ "fileNames"
2635
+ ]
2636
+ }
2637
+ },
2638
+ "additionalProperties": false,
2639
+ "anyOf": [
2640
+ {
2641
+ "required": [
2642
+ "effect",
2643
+ "comAddin"
2644
+ ]
2645
+ },
2646
+ {
2647
+ "required": [
2648
+ "effect",
2649
+ "automationAddin"
2650
+ ]
2651
+ },
2652
+ {
2653
+ "required": [
2654
+ "effect",
2655
+ "xllCustomFunctions"
2656
+ ]
2657
+ }
2658
+ ]
2659
+ }
2660
+ },
2661
+ "minProperties": 1
2662
+ },
2663
+ "alternateIcons": {
2664
+ "type": "object",
2665
+ "additionalProperties": false,
2666
+ "properties": {
2667
+ "icon": {
2668
+ "$ref": "#/definitions/extensionCommonIcon"
2669
+ },
2670
+ "highResolutionIcon": {
2671
+ "$ref": "#/definitions/extensionCommonIcon"
2672
+ }
2673
+ },
2674
+ "required": [
2675
+ "icon",
2676
+ "highResolutionIcon"
2677
+ ]
2678
+ }
2679
+ },
2680
+ "minProperties": 1,
2681
+ "additionalProperties": false
2682
+ }
2683
+ },
2684
+ "extensionXllCustomFunctions": {
2685
+ "type": "object",
2686
+ "properties": {
2687
+ "fileName": {
2688
+ "type": "string",
2689
+ "description": "File name for the XLL extension. Maximum length is 254 characters.",
2690
+ "pattern": "^(?!.*[\\r\\n\\f\\b\\v\\a\\t])[\\S]*\\.xll$",
2691
+ "minLength": 4,
2692
+ "maxLength": 254
2693
+ }
2694
+ }
2695
+ },
2696
+ "extensionKeyboardShortcut": {
2697
+ "type": "object",
2698
+ "properties": {
2699
+ "requirements": {
2700
+ "description": "Specifies the Office requirement sets.",
2701
+ "$ref": "#/definitions/requirementsExtensionElement"
2702
+ },
2703
+ "shortcuts": {
2704
+ "type": "array",
2705
+ "description": "Array of mappings from actions to the key combinations that invoke the actions.",
2706
+ "items": {
2707
+ "$ref": "#/definitions/extensionShortcut"
2708
+ },
2709
+ "minItems": 1,
2710
+ "maxItems": 20000
2711
+ },
2712
+ "keyMappingFiles": {
2713
+ "description": "Specifies the full URLs for shortcuts mapping and localization resource files that don't directly support the unified manifest.",
2714
+ "$ref": "#/definitions/keyboardShortcutsMappingFiles"
2715
+ }
2716
+ }
2717
+ },
2718
+ "keyboardShortcutsMappingFiles": {
2719
+ "type": "object",
2720
+ "additionalProperties": false,
2721
+ "properties": {
2722
+ "shortcutsUrl": {
2723
+ "$ref": "#/definitions/httpsUrl",
2724
+ "description": "The full URL of the JSON file that will contain the keyboard combination configuration on Office application and platform combinations that don't directly support the unified manifest."
2725
+ },
2726
+ "localizationResourceUrl": {
2727
+ "$ref": "#/definitions/httpsUrl",
2728
+ "description": "The full URL of a file that provides supplemental resource, such as localized strings, for the file specified in the shortcutsUrl attribute."
2729
+ }
2730
+ },
2731
+ "required": [ "shortcutsUrl" ]
2732
+ },
2733
+ "extensionShortcut": {
2734
+ "type": "object",
2735
+ "properties": {
2736
+ "key": {
2737
+ "type": "object",
2738
+ "$ref": "#/definitions/extensionKeyCombination"
2739
+ },
2740
+ "actionId": {
2741
+ "type": "string",
2742
+ "description": "The ID of an execution-type action that handles this key combination.",
2743
+ "minLength": 1,
2744
+ "maxLength": 64
2745
+ }
2746
+ },
2747
+ "required": [
2748
+ "key",
2749
+ "actionId"
2750
+ ]
2751
+ },
2752
+ "extensionKeyCombination": {
2753
+ "type": "object",
2754
+ "description": "Key combinations in different platform (i.e. default, windows, web and mac).",
2755
+ "properties": {
2756
+ "default": {
2757
+ "type": "string",
2758
+ "description": "Fallback key for any platform that isn't specified.",
2759
+ "pattern": "^[A-Za-z0-9-_+]+$",
2760
+ "minLength": 1,
2761
+ "maxLength": 32
2762
+ },
2763
+ "mac": {
2764
+ "type": "string",
2765
+ "description": "key for mac platform. Alt is mapped to the Option key.",
2766
+ "pattern": "^[A-Za-z0-9-_+]+$",
2767
+ "minLength": 1,
2768
+ "maxLength": 32
2769
+ },
2770
+ "web": {
2771
+ "type": "string",
2772
+ "pattern": "^[A-Za-z0-9-_+]+$",
2773
+ "description": "key for web platform.",
2774
+ "minLength": 1,
2775
+ "maxLength": 32
2776
+ },
2777
+ "windows": {
2778
+ "type": "string",
2779
+ "description": "key for windows platform. Command is mapped to the Ctrl key.",
2780
+ "pattern": "^[A-Za-z0-9-_+]+$",
2781
+ "minLength": 1,
2782
+ "maxLength": 32
2783
+ }
2784
+ },
2785
+ "required": [ "default" ]
2786
+ },
2787
+ "extensionContentRuntimeArray": {
2788
+ "type": "array",
2789
+ "description": "Content runtime is for 'ContentApp', which can be embedded directly into Excel or PowerPoint documents.",
2790
+ "minItems": 1,
2791
+ "items": {
2792
+ "type": "object",
2793
+ "properties": {
2794
+ "requirements": {
2795
+ "type": "object",
2796
+ "$ref": "#/definitions/requirementsExtensionElement",
2797
+ "description": "Specifies the Office requirement sets for content add-in runtime. If the user's Office version doesn't support the specified requirements, the component will not be available in that client."
2798
+ },
2799
+ "id": {
2800
+ "type": "string",
2801
+ "description": "A unique identifier for this runtime within the app. This is developer specified.",
2802
+ "maxLength": 64
2803
+ },
2804
+ "code": {
2805
+ "$ref": "#/definitions/extensionRuntimeCode",
2806
+ "description": "Specifies the location of code for this runtime. Depending on the runtime.type, add-ins use either a JavaScript file or an HTML page with an embedded <script> tag that specifies the URL of a JavaScript file."
2807
+ },
2808
+ "requestedHeight": {
2809
+ "type": "number",
2810
+ "description": "The desired height in pixels for the initial content placeholder. This value MUST be between 32 and 1000 pixels. Default value will be determined by host.",
2811
+ "minimum": 32,
2812
+ "maximum": 1000
2813
+ },
2814
+ "requestedWidth": {
2815
+ "type": "number",
2816
+ "description": "The desired width in pixels for the initial content placeholder. This value MUST be between 32 and 1000 pixels. Default value will be determined by host.",
2817
+ "minimum": 32,
2818
+ "maximum": 1000
2819
+ },
2820
+ "disableSnapshot": {
2821
+ "type": "boolean",
2822
+ "description": "Specifies whether a snapshot image of your content add-in is saved with the host document. Default value is false. Set true to disable.",
2823
+ "default": false
2824
+ }
2825
+ },
2826
+ "additionalProperties": false,
2827
+ "required": [
2828
+ "id",
2829
+ "code"
2830
+ ]
2831
+ }
2832
+ },
2833
+ "extensionGetStartedMessageArray": {
2834
+ "type": "array",
2835
+ "description": "Provides information used by the callout that appears when the add-in is installed. Minimum size is 1. Maximum size is 3.",
2836
+ "minItems": 1,
2837
+ "maxItems": 3,
2838
+ "items": {
2839
+ "type": "object",
2840
+ "properties": {
2841
+ "requirements": {
2842
+ "type": "object",
2843
+ "$ref": "#/definitions/requirementsExtensionElement"
2844
+ },
2845
+ "title": {
2846
+ "type": "string",
2847
+ "description": "The title used for the top of the callout.",
2848
+ "maxLength": 125
2849
+ },
2850
+ "description": {
2851
+ "type": "string",
2852
+ "description": "The description/body content for the callout.",
2853
+ "maxLength": 250
2854
+ },
2855
+ "learnMoreUrl": {
2856
+ "$ref": "#/definitions/httpsUrl",
2857
+ "description": "A URL to a page that explains the add-in in detail."
2858
+ }
2859
+ },
2860
+ "additionalProperties": false,
2861
+ "required": [
2862
+ "title",
2863
+ "description",
2864
+ "learnMoreUrl"
2865
+ ]
2866
+ }
2867
+ },
2868
+ "extensionContextMenuArray": {
2869
+ "type": "array",
2870
+ "description": "Specifies the context menus for your extension. A context menu is a shortcut menu that appears when a user right-clicks (selects and holds) in the Office UI. Minimum size is 1.",
2871
+ "minItems": 1,
2872
+ "items": {
2873
+ "type": "object",
2874
+ "properties": {
2875
+ "requirements": {
2876
+ "type": "object",
2877
+ "$ref": "#/definitions/requirementsExtensionElement"
2878
+ },
2879
+ "menus": {
2880
+ "$ref": "#/definitions/extensionMenuItem",
2881
+ "description": "Configures the context menus. Minimum size is 1."
2882
+ }
2883
+ },
2884
+ "additionalProperties": false,
2885
+ "required": [
2886
+ "menus"
2887
+ ]
2888
+ }
2889
+ },
2890
+ "extensionMenuItem": {
2891
+ "type": "array",
2892
+ "description": "The title used for the top of the callout.",
2893
+ "minItems": 1,
2894
+ "items": {
2895
+ "type": "object",
2896
+ "properties": {
2897
+ "entryPoint": {
2898
+ "type": "string",
2899
+ "description": "Use 'text' or 'cell' here for Office context menu. Use 'text' if the context menu should open when a user right-clicks (selects and holds) on the selected text. Use 'cell' if the context menu should open when the user right-clicks (selects and holds) on a cell in an Excel spreadsheet.",
2900
+ "enum": [
2901
+ "text",
2902
+ "cell"
2903
+ ]
2904
+ },
2905
+ "controls": {
2906
+ "type": "array",
2907
+ "items": {
2908
+ "$ref": "#/definitions/extensionCommonCustomGroupControlsItem",
2909
+ "description": "The control type should be 'menu'. Minimum size is 1."
2910
+ },
2911
+ "minItems": 1
2912
+ }
2913
+ },
2914
+ "additionalProperties": false,
2915
+ "required": [
2916
+ "entryPoint",
2917
+ "controls"
2918
+ ]
2919
+ }
2920
+ },
2921
+ "extensionRuntimeCode": {
2922
+ "type": "object",
2923
+ "properties": {
2924
+ "page": {
2925
+ "$ref": "#/definitions/httpsUrl",
2926
+ "description": "URL of the .html page to be loaded in browser-based runtimes."
2927
+ },
2928
+ "script": {
2929
+ "$ref": "#/definitions/httpsUrl",
2930
+ "description": "URL of the .js script file to be loaded in UI-less runtimes."
2931
+ }
2932
+ },
2933
+ "additionalProperties": false,
2934
+ "required": [
2935
+ "page"
2936
+ ]
2937
+ },
2938
+ "extensionRibbonsArrayFixedControlItem": {
2939
+ "type": "object",
2940
+ "additionalProperties": false,
2941
+ "properties": {
2942
+ "id": {
2943
+ "type": "string",
2944
+ "description": "A unique identifier for this control within the app. Maximum length is 64 characters. ",
2945
+ "maxLength": 64
2946
+ },
2947
+ "type": {
2948
+ "type": "string",
2949
+ "description": "Defines the type of control.",
2950
+ "enum": [
2951
+ "button"
2952
+ ]
2953
+ },
2954
+ "label": {
2955
+ "type": "string",
2956
+ "description": "Displayed text for the control. Maximum length is 64 characters.",
2957
+ "maxLength": 64
2958
+ },
2959
+ "icons": {
2960
+ "type": "array",
2961
+ "minItems": 1,
2962
+ "maxItems": 3,
2963
+ "items": {
2964
+ "$ref": "#/definitions/extensionCommonIcon"
2965
+ }
2966
+ },
2967
+ "supertip": {
2968
+ "$ref": "#/definitions/extensionCommonSuperToolTip"
2969
+ },
2970
+ "actionId": {
2971
+ "type": "string",
2972
+ "description": "The ID of an execution-type action that handles this key combination. Maximum length is 64 characters.",
2973
+ "maxLength": 64
2974
+ },
2975
+ "enabled": {
2976
+ "type": "boolean",
2977
+ "description": "Whether the control is initially enabled.",
2978
+ "default": true
2979
+ }
2980
+ },
2981
+ "required": [
2982
+ "id",
2983
+ "type",
2984
+ "label",
2985
+ "icons",
2986
+ "supertip",
2987
+ "actionId",
2988
+ "enabled"
2989
+ ]
2990
+ },
2991
+ "extensionRibbonsSpamPreProcessingDialog": {
2992
+ "type": "object",
2993
+ "additionalProperties": false,
2994
+ "properties": {
2995
+ "title": {
2996
+ "type": "string",
2997
+ "description": "Specifies the custom title of the preprocessing dialog.",
2998
+ "maxLength": 128
2999
+ },
3000
+ "description": {
3001
+ "type": "string",
3002
+ "description": "Specifies the custom text that appears in the preprocessing dialog.",
3003
+ "maxLength": 250
3004
+ },
3005
+ "spamNeverShowAgainOption": {
3006
+ "type": "boolean",
3007
+ "description": "Indicating if the developer will allow the user to permanently bypass the PreProcessing Dialog for this add-in. \"false\" is the default value if not specified.",
3008
+ "default": "false"
3009
+ },
3010
+ "spamReportingOptions": {
3011
+ "type": "object",
3012
+ "description": "Specifies up to five options that a user can select from the preprocessing dialog to provide a reason for reporting a message.",
3013
+ "properties": {
3014
+ "title": {
3015
+ "type": "string",
3016
+ "description": "Specifies the title listed before the reporting options list.",
3017
+ "maxLength": 128
3018
+ },
3019
+ "options": {
3020
+ "type": "array",
3021
+ "description": "Specifies the custom options that a user can select from the preprocessing dialog to provide a reason for reporting a message.",
3022
+ "items": {
3023
+ "type": "string",
3024
+ "minItems": 1,
3025
+ "maxItems": 5
3026
+ }
3027
+ },
3028
+ "type": {
3029
+ "type": "string",
3030
+ "enum": [ "radio", "checkbox" ],
3031
+ "description": "Can be set to \"radio\" or \"checkbox\". This determines if Radio Buttons or checkboxes are used for the options. \"checkbox\" is the default if this value is not specified.",
3032
+ "default": "checkbox"
3033
+ }
3034
+ },
3035
+ "required": [
3036
+ "title",
3037
+ "options"
3038
+ ]
3039
+ },
3040
+ "spamFreeTextSectionTitle": {
3041
+ "type": "string",
3042
+ "description": "A text box to the preprocessing dialog to allow users to provide additional information on the message they're reporting. This value is the title of that text box.",
3043
+ "maxLength": 128
3044
+ },
3045
+ "spamMoreInfo": {
3046
+ "type": "object",
3047
+ "description": "Specifies the custom text and URL to provide informational resources to the users.",
3048
+ "properties": {
3049
+ "text": {
3050
+ "type": "string",
3051
+ "description": "Specifies display content of the hyperlink pointing to the site containing informational resources in the preprocessing dialog of a spam-reporting add-in.",
3052
+ "maxLength": 128
3053
+ },
3054
+ "url": {
3055
+ "type": "string",
3056
+ "description": "Specifies the URL of the hyperlink pointing to the site containing informational resources in the preprocessing dialog of a spam-reporting add-in.",
3057
+ "maxLength": 2048
3058
+ }
3059
+ },
3060
+ "required": [
3061
+ "text",
3062
+ "url"
3063
+ ]
3064
+ }
3065
+ },
3066
+ "required": [
3067
+ "title",
3068
+ "description"
3069
+ ]
3070
+ },
3071
+ "dashboardCard": {
3072
+ "type": "object",
3073
+ "description": "Cards wich could be pinned to dashboard providing summarized view of information relevant to user.",
3074
+ "properties": {
3075
+ "id": {
3076
+ "$ref": "#/definitions/guid",
3077
+ "description": "Unique Id for the card. Must be unique inside the app."
3078
+ },
3079
+ "displayName": {
3080
+ "type": "string",
3081
+ "description": "Represents the name of the card. Maximum length is 255 characters.",
3082
+ "maxLength": 255
3083
+ },
3084
+ "description": {
3085
+ "type": "string",
3086
+ "description": "Description of the card.Maximum length is 255 characters.",
3087
+ "maxLength": 255
3088
+ },
3089
+ "pickerGroupId": {
3090
+ "$ref": "#/definitions/guid",
3091
+ "description": "Id of the group in the card picker. This must be guid."
3092
+ },
3093
+ "icon": {
3094
+ "$ref": "#/definitions/dashboardCardIcon"
3095
+ },
3096
+ "contentSource": {
3097
+ "$ref": "#/definitions/dashboardCardContentSource"
3098
+ },
3099
+ "defaultSize": {
3100
+ "type": "string",
3101
+ "enum": [ "medium", "large" ],
3102
+ "description": "Rendering Size for dashboard card."
3103
+ }
3104
+ },
3105
+ "required": [
3106
+ "id",
3107
+ "displayName",
3108
+ "pickerGroupId",
3109
+ "description",
3110
+ "contentSource",
3111
+ "defaultSize"
3112
+ ],
3113
+ "additionalProperties": false
3114
+ },
3115
+ "dashboardCardIcon": {
3116
+ "type": "object",
3117
+ "description": "Represents a configuration for the source of the card’s content",
3118
+ "properties": {
3119
+ "iconUrl": {
3120
+ "type": "string",
3121
+ "description": "The icon for the card, to be displayed in the toolbox and card bar, represented as URL.",
3122
+ "maxLength": 2048
3123
+ },
3124
+ "officeUIFabricIconName": {
3125
+ "type": "string",
3126
+ "description": "Office UI Fabric/Fluent UI icon friendly name for the card. This value will be used if ‘iconUrl’ is not specified.",
3127
+ "maxLength": 255
3128
+ }
3129
+ },
3130
+ "additionalProperties": false
3131
+ },
3132
+ "dashboardCardContentSource": {
3133
+ "type": "object",
3134
+ "description": "Represents a configuration for the source of the card’s content.",
3135
+ "properties": {
3136
+ "sourceType": {
3137
+ "type": "string",
3138
+ "enum": [ "bot" ],
3139
+ "description": "The content of the dashboard card is sourced from a bot."
3140
+ },
3141
+ "botConfiguration": {
3142
+ "type": "object",
3143
+ "description": "The configuration for the bot source. Required if sourceType is set to bot.",
3144
+ "properties": {
3145
+ "botId": {
3146
+ "$ref": "#/definitions/guid",
3147
+ "description": "The unique Microsoft app ID for the bot as registered with the Bot Framework."
3148
+ }
3149
+ },
3150
+ "additionalProperties": false
3151
+ }
3152
+ },
3153
+ "additionalProperties": false
3154
+ },
3155
+ "declarativeAgentRef": {
3156
+ "type": "object",
3157
+ "properties": {
3158
+ "id": {
3159
+ "type": "string",
3160
+ "description": "A unique identifier for this declarative agent element."
3161
+ },
3162
+ "file": {
3163
+ "$ref": "#/definitions/relativePath",
3164
+ "description": "Relative file path to this declarative agent element file in the application package."
3165
+ }
3166
+ },
3167
+ "description": "A reference to a declarative agent element. The element's definition is in a separate file.",
3168
+ "required": [
3169
+ "id",
3170
+ "file"
3171
+ ],
3172
+ "additionalProperties": false
3173
+ }
3174
+ }
3175
+ }