@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,799 @@
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.",
13
+ "const": "1.8"
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
+ "packageName": {
25
+ "type": "string",
26
+ "description": "A unique identifier for this app in reverse domain notation. E.g: com.example.myapp",
27
+ "maxLength": 64
28
+ },
29
+ "localizationInfo": {
30
+ "type": "object",
31
+ "additionalProperties": false,
32
+ "properties": {
33
+ "defaultLanguageTag": {
34
+ "$ref": "#/definitions/languageTag",
35
+ "description": "The language tag of the strings in this top level manifest file.",
36
+ "default": "en-us"
37
+ },
38
+ "additionalLanguages": {
39
+ "type": "array",
40
+ "uniqueItems": true,
41
+ "items": {
42
+ "type": "object",
43
+ "additionalProperties": false,
44
+ "properties": {
45
+ "languageTag": {
46
+ "$ref": "#/definitions/languageTag",
47
+ "description": "The language tag of the strings in the provided file."
48
+ },
49
+ "file": {
50
+ "$ref": "#/definitions/relativePath",
51
+ "description": "A relative file path to a the .json file containing the translated strings."
52
+ }
53
+ },
54
+ "required": [
55
+ "languageTag",
56
+ "file"
57
+ ]
58
+ }
59
+ }
60
+ },
61
+ "required": [
62
+ "defaultLanguageTag"
63
+ ]
64
+ },
65
+ "developer": {
66
+ "type": "object",
67
+ "additionalProperties": false,
68
+ "properties": {
69
+ "name": {
70
+ "type": "string",
71
+ "description": "The display name for the developer.",
72
+ "maxLength": 32
73
+ },
74
+ "mpnId": {
75
+ "type": "string",
76
+ "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",
77
+ "maxLength": 10
78
+ },
79
+ "websiteUrl": {
80
+ "$ref": "#/definitions/httpsUrl",
81
+ "description": "The url to the page that provides support information for the app."
82
+ },
83
+ "privacyUrl": {
84
+ "$ref": "#/definitions/httpsUrl",
85
+ "description": "The url to the page that provides privacy information for the app."
86
+ },
87
+ "termsOfUseUrl": {
88
+ "$ref": "#/definitions/httpsUrl",
89
+ "description": "The url to the page that provides the terms of use for the app."
90
+ }
91
+ },
92
+ "required": [
93
+ "name",
94
+ "websiteUrl",
95
+ "privacyUrl",
96
+ "termsOfUseUrl"
97
+ ]
98
+ },
99
+ "name": {
100
+ "type": "object",
101
+ "additionalProperties": false,
102
+ "properties": {
103
+ "short": {
104
+ "type": "string",
105
+ "description": "A short display name for the app.",
106
+ "maxLength": 30
107
+ },
108
+ "full": {
109
+ "type": "string",
110
+ "description": "The full name of the app, used if the full app name exceeds 30 characters.",
111
+ "maxLength": 100
112
+ }
113
+ },
114
+ "required": [
115
+ "short"
116
+ ]
117
+ },
118
+ "description": {
119
+ "type": "object",
120
+ "additionalProperties": false,
121
+ "properties": {
122
+ "short": {
123
+ "type": "string",
124
+ "description": "A short description of the app used when space is limited. Maximum length is 80 characters.",
125
+ "maxLength": 80
126
+ },
127
+ "full": {
128
+ "type": "string",
129
+ "description": "The full description of the app. Maximum length is 4000 characters.",
130
+ "maxLength": 4000
131
+ }
132
+ },
133
+ "required": [
134
+ "short",
135
+ "full"
136
+ ]
137
+ },
138
+ "icons": {
139
+ "type": "object",
140
+ "additionalProperties": false,
141
+ "properties": {
142
+ "outline": {
143
+ "$ref": "#/definitions/relativePath",
144
+ "description": "A relative file path to a transparent PNG outline icon. The border color needs to be white. Size 32x32."
145
+ },
146
+ "color": {
147
+ "$ref": "#/definitions/relativePath",
148
+ "description": "A relative file path to a full color PNG icon. Size 192x192."
149
+ }
150
+ },
151
+ "required": [
152
+ "outline",
153
+ "color"
154
+ ]
155
+ },
156
+ "accentColor": {
157
+ "$ref": "#/definitions/hexColor",
158
+ "description": "A color to use in conjunction with the icon. The value must be a valid HTML color code starting with '#', for example `#4464ee`."
159
+ },
160
+ "configurableTabs": {
161
+ "type": "array",
162
+ "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.",
163
+ "maxItems": 1,
164
+ "items": {
165
+ "type": "object",
166
+ "additionalProperties": false,
167
+ "properties": {
168
+ "configurationUrl": {
169
+ "$ref": "#/definitions/httpsUrl",
170
+ "description": "The url to use when configuring the tab."
171
+ },
172
+ "canUpdateConfiguration": {
173
+ "type": "boolean",
174
+ "description": "A value indicating whether an instance of the tab's configuration can be updated by the user after creation.",
175
+ "default": true
176
+ },
177
+ "scopes": {
178
+ "type": "array",
179
+ "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.",
180
+ "maxItems": 2,
181
+ "items": {
182
+ "enum": [
183
+ "team",
184
+ "groupChat",
185
+ "groupchat"
186
+ ]
187
+ }
188
+ },
189
+ "context": {
190
+ "type": "array",
191
+ "description": "The set of contextItem scopes that a tab belong to",
192
+ "maxItems": 6,
193
+ "items": {
194
+ "enum": [
195
+ "channelTab",
196
+ "privateChatTab",
197
+ "meetingChatTab",
198
+ "meetingDetailsTab",
199
+ "meetingSidePanel",
200
+ "meetingStage"
201
+ ]
202
+ }
203
+ },
204
+ "sharePointPreviewImage": {
205
+ "$ref": "#/definitions/relativePath",
206
+ "description": "A relative file path to a tab preview image for use in SharePoint. Size 1024x768."
207
+ },
208
+ "supportedSharePointHosts": {
209
+ "type": "array",
210
+ "description": "Defines how your tab will be made available in SharePoint.",
211
+ "maxItems": 2,
212
+ "uniqueItems": true,
213
+ "items": {
214
+ "enum": [
215
+ "sharePointFullPage",
216
+ "sharePointWebPart"
217
+ ]
218
+ }
219
+ }
220
+ },
221
+ "required": [
222
+ "configurationUrl",
223
+ "scopes"
224
+ ]
225
+ }
226
+ },
227
+ "staticTabs": {
228
+ "type": "array",
229
+ "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.",
230
+ "maxItems": 16,
231
+ "uniqueItems": true,
232
+ "items": {
233
+ "type": "object",
234
+ "additionalProperties": false,
235
+ "properties": {
236
+ "entityId": {
237
+ "type": "string",
238
+ "description": "A unique identifier for the entity which the tab displays.",
239
+ "maxLength": 64
240
+ },
241
+ "name": {
242
+ "type": "string",
243
+ "description": "The display name of the tab.",
244
+ "maxLength": 128
245
+ },
246
+ "contentUrl": {
247
+ "$ref": "#/definitions/httpsUrl",
248
+ "description": "The url which points to the entity UI to be displayed in the Teams canvas."
249
+ },
250
+ "websiteUrl": {
251
+ "$ref": "#/definitions/httpsUrl",
252
+ "description": "The url to point at if a user opts to view in a browser."
253
+ },
254
+ "searchUrl": {
255
+ "$ref": "#/definitions/httpsUrl",
256
+ "description": "The url to direct a user's search queries."
257
+ },
258
+ "scopes": {
259
+ "type": "array",
260
+ "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. These options are non-exclusive. Currently static tabs are only supported in the 'personal' scope.",
261
+ "maxItems": 2,
262
+ "items": {
263
+ "enum": [
264
+ "team",
265
+ "personal"
266
+ ]
267
+ }
268
+ },
269
+ "context": {
270
+ "type": "array",
271
+ "description": "The set of contextItem scopes that a tab belong to",
272
+ "maxItems": 2,
273
+ "items": {
274
+ "enum": [
275
+ "personalTab",
276
+ "channelTab"
277
+ ]
278
+ }
279
+ }
280
+ },
281
+ "required": [
282
+ "entityId",
283
+ "scopes"
284
+ ]
285
+ }
286
+ },
287
+ "bots": {
288
+ "type": "array",
289
+ "description": "The set of bots for this app. Currently only one bot per app is supported.",
290
+ "maxItems": 1,
291
+ "items": {
292
+ "type": "object",
293
+ "additionalProperties": false,
294
+ "properties": {
295
+ "botId": {
296
+ "$ref": "#/definitions/botId",
297
+ "description": "The Microsoft App ID specified for the bot in the Bot Framework portal (https://dev.botframework.com/bots)"
298
+ },
299
+ "needsChannelSelector": {
300
+ "type": "boolean",
301
+ "description": "This value describes whether or not the bot utilizes a user hint to add the bot to a specific channel.",
302
+ "default": false
303
+ },
304
+ "isNotificationOnly": {
305
+ "type": "boolean",
306
+ "description": "A value indicating whether or not the bot is a one-way notification only bot, as opposed to a conversational bot.",
307
+ "default": false
308
+ },
309
+ "supportsFiles": {
310
+ "type": "boolean",
311
+ "description": "A value indicating whether the bot supports uploading/downloading of files.",
312
+ "default": false
313
+ },
314
+ "supportsCalling": {
315
+ "type": "boolean",
316
+ "description": "A value indicating whether the bot supports audio calling.",
317
+ "default": false
318
+ },
319
+ "supportsVideo": {
320
+ "type": "boolean",
321
+ "description": "A value indicating whether the bot supports video calling.",
322
+ "default": false
323
+ },
324
+ "scopes": {
325
+ "type": "array",
326
+ "description": "Specifies whether the bot 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.",
327
+ "maxItems": 3,
328
+ "items": {
329
+ "enum": [
330
+ "team",
331
+ "personal",
332
+ "groupChat",
333
+ "groupchat"
334
+ ]
335
+ }
336
+ },
337
+ "commandLists": {
338
+ "type": "array",
339
+ "maxItems": 3,
340
+ "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.",
341
+ "items": {
342
+ "type": "object",
343
+ "additionalProperties": false,
344
+ "properties": {
345
+ "scopes": {
346
+ "type": "array",
347
+ "description": "Specifies the scopes for which the command list is valid",
348
+ "maxItems": 3,
349
+ "items": {
350
+ "enum": [
351
+ "team",
352
+ "personal",
353
+ "groupChat",
354
+ "groupchat"
355
+ ]
356
+ }
357
+ },
358
+ "commands": {
359
+ "type": "array",
360
+ "maxItems": 10,
361
+ "items": {
362
+ "type": "object",
363
+ "additionalProperties": false,
364
+ "properties": {
365
+ "title": {
366
+ "type": "string",
367
+ "description": "The bot command name",
368
+ "maxLength": 32
369
+ },
370
+ "description": {
371
+ "type": "string",
372
+ "description": "A simple text description or an example of the command syntax and its arguments.",
373
+ "maxLength": 128
374
+ }
375
+ },
376
+ "required": [
377
+ "title",
378
+ "description"
379
+ ]
380
+ }
381
+ }
382
+ },
383
+ "required": [
384
+ "scopes",
385
+ "commands"
386
+ ]
387
+ }
388
+ }
389
+ },
390
+ "required": [
391
+ "botId",
392
+ "scopes"
393
+ ]
394
+ }
395
+ },
396
+ "connectors": {
397
+ "type": "array",
398
+ "description": "The set of Office365 connectors for this app. Currently only one connector per app is supported.",
399
+ "maxItems": 1,
400
+ "items": {
401
+ "type": "object",
402
+ "additionalProperties": false,
403
+ "properties": {
404
+ "connectorId": {
405
+ "type": "string",
406
+ "description": "A unique identifier for the connector which matches its ID in the Connectors Developer Portal.",
407
+ "maxLength": 64
408
+ },
409
+ "configurationUrl": {
410
+ "$ref": "#/definitions/httpsUrl",
411
+ "description": "The url to use for configuring the connector using the inline configuration experience."
412
+ },
413
+ "scopes": {
414
+ "type": "array",
415
+ "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.",
416
+ "maxItems": 1,
417
+ "items": {
418
+ "enum": [
419
+ "team"
420
+ ]
421
+ }
422
+ }
423
+ },
424
+ "required": [
425
+ "connectorId",
426
+ "scopes"
427
+ ]
428
+ }
429
+ },
430
+ "composeExtensions": {
431
+ "type": "array",
432
+ "description": "The set of compose extensions for this app. Currently only one compose extension per app is supported.",
433
+ "maxItems": 1,
434
+ "items": {
435
+ "type": "object",
436
+ "additionalProperties": false,
437
+ "properties": {
438
+ "botId": {
439
+ "$ref": "#/definitions/botId",
440
+ "description": "The Microsoft App ID specified for the bot powering the compose extension in the Bot Framework portal (https://dev.botframework.com/bots)"
441
+ },
442
+ "canUpdateConfiguration": {
443
+ "type": "boolean",
444
+ "description": "A value indicating whether the configuration of a compose extension can be updated by the user.",
445
+ "default": false
446
+ },
447
+ "commands": {
448
+ "type": "array",
449
+ "maxItems": 10,
450
+ "items": {
451
+ "type": "object",
452
+ "additionalProperties": false,
453
+ "properties": {
454
+ "id": {
455
+ "type": "string",
456
+ "description": "Id of the command.",
457
+ "maxLength": 64
458
+ },
459
+ "type": {
460
+ "type": "string",
461
+ "enum": [
462
+ "query",
463
+ "action"
464
+ ],
465
+ "description": "Type of the command",
466
+ "default": "query"
467
+ },
468
+ "context": {
469
+ "type": "array",
470
+ "maxItems": 3,
471
+ "items": {
472
+ "enum": [
473
+ "compose",
474
+ "commandBox",
475
+ "message"
476
+ ]
477
+ },
478
+ "description": "Context where the command would apply",
479
+ "default": [
480
+ "compose",
481
+ "commandBox"
482
+ ]
483
+ },
484
+ "title": {
485
+ "type": "string",
486
+ "description": "Title of the command.",
487
+ "maxLength": 32
488
+ },
489
+ "description": {
490
+ "type": "string",
491
+ "description": "Description of the command.",
492
+ "maxLength": 128
493
+ },
494
+ "initialRun": {
495
+ "type": "boolean",
496
+ "description": "A boolean value that indicates if the command should be run once initially with no parameter.",
497
+ "default": false
498
+ },
499
+ "fetchTask": {
500
+ "type": "boolean",
501
+ "description": "A boolean value that indicates if it should fetch task module dynamically",
502
+ "default": false
503
+ },
504
+ "parameters": {
505
+ "type": "array",
506
+ "maxItems": 5,
507
+ "minItems": 1,
508
+ "items": {
509
+ "type": "object",
510
+ "additionalProperties": false,
511
+ "properties": {
512
+ "name": {
513
+ "type": "string",
514
+ "description": "Name of the parameter.",
515
+ "maxLength": 64
516
+ },
517
+ "inputType": {
518
+ "type": "string",
519
+ "enum": [
520
+ "text",
521
+ "textarea",
522
+ "number",
523
+ "date",
524
+ "time",
525
+ "toggle",
526
+ "choiceset"
527
+ ],
528
+ "description": "Type of the parameter",
529
+ "default": "text"
530
+ },
531
+ "title": {
532
+ "type": "string",
533
+ "description": "Title of the parameter.",
534
+ "maxLength": 32
535
+ },
536
+ "description": {
537
+ "type": "string",
538
+ "description": "Description of the parameter.",
539
+ "maxLength": 128
540
+ },
541
+ "value": {
542
+ "type": "string",
543
+ "description": "Initial value for the parameter",
544
+ "maxLength": 512
545
+ },
546
+ "choices": {
547
+ "type": "array",
548
+ "maxItems": 10,
549
+ "description": "The choice options for the parameter",
550
+ "items": {
551
+ "type": "object",
552
+ "properties": {
553
+ "title": {
554
+ "type": "string",
555
+ "description": "Title of the choice",
556
+ "maxLength": 128
557
+ },
558
+ "value": {
559
+ "type": "string",
560
+ "description": "Value of the choice",
561
+ "maxLength": 512
562
+ }
563
+ },
564
+ "additionalProperties": false,
565
+ "required": [
566
+ "title",
567
+ "value"
568
+ ]
569
+ }
570
+ }
571
+ },
572
+ "required": [
573
+ "name",
574
+ "title"
575
+ ]
576
+ }
577
+ },
578
+ "taskInfo": {
579
+ "type": "object",
580
+ "additionalProperties": false,
581
+ "properties": {
582
+ "title": {
583
+ "type": "string",
584
+ "description": "Initial dialog title",
585
+ "maxLength": 64
586
+ },
587
+ "width": {
588
+ "$ref": "#/definitions/taskInfoDimension",
589
+ "description": "Dialog width - either a number in pixels or default layout such as 'large', 'medium', or 'small'"
590
+ },
591
+ "height": {
592
+ "$ref": "#/definitions/taskInfoDimension",
593
+ "description": "Dialog height - either a number in pixels or default layout such as 'large', 'medium', or 'small'"
594
+ },
595
+ "url": {
596
+ "$ref": "#/definitions/httpsUrl",
597
+ "description": "Initial webview URL"
598
+ }
599
+ }
600
+ }
601
+ },
602
+ "required": [
603
+ "id",
604
+ "title"
605
+ ]
606
+ }
607
+ },
608
+ "messageHandlers": {
609
+ "type": "array",
610
+ "maxItems": 5,
611
+ "description": "A list of handlers that allow apps to be invoked when certain conditions are met",
612
+ "items": {
613
+ "type": "object",
614
+ "properties": {
615
+ "type": {
616
+ "type": "string",
617
+ "enum": [
618
+ "link"
619
+ ],
620
+ "description": "Type of the message handler"
621
+ },
622
+ "value": {
623
+ "type": "object",
624
+ "properties": {
625
+ "domains": {
626
+ "type": "array",
627
+ "description": "A list of domains that the link message handler can register for, and when they are matched the app will be invoked",
628
+ "items": {
629
+ "type": "string",
630
+ "maxLength": 2048
631
+ }
632
+ }
633
+ }
634
+ }
635
+ },
636
+ "required": [
637
+ "type",
638
+ "value"
639
+ ],
640
+ "additionalProperties": false
641
+ }
642
+ }
643
+ },
644
+ "required": [
645
+ "botId",
646
+ "commands"
647
+ ]
648
+ }
649
+ },
650
+ "permissions": {
651
+ "type": "array",
652
+ "description": "Specifies the permissions the app requests from users.",
653
+ "maxItems": 2,
654
+ "items": {
655
+ "enum": [
656
+ "identity",
657
+ "messageTeamMembers"
658
+ ]
659
+ }
660
+ },
661
+ "devicePermissions": {
662
+ "type": "array",
663
+ "description": "Specify the native features on a user's device that your app may request access to.",
664
+ "maxItems": 5,
665
+ "items": {
666
+ "enum": [
667
+ "geolocation",
668
+ "media",
669
+ "notifications",
670
+ "midi",
671
+ "openExternal"
672
+ ]
673
+ }
674
+ },
675
+ "validDomains": {
676
+ "type": "array",
677
+ "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.",
678
+ "maxItems": 16,
679
+ "items": {
680
+ "type": "string",
681
+ "maxLength": 2048
682
+ }
683
+ },
684
+ "webApplicationInfo": {
685
+ "type": "object",
686
+ "description": "Specify your AAD App ID and Graph information to help users seamlessly sign into your AAD app.",
687
+ "properties": {
688
+ "id": {
689
+ "$ref": "#/definitions/guid",
690
+ "description": "AAD application id of the app. This id must be a GUID."
691
+ },
692
+ "resource": {
693
+ "type": "string",
694
+ "description": "Resource url of app for acquiring auth token for SSO.",
695
+ "maxLength": 2048
696
+ },
697
+ "applicationPermissions": {
698
+ "type": "array",
699
+ "maxItems": 100,
700
+ "items": {
701
+ "type": "string",
702
+ "maxLength": 128
703
+ }
704
+ }
705
+ },
706
+ "required": [
707
+ "id"
708
+ ],
709
+ "additionalProperties": false
710
+ },
711
+ "showLoadingIndicator": {
712
+ "type": "boolean",
713
+ "description": "A value indicating whether or not show loading indicator when app/tab is loading",
714
+ "default": false
715
+ },
716
+ "isFullScreen": {
717
+ "type": "boolean",
718
+ "description": "A value indicating whether a personal app is rendered without a tab header-bar",
719
+ "default": false
720
+ },
721
+ "activities": {
722
+ "type": "object",
723
+ "properties": {
724
+ "activityTypes": {
725
+ "type": "array",
726
+ "description": "Specify the types of activites that your app can post to a users activity feed",
727
+ "maxItems": 128,
728
+ "items": {
729
+ "type": "object",
730
+ "properties": {
731
+ "type": {
732
+ "type": "string",
733
+ "maxLength": 32
734
+ },
735
+ "description": {
736
+ "type": "string",
737
+ "maxLength": 128
738
+ },
739
+ "templateText": {
740
+ "type": "string",
741
+ "maxLength": 128
742
+ }
743
+ },
744
+ "required": [ "type", "description", "templateText" ],
745
+ "additionalProperties": false
746
+ }
747
+ }
748
+ },
749
+ "additionalProperties": false
750
+ }
751
+ },
752
+ "required": [
753
+ "manifestVersion",
754
+ "version",
755
+ "id",
756
+ "developer",
757
+ "name",
758
+ "description",
759
+ "icons",
760
+ "accentColor"
761
+ ],
762
+ "definitions": {
763
+ "relativePath": {
764
+ "type": "string",
765
+ "maxLength": 2048
766
+ },
767
+ "httpsUrl": {
768
+ "type": "string",
769
+ "maxLength": 2048,
770
+ "pattern": "^[Hh][Tt][Tt][Pp][Ss]?://"
771
+ },
772
+ "semver": {
773
+ "type": "string",
774
+ "maxLength": 256,
775
+ "pattern": "^([0-9]|[1-9]+[0-9]*)\\.([0-9]|[1-9]+[0-9]*)\\.([0-9]|[1-9]+[0-9]*)$"
776
+ },
777
+ "hexColor": {
778
+ "type": "string",
779
+ "pattern": "^#[0-9a-fA-F]{6}$"
780
+ },
781
+ "guid": {
782
+ "type": "string",
783
+ "pattern": "^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$"
784
+ },
785
+ "botId": {
786
+ "type": "string",
787
+ "maxLength": 64
788
+ },
789
+ "languageTag": {
790
+ "type": "string",
791
+ "pattern": "^[A-Za-z0-9]{1,8}(-[A-Za-z0-9]{1,8}){0,2}$"
792
+ },
793
+ "taskInfoDimension": {
794
+ "type": "string",
795
+ "pattern": "^((([0-9]*\\.)?[0-9]+)|[lL][aA][rR][gG][eE]|[mM][eE][dD][iI][uU][mM]|[sS][mM][aA][lL][lL])$",
796
+ "maxLength": 16
797
+ }
798
+ }
799
+ }