@microsoft/m365agentstoolkit-cli 1.1.18-rc.0 → 1.1.19-alpha.003386e0ae.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.
@@ -11,7 +11,9 @@
11
11
  "type": "string",
12
12
  "description": "The version of the schema this manifest is using.",
13
13
  "enum": [
14
- "devPreview"
14
+ "devPreview",
15
+ "m365DevPreview",
16
+ "m365devpreview"
15
17
  ]
16
18
  },
17
19
  "version": {
@@ -95,44 +97,46 @@
95
97
  "description": "The url to the page that provides the terms of use for the app."
96
98
  },
97
99
  "contactInfo": {
98
- "type": "object",
99
- "description": "App developer contact information.",
100
- "properties": {
101
- "defaultSupport": {
102
- "type": "object",
103
- "description": "Support configuration.",
104
- "properties": {
105
- "userEmailsForChatSupport": {
106
- "type": "array",
107
- "description": "User email for chat support contacts.",
108
- "maxItems": 10,
109
- "minItems": 1,
110
- "items": {
111
- "type": "string",
112
- "maxLength": 80
113
- }
114
- },
115
- "emailsForEmailSupport": {
116
- "type": "array",
117
- "description": "Email address for email support.",
118
- "maxItems": 1,
119
- "minItems": 1,
120
- "items": {
121
- "type": "string",
122
- "maxLength": 80
123
- }
100
+ "type": "object",
101
+ "additionalProperties": false,
102
+ "description": "App developer contact information.",
103
+ "properties": {
104
+ "defaultSupport": {
105
+ "type": "object",
106
+ "additionalProperties": false,
107
+ "description": "Support configuration.",
108
+ "properties": {
109
+ "userEmailsForChatSupport": {
110
+ "type": "array",
111
+ "description": "User email for chat support contacts.",
112
+ "maxItems": 10,
113
+ "minItems": 1,
114
+ "items": {
115
+ "type": "string",
116
+ "maxLength": 80
117
+ }
118
+ },
119
+ "emailsForEmailSupport": {
120
+ "type": "array",
121
+ "description": "Email address for email support.",
122
+ "maxItems": 1,
123
+ "minItems": 1,
124
+ "items": {
125
+ "type": "string",
126
+ "maxLength": 80
127
+ }
128
+ }
129
+ },
130
+ "required": [
131
+ "emailsForEmailSupport",
132
+ "userEmailsForChatSupport"
133
+ ]
124
134
  }
125
- },
126
- "required": [
127
- "emailsForEmailSupport",
128
- "userEmailsForChatSupport"
129
- ]
130
- }
131
- },
132
- "required": [
133
- "defaultSupport"
134
- ]
135
- }
135
+ },
136
+ "required": [
137
+ "defaultSupport"
138
+ ]
139
+ }
136
140
  },
137
141
  "required": [
138
142
  "name",
@@ -162,8 +166,7 @@
162
166
  }
163
167
  },
164
168
  "required": [
165
- "short",
166
- "full"
169
+ "short"
167
170
  ]
168
171
  },
169
172
  "description": {
@@ -201,8 +204,8 @@
201
204
  }
202
205
  },
203
206
  "required": [
204
- "title",
205
- "description"
207
+ "title",
208
+ "description"
206
209
  ]
207
210
  }
208
211
  }
@@ -285,7 +288,7 @@
285
288
  "context": {
286
289
  "type": "array",
287
290
  "description": "The set of contextItem scopes that a tab belong to",
288
- "maxItems": 8,
291
+ "maxItems": 7,
289
292
  "items": {
290
293
  "enum": [
291
294
  "personalTab",
@@ -294,8 +297,7 @@
294
297
  "meetingChatTab",
295
298
  "meetingDetailsTab",
296
299
  "meetingSidePanel",
297
- "meetingStage",
298
- "callingSidePanel"
300
+ "meetingStage"
299
301
  ]
300
302
  }
301
303
  },
@@ -357,10 +359,6 @@
357
359
  "$ref": "#/definitions/anyHttpUrl",
358
360
  "description": "The url which points to the entity UI to be displayed in the Teams canvas."
359
361
  },
360
- "contentBotId": {
361
- "$ref": "#/definitions/guid",
362
- "description": "The Microsoft App ID specified for the bot in the Bot Framework portal (https://dev.botframework.com/bots)"
363
- },
364
362
  "websiteUrl": {
365
363
  "$ref": "#/definitions/anyHttpUrl",
366
364
  "description": "The url to point at if a user opts to view in a browser."
@@ -371,7 +369,7 @@
371
369
  },
372
370
  "scopes": {
373
371
  "type": "array",
374
- "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 a group chat. These options are non-exclusive. Currently static tabs are only supported in the 'personal' scope.",
372
+ "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.",
375
373
  "maxItems": 3,
376
374
  "items": {
377
375
  "enum": [
@@ -381,6 +379,17 @@
381
379
  ]
382
380
  }
383
381
  },
382
+ "meetingSurfaces": {
383
+ "type": "array",
384
+ "description": "The set of meetingSurfaceItem scopes that a tab belongs to",
385
+ "maxItems": 2,
386
+ "items": {
387
+ "enum": [
388
+ "sidePanel",
389
+ "stage"
390
+ ]
391
+ }
392
+ },
384
393
  "context": {
385
394
  "type": "array",
386
395
  "description": "The set of contextItem scopes that a tab belong to",
@@ -442,33 +451,23 @@
442
451
  "additionalProperties": false,
443
452
  "properties": {
444
453
  "fetchTask": {
445
- "type": "boolean",
446
- "description": "A boolean value that indicates if it should fetch bot config task module dynamically.",
447
- "default": false
454
+ "$ref": "#/properties/composeExtensions/items/properties/commands/items/properties/fetchTask"
448
455
  },
449
456
  "taskInfo": {
450
- "$ref": "#/definitions/taskInfo",
451
- "description": "Task module to be launched when fetch task set to false."
457
+ "$ref": "#/properties/composeExtensions/items/properties/commands/items/properties/taskInfo"
452
458
  }
453
459
  }
454
460
  },
455
461
  "groupChat": {
456
- "type": "object",
457
- "additionalProperties": false,
458
- "properties": {
459
- "fetchTask": {
460
- "type": "boolean",
461
- "description": "A boolean value that indicates if it should fetch bot config task module dynamically.",
462
- "default": false
463
- },
464
- "taskInfo": {
465
- "$ref": "#/definitions/taskInfo",
466
- "description": "Task module to be launched when fetch task set to false."
467
- }
468
- }
462
+ "$ref": "#/properties/bots/items/properties/configuration/properties/team"
469
463
  }
470
464
  }
471
465
  },
466
+ "allowBotMessageDeleteByUser": {
467
+ "type": "boolean",
468
+ "default": false,
469
+ "description": "Optional Boolean property that enables users to delete messages sent by bot when set to true. The default value is false, ensuring bot messages cannot be deleted by users unless explicitly opted in."
470
+ },
472
471
  "needsChannelSelector": {
473
472
  "type": "boolean",
474
473
  "description": "This value describes whether or not the bot utilizes a user hint to add the bot to a specific channel.",
@@ -501,7 +500,7 @@
501
500
  },
502
501
  "supportsSessions": {
503
502
  "type": "boolean",
504
- "description": "A property set by developers to opt-in to sessions.",
503
+ "description": "A property indicating whether users can see or organize the bot chat into sessions.",
505
504
  "default": false
506
505
  },
507
506
  "scopes": {
@@ -509,12 +508,12 @@
509
508
  "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.",
510
509
  "maxItems": 4,
511
510
  "items": {
512
- "enum": [
513
- "team",
514
- "personal",
515
- "groupChat",
516
- "copilot"
517
- ]
511
+ "enum": [
512
+ "team",
513
+ "personal",
514
+ "groupChat",
515
+ "copilot"
516
+ ]
518
517
  }
519
518
  },
520
519
  "supportsTargetedMessages": {
@@ -534,23 +533,28 @@
534
533
  "type": "array",
535
534
  "maxItems": 2,
536
535
  "items": {
537
- "type": "string",
538
- "enum": [ "mention", "slash" ]
536
+ "type": "string",
537
+ "enum": [
538
+ "mention",
539
+ "slash"
540
+ ]
539
541
  },
540
- "default": [ "mention" ],
542
+ "default": [
543
+ "mention"
544
+ ],
541
545
  "description": "Controls where the commands in this commandLists entry are surfaced. \"mention\" = @mention trigger (current behavior). \"slash\" = slash commands list (targeted messages)."
542
546
  },
543
547
  "scopes": {
544
548
  "type": "array",
545
- "description": "Specifies the scopes for which the command list is valid",
549
+ "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.",
546
550
  "maxItems": 4,
547
551
  "items": {
548
- "enum": [
549
- "team",
550
- "personal",
551
- "groupChat",
552
- "copilot"
553
- ]
552
+ "enum": [
553
+ "team",
554
+ "personal",
555
+ "groupChat",
556
+ "copilot"
557
+ ]
554
558
  }
555
559
  },
556
560
  "commands": {
@@ -572,7 +576,10 @@
572
576
  },
573
577
  "type": {
574
578
  "type": "string",
575
- "enum": [ "basic", "prompt" ],
579
+ "enum": [
580
+ "basic",
581
+ "prompt"
582
+ ],
576
583
  "description": "Type of the command. Default is basic",
577
584
  "default": "basic"
578
585
  },
@@ -594,37 +601,43 @@
594
601
  ]
595
602
  }
596
603
  },
597
- "requirementSet": {
598
- "$ref": "#/definitions/elementRequirementSet",
599
- "description": "The set of requirements for the bot."
600
- },
601
604
  "registrationInfo": {
602
- "description": "System‑generated metadata. This information is maintained by Microsoft services and must not be modified manually.",
605
+ "description": "Information about the registration of the bot, including partner source.",
603
606
  "type": "object",
604
607
  "properties": {
605
- "source": {
606
- "type": "string",
607
- "enum": [ "standard", "microsoftCopilotStudio", "onedriveSharepoint" ],
608
- "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."
609
- },
610
- "environment": {
611
- "type": "string",
612
- "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.",
613
- "maxLength": 128
614
- },
615
- "schemaName": {
616
- "type": "string",
617
- "description": "The Copilot Studio copilot schema name. System‑generated metadata. This information is maintained by Microsoft services and must not be modified manually.",
618
- "maxLength": 128
619
- },
620
- "clusterCategory": {
621
- "type": "string",
622
- "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.",
623
- "maxLength": 128
624
- }
608
+ "source": {
609
+ "type": "string",
610
+ "enum": [
611
+ "standard",
612
+ "microsoftCopilotStudio",
613
+ "onedriveSharepoint"
614
+ ],
615
+ "description": "The partner source through which the bot is registered."
616
+ },
617
+ "environment": {
618
+ "type": "string",
619
+ "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.",
620
+ "maxLength": 128
621
+ },
622
+ "schemaName": {
623
+ "type": "string",
624
+ "description": "The Copilot Studio copilot schema name.",
625
+ "maxLength": 128
626
+ },
627
+ "clusterCategory": {
628
+ "type": "string",
629
+ "description": "The core services cluster category for Copilot Studio copilots.",
630
+ "maxLength": 128
631
+ }
625
632
  },
626
- "required": [ "source" ],
633
+ "required": [
634
+ "source"
635
+ ],
627
636
  "additionalProperties": false
637
+ },
638
+ "requirementSet": {
639
+ "$ref": "#/definitions/elementRequirementSet",
640
+ "description": "The set of requirements for the bot."
628
641
  }
629
642
  },
630
643
  "required": [
@@ -705,6 +718,7 @@
705
718
  "botBased",
706
719
  "apiBased"
707
720
  ],
721
+ "default": "botBased",
708
722
  "description": "Type of the compose extension."
709
723
  },
710
724
  "authorization": {
@@ -717,13 +731,14 @@
717
731
  "none",
718
732
  "apiSecretServiceAuth",
719
733
  "microsoftEntra",
720
- "oAuth2.0"
734
+ "oAuth2.0",
735
+ null
721
736
  ],
722
- "description": "Enum of possible authorization types."
737
+ "description": "Enum of possible authentication types."
723
738
  },
724
739
  "microsoftEntraConfiguration": {
725
740
  "type": "object",
726
- "description": "Object capturing details needed to do microsoftEntra auth flow. It will be only present when auth type is microsoftEntra.",
741
+ "description": "Object capturing details needed to do single aad auth flow. It will be only present when auth type is entraId.",
727
742
  "properties": {
728
743
  "supportsSingleSignOn": {
729
744
  "type": "boolean",
@@ -746,16 +761,16 @@
746
761
  "additionalProperties": false
747
762
  },
748
763
  "oAuthConfiguration": {
749
- "type": "object",
750
- "description": "Object capturing details needed to match the application's OAuth configuration for the app. This should be and must be populated only when authType is set to oAuth2.0r",
751
- "properties": {
752
- "oAuthConfigurationId": {
753
- "type": "string",
754
- "description": "The oAuth configuration id obtained by the Developer when registering their configuration in Developer Portal.",
755
- "maxLength": 128
756
- }
757
- },
758
- "additionalProperties": false
764
+ "type": "object",
765
+ "description": "Object capturing details needed to match the application's OAuth configuration for the app. This should be and must be populated only when authType is set to oAuth2.0r",
766
+ "properties": {
767
+ "oAuthConfigurationId": {
768
+ "type": "string",
769
+ "description": "The oAuth configuration id obtained by the Developer when registering their configuration in Developer Portal.",
770
+ "maxLength": 128
771
+ }
772
+ },
773
+ "additionalProperties": false
759
774
  }
760
775
  },
761
776
  "additionalProperties": false
@@ -770,7 +785,7 @@
770
785
  "null"
771
786
  ],
772
787
  "description": "A value indicating whether the configuration of a compose extension can be updated by the user.",
773
- "default": "null"
788
+ "default": null
774
789
  },
775
790
  "commands": {
776
791
  "type": "array",
@@ -797,33 +812,35 @@
797
812
  "type": "array",
798
813
  "maxItems": 1,
799
814
  "items": {
800
- "type": "string",
801
- "enum": [ "slash" ]
815
+ "type": "string",
816
+ "enum": [
817
+ "slash"
818
+ ]
802
819
  },
803
820
  "description": "Adding \"slash\" to the array makes the command appear in the / slash commands list in group chat or channel. Note: \"mention\" is not a valid value for composeExtension command triggers — it applies only to bots[].commandLists[]."
804
821
  },
805
822
  "samplePrompts": {
806
- "type": "array",
807
- "maxItems": 5,
808
- "minItems": 1,
809
- "items": {
810
- "type": "object",
811
- "additionalProperties": false,
812
- "properties": {
813
- "text": {
814
- "type": "string",
815
- "description": "This string will hold the sample prompt",
816
- "maxLength": 128
817
- }
818
- },
819
- "required": [
820
- "text"
821
- ]
822
- }
823
+ "type": "array",
824
+ "maxItems": 5,
825
+ "minItems": 1,
826
+ "items": {
827
+ "type": "object",
828
+ "additionalProperties": false,
829
+ "properties": {
830
+ "text": {
831
+ "type": "string",
832
+ "description": "This string will hold the sample prompt",
833
+ "maxLength": 128
834
+ }
835
+ },
836
+ "required": [
837
+ "text"
838
+ ]
839
+ }
823
840
  },
824
841
  "apiResponseRenderingTemplateFile": {
825
842
  "$ref": "#/definitions/relativePath",
826
- "description": "A relative file path for api response rendering template file. The schema of the file can be referred to in this link:'https://developer.microsoft.com/json-schemas/teams/vDevPreview/MicrosoftTeams.ResponseRenderingTemplate.schema.json'."
843
+ "description": "A relative file path for api response rendering template file."
827
844
  },
828
845
  "context": {
829
846
  "type": "array",
@@ -888,10 +905,6 @@
888
905
  "description": "Type of the parameter",
889
906
  "default": "text"
890
907
  },
891
- "isRequired": {
892
- "type": "boolean",
893
- "description": "Indicates whether this parameter is required or not. By default, it is not."
894
- },
895
908
  "title": {
896
909
  "type": "string",
897
910
  "description": "Title of the parameter.",
@@ -902,6 +915,11 @@
902
915
  "description": "Description of the parameter.",
903
916
  "maxLength": 128
904
917
  },
918
+ "isRequired": {
919
+ "type": "boolean",
920
+ "description": "The value indicates if this parameter is a required field.",
921
+ "default": false
922
+ },
905
923
  "value": {
906
924
  "type": "string",
907
925
  "description": "Initial value for the parameter",
@@ -934,7 +952,7 @@
934
952
  },
935
953
  "semanticDescription": {
936
954
  "type": "string",
937
- "description": "semantic description of the parameter. This is typically meant for consumption by the large language model.",
955
+ "description": "Semantic description for model.",
938
956
  "maxLength": 2000
939
957
  }
940
958
  },
@@ -945,12 +963,31 @@
945
963
  }
946
964
  },
947
965
  "taskInfo": {
948
- "$ref": "#/definitions/taskInfo",
949
- "description": "Task module to be launched when fetch task set to false."
966
+ "type": "object",
967
+ "additionalProperties": false,
968
+ "properties": {
969
+ "title": {
970
+ "type": "string",
971
+ "description": "Initial dialog title",
972
+ "maxLength": 64
973
+ },
974
+ "width": {
975
+ "$ref": "#/definitions/taskInfoDimension",
976
+ "description": "Dialog width - either a number in pixels or default layout such as 'large', 'medium', or 'small'"
977
+ },
978
+ "height": {
979
+ "$ref": "#/definitions/taskInfoDimension",
980
+ "description": "Dialog height - either a number in pixels or default layout such as 'large', 'medium', or 'small'"
981
+ },
982
+ "url": {
983
+ "$ref": "#/definitions/anyHttpUrl",
984
+ "description": "Initial webview URL"
985
+ }
986
+ }
950
987
  },
951
988
  "semanticDescription": {
952
989
  "type": "string",
953
- "description": "semantic description of the command. This is typically meant for consumption by the large language model.",
990
+ "description": "Semantic description for model.",
954
991
  "maxLength": 5000
955
992
  }
956
993
  },
@@ -986,16 +1023,23 @@
986
1023
  }
987
1024
  },
988
1025
  "supportsAnonymousAccess": {
989
- "type": "boolean",
990
- "description": "A boolean value that indicates whether the app's link message handler supports anonymous invoke flow. [Deprecated]. This property has been superceded by 'supportsAnonymizedPayloads'.",
991
- "default": false
1026
+ "type": [
1027
+ "boolean",
1028
+ "null"
1029
+ ],
1030
+ "description": "A boolean that indicates whether the app's link message handler supports anonymous invoke flow.",
1031
+ "default": null
992
1032
  },
993
1033
  "supportsAnonymizedPayloads": {
994
- "type": "boolean",
995
- "description": "A boolean value that indicates whether the app's link message handler supports anonymous invoke flow.",
996
- "default": false
1034
+ "type": [
1035
+ "boolean",
1036
+ "null"
1037
+ ],
1038
+ "description": "A boolean that indicates whether the app's link message handler supports anonymous invoke flow.",
1039
+ "default": null
997
1040
  }
998
- }
1041
+ },
1042
+ "additionalProperties": false
999
1043
  }
1000
1044
  },
1001
1045
  "required": [
@@ -1108,28 +1152,36 @@
1108
1152
  "maxItems": 5,
1109
1153
  "description": "By including this property, an NAA token based on its contents will be prefetched when the tab is loaded.",
1110
1154
  "items": {
1111
- "type": "object",
1112
- "properties": {
1113
- "redirectUri": {
1114
- "type": "string",
1115
- "description": "Represents the nested app's valid redirect URI (always a base origin)."
1116
- },
1117
- "scopes": {
1118
- "type": "array",
1119
- "description": "Represents the stringified list of scopes the access token requested requires. Order must match that of the proceeding NAA request in the app.",
1120
- "maxItems": 20,
1121
- "items": {
1122
- "type": "string"
1123
- }
1155
+ "type": "object",
1156
+ "properties": {
1157
+ "redirectUri": {
1158
+ "type": "string",
1159
+ "description": "Represents the nested app's valid redirect URI (always a base origin)."
1160
+ },
1161
+ "scopes": {
1162
+ "type": "array",
1163
+ "description": "Represents the stringified list of scopes the access token requested requires. Order must match that of the proceeding NAA request in the app.",
1164
+ "maxItems": 20,
1165
+ "items": {
1166
+ "type": "string"
1167
+ }
1168
+ },
1169
+ "claims": {
1170
+ "type": "string",
1171
+ "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 ",
1172
+ "minLength": 1
1173
+ },
1174
+ "clientId": {
1175
+ "type": "string",
1176
+ "description": "Optional Microsoft Entra ID application (client) ID to use for Nested App Authentication (NAA) for this specific manifest entry. If specified, this value overrides the client ID defined in webApplicationInfo.id. If omitted, webApplicationInfo.id is used as the default client ID.",
1177
+ "minLength": 1
1178
+ }
1124
1179
  },
1125
- "claims": {
1126
- "type": "string",
1127
- "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 ",
1128
- "minLength": 1
1129
- }
1130
- },
1131
- "required": [ "redirectUri", "scopes" ],
1132
- "additionalProperties": false
1180
+ "required": [
1181
+ "redirectUri",
1182
+ "scopes"
1183
+ ],
1184
+ "additionalProperties": false
1133
1185
  }
1134
1186
  }
1135
1187
  },
@@ -1174,7 +1226,7 @@
1174
1226
  "properties": {
1175
1227
  "type": {
1176
1228
  "type": "string",
1177
- "maxLength": 32
1229
+ "maxLength": 64
1178
1230
  },
1179
1231
  "description": {
1180
1232
  "type": "string",
@@ -1184,12 +1236,16 @@
1184
1236
  "type": "string",
1185
1237
  "maxLength": 128
1186
1238
  },
1239
+ "activityGroupId": {
1240
+ "type": "string",
1241
+ "maxLength": 64
1242
+ },
1187
1243
  "allowedIconIds": {
1188
1244
  "type": "array",
1189
1245
  "description": "An array containing valid icon IDs per activity type.",
1190
1246
  "maxItems": 50,
1191
1247
  "items": {
1192
- "type": "string"
1248
+ "type": "string"
1193
1249
  }
1194
1250
  }
1195
1251
  },
@@ -1201,29 +1257,52 @@
1201
1257
  "additionalProperties": false
1202
1258
  }
1203
1259
  },
1260
+ "activityGroups": {
1261
+ "type": "array",
1262
+ "description": "Specify the group of activites that your app can post to a users activity feed",
1263
+ "maxItems": 128,
1264
+ "items": {
1265
+ "type": "object",
1266
+ "properties": {
1267
+ "id": {
1268
+ "type": "string",
1269
+ "maxLength": 64
1270
+ },
1271
+ "displayName": {
1272
+ "type": "string",
1273
+ "maxLength": 128
1274
+ }
1275
+ },
1276
+ "required": [
1277
+ "id",
1278
+ "displayName"
1279
+ ],
1280
+ "additionalProperties": false
1281
+ }
1282
+ },
1204
1283
  "activityIcons": {
1205
1284
  "type": "array",
1206
1285
  "description": "Specify the customized icons that your app can post to a users activity feed",
1207
1286
  "maxItems": 50,
1208
1287
  "items": {
1209
- "type": "object",
1210
- "properties": {
1211
- "id": {
1212
- "type": "string",
1213
- "maxLength": 64,
1214
- "description": "Represents the unique icon ID."
1288
+ "type": "object",
1289
+ "properties": {
1290
+ "id": {
1291
+ "type": "string",
1292
+ "maxLength": 64,
1293
+ "description": "Represents the unique icon ID."
1294
+ },
1295
+ "iconFile": {
1296
+ "type": "string",
1297
+ "maxLength": 128,
1298
+ "description": "Represents the relative path to the icon image. Image should be size 32x32."
1299
+ }
1215
1300
  },
1216
- "iconFile": {
1217
- "type": "string",
1218
- "maxLength": 128,
1219
- "description": "Represents the relative path to the icon image. Image should be size 32x32."
1220
- }
1221
- },
1222
- "required": [
1223
- "id",
1224
- "iconFile"
1225
- ],
1226
- "additionalProperties": false
1301
+ "required": [
1302
+ "id",
1303
+ "iconFile"
1304
+ ],
1305
+ "additionalProperties": false
1227
1306
  }
1228
1307
  }
1229
1308
  },
@@ -1241,13 +1320,13 @@
1241
1320
  }
1242
1321
  },
1243
1322
  "supportsChannelFeatures": {
1244
- "type": "string",
1245
- "enum": [
1246
- "tier1",
1247
- "tier2",
1248
- null
1249
- ],
1250
- "description": "A property in the app manifest that declares support for all channel features, categorized by tiers."
1323
+ "type": "string",
1324
+ "enum": [
1325
+ "tier1",
1326
+ "tier2",
1327
+ null
1328
+ ],
1329
+ "description": "A property in the app manifest that declares support for all channel features, categorized by tiers."
1251
1330
  },
1252
1331
  "configurableProperties": {
1253
1332
  "type": "array",
@@ -1283,7 +1362,8 @@
1283
1362
  "team",
1284
1363
  "groupChat",
1285
1364
  "meetings",
1286
- "copilot"
1365
+ "copilot",
1366
+ null
1287
1367
  ],
1288
1368
  "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"
1289
1369
  },
@@ -1295,7 +1375,8 @@
1295
1375
  "enum": [
1296
1376
  "tab",
1297
1377
  "bot",
1298
- "connector"
1378
+ "connector",
1379
+ null
1299
1380
  ],
1300
1381
  "description": "When the install scope selected is Team, this field specifies the default capability available"
1301
1382
  },
@@ -1304,7 +1385,8 @@
1304
1385
  "enum": [
1305
1386
  "tab",
1306
1387
  "bot",
1307
- "connector"
1388
+ "connector",
1389
+ null
1308
1390
  ],
1309
1391
  "description": "When the install scope selected is GroupChat, this field specifies the default capability available"
1310
1392
  },
@@ -1313,7 +1395,8 @@
1313
1395
  "enum": [
1314
1396
  "tab",
1315
1397
  "bot",
1316
- "connector"
1398
+ "connector",
1399
+ null
1317
1400
  ],
1318
1401
  "description": "When the install scope selected is Meetings, this field specifies the default capability available"
1319
1402
  }
@@ -1388,7 +1471,7 @@
1388
1471
  },
1389
1472
  "name": {
1390
1473
  "type": "string",
1391
- "description": "Video filter's name.",
1474
+ "description": "A/V filter's name.",
1392
1475
  "maxLength": 128
1393
1476
  },
1394
1477
  "thumbnail": {
@@ -1402,13 +1485,13 @@
1402
1485
  "thumbnail"
1403
1486
  ]
1404
1487
  },
1405
- "maxItems": 32,
1488
+ "maxItems": 100,
1406
1489
  "type": "array",
1407
1490
  "uniqueItems": true
1408
1491
  },
1409
1492
  "videoFiltersConfigurationUrl": {
1410
1493
  "type": "string",
1411
- "description": "A URL for configuring the video filters.",
1494
+ "description": "The url which indicates video filters' video app configuration.",
1412
1495
  "maxLength": 2048
1413
1496
  },
1414
1497
  "supportsStreaming": {
@@ -1416,10 +1499,21 @@
1416
1499
  "description": "A boolean value indicating whether this app can stream the meeting's audio video content to an RTMP endpoint.",
1417
1500
  "default": false
1418
1501
  },
1502
+ "isAnonymousAccessAllowed": {
1503
+ "type": [
1504
+ "boolean",
1505
+ "null"
1506
+ ],
1507
+ "description": "A boolean value indicating whether this app allows management by anonymous users.",
1508
+ "default": null
1509
+ },
1419
1510
  "supportsAnonymousGuestUsers": {
1420
- "type": "boolean",
1421
- "description": "A boolean value indicating whether this app supports access by anonymous guest users.",
1422
- "default": false
1511
+ "type": [
1512
+ "boolean",
1513
+ "null"
1514
+ ],
1515
+ "description": "A boolean value indicating whether this app allows management by anonymous users.",
1516
+ "default": null
1423
1517
  }
1424
1518
  },
1425
1519
  "description": "Specify meeting extension definition.",
@@ -1432,11 +1526,40 @@
1432
1526
  "properties": {
1433
1527
  "permissions": {
1434
1528
  "type": "object",
1435
- "description": "List of permissions that the app needs to function.",
1529
+ "description": "Specify Permissions which App lists for accessing Resource.",
1436
1530
  "additionalProperties": false,
1437
1531
  "properties": {
1532
+ "orgWide": {
1533
+ "description": "App's organization wide classic permissions provided by user.",
1534
+ "maxItems": 16,
1535
+ "type": "array",
1536
+ "uniqueItems": true,
1537
+ "items": {
1538
+ "type": "object",
1539
+ "additionalProperties": false,
1540
+ "properties": {
1541
+ "name": {
1542
+ "type": "string",
1543
+ "description": "The Permission name of app's permission node.",
1544
+ "maxLength": 128
1545
+ },
1546
+ "type": {
1547
+ "type": "string",
1548
+ "enum": [
1549
+ "Application",
1550
+ "Delegated"
1551
+ ],
1552
+ "description": "The Permission type of app's permission node."
1553
+ }
1554
+ },
1555
+ "required": [
1556
+ "name",
1557
+ "type"
1558
+ ]
1559
+ }
1560
+ },
1438
1561
  "resourceSpecific": {
1439
- "description": "Permissions that guard data access on a resource instance level.",
1562
+ "description": "App's resource specific permissions provided by user.",
1440
1563
  "maxItems": 16,
1441
1564
  "type": "array",
1442
1565
  "uniqueItems": true,
@@ -1446,7 +1569,7 @@
1446
1569
  "properties": {
1447
1570
  "name": {
1448
1571
  "type": "string",
1449
- "description": "The name of the resource-specific permission.",
1572
+ "description": "The Permission name of app's permission node.",
1450
1573
  "maxLength": 128
1451
1574
  },
1452
1575
  "type": {
@@ -1455,7 +1578,7 @@
1455
1578
  "Application",
1456
1579
  "Delegated"
1457
1580
  ],
1458
- "description": "The type of the resource-specific permission."
1581
+ "description": "The Permission type of app's permission node."
1459
1582
  }
1460
1583
  },
1461
1584
  "required": [
@@ -1491,83 +1614,174 @@
1491
1614
  },
1492
1615
  "additionalProperties": false
1493
1616
  },
1494
- "copilotAgents": {
1617
+ "copilotExtensions": {
1495
1618
  "type": "object",
1496
1619
  "properties": {
1497
- "declarativeAgents": {
1620
+ "plugins": {
1498
1621
  "type": "array",
1499
- "description": "An array of declarative agent elements references. Currently, only one declarative agent per application is supported.",
1622
+ "description": "An array of plugin elements references. Currently, only one plugin per application is supported.",
1500
1623
  "items": {
1501
- "$ref": "#/definitions/declarativeAgentRef"
1624
+ "$ref": "#/definitions/pluginRef"
1502
1625
  },
1503
1626
  "minItems": 1,
1504
1627
  "maxItems": 1
1505
1628
  },
1506
- "customEngineAgents": {
1629
+ "declarativeCopilots": {
1507
1630
  "type": "array",
1508
- "description": "An array of Custom Engine Agents. Currently only one Custom Engine Agent per application is supported.",
1631
+ "description": "An array of declarative copilot elements references. Currently, only one declarative copilot per application is supported.",
1509
1632
  "items": {
1510
- "type": "object",
1511
- "properties": {
1512
- "id": {
1513
- "$ref": "#/definitions/guid",
1514
- "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."
1515
- },
1516
- "type": {
1517
- "type": "string",
1518
- "enum": [
1519
- "bot"
1520
- ],
1521
- "description": "The type of the Custom Engine Agent. Currently only type bot is supported."
1522
- },
1523
- "disclaimer": {
1524
- "type": "object",
1525
- "properties": {
1526
- "text": {
1527
- "type": "string",
1528
- "description": "The message shown to users before they interact with this application. ",
1529
- "maxLength": 500
1530
- }
1531
- },
1532
- "required": [
1533
- "text"
1534
- ]
1535
- },
1536
- "functionsAs": {
1537
- "type": "string",
1538
- "enum": [
1539
- "agentOnly",
1540
- "agenticUserOnly"
1541
- ],
1542
- "default": "agentOnly",
1543
- "description": "Possible values: 'agenticUserOnly', 'agentOnly'. 'agenticUserOnly' means the customEngineAgent must be hired and cannot be installed as a regular agent. 'agentOnly' means it supports being installed as a regular agent only (default)."
1633
+ "$ref": "#/definitions/declarativeCopilotRef"
1634
+ },
1635
+ "minItems": 1,
1636
+ "maxItems": 1
1637
+ },
1638
+ "customEngineCopilots": {
1639
+ "type": "array",
1640
+ "description": "An array of Custom Engine Copilots. Currently only one Custom Engine Copilot per application is supported.",
1641
+ "items": {
1642
+ "type": "object",
1643
+ "properties": {
1644
+ "id": {
1645
+ "$ref": "#/definitions/guid",
1646
+ "description": "The id of the Custom Engine Copilot. 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."
1647
+ },
1648
+ "type": {
1649
+ "type": "string",
1650
+ "enum": [
1651
+ "bot"
1652
+ ],
1653
+ "description": "The type of the Custom Engine Copilot. Currently only type bot is supported."
1654
+ }
1544
1655
  },
1545
- "agenticUserTemplateId": {
1546
- "type": "string",
1547
- "description": "Unique identifier for the agentic user template. This id must match the id specified in an agentic user template in the agenticUserTemplates node"
1656
+ "required": [
1657
+ "id",
1658
+ "type"
1659
+ ],
1660
+ "additionalProperties": false
1661
+ },
1662
+ "minItems": 1,
1663
+ "maxItems": 1
1664
+ }
1665
+ },
1666
+ "additionalProperties": false,
1667
+ "anyOf": [
1668
+ {
1669
+ "oneOf": [
1670
+ {
1671
+ "required": [
1672
+ "declarativeCopilots"
1673
+ ]
1674
+ },
1675
+ {
1676
+ "required": [
1677
+ "customEngineCopilots"
1678
+ ]
1548
1679
  }
1549
- },
1550
- "required": [
1551
- "id",
1552
- "type"
1553
- ],
1554
- "additionalProperties": false
1680
+ ]
1681
+ },
1682
+ {
1683
+ "required": [
1684
+ "plugins"
1685
+ ]
1686
+ }
1687
+ ]
1688
+ },
1689
+ "copilotAgents": {
1690
+ "type": "object",
1691
+ "properties": {
1692
+ "plugins": {
1693
+ "type": "array",
1694
+ "description": "An array of plugin elements references. Currently, only one plugin per application is supported.",
1695
+ "items": {
1696
+ "$ref": "#/definitions/pluginRef"
1697
+ },
1698
+ "minItems": 1,
1699
+ "maxItems": 1
1700
+ },
1701
+ "declarativeAgents": {
1702
+ "type": "array",
1703
+ "description": "An array of declarative agent elements references. Currently, only one declarative agent per application is supported.",
1704
+ "items": {
1705
+ "$ref": "#/definitions/declarativeAgentRef"
1706
+ },
1707
+ "minItems": 1,
1708
+ "maxItems": 1
1709
+ },
1710
+ "customEngineAgents": {
1711
+ "type": "array",
1712
+ "description": "An array of Custom Engine Agents. Currently only one Custom Engine Agent per application is supported.",
1713
+ "items": {
1714
+ "type": "object",
1715
+ "properties": {
1716
+ "id": {
1717
+ "$ref": "#/definitions/guid",
1718
+ "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."
1719
+ },
1720
+ "type": {
1721
+ "type": "string",
1722
+ "enum": [
1723
+ "bot"
1724
+ ],
1725
+ "description": "The type of the Custom Engine Agent. Currently only type bot is supported."
1726
+ },
1727
+ "disclaimer": {
1728
+ "type": "object",
1729
+ "properties": {
1730
+ "text": {
1731
+ "type": "string",
1732
+ "description": "The message shown to users before they interact with this application. ",
1733
+ "maxLength": 500
1734
+ }
1735
+ },
1736
+ "required": [
1737
+ "text"
1738
+ ]
1739
+ },
1740
+ "functionsAs": {
1741
+ "type": "string",
1742
+ "enum": [
1743
+ "agentOnly",
1744
+ "agenticUserOnly",
1745
+ "agentOrAgenticUser"
1746
+ ],
1747
+ "default": "agentOnly",
1748
+ "description": "Possible values: 'agenticUserOnly', 'agentOnly', or 'agentOrAgenticUser'. 'agenticUserOnly' means the customEngineAgent must be hired and cannot be installed as a regular agent. 'agentOrAgenticUser' means the customEngineAgent supports both being installed as a regular agent and being hired. 'agentOnly' means it supports being installed as a regular agent only (default)."
1749
+ },
1750
+ "agenticUserTemplateId": {
1751
+ "type": "string",
1752
+ "description": "Unique identifier for the agentic user template. This id must match the id specified in an agentic user template in the agenticUserTemplates node"
1753
+ }
1754
+ },
1755
+ "required": [
1756
+ "id",
1757
+ "type"
1758
+ ],
1759
+ "additionalProperties": false
1555
1760
  },
1556
1761
  "minItems": 1,
1557
1762
  "maxItems": 1
1558
1763
  }
1559
1764
  },
1560
1765
  "additionalProperties": false,
1561
- "oneOf": [
1766
+ "anyOf": [
1562
1767
  {
1563
- "required": [
1564
- "declarativeAgents"
1565
- ]
1768
+ "oneOf": [
1769
+ {
1770
+ "required": [
1771
+ "declarativeAgents"
1772
+ ]
1773
+ },
1774
+ {
1775
+ "required": [
1776
+ "customEngineAgents"
1777
+ ]
1778
+ }
1779
+ ]
1566
1780
  },
1567
1781
  {
1568
- "required": [
1569
- "customEngineAgents"
1570
- ]
1782
+ "required": [
1783
+ "plugins"
1784
+ ]
1571
1785
  }
1572
1786
  ]
1573
1787
  },
@@ -1580,58 +1794,78 @@
1580
1794
  "minimum": 1,
1581
1795
  "maxItems": 1
1582
1796
  },
1797
+ "localAgents": {
1798
+ "type": "array",
1799
+ "description": "An array of references to local agent declarations. A local agent runs on the user's device rather than as a cloud service. Each reference points to a separate localagent.json file in the app package that holds the definition. Currently, only one local agent per application is supported.",
1800
+ "items": {
1801
+ "$ref": "#/definitions/localAgentRef"
1802
+ },
1803
+ "minItems": 1,
1804
+ "maxItems": 1
1805
+ },
1806
+ "localTools": {
1807
+ "type": "array",
1808
+ "description": "An array of references to local tool declarations. A local tool runs as an executable on the user's device rather than as a cloud service. Each reference points to a separate localtool.json file in the app package that holds the definition. Currently, only one local tool per application is supported.",
1809
+ "items": {
1810
+ "$ref": "#/definitions/localToolRef"
1811
+ },
1812
+ "minItems": 1,
1813
+ "maxItems": 1
1814
+ },
1583
1815
  "elementRelationshipSet": {
1584
1816
  "type": "object",
1585
1817
  "properties": {
1586
- "oneWayDependencies": {
1587
- "type": "array",
1588
- "items": {
1589
- "$ref": "#/definitions/oneWayDependency"
1590
- },
1591
- "minItems": 1,
1592
- "description": "An array containing multiple instances of unidirectional dependency relationships (each represented by a oneWayDependency object)."
1593
- },
1594
- "mutualDependencies": {
1595
- "type": "array",
1596
- "items": {
1597
- "$ref": "#/definitions/mutualDependency"
1818
+ "oneWayDependencies": {
1819
+ "type": "array",
1820
+ "items": {
1821
+ "$ref": "#/definitions/oneWayDependency"
1822
+ },
1823
+ "minItems": 1,
1824
+ "description": "An array containing multiple instances of unidirectional dependency relationships (each represented by a oneWayDependency object)."
1598
1825
  },
1599
- "minItems": 1,
1600
- "description": "An array containing multiple instances of mutual dependency relationships between elements (each represented by a mutualDependency object)."
1601
- }
1826
+ "mutualDependencies": {
1827
+ "type": "array",
1828
+ "items": {
1829
+ "$ref": "#/definitions/mutualDependency"
1830
+ },
1831
+ "minItems": 1,
1832
+ "description": "An array containing multiple instances of mutual dependency relationships between elements (each represented by a mutualDependency object)."
1833
+ }
1602
1834
  },
1603
1835
  "anyOf": [
1604
- {
1605
- "required": [
1606
- "oneWayDependencies"
1607
- ]
1608
- },
1609
- {
1610
- "required": [
1611
- "mutualDependencies"
1612
- ]
1613
- }
1836
+ {
1837
+ "required": [
1838
+ "oneWayDependencies"
1839
+ ]
1840
+ },
1841
+ {
1842
+ "required": [
1843
+ "mutualDependencies"
1844
+ ]
1845
+ }
1614
1846
  ],
1615
1847
  "additionalProperties": false
1616
1848
  },
1617
1849
  "backgroundLoadConfiguration": {
1618
- "type": "object",
1619
- "description": "Optional property containing background loading configuration. By opting into this performance enhancement, your app is eligible to be loaded in the background in any Microsoft 365 application host that supports this feature. Note that setting this property gives the host client permission to load the app in the background but does not guarantee the app will be preloaded at runtime. Whether an app is preloaded in the background will be dynamically determined based on usage and other criteria.",
1620
- "properties": {
1621
- "tabConfiguration": {
1622
- "type": "object",
1623
- "description": "Optional property within backgroundLoadConfiguration containing tab settings for background loading. Setting tabConfiguration indicates that the app supports background loading of tabs.",
1624
- "properties": {
1625
- "contentUrl": {
1626
- "$ref": "#/definitions/anyHttpUrl",
1627
- "description": "Required URL for background loading. This can be the same contentUrl from the staticTabs section or an alternative endpoint used for background loading."
1850
+ "type": "object",
1851
+ "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.",
1852
+ "properties": {
1853
+ "tabConfiguration": {
1854
+ "type": "object",
1855
+ "description": "Optional property within backgroundLoadConfiguration containing tab settings for background loading.",
1856
+ "properties": {
1857
+ "contentUrl": {
1858
+ "$ref": "#/definitions/anyHttpUrl",
1859
+ "description": "Required URL for background loading. This can be the same contentUrl from the staticTabs section or an alternative endpoint used for background loading."
1860
+ }
1861
+ },
1862
+ "required": [
1863
+ "contentUrl"
1864
+ ],
1865
+ "additionalProperties": false
1628
1866
  }
1629
- },
1630
- "required": [ "contentUrl" ],
1631
- "additionalProperties": false
1632
- }
1633
- },
1634
- "additionalProperties": false
1867
+ },
1868
+ "additionalProperties": false
1635
1869
  },
1636
1870
  "agentConnectors": {
1637
1871
  "type": "array",
@@ -1641,173 +1875,299 @@
1641
1875
  "type": "object",
1642
1876
  "description": "An agent connector represents a mechanism to enable agents to access information from systems outside of Microsoft 365, often via an MCP Server. Other mechanisms include using OpenAPI descriptions for calling external HTTP APIs. The role of the agent connector is to provide the necessary configuration information to agents or other M365 applications to connect to these external systems. An agent connector can be provided for use by other elements described within the same Unified App Manifest, or as a standalone resource that can be referenced in the Unified App Manifest of other M365 applications.",
1643
1877
  "properties": {
1644
- "id": {
1645
- "type": "string",
1646
- "description": "Unique identifier for the agent connector",
1647
- "maxLength": 64
1648
- },
1649
- "reusable": {
1650
- "type": "boolean",
1651
- "description": "Indicates whether this connector can be reused by other applications.",
1652
- "default": false
1653
- },
1654
- "displayName": {
1655
- "type": "string",
1656
- "description": "A user-friendly name for the connector, which can be displayed in UIs.",
1657
- "maxLength": 128
1658
- },
1659
- "description": {
1660
- "type": "string",
1661
- "description": "A brief description of the connector's purpose and functionality.",
1662
- "maxLength": 4000
1663
- },
1664
- "toolSource": {
1665
- "type": "object",
1666
- "description": "Configuration details for connectors that provide tools for agents, either via a plugin, a remote MCP server or a local MCP server. One and only one of the above properties MUST be defined within a tool source object.",
1667
- "properties": {
1668
- "plugin": {
1669
- "type": "object",
1670
- "description": "Configuration details for connectors that leverage a Plugin Manifest. Both the id and file properties must be provided.",
1671
- "properties": {
1672
- "id": {
1673
- "type": "string",
1674
- "description": "The unique identifier of the plugin that provides the tools.",
1675
- "maxLength": 64
1676
- },
1677
- "file": {
1678
- "$ref": "#/definitions/relativePath",
1679
- "description": "The relative path to the plugin manifest file within the app package."
1680
- }
1681
- },
1682
- "required": [ "id", "file" ],
1683
- "additionalProperties": false
1878
+ "id": {
1879
+ "type": "string",
1880
+ "description": "Unique identifier for the agent connector",
1881
+ "maxLength": 64
1684
1882
  },
1685
- "remoteMcpServer": {
1686
- "type": "object",
1687
- "description": "Adds support for connectors that leverage a Remote MCP Server as the source of data.",
1688
- "additionalProperties": false,
1689
- "properties": {
1690
- "mcpServerUrl": {
1691
- "$ref": "#/definitions/secureHttpUrl",
1692
- "description": "The URL of the remote MCP Server."
1693
- },
1694
- "mcpToolDescription": {
1695
- "type": "object",
1696
- "description": "Configuration for MCP tool descriptions by file reference. When this property is present it indicates that dynamic discovery will not be used.",
1697
- "properties": {
1698
- "file": {
1699
- "$ref": "#/definitions/relativePath",
1700
- "description": "The relative path to the MCP tool description file within the app package."
1701
- }
1702
- },
1703
- "additionalProperties": false
1704
- },
1705
- "authorization": {
1706
- "type": "object",
1707
- "description": "Authorization configuration for connecting to the remote MCP server. The design mirrors that of Plugin Manifests https://learn.microsoft.com/microsoft-365-copilot/extensibility/api-plugin-manifest-2.3",
1708
- "additionalProperties": false,
1709
- "properties": {
1710
- "type": {
1711
- "type": "string",
1712
- "enum": [ "None", "OAuthPluginVault", "ApiKeyPluginVault", "DynamicClientRegistration", "AzureKeyVault" ],
1713
- "description": "The type of authorization required to invoke the MCP server. Supported values are: 'None' (anonymous access), 'OAuthPluginVault' (OAuth flow with referenceId), 'ApiKeyPluginVault' (API Key with referenceId), 'DynamicClientRegistration' (dynamic client registration with referenceId), 'AzureKeyVault' (Azure Key Vault integration)."
1714
- },
1715
- "referenceId": {
1716
- "type": "string",
1717
- "maxLength": 128,
1718
- "description": "A reference identifier used when type is OAuthPluginVault, ApiKeyPluginVault, DynamicClientRegistration, or AzureKeyVault. The referenceId value is acquired independently when providing the necessary authorization configuration values. This mechanism exists to prevent the need for storing secret values in the plugin manifest."
1719
- }
1720
- },
1721
- "required": [ "type" ],
1722
- "if": {
1723
- "properties": {
1724
- "type": {
1725
- "enum": [ "OAuthPluginVault", "ApiKeyPluginVault", "DynamicClientRegistration", "AzureKeyVault" ]
1726
- }
1727
- }
1728
- },
1729
- "then": {
1730
- "required": [ "referenceId" ]
1731
- }
1732
- }
1733
- },
1734
- "required": [ "mcpServerUrl" ]
1883
+ "reusable": {
1884
+ "type": "boolean",
1885
+ "description": "Indicates whether this connector can be reused by other applications.",
1886
+ "default": false
1887
+ },
1888
+ "displayName": {
1889
+ "type": "string",
1890
+ "description": "A user-friendly name for the connector, which can be displayed in UIs.",
1891
+ "maxLength": 128
1892
+ },
1893
+ "description": {
1894
+ "type": "string",
1895
+ "description": "A brief description of the connector's purpose and functionality.",
1896
+ "maxLength": 4000
1735
1897
  },
1736
- "localMcpServer": {
1898
+ "toolSource": {
1737
1899
  "type": "object",
1738
- "description": "Adds support for connectors that leverage a local MCP Server as the source of data.",
1739
- "additionalProperties": false,
1900
+ "description": "Configuration details for connectors that provide tools for agents, either via a plugin, a remote MCP server, a local MCP server or a connector described by an OpenAPI description. One and only one of the above properties MUST be defined within a tool source object.",
1740
1901
  "properties": {
1741
- "mcpServerIdentifier": {
1742
- "type": "string",
1743
- "maxLength": 128,
1744
- "description": "The unique identifier of the local MCP Server deployed via some secure mechanism to the user's desktop."
1745
- },
1746
- "mcpToolDescription": {
1747
- "type": "object",
1748
- "additionalProperties": false,
1749
- "description": "Configuration for MCP tool descriptions by file reference. When this property is present it indicates that dynamic discovery will not be used.",
1750
- "properties": {
1751
- "file": {
1752
- "$ref": "#/definitions/relativePath",
1753
- "description": "The relative path to the MCP tool description file within the app package."
1754
- }
1755
- }
1756
- },
1757
- "authorization": {
1758
- "type": "object",
1759
- "description": "Authorization configuration for connecting to the local MCP server. The design mirrors that of Plugin Manifests https://learn.microsoft.com/microsoft-365-copilot/extensibility/api-plugin-manifest-2.3",
1760
- "properties": {
1761
- "type": {
1762
- "type": "string",
1763
- "enum": [ "None", "OAuthPluginVault", "ApiKeyPluginVault", "DynamicClientRegistration", "AzureKeyVault" ],
1764
- "description": "The type of authorization required to invoke the MCP server. Supported values are: 'None' (anonymous access), 'OAuthPluginVault' (OAuth flow with referenceId), 'ApiKeyPluginVault' (API Key with referenceId), 'DynamicClientRegistration' (dynamic client registration with referenceId), 'AzureKeyVault' (Azure Key Vault integration)."
1765
- },
1766
- "referenceId": {
1767
- "type": "string",
1768
- "maxLength": 128,
1769
- "description": " (maxLength: 128)\tA reference identifier used when type is OAuthPluginVault, ApiKeyPluginVault, DynamicClientRegistration, or AzureKeyVault. The referenceId value is acquired independently when providing the necessary authorization configuration values. This mechanism exists to prevent the need for storing secret values in the plugin manifest."
1770
- }
1771
- },
1772
- "additionalProperties": false,
1773
- "required": [ "type" ],
1774
- "if": {
1775
- "properties": {
1776
- "type": {
1777
- "enum": [ "OAuthPluginVault", "ApiKeyPluginVault", "DynamicClientRegistration", "AzureKeyVault" ]
1778
- }
1779
- }
1902
+ "plugin": {
1903
+ "type": "object",
1904
+ "description": "Configuration details for connectors that leverage a Plugin Manifest. Either both id and file properties must be provided (for external plugin reference), or only the description property must be provided (for inline plugin manifest).",
1905
+ "properties": {
1906
+ "id": {
1907
+ "type": "string",
1908
+ "description": "The unique identifier of the plugin that provides the tools.",
1909
+ "maxLength": 64
1910
+ },
1911
+ "file": {
1912
+ "$ref": "#/definitions/relativePath",
1913
+ "description": "The relative path to the plugin manifest file within the app package."
1914
+ }
1915
+ },
1916
+ "required": [
1917
+ "id",
1918
+ "file"
1919
+ ],
1920
+ "additionalProperties": false
1780
1921
  },
1781
- "then": {
1782
- "required": [ "referenceId" ]
1783
- }
1784
- }
1785
- },
1786
- "required": [ "mcpServerIdentifier" ]
1787
- }
1788
- },
1789
- "additionalProperties": false
1790
- }
1922
+ "remoteMcpServer": {
1923
+ "type": "object",
1924
+ "additionalProperties": false,
1925
+ "properties": {
1926
+ "mcpServerUrl": {
1927
+ "$ref": "#/definitions/secureHttpUrl",
1928
+ "description": "The URL of the remote MCP Server."
1929
+ },
1930
+ "mcpToolDescription": {
1931
+ "type": "object",
1932
+ "description": "Configuration for MCP tool descriptions by file reference. When this property is present it indicates that dynamic discovery will not be used.",
1933
+ "properties": {
1934
+ "file": {
1935
+ "$ref": "#/definitions/relativePath",
1936
+ "description": "The relative path to the MCP tool description file within the app package."
1937
+ }
1938
+ },
1939
+ "required": [
1940
+ "file"
1941
+ ],
1942
+ "additionalProperties": false
1943
+ },
1944
+ "authorization": {
1945
+ "type": "object",
1946
+ "description": "Authorization configuration for connecting to the remote MCP server. The design mirrors that of Plugin Manifests https://spec-hub.azurewebsites.net/specifications/PluginManifest-2.3.html",
1947
+ "additionalProperties": false,
1948
+ "properties": {
1949
+ "type": {
1950
+ "type": "string",
1951
+ "enum": [
1952
+ "None",
1953
+ "OAuthPluginVault",
1954
+ "ApiKeyPluginVault",
1955
+ "DynamicClientRegistration",
1956
+ "AzureKeyVault",
1957
+ "ConnectionVault"
1958
+ ],
1959
+ "description": "The type of authorization required to invoke the MCP server. Supported values are: 'None' (anonymous access), 'OAuthPluginVault' (OAuth flow with referenceId), 'ApiKeyPluginVault' (API Key with referenceId), 'DynamicClientRegistration' (dynamic client registration with referenceId), 'AzureKeyVault' (Azure Key Vault URI with referenceId), 'ConnectionVault' (Power Platform connector-managed connection referenced by referenceId)."
1960
+ },
1961
+ "referenceId": {
1962
+ "type": "string",
1963
+ "maxLength": 128,
1964
+ "description": "A reference identifier used when type is OAuthPluginVault, ApiKeyPluginVault, DynamicClientRegistration, AzureKeyVault, or ConnectionVault. The referenceId value is acquired independently when providing the necessary authorization configuration values. This mechanism exists to prevent the need for storing secret values in the plugin manifest."
1965
+ }
1966
+ },
1967
+ "required": [
1968
+ "type"
1969
+ ],
1970
+ "if": {
1971
+ "properties": {
1972
+ "type": {
1973
+ "enum": [
1974
+ "OAuthPluginVault",
1975
+ "ApiKeyPluginVault",
1976
+ "DynamicClientRegistration",
1977
+ "AzureKeyVault",
1978
+ "ConnectionVault"
1979
+ ]
1980
+ }
1981
+ }
1982
+ },
1983
+ "then": {
1984
+ "required": [
1985
+ "referenceId"
1986
+ ]
1987
+ }
1988
+ }
1989
+ },
1990
+ "required": [
1991
+ "mcpServerUrl"
1992
+ ]
1993
+ },
1994
+ "localMcpServer": {
1995
+ "type": "object",
1996
+ "additionalProperties": false,
1997
+ "properties": {
1998
+ "mcpServerIdentifier": {
1999
+ "type": "string",
2000
+ "maxLength": 128,
2001
+ "description": "The unique identifier of the local MCP Server deployed via some secure mechanism to the user's desktop."
2002
+ },
2003
+ "mcpToolDescription": {
2004
+ "type": "object",
2005
+ "additionalProperties": false,
2006
+ "description": "Configuration for MCP tool descriptions by file reference. When this property is present it indicates that dynamic discovery will not be used.",
2007
+ "properties": {
2008
+ "file": {
2009
+ "$ref": "#/definitions/relativePath",
2010
+ "description": "The relative path to the MCP tool description file within the app package."
2011
+ }
2012
+ },
2013
+ "required": [
2014
+ "file"
2015
+ ]
2016
+ },
2017
+ "authorization": {
2018
+ "type": "object",
2019
+ "description": "Authorization configuration for connecting to the local MCP server. The design mirrors that of Plugin Manifests https://spec-hub.azurewebsites.net/specifications/PluginManifest-2.3.html",
2020
+ "properties": {
2021
+ "type": {
2022
+ "type": "string",
2023
+ "enum": [
2024
+ "None",
2025
+ "OAuthPluginVault",
2026
+ "ApiKeyPluginVault",
2027
+ "DynamicClientRegistration",
2028
+ "AzureKeyVault",
2029
+ "ConnectionVault"
2030
+ ],
2031
+ "description": "The type of authorization required to invoke the MCP server. Supported values are: 'None' (anonymous access), 'OAuthPluginVault' (OAuth flow with referenceId), 'ApiKeyPluginVault' (API Key with referenceId), 'DynamicClientRegistration' (dynamic client registration with referenceId), 'AzureKeyVault' (Azure Key Vault URI with referenceId), 'ConnectionVault' (Power Platform connector-managed connection referenced by referenceId)."
2032
+ },
2033
+ "referenceId": {
2034
+ "type": "string",
2035
+ "maxLength": 128,
2036
+ "description": "A reference identifier used when type is OAuthPluginVault, ApiKeyPluginVault, DynamicClientRegistration, AzureKeyVault, or ConnectionVault. The referenceId value is acquired independently when providing the necessary authorization configuration values. This mechanism exists to prevent the need for storing secret values in the plugin manifest."
2037
+ }
2038
+ },
2039
+ "additionalProperties": false,
2040
+ "required": [
2041
+ "type"
2042
+ ],
2043
+ "if": {
2044
+ "properties": {
2045
+ "type": {
2046
+ "enum": [
2047
+ "OAuthPluginVault",
2048
+ "ApiKeyPluginVault",
2049
+ "DynamicClientRegistration",
2050
+ "AzureKeyVault",
2051
+ "ConnectionVault"
2052
+ ]
2053
+ }
2054
+ }
2055
+ },
2056
+ "then": {
2057
+ "required": [
2058
+ "referenceId"
2059
+ ]
2060
+ }
2061
+ }
2062
+ },
2063
+ "required": [
2064
+ "mcpServerIdentifier"
2065
+ ]
2066
+ },
2067
+ "openApiConnector": {
2068
+ "type": "object",
2069
+ "additionalProperties": false,
2070
+ "description": "Adds support for connectors backed by an HTTP API described by an OpenAPI description, such as a Power Platform connector. The OpenAPI description is not carried in the app package; it is resolved at runtime from the connector identity supplied in the authorization referenceId.",
2071
+ "properties": {
2072
+ "authorization": {
2073
+ "type": "object",
2074
+ "description": "Authorization configuration for connecting to the connector backend.",
2075
+ "additionalProperties": false,
2076
+ "properties": {
2077
+ "type": {
2078
+ "type": "string",
2079
+ "enum": [
2080
+ "ConnectionVault"
2081
+ ],
2082
+ "description": "The type of authorization required to invoke the connector. Supported value: 'ConnectionVault' (connector-managed connection referenced by referenceId)."
2083
+ },
2084
+ "referenceId": {
2085
+ "type": "string",
2086
+ "maxLength": 128,
2087
+ "description": "A reference identifier. For a Power Platform connector this is the connector logical name, which identifies the connector whose OpenAPI description is resolved at runtime. The referenceId value is acquired independently when providing the necessary authorization configuration values. This mechanism exists to prevent the need for storing secret values in the manifest."
2088
+ }
2089
+ },
2090
+ "required": [
2091
+ "type",
2092
+ "referenceId"
2093
+ ]
2094
+ }
2095
+ },
2096
+ "required": [
2097
+ "authorization"
2098
+ ]
2099
+ }
2100
+ },
2101
+ "additionalProperties": false
2102
+ }
1791
2103
  },
1792
- "required": [ "id", "displayName" ],
2104
+ "required": [
2105
+ "id",
2106
+ "displayName"
2107
+ ],
1793
2108
  "additionalProperties": false
1794
2109
  }
1795
2110
  },
1796
2111
  "agentSkills": {
1797
2112
  "type": "array",
1798
- "description": "Agent skill declarations following the Agent Skills open standard (agentskills.io). Each entry references a SKILL.md folder.",
2113
+ "description": "Agent skill declarations following the Agent Skills open standard (agentskills.io). Each entry references a SKILL.md folder and optionally specifies discoverability settings. Skills declared here are externally discoverable.",
1799
2114
  "maxItems": 20,
1800
2115
  "items": {
1801
2116
  "type": "object",
1802
- "description": "An agent skill declaration. References a folder containing a SKILL.md file.",
2117
+ "description": "An agent skill declaration. References a folder containing a SKILL.md file, with optional discoverability controls.",
1803
2118
  "properties": {
1804
2119
  "folder": {
1805
2120
  "type": "string",
1806
2121
  "description": "Path to the folder within the app package that contains the SKILL.md file.",
1807
2122
  "maxLength": 256
2123
+ },
2124
+ "scopes": {
2125
+ "type": "array",
2126
+ "description": "Specifies which scenarios this skill is discoverable in. If omitted, discoverable in all scenarios. Values reuse the existing manifest vocabulary for consistency with bots, tabs, and other elements.",
2127
+ "items": {
2128
+ "type": "string",
2129
+ "enum": [
2130
+ "team",
2131
+ "groupChat"
2132
+ ]
2133
+ },
2134
+ "minItems": 1,
2135
+ "uniqueItems": true
2136
+ }
2137
+ },
2138
+ "required": [
2139
+ "folder"
2140
+ ],
2141
+ "additionalProperties": false
2142
+ }
2143
+ },
2144
+ "thirdPartyLicenses": {
2145
+ "type": "array",
2146
+ "description": "Provides information about third-party software licenses required by the application. Each entry describes one license or license group. Maximum of 5 entries.",
2147
+ "maxItems": 5,
2148
+ "items": {
2149
+ "type": "object",
2150
+ "properties": {
2151
+ "licenseName": {
2152
+ "type": "string",
2153
+ "description": "The name or summary of the third-party license (for example, \"MIT License\" or \"Apache 2.0\"). Maximum length is 64 characters.",
2154
+ "maxLength": 64
2155
+ },
2156
+ "licenseUrl": {
2157
+ "$ref": "#/definitions/secureHttpUrl",
2158
+ "description": "The HTTPS URL that directs users to third-party license information and, if applicable, purchase options for commercial components. Must use HTTPS. Maximum length is 2048 characters."
2159
+ },
2160
+ "licenseDescription": {
2161
+ "type": "string",
2162
+ "description": "A brief description of the third-party licenses required, including which components are open-source (with attribution requirements) and which require commercial purchase or licensing fees. Maximum length is 1024 characters.",
2163
+ "maxLength": 1024
1808
2164
  }
1809
2165
  },
1810
- "required": ["folder"],
2166
+ "required": [
2167
+ "licenseName",
2168
+ "licenseUrl",
2169
+ "licenseDescription"
2170
+ ],
1811
2171
  "additionalProperties": false
1812
2172
  }
1813
2173
  }
@@ -1822,6 +2182,36 @@
1822
2182
  "icons",
1823
2183
  "accentColor"
1824
2184
  ],
2185
+ "anyOf": [
2186
+ {
2187
+ "not": {
2188
+ "required": [
2189
+ "copilotExtensions",
2190
+ "copilotAgents"
2191
+ ]
2192
+ }
2193
+ },
2194
+ {
2195
+ "required": [
2196
+ "copilotExtensions"
2197
+ ],
2198
+ "not": {
2199
+ "required": [
2200
+ "copilotAgents"
2201
+ ]
2202
+ }
2203
+ },
2204
+ {
2205
+ "required": [
2206
+ "copilotAgents"
2207
+ ],
2208
+ "not": {
2209
+ "required": [
2210
+ "copilotExtensions"
2211
+ ]
2212
+ }
2213
+ }
2214
+ ],
1825
2215
  "definitions": {
1826
2216
  "relativePath": {
1827
2217
  "type": "string",
@@ -1854,29 +2244,6 @@
1854
2244
  "type": "string",
1855
2245
  "pattern": "^[A-Za-z0-9]{1,8}(-[A-Za-z0-9]{1,8}){0,2}$"
1856
2246
  },
1857
- "taskInfo": {
1858
- "type": "object",
1859
- "additionalProperties": false,
1860
- "properties": {
1861
- "title": {
1862
- "type": "string",
1863
- "description": "Initial dialog title.",
1864
- "maxLength": 64
1865
- },
1866
- "width": {
1867
- "$ref": "#/definitions/taskInfoDimension",
1868
- "description": "Dialog width - either a number in pixels or default layout such as 'large', 'medium', or 'small'."
1869
- },
1870
- "height": {
1871
- "$ref": "#/definitions/taskInfoDimension",
1872
- "description": "Dialog height - either a number in pixels or default layout such as 'large', 'medium', or 'small'."
1873
- },
1874
- "url": {
1875
- "$ref": "#/definitions/anyHttpUrl",
1876
- "description": "Initial webview URL."
1877
- }
1878
- }
1879
- },
1880
2247
  "taskInfoDimension": {
1881
2248
  "type": "string",
1882
2249
  "pattern": "^((([0-9]*\\.)?[0-9]+)|[lL][aA][rR][gG][eE]|[mM][eE][dD][iI][uU][mM]|[sS][mM][aA][lL][lL])$",
@@ -1927,7 +2294,7 @@
1927
2294
  "type": "array",
1928
2295
  "description": " Keyboard shortcuts, also known as key combinations, enable your add-in's users to work more efficiently. Keyboard shortcuts also improve the add-in's accessibility for users with disabilities by providing an alternative to the mouse.",
1929
2296
  "items": {
1930
- "$ref": "#/definitions/extensionKeyboardShortcut"
2297
+ "$ref": "#/definitions/extensionKeyboardShortcut"
1931
2298
  },
1932
2299
  "minItems": 1,
1933
2300
  "maxItems": 10
@@ -1939,8 +2306,8 @@
1939
2306
  },
1940
2307
  "requirementsExtensionElement": {
1941
2308
  "type": "object",
1942
- "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.",
1943
2309
  "minProperties": 1,
2310
+ "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.",
1944
2311
  "properties": {
1945
2312
  "capabilities": {
1946
2313
  "type": "array",
@@ -1971,7 +2338,8 @@
1971
2338
  },
1972
2339
  "scopes": {
1973
2340
  "type": "array",
1974
- "description": "Identifies the scopes in which the add-in can run. For example, mail means Outlook.",
2341
+ "description": "Identifies the scopes in which the add-in can run. Supported values: 'mail', 'workbook', 'document', 'presentation'.",
2342
+ "minItems": 1,
1975
2343
  "maxItems": 4,
1976
2344
  "items": {
1977
2345
  "type": "string",
@@ -2001,11 +2369,11 @@
2001
2369
  },
2002
2370
  "extensionRuntimesArray": {
2003
2371
  "type": "array",
2004
- "description": "A runtime environment for a page or script.",
2005
2372
  "minItems": 1,
2006
2373
  "maxItems": 20,
2007
2374
  "items": {
2008
2375
  "type": "object",
2376
+ "description": "A runtime environment for a page or script.",
2009
2377
  "properties": {
2010
2378
  "requirements": {
2011
2379
  "$ref": "#/definitions/requirementsExtensionElement"
@@ -2049,517 +2417,450 @@
2049
2417
  ]
2050
2418
  }
2051
2419
  },
2052
- "extensionRuntimesActions": {
2053
- "type": "array",
2054
- "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.",
2055
- "minItems": 1,
2056
- "maxItems": 150,
2057
- "items": {
2058
- "$ref": "#/definitions/extensionRuntimesActionsItem"
2420
+ "extensionCustomFunctions": {
2421
+ "type": "object",
2422
+ "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().",
2423
+ "properties": {
2424
+ "functions": {
2425
+ "description": "Array of function object which defines function metadata.",
2426
+ "items": {
2427
+ "$ref": "#/definitions/extensionFunction"
2428
+ },
2429
+ "maxItems": 20000,
2430
+ "minItems": 1,
2431
+ "type": "array"
2432
+ },
2433
+ "namespace": {
2434
+ "$ref": "#/definitions/extensionCustomFunctionsNamespace"
2435
+ },
2436
+ "allowCustomDataForDataTypeAny": {
2437
+ "type": "boolean",
2438
+ "description": "Allows a custom function to accept Excel data types as parameters and return values.",
2439
+ "default": false
2440
+ },
2441
+ "metadataUrl": {
2442
+ "$ref": "#/definitions/secureHttpUrl",
2443
+ "description": "The full URL of a metadata json file. If `functions` is not empty, the Office client will install CustomFunctions based on `functions`. Any definitions in `metadataUrl` will be ignored."
2444
+ },
2445
+ "enums": {
2446
+ "type": "array",
2447
+ "description": "Array of custom defined enum objects.",
2448
+ "items": {
2449
+ "$ref": "#/definitions/enum"
2450
+ },
2451
+ "maxItems": 256
2452
+ }
2059
2453
  },
2060
2454
  "additionalProperties": false
2061
2455
  },
2062
- "extensionRuntimesActionsItem": {
2456
+ "enum": {
2063
2457
  "type": "object",
2064
2458
  "properties": {
2065
2459
  "id": {
2066
2460
  "type": "string",
2067
- "description": "Identifier for this action. Maximum length is 64 characters. This value is passed to the code file.",
2068
- "maxLength": 64
2461
+ "description": "A unique ID for the enum.",
2462
+ "maxLength": 64,
2463
+ "minLength": 3,
2464
+ "pattern": "^[A-Za-z][A-Za-z0-9._]*$"
2069
2465
  },
2070
2466
  "type": {
2071
2467
  "type": "string",
2468
+ "description": "The type of the values in this enum.",
2072
2469
  "enum": [
2073
- "executeFunction",
2074
- "openPage",
2075
- "executeDataFunction"
2076
- ],
2077
- "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."
2078
- },
2079
- "displayName": {
2080
- "type": "string",
2081
- "description": "Display name of the action. Maximum length is 64 characters.",
2082
- "maxLength": 64
2083
- },
2084
- "pinnable": {
2085
- "type": "boolean",
2086
- "description": "Specifies that a task pane supports pinning, which keeps the task pane open when the user changes the selection."
2087
- },
2088
- "view": {
2089
- "type": "string",
2090
- "description": "View where the page should be opened. Maximum length is 64 characters. ",
2091
- "maxLength": 64
2092
- },
2093
- "multiselect": {
2094
- "type": "boolean",
2095
- "description": "Whether allows the action to have multiple selection.",
2096
- "default": false
2470
+ "number",
2471
+ "string"
2472
+ ]
2097
2473
  },
2098
- "supportsNoItemContext": {
2099
- "type": "boolean",
2100
- "description": "Whether allows task pane add-ins to activate without the Reading Pane enabled or a message selected. ",
2101
- "default": false
2474
+ "values": {
2475
+ "type": "array",
2476
+ "description": "Array that defines the constants for the enum.",
2477
+ "items": {
2478
+ "type": "object",
2479
+ "properties": {
2480
+ "name": {
2481
+ "type": "string",
2482
+ "description": "A brief description of the constant.",
2483
+ "maxLength": 256
2484
+ },
2485
+ "numberValue": {
2486
+ "type": [
2487
+ "number",
2488
+ "null"
2489
+ ],
2490
+ "description": "When enum type is number, the actual number value of the constant."
2491
+ },
2492
+ "stringValue": {
2493
+ "type": "string",
2494
+ "description": "When enum type is string, the actual string value of the constant."
2495
+ },
2496
+ "tooltip": {
2497
+ "type": "string",
2498
+ "description": "Additional information about the constant, intended to provide more context or details.",
2499
+ "maxLength": 256
2500
+ }
2501
+ },
2502
+ "additionalProperties": false,
2503
+ "required": [
2504
+ "name"
2505
+ ]
2506
+ }
2102
2507
  }
2103
2508
  },
2104
- "additionalProperties": false,
2105
2509
  "required": [
2106
2510
  "id",
2107
- "type"
2108
- ]
2511
+ "type",
2512
+ "values"
2513
+ ],
2514
+ "additionalProperties": false
2109
2515
  },
2110
- "extensionRibbonsArray": {
2111
- "type": "array",
2112
- "minItems": 1,
2113
- "maxItems": 20,
2114
- "items": {
2115
- "type": "object",
2116
- "properties": {
2117
- "requirements": {
2118
- "$ref": "#/definitions/requirementsExtensionElement"
2119
- },
2120
- "contexts": {
2121
- "$ref": "#/definitions/extensionContexts"
2122
- },
2123
- "tabs": {
2124
- "type": "array",
2125
- "maxItems": 20,
2126
- "items": {
2127
- "$ref": "#/definitions/extensionRibbonsArrayTabsItem"
2128
- }
2129
- },
2130
- "fixedControls": {
2131
- "type": "array",
2132
- "items": {
2133
- "$ref": "#/definitions/extensionRibbonsArrayFixedControlItem"
2134
- },
2135
- "minItems": 1,
2136
- "maxItems": 1
2137
- },
2138
- "spamPreProcessingDialog": {
2139
- "$ref": "#/definitions/extensionRibbonsSpamPreProcessingDialog"
2140
- }
2141
- },
2142
- "additionalProperties": false,
2143
- "required": [
2144
- "tabs"
2145
- ]
2146
- }
2147
- },
2148
- "extensionCustomFunctions": {
2516
+ "extensionCustomFunctionsNamespace": {
2149
2517
  "type": "object",
2150
- "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().",
2518
+ "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.",
2151
2519
  "properties": {
2152
- "functions": {
2153
- "description": "Array of function object which defines function metadata.",
2154
- "items": {
2155
- "$ref": "#/definitions/extensionFunction"
2156
- },
2157
- "maxItems": 20000,
2158
- "minItems": 1,
2159
- "type": "array"
2160
- },
2161
- "namespace": {
2162
- "$ref": "#/definitions/extensionCustomFunctionsNamespace"
2163
- },
2164
- "allowCustomDataForDataTypeAny": {
2165
- "type": "boolean",
2166
- "description": "Allows a custom function to accept Excel data types as parameters and return values.",
2167
- "default": false
2168
- },
2169
- "metadataUrl": {
2170
- "$ref": "#/definitions/secureHttpUrl",
2171
- "description": "The full URL of a metadata json file. If `functions` is not empty, the Office client will install CustomFunctions based on `functions`. Any definitions in `metadataUrl` will be ignored."
2172
- },
2173
- "enums": {
2174
- "type": "array",
2175
- "description": "Array of custom defined enum objects.",
2176
- "items": {
2177
- "$ref": "#/definitions/enum"
2520
+ "id": {
2521
+ "type": "string",
2522
+ "description": "Non-localizeable version of the namespace.",
2523
+ "pattern": "^[A-Za-z][A-Za-z0-9._]*$",
2524
+ "minLength": 1,
2525
+ "maxLength": 32
2178
2526
  },
2179
- "maxItems": 20000
2180
- }
2527
+ "name": {
2528
+ "type": "string",
2529
+ "description": "Localizeable version of the namespace.",
2530
+ "pattern": "^[A-Za-z][A-Za-z0-9._]*$",
2531
+ "minLength": 1,
2532
+ "maxLength": 32
2533
+ }
2181
2534
  },
2182
- "additionalProperties": false
2535
+ "required": [
2536
+ "id",
2537
+ "name"
2538
+ ]
2183
2539
  },
2184
- "enum": {
2540
+ "extensionFunction": {
2185
2541
  "type": "object",
2186
2542
  "properties": {
2187
2543
  "id": {
2188
- "type": "string",
2189
- "description": "A unique ID for the enum.",
2190
- "maxLength": 64,
2191
- "minLength": 3,
2192
- "pattern": "^[A-Za-z][A-Za-z0-9._]*$"
2544
+ "type": "string",
2545
+ "pattern": "^[a-zA-Z][a-zA-Z0-9._]*$",
2546
+ "description": "A unique ID for the function.",
2547
+ "minLength": 3,
2548
+ "maxLength": 64
2193
2549
  },
2194
- "type": {
2195
- "type": "string",
2196
- "description": "The type of the values in this enum.",
2197
- "enum": [ "number", "string" ]
2550
+ "name": {
2551
+ "type": "string",
2552
+ "pattern": "^[\\p{L}][\\p{L}0-9._]*$",
2553
+ "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.",
2554
+ "minLength": 3,
2555
+ "maxLength": 64
2198
2556
  },
2199
- "values": {
2200
- "type": "array",
2201
- "description": "Array that defines the constants for the enum.",
2202
- "items": {
2203
- "type": "object",
2204
- "properties": {
2205
- "name": {
2206
- "type": "string",
2207
- "description": "A brief description of the constant.",
2208
- "maxLength": 256
2209
- },
2210
- "numberValue": {
2211
- "type": ["number", "null"],
2212
- "description": "When enum type is number, the actual number value of the constant."
2213
- },
2214
- "stringValue": {
2215
- "type": "string",
2216
- "description": "When enum type is string, the actual string value of the constant."
2217
- },
2218
- "tooltip": {
2219
- "type": "string",
2220
- "description": "Additional information about the constant, intended to provide more context or details.",
2221
- "maxLength": 256
2222
- }
2557
+ "description": {
2558
+ "type": "string",
2559
+ "description": "The description of the function that end users see in Excel.",
2560
+ "minLength": 1,
2561
+ "maxLength": 1024
2562
+ },
2563
+ "helpUrl": {
2564
+ "description": "URL that provides information about the function. (It is displayed in a task pane.)",
2565
+ "$ref": "#/definitions/secureHttpUrl"
2566
+ },
2567
+ "parameters": {
2568
+ "type": "array",
2569
+ "description": "Array that defines the input parameters for the function.",
2570
+ "items": {
2571
+ "$ref": "#/definitions/extensionFunctionParameter"
2223
2572
  },
2224
- "additionalProperties": false,
2225
- "required": [ "name" ]
2226
- }
2573
+ "minItems": 0,
2574
+ "maxItems": 128
2575
+ },
2576
+ "result": {
2577
+ "$ref": "#/definitions/extensionResult"
2578
+ },
2579
+ "stream": {
2580
+ "type": "boolean",
2581
+ "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.",
2582
+ "default": false
2583
+ },
2584
+ "volatile": {
2585
+ "type": "boolean",
2586
+ "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.",
2587
+ "default": false
2588
+ },
2589
+ "cancelable": {
2590
+ "type": "boolean",
2591
+ "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.",
2592
+ "default": false
2593
+ },
2594
+ "requiresAddress": {
2595
+ "type": "boolean",
2596
+ "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.",
2597
+ "default": false
2598
+ },
2599
+ "requiresParameterAddress": {
2600
+ "type": "boolean",
2601
+ "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.",
2602
+ "default": false
2603
+ },
2604
+ "requiresStreamAddress": {
2605
+ "type": "boolean",
2606
+ "default": false,
2607
+ "description": "If `true`, the function can access the address of the cell calling the streaming function. The `address` property of the invocation parameter contains the address of the cell that invoked your streaming function. "
2608
+ },
2609
+ "requiresStreamParameterAddresses": {
2610
+ "type": "boolean",
2611
+ "description": "If `true`, the function can access the parameter addresses of the cell calling the streaming function. The `parameterAddresses` property of the invocation parameter contains the parameter addresses for your streaming function.",
2612
+ "default": false
2613
+ },
2614
+ "capturesCallingObject": {
2615
+ "type": "boolean",
2616
+ "description": "If `true`, the data type being referenced by the custom function is passed as the first argument to the custom function.",
2617
+ "default": false
2618
+ },
2619
+ "excludeFromAutoComplete": {
2620
+ "type": "boolean",
2621
+ "description": "If `true`, the custom function will not appear in the formula AutoComplete menu in Excel.",
2622
+ "default": false
2623
+ },
2624
+ "linkedEntityLoadService": {
2625
+ "type": "boolean",
2626
+ "description": "If `true`, it designates that the function is a linked entity load service that returns linked entity cell values for linked entity IDs requested by Excel.",
2627
+ "default": false
2227
2628
  }
2228
2629
  },
2229
2630
  "required": [
2230
2631
  "id",
2231
- "type",
2232
- "values"
2233
- ],
2234
- "additionalProperties": false
2235
- },
2236
- "extensionCustomFunctionsNamespace": {
2237
- "type": "object",
2238
- "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.",
2239
- "properties": {
2240
- "id": {
2241
- "type": "string",
2242
- "description": "Non-localizeable version of the namespace.",
2243
- "pattern": "^[A-Za-z][A-Za-z0-9._]*$",
2244
- "minLength": 1,
2245
- "maxLength": 32
2246
- },
2247
- "name": {
2248
- "type": "string",
2249
- "description": "Localizeable version of the namespace.",
2250
- "pattern": "^[A-Za-z][A-Za-z0-9._]*$",
2251
- "minLength": 1,
2252
- "maxLength": 32
2253
- }
2254
- },
2255
- "required": [
2256
- "id",
2257
- "name"
2632
+ "name",
2633
+ "parameters",
2634
+ "result"
2258
2635
  ]
2259
2636
  },
2260
- "extensionFunction": {
2637
+ "extensionFunctionParameter": {
2261
2638
  "type": "object",
2262
2639
  "properties": {
2263
- "id": {
2264
- "type": "string",
2265
- "pattern": "^[a-zA-Z][a-zA-Z0-9._]*$",
2266
- "description": "A unique ID for the function.",
2267
- "minLength": 3,
2268
- "maxLength": 64
2269
- },
2270
- "name": {
2271
- "type": "string",
2272
- "pattern": "^[\\p{L}][\\p{L}0-9._]*$",
2273
- "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.",
2274
- "minLength": 3,
2275
- "maxLength": 64
2276
- },
2277
- "description": {
2278
- "type": "string",
2279
- "description": "The description of the function that end users see in Excel.",
2280
- "minLength": 1,
2281
- "maxLength": 1024
2282
- },
2283
- "helpUrl": {
2284
- "description": "URL that provides information about the function. (It is displayed in a task pane.)",
2285
- "$ref": "#/definitions/secureHttpUrl"
2286
- },
2287
- "parameters": {
2288
- "type": "array",
2289
- "description": "Array that defines the input parameters for the function.",
2290
- "items": {
2291
- "$ref": "#/definitions/extensionFunctionParameter"
2292
- },
2293
- "minItems": 0,
2294
- "maxItems": 128
2295
- },
2296
- "result": {
2297
- "$ref": "#/definitions/extensionResult"
2298
- },
2299
- "stream": {
2300
- "type": "boolean",
2301
- "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.",
2302
- "default": false
2303
- },
2304
- "volatile": {
2305
- "type": "boolean",
2306
- "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.",
2307
- "default": false
2308
- },
2309
- "cancelable": {
2310
- "type": "boolean",
2311
- "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.",
2312
- "default": false
2313
- },
2314
- "requiresAddress": {
2315
- "type": "boolean",
2316
- "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.",
2317
- "default": false
2318
- },
2319
- "requiresParameterAddress": {
2320
- "type": "boolean",
2321
- "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.",
2322
- "default": false
2323
- },
2324
- "requiresStreamAddress": {
2325
- "type": "boolean",
2326
- "default": false,
2327
- "description": "If `true`, the function can access the address of the cell calling the streaming function. The `address` property of the invocation parameter contains the address of the cell that invoked your streaming function. "
2328
- },
2329
- "requiresStreamParameterAddresses": {
2330
- "type": "boolean",
2331
- "description": "If `true`, the function can access the parameter addresses of the cell calling the streaming function. The `parameterAddresses` property of the invocation parameter contains the parameter addresses for your streaming function.",
2332
- "default": false
2333
- },
2334
- "capturesCallingObject": {
2335
- "type": "boolean",
2336
- "description": "If `true`, the data type being referenced by the custom function is passed as the first argument to the custom function.",
2337
- "default": false
2338
- },
2339
- "excludeFromAutoComplete": {
2340
- "type": "boolean",
2341
- "description": "If `true`, the custom function will not appear in the formula AutoComplete menu in Excel.",
2342
- "default": false
2343
- },
2344
- "linkedEntityLoadService": {
2345
- "type": "boolean",
2346
- "description": "If `true`, it designates that the function is a linked entity load service that returns linked entity cell values for linked entity IDs requested by Excel.",
2347
- "default": false
2348
- }
2640
+ "name": {
2641
+ "type": "string",
2642
+ "description": "The name of the parameter. This name is displayed in Excel's IntelliSense.",
2643
+ "minLength": 1,
2644
+ "maxLength": 64
2645
+ },
2646
+ "description": {
2647
+ "type": "string",
2648
+ "description": "A description of the parameter. This is displayed in Excel's IntelliSense.",
2649
+ "minLength": 1,
2650
+ "maxLength": 512
2651
+ },
2652
+ "type": {
2653
+ "type": "string",
2654
+ "minLength": 1,
2655
+ "maxLength": 128,
2656
+ "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.",
2657
+ "default": "any"
2658
+ },
2659
+ "cellValueType": {
2660
+ "type": "string",
2661
+ "enum": [
2662
+ "cellvalue",
2663
+ "booleancellvalue",
2664
+ "doublecellvalue",
2665
+ "entitycellvalue",
2666
+ "errorcellvalue",
2667
+ "linkedentitycellvalue",
2668
+ "localimagecellvalue",
2669
+ "stringcellvalue",
2670
+ "webimagecellvalue",
2671
+ null
2672
+ ],
2673
+ "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, linkedentitycellvalue, localimagecellvalue, stringcellvalue, webimagecellvalue"
2674
+ },
2675
+ "dimensionality": {
2676
+ "type": "string",
2677
+ "enum": [
2678
+ "scalar",
2679
+ "matrix"
2680
+ ],
2681
+ "default": "scalar",
2682
+ "description": "Must be either scalar (a non-array value) or matrix (a 2-dimensional array)."
2683
+ },
2684
+ "optional": {
2685
+ "type": [
2686
+ "boolean",
2687
+ "null"
2688
+ ],
2689
+ "description": "If true, the parameter is optional."
2690
+ },
2691
+ "repeating": {
2692
+ "type": "boolean",
2693
+ "default": false,
2694
+ "description": "If true, parameters populate from a specified array. Note that functions all repeating parameters are considered optional parameters by definition."
2695
+ },
2696
+ "customEnumId": {
2697
+ "type": "string",
2698
+ "description": "|The `id` of the enum in the `enums` array. This associates the custom enum with the function and enables Excel to display the enum members in the formula AutoComplete menu.",
2699
+ "maxLength": 64
2700
+ }
2349
2701
  },
2350
2702
  "required": [
2351
- "id",
2352
- "name",
2353
- "parameters",
2354
- "result"
2703
+ "name"
2355
2704
  ]
2356
2705
  },
2357
- "extensionFunctionParameter": {
2358
- "type": "object",
2359
- "properties": {
2360
- "name": {
2361
- "type": "string",
2362
- "description": "The name of the parameter. This name is displayed in Excel's IntelliSense.",
2363
- "minLength": 1,
2364
- "maxLength": 64
2365
- },
2366
- "description": {
2367
- "type": "string",
2368
- "description": "A description of the parameter. This is displayed in Excel's IntelliSense.",
2369
- "minLength": 1,
2370
- "maxLength": 512
2371
- },
2372
- "type": {
2373
- "type": "string",
2374
- "minLength": 1,
2375
- "maxLength": 128,
2376
- "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.",
2377
- "default": "any"
2378
- },
2379
- "cellValueType": {
2380
- "type": "string",
2381
- "enum": [
2382
- "cellvalue",
2383
- "booleancellvalue",
2384
- "doublecellvalue",
2385
- "entitycellvalue",
2386
- "errorcellvalue",
2387
- "linkedentitycellvalue",
2388
- "localimagecellvalue",
2389
- "stringcellvalue",
2390
- "webimagecellvalue",
2391
- null
2392
- ],
2393
- "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, linkedentitycellvalue, localimagecellvalue, stringcellvalue, webimagecellvalue"
2394
- },
2395
- "dimensionality": {
2396
- "type": "string",
2397
- "enum": [
2398
- "scalar",
2399
- "matrix"
2400
- ],
2401
- "default": "scalar",
2402
- "description": "Must be either scalar (a non-array value) or matrix (a 2-dimensional array)."
2403
- },
2404
- "optional": {
2405
- "type": ["boolean", "null"],
2406
- "default": false,
2407
- "description": "If true, the parameter is optional."
2408
- },
2409
- "repeating": {
2410
- "type": "boolean",
2411
- "default": false,
2412
- "description": "If true, parameters populate from a specified array. Note that functions all repeating parameters are considered optional parameters by definition."
2413
- },
2414
- "customEnumId": {
2415
- "type": "string",
2416
- "description": "|The `id` of the enum in the `enums` array. This associates the custom enum with the function and enables Excel to display the enum members in the formula AutoComplete menu.",
2417
- "maxLength": 64
2418
- }
2419
- },
2420
- "required": [ "name" ]
2421
- },
2422
2706
  "extensionResult": {
2423
2707
  "type": "object",
2424
2708
  "description": "Object that defines the type of information that is returned by the function.",
2425
2709
  "properties": {
2426
- "dimensionality": {
2427
- "type": "string",
2428
- "enum": [
2429
- "scalar",
2430
- "matrix"
2431
- ],
2432
- "default": "scalar",
2433
- "description": "Must be either scalar (a non-array value) or matrix (a 2-dimensional array). Default: scalar."
2434
- }
2710
+ "dimensionality": {
2711
+ "type": "string",
2712
+ "enum": [
2713
+ "scalar",
2714
+ "matrix"
2715
+ ],
2716
+ "default": "scalar",
2717
+ "description": "Must be either scalar (a non-array value) or matrix (a 2-dimensional array). Default: scalar."
2718
+ }
2435
2719
  }
2436
2720
  },
2437
- "extensionContexts": {
2721
+ "extensionRuntimesActions": {
2438
2722
  "type": "array",
2439
- "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.",
2723
+ "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.",
2440
2724
  "minItems": 1,
2441
- "maxItems": 8,
2725
+ "maxItems": 150,
2442
2726
  "items": {
2443
- "type": "string",
2444
- "enum": [
2445
- "mailRead",
2446
- "mailCompose",
2447
- "meetingDetailsOrganizer",
2448
- "meetingDetailsAttendee",
2449
- "onlineMeetingDetailsOrganizer",
2450
- "logEventMeetingDetailsAttendee",
2451
- "default",
2452
- "spamReportingOverride"
2453
- ]
2454
- }
2455
- },
2456
- "extensionKeyboardShortcut": {
2457
- "type": "object",
2458
- "properties": {
2459
- "requirements": {
2460
- "description": "Specifies the Office requirement sets.",
2461
- "$ref": "#/definitions/requirementsExtensionElement"
2462
- },
2463
- "shortcuts": {
2464
- "type": "array",
2465
- "description": "Array of mappings from actions to the key combinations that invoke the actions.",
2466
- "items": {
2467
- "$ref": "#/definitions/extensionShortcut"
2468
- },
2469
- "minItems": 1,
2470
- "maxItems": 20000
2471
- },
2472
- "keyMappingFiles": {
2473
- "description": "Specifies the full URLs for shortcuts mapping and localization resource files that don't directly support the unified manifest.",
2474
- "$ref": "#/definitions/keyboardShortcutsMappingFiles"
2475
- }
2476
- },
2477
- "required": [ "shortcuts" ]
2478
- },
2479
- "keyboardShortcutsMappingFiles": {
2480
- "type": "object",
2481
- "additionalProperties": false,
2482
- "properties": {
2483
- "shortcutsUrl": {
2484
- "$ref": "#/definitions/secureHttpUrl",
2485
- "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."
2486
- },
2487
- "localizationResourceUrl": {
2488
- "$ref": "#/definitions/secureHttpUrl",
2489
- "description": "The full URL of a file that provides supplemental resource, such as localized strings, for the file specified in the shortcutsUrl attribute."
2490
- }
2491
- },
2492
- "required": [ "shortcutsUrl" ]
2493
- },
2494
- "extensionShortcut": {
2495
- "type": "object",
2496
- "properties": {
2497
- "key": {
2498
- "type": "object",
2499
- "$ref": "#/definitions/extensionKeyCombination"
2500
- },
2501
- "actionId": {
2502
- "type": "string",
2503
- "description": "The ID of an execution-type action that handles this key combination.",
2504
- "minLength": 1,
2505
- "maxLength": 64
2506
- }
2507
- },
2508
- "required": [
2509
- "key",
2510
- "actionId"
2511
- ]
2512
- },
2513
- "extensionKeyCombination": {
2514
- "type": "object",
2515
- "description": "Key combinations in different platform (i.e. default, windows, web and mac).",
2516
- "properties": {
2517
- "default": {
2518
- "type": "string",
2519
- "description": "Fallback key for any platform that isn't specified.",
2520
- "pattern": "^[A-Za-z0-9-_+]+$",
2521
- "minLength": 1,
2522
- "maxLength": 32
2523
- },
2524
- "mac": {
2525
- "type": "string",
2526
- "description": "key for mac platform. Alt is mapped to the Option key.",
2527
- "pattern": "^[A-Za-z0-9-_+]+$",
2528
- "minLength": 1,
2529
- "maxLength": 32
2530
- },
2531
- "web": {
2532
- "type": "string",
2533
- "description": "key for web platform.",
2534
- "pattern": "^[A-Za-z0-9-_+]+$",
2535
- "minLength": 1,
2536
- "maxLength": 32
2537
- },
2538
- "windows": {
2539
- "type": "string",
2540
- "description": "key for windows platform. Command is mapped to the Ctrl key.",
2541
- "pattern": "^[A-Za-z0-9-_+]+$",
2542
- "minLength": 1,
2543
- "maxLength": 32
2544
- }
2727
+ "$ref": "#/definitions/extensionRuntimesActionsItem"
2545
2728
  },
2546
- "required": [ "default" ]
2729
+ "additionalProperties": false
2547
2730
  },
2548
- "extensionRibbonsArrayTabsItem": {
2731
+ "extensionRuntimesActionsItem": {
2549
2732
  "type": "object",
2550
- "minProperties": 1,
2551
2733
  "properties": {
2552
2734
  "id": {
2553
2735
  "type": "string",
2554
- "description": "A unique identifier for this tab within the app. Maximum length is 64 characters. ",
2736
+ "description": "Identifier for this action. Maximum length is 64 characters. This value is passed to the code file.",
2555
2737
  "maxLength": 64
2556
2738
  },
2557
- "label": {
2739
+ "type": {
2558
2740
  "type": "string",
2559
- "description": "Displayed text for the tab. Maximum length is 64 characters.",
2741
+ "enum": [
2742
+ "executeFunction",
2743
+ "openPage",
2744
+ "executeDataFunction"
2745
+ ],
2746
+ "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."
2747
+ },
2748
+ "displayName": {
2749
+ "type": "string",
2750
+ "description": "Display name of the action. Maximum length is 64 characters.",
2560
2751
  "maxLength": 64
2561
2752
  },
2562
- "position": {
2753
+ "pinnable": {
2754
+ "type": "boolean",
2755
+ "description": "Specifies that a task pane supports pinning, which keeps the task pane open when the user changes the selection."
2756
+ },
2757
+ "view": {
2758
+ "type": "string",
2759
+ "description": "View where the page should be opened. Maximum length is 64 characters. ",
2760
+ "maxLength": 64
2761
+ },
2762
+ "multiselect": {
2763
+ "type": "boolean",
2764
+ "description": "Whether allows the action to have multiple selection.",
2765
+ "default": false
2766
+ },
2767
+ "supportsNoItemContext": {
2768
+ "type": "boolean",
2769
+ "description": "Whether allows task pane add-ins to activate without the Reading Pane enabled or a message selected. ",
2770
+ "default": false
2771
+ },
2772
+ "taskpane": {
2773
+ "type": "object",
2774
+ "description": "Configuration for the task pane opened by this action.",
2775
+ "properties": {
2776
+ "preferredWidth": {
2777
+ "type": "number",
2778
+ "description": "Specifies the preferred initial width of the task pane in CSS pixels. This value is treated as a hint and may be adjusted or ignored by the host. User-resized widths always take precedence. Must be a positive number.",
2779
+ "minimum": 0,
2780
+ "exclusiveMinimum": true
2781
+ }
2782
+ },
2783
+ "additionalProperties": false
2784
+ }
2785
+ },
2786
+ "additionalProperties": false,
2787
+ "required": [
2788
+ "id",
2789
+ "type"
2790
+ ]
2791
+ },
2792
+ "extensionRibbonsArray": {
2793
+ "type": "array",
2794
+ "minItems": 1,
2795
+ "maxItems": 20,
2796
+ "items": {
2797
+ "type": "object",
2798
+ "properties": {
2799
+ "requirements": {
2800
+ "$ref": "#/definitions/requirementsExtensionElement"
2801
+ },
2802
+ "contexts": {
2803
+ "$ref": "#/definitions/extensionContexts"
2804
+ },
2805
+ "tabs": {
2806
+ "type": "array",
2807
+ "maxItems": 20,
2808
+ "items": {
2809
+ "$ref": "#/definitions/extensionRibbonsArrayTabsItem"
2810
+ }
2811
+ },
2812
+ "fixedControls": {
2813
+ "type": "array",
2814
+ "items": {
2815
+ "$ref": "#/definitions/extensionRibbonsArrayFixedControlItem"
2816
+ },
2817
+ "minItems": 1,
2818
+ "maxItems": 1
2819
+ },
2820
+ "spamPreProcessingDialog": {
2821
+ "$ref": "#/definitions/extensionRibbonsSpamPreProcessingDialog"
2822
+ }
2823
+ },
2824
+ "additionalProperties": false,
2825
+ "required": [
2826
+ "tabs"
2827
+ ]
2828
+ }
2829
+ },
2830
+ "extensionContexts": {
2831
+ "type": "array",
2832
+ "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.",
2833
+ "minItems": 1,
2834
+ "maxItems": 8,
2835
+ "items": {
2836
+ "type": "string",
2837
+ "enum": [
2838
+ "mailRead",
2839
+ "mailCompose",
2840
+ "meetingDetailsOrganizer",
2841
+ "meetingDetailsAttendee",
2842
+ "onlineMeetingDetailsOrganizer",
2843
+ "logEventMeetingDetailsAttendee",
2844
+ "default",
2845
+ "spamReportingOverride"
2846
+ ]
2847
+ }
2848
+ },
2849
+ "extensionRibbonsArrayTabsItem": {
2850
+ "type": "object",
2851
+ "minProperties": 1,
2852
+ "properties": {
2853
+ "id": {
2854
+ "type": "string",
2855
+ "description": "A unique identifier for this tab within the app. Maximum length is 64 characters. ",
2856
+ "maxLength": 64
2857
+ },
2858
+ "label": {
2859
+ "type": "string",
2860
+ "description": "Displayed text for the tab. Maximum length is 64 characters.",
2861
+ "maxLength": 64
2862
+ },
2863
+ "position": {
2563
2864
  "type": "object",
2564
2865
  "properties": {
2565
2866
  "builtInTabId": {
@@ -2635,20 +2936,20 @@
2635
2936
  },
2636
2937
  "id": {
2637
2938
  "anyOf": [
2638
- {
2639
- "required": [
2640
- "id",
2641
- "label",
2642
- "groups"
2643
- ]
2644
- },
2645
- {
2646
- "required": [
2647
- "id",
2648
- "label",
2649
- "customMobileRibbonGroups"
2650
- ]
2651
- }
2939
+ {
2940
+ "required": [
2941
+ "id",
2942
+ "label",
2943
+ "groups"
2944
+ ]
2945
+ },
2946
+ {
2947
+ "required": [
2948
+ "id",
2949
+ "label",
2950
+ "customMobileRibbonGroups"
2951
+ ]
2952
+ }
2652
2953
  ]
2653
2954
  }
2654
2955
  },
@@ -2773,7 +3074,7 @@
2773
3074
  "minItems": 3,
2774
3075
  "maxItems": 8,
2775
3076
  "items": {
2776
- "$ref": "#/definitions/extensionCommonIcon"
3077
+ "$ref": "#/definitions/extensionCommonIcon"
2777
3078
  }
2778
3079
  },
2779
3080
  "supertip": {
@@ -2794,11 +3095,6 @@
2794
3095
  "description": "Whether the control is initially enabled.",
2795
3096
  "default": true
2796
3097
  },
2797
- "visible":{
2798
- "type": "boolean",
2799
- "description": "Controls whether the control is visible.",
2800
- "default": true
2801
- },
2802
3098
  "items": {
2803
3099
  "type": "array",
2804
3100
  "description": "Configures the items for a menu control.",
@@ -2808,6 +3104,11 @@
2808
3104
  "$ref": "#/definitions/extensionCommonCustomControlMenuItem"
2809
3105
  }
2810
3106
  },
3107
+ "visible": {
3108
+ "type": "boolean",
3109
+ "description": "Controls whether the control is visible.",
3110
+ "default": true
3111
+ },
2811
3112
  "keytip": {
2812
3113
  "type": "string",
2813
3114
  "description": "KeyTip shortcut for keyboard navigation (1-3 uppercase alphanumeric characters)",
@@ -3049,7 +3350,7 @@
3049
3350
  "events": {
3050
3351
  "type": "array",
3051
3352
  "maxItems": 20,
3052
- "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.",
3353
+ "description": "Specifies the type of event. For supported types, please see: https://review.learn.microsoft.com/en-us/office/dev/add-ins/outlook/autolaunch?tabs=xmlmanifest#supported-events.",
3053
3354
  "items": {
3054
3355
  "type": "object",
3055
3356
  "properties": {
@@ -3068,16 +3369,42 @@
3068
3369
  "properties": {
3069
3370
  "sendMode": {
3070
3371
  "type": "string",
3372
+ "description": "Specifies the actions to take during a mail send event. The property may be omitted, but a literal null is not a valid value.",
3071
3373
  "enum": [
3072
3374
  "promptUser",
3073
3375
  "softBlock",
3074
- "block"
3376
+ "block",
3377
+ null
3075
3378
  ]
3379
+ },
3380
+ "headerName": {
3381
+ "type": "string",
3382
+ "description": "Specifies the internet header name used to identify a message during a decryption event. Follows email header name constraints.",
3383
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9-]*$"
3076
3384
  }
3077
3385
  },
3078
3386
  "additionalProperties": false,
3079
- "required": [
3080
- "sendMode"
3387
+ "anyOf": [
3388
+ {
3389
+ "required": [
3390
+ "sendMode"
3391
+ ],
3392
+ "not": {
3393
+ "required": [
3394
+ "headerName"
3395
+ ]
3396
+ }
3397
+ },
3398
+ {
3399
+ "required": [
3400
+ "headerName"
3401
+ ],
3402
+ "not": {
3403
+ "required": [
3404
+ "sendMode"
3405
+ ]
3406
+ }
3407
+ }
3081
3408
  ]
3082
3409
  }
3083
3410
  },
@@ -3169,98 +3496,98 @@
3169
3496
  "type": "object",
3170
3497
  "description": "Configures how to hide windows native extensions",
3171
3498
  "properties": {
3172
- "effect": {
3173
- "type": "string",
3174
- "description": "Specifies the effect to take while installing the web add-in if the equivalent add-in is installed.",
3175
- "enum": [
3176
- "userOptionToDisable",
3177
- "disableWithNotification"
3178
- ]
3179
- },
3180
- "comAddin": {
3181
- "type": "object",
3182
- "description": "Specifies the equivalent COM or VSTO add-ins",
3183
- "properties": {
3184
- "progIds": {
3185
- "type": "array",
3186
- "description": "Specifies the program Ids of the equivalent COM add-ins and the names of equivalent VSTO add-ins",
3187
- "minItems": 1,
3188
- "maxItems": 5,
3189
- "items": {
3499
+ "effect": {
3190
3500
  "type": "string",
3191
- "minLength": 1,
3192
- "maxLength": 64
3193
- }
3194
- }
3501
+ "description": "Specifies the effect to take while installing the web add-in if the equivalent add-in is installed.",
3502
+ "enum": [
3503
+ "userOptionToDisable",
3504
+ "disableWithNotification"
3505
+ ]
3195
3506
  },
3196
- "additionalProperties": false,
3197
- "required": [
3198
- "progIds"
3199
- ]
3200
- },
3201
- "automationAddin": {
3202
- "type": "object",
3203
- "description": "Specifies the equivalent automation add-ins",
3204
- "properties": {
3205
- "progIds": {
3206
- "type": "array",
3207
- "description": "Specifies the program Ids of the equivalent automation add-ins",
3208
- "minItems": 1,
3209
- "maxItems": 5,
3210
- "items": {
3211
- "type": "string",
3212
- "minLength": 1,
3213
- "maxLength": 64
3214
- }
3215
- }
3507
+ "comAddin": {
3508
+ "type": "object",
3509
+ "description": "Specifies the equivalent COM add-ins",
3510
+ "properties": {
3511
+ "progIds": {
3512
+ "type": "array",
3513
+ "description": "Specifies the program Ids of the equivalent COM add-ins",
3514
+ "minItems": 1,
3515
+ "maxItems": 5,
3516
+ "items": {
3517
+ "type": "string",
3518
+ "minLength": 1,
3519
+ "maxLength": 64
3520
+ }
3521
+ }
3522
+ },
3523
+ "additionalProperties": false,
3524
+ "required": [
3525
+ "progIds"
3526
+ ]
3216
3527
  },
3217
- "additionalProperties": false,
3218
- "required": [
3219
- "progIds"
3220
- ]
3221
- },
3222
- "xllCustomFunctions": {
3223
- "type": "object",
3224
- "description": "Specifies the XLL-based add-ins custom function",
3225
- "properties": {
3226
- "fileNames": {
3227
- "type": "array",
3228
- "description": "Specifies the file names of the XLL-based add-ins custom function",
3229
- "minItems": 1,
3230
- "maxItems": 5,
3231
- "items": {
3232
- "type": "string",
3233
- "minLength": 1,
3234
- "maxLength": 64
3235
- }
3236
- }
3528
+ "automationAddin": {
3529
+ "type": "object",
3530
+ "description": "Specifies the equivalent automation add-ins",
3531
+ "properties": {
3532
+ "progIds": {
3533
+ "type": "array",
3534
+ "description": "Specifies the program Ids of the equivalent automation add-ins",
3535
+ "minItems": 1,
3536
+ "maxItems": 5,
3537
+ "items": {
3538
+ "type": "string",
3539
+ "minLength": 1,
3540
+ "maxLength": 64
3541
+ }
3542
+ }
3543
+ },
3544
+ "additionalProperties": false,
3545
+ "required": [
3546
+ "progIds"
3547
+ ]
3237
3548
  },
3238
- "additionalProperties": false,
3239
- "required": [
3240
- "fileNames"
3241
- ]
3242
- }
3549
+ "xllCustomFunctions": {
3550
+ "type": "object",
3551
+ "description": "Specifies the XLL-based add-ins custom function",
3552
+ "properties": {
3553
+ "fileNames": {
3554
+ "type": "array",
3555
+ "description": "Specifies the file names of the XLL-based add-ins custom function",
3556
+ "minItems": 1,
3557
+ "maxItems": 5,
3558
+ "items": {
3559
+ "type": "string",
3560
+ "minLength": 1,
3561
+ "maxLength": 64
3562
+ }
3563
+ }
3564
+ },
3565
+ "additionalProperties": false,
3566
+ "required": [
3567
+ "fileNames"
3568
+ ]
3569
+ }
3243
3570
  },
3244
3571
  "additionalProperties": false,
3245
3572
  "anyOf": [
3246
- {
3247
- "required": [
3248
- "effect",
3249
- "comAddin"
3250
- ]
3251
- },
3252
- {
3253
- "required": [
3254
- "effect",
3255
- "automationAddin"
3256
- ]
3257
- },
3258
- {
3259
- "required": [
3260
- "effect",
3261
- "xllCustomFunctions"
3262
- ]
3263
- }
3573
+ {
3574
+ "required": [
3575
+ "effect",
3576
+ "comAddin"
3577
+ ]
3578
+ },
3579
+ {
3580
+ "required": [
3581
+ "effect",
3582
+ "automationAddin"
3583
+ ]
3584
+ },
3585
+ {
3586
+ "required": [
3587
+ "effect",
3588
+ "xllCustomFunctions"
3589
+ ]
3590
+ }
3264
3591
  ]
3265
3592
  }
3266
3593
  },
@@ -3284,343 +3611,442 @@
3284
3611
  }
3285
3612
  },
3286
3613
  "minProperties": 1,
3614
+ "additionalProperties": false
3615
+ }
3616
+ },
3617
+ "extensionXllCustomFunctions": {
3618
+ "type": "object",
3619
+ "properties": {
3620
+ "fileName": {
3621
+ "type": "string",
3622
+ "description": "File name for the XLL extension. Maximum length is 254 characters.",
3623
+ "pattern": "^(?!.*[\\r\\n\\f\\b\\v\\u0007\\t])[\\S]*\\.xll$",
3624
+ "minLength": 4,
3625
+ "maxLength": 254
3626
+ }
3627
+ }
3628
+ },
3629
+ "extensionAppDeeplinksArray": {
3630
+ "type": "array",
3631
+ "description": "Represents the copilot extension point",
3632
+ "minItems": 1,
3633
+ "items": {
3634
+ "type": "object",
3635
+ "properties": {
3636
+ "requirements": {
3637
+ "type": "object",
3638
+ "$ref": "#/definitions/requirementsExtensionElement"
3639
+ },
3640
+ "contexts": {
3641
+ "type": "array",
3642
+ "$ref": "#/definitions/extensionContexts"
3643
+ },
3644
+ "actionId": {
3645
+ "type": "string",
3646
+ "description": "The ID of an action defined in runtimes. Manifest should be invalidated if no action with an id matching actionId is present in runtimes.",
3647
+ "maxLength": 64
3648
+ },
3649
+ "label": {
3650
+ "type": "string",
3651
+ "description": "the text that will be shown on the app as a clickable item.",
3652
+ "maxLength": 64
3653
+ },
3654
+ "semanticDescription": {
3655
+ "type": "string",
3656
+ "description": "the text metadata, for recommendation engine.",
3657
+ "maxLength": 255
3658
+ }
3659
+ },
3287
3660
  "additionalProperties": false,
3288
3661
  "required": [
3289
- "alternateIcons"
3662
+ "contexts",
3663
+ "actionId",
3664
+ "label",
3665
+ "semanticDescription"
3290
3666
  ]
3291
3667
  }
3292
3668
  },
3293
- "extensionXllCustomFunctions": {
3669
+ "extensionContentRuntimeArray": {
3670
+ "type": "array",
3671
+ "description": "Content runtime is for 'ContentApp', which can be embedded directly into Excel or PowerPoint documents.",
3672
+ "minItems": 1,
3673
+ "items": {
3674
+ "type": "object",
3675
+ "properties": {
3676
+ "requirements": {
3677
+ "type": "object",
3678
+ "$ref": "#/definitions/requirementsExtensionElement",
3679
+ "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."
3680
+ },
3681
+ "id": {
3682
+ "type": "string",
3683
+ "description": "A unique identifier for this runtime within the app. This is developer specified.",
3684
+ "maxLength": 64
3685
+ },
3686
+ "code": {
3687
+ "$ref": "#/definitions/extensionRuntimeCode",
3688
+ "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."
3689
+ },
3690
+ "requestedHeight": {
3691
+ "type": "number",
3692
+ "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.",
3693
+ "minimum": 32,
3694
+ "maximum": 1000
3695
+ },
3696
+ "requestedWidth": {
3697
+ "type": "number",
3698
+ "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.",
3699
+ "minimum": 32,
3700
+ "maximum": 1000
3701
+ },
3702
+ "disableSnapshot": {
3703
+ "type": "boolean",
3704
+ "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.",
3705
+ "default": false
3706
+ }
3707
+ },
3708
+ "additionalProperties": false,
3709
+ "required": [
3710
+ "id",
3711
+ "code"
3712
+ ]
3713
+ }
3714
+ },
3715
+ "extensionGetStartedMessageArray": {
3716
+ "type": "array",
3717
+ "description": "Provides information used by the callout that appears when the add-in is installed. Minimum size is 1. Maximum size is 3.",
3718
+ "minItems": 1,
3719
+ "maxItems": 3,
3720
+ "items": {
3721
+ "type": "object",
3722
+ "properties": {
3723
+ "requirements": {
3724
+ "type": "object",
3725
+ "$ref": "#/definitions/requirementsExtensionElement"
3726
+ },
3727
+ "title": {
3728
+ "type": "string",
3729
+ "description": "The title used for the top of the callout.",
3730
+ "maxLength": 125
3731
+ },
3732
+ "description": {
3733
+ "type": "string",
3734
+ "description": "The description/body content for the callout.",
3735
+ "maxLength": 250
3736
+ },
3737
+ "learnMoreUrl": {
3738
+ "$ref": "#/definitions/anyHttpUrl",
3739
+ "description": "A URL to a page that explains the add-in in detail."
3740
+ }
3741
+ },
3742
+ "additionalProperties": false,
3743
+ "required": [
3744
+ "title",
3745
+ "description",
3746
+ "learnMoreUrl"
3747
+ ]
3748
+ }
3749
+ },
3750
+ "extensionRuntimeCode": {
3294
3751
  "type": "object",
3295
3752
  "properties": {
3296
- "fileName": {
3297
- "type": "string",
3298
- "pattern": "^(?!.*[\\r\\n\\f\\b\\v\\u0007\\t])[\\S]*\\.xll$",
3299
- "minLength": 4,
3300
- "maxLength": 254
3301
- }
3753
+ "page": {
3754
+ "$ref": "#/definitions/secureHttpUrl",
3755
+ "description": "URL of the .html page to be loaded in browser-based runtimes."
3756
+ },
3757
+ "script": {
3758
+ "$ref": "#/definitions/secureHttpUrl",
3759
+ "description": "URL of the .js script file to be loaded in UI-less runtimes."
3760
+ }
3761
+ },
3762
+ "additionalProperties": false,
3763
+ "required": [
3764
+ "page"
3765
+ ]
3766
+ },
3767
+ "extensionContextMenuArray": {
3768
+ "type": "array",
3769
+ "minItems": 1,
3770
+ "items": {
3771
+ "type": "object",
3772
+ "properties": {
3773
+ "requirements": {
3774
+ "type": "object",
3775
+ "$ref": "#/definitions/requirementsExtensionElement"
3776
+ },
3777
+ "menus": {
3778
+ "$ref": "#/definitions/extensionMenuItem",
3779
+ "description": "Configures the context menus. Minimum size is 1."
3780
+ }
3781
+ },
3782
+ "additionalProperties": false,
3783
+ "required": [
3784
+ "menus"
3785
+ ]
3302
3786
  }
3303
3787
  },
3304
- "extensionAppDeeplinksArray": {
3788
+ "extensionKeyboardShortcut": {
3789
+ "type": "object",
3790
+ "properties": {
3791
+ "requirements": {
3792
+ "description": "Specifies the Office requirement sets.",
3793
+ "$ref": "#/definitions/requirementsExtensionElement"
3794
+ },
3795
+ "shortcuts": {
3796
+ "type": "array",
3797
+ "description": "Array of mappings from actions to the key combinations that invoke the actions.",
3798
+ "items": {
3799
+ "$ref": "#/definitions/extensionShortcut"
3800
+ },
3801
+ "minItems": 1,
3802
+ "maxItems": 20000
3803
+ },
3804
+ "keyMappingFiles": {
3805
+ "description": "Specifies the full URLs for shortcuts mapping and localization resource files that don't directly support the unified manifest.",
3806
+ "$ref": "#/definitions/keyboardShortcutsMappingFiles"
3807
+ }
3808
+ }
3809
+ },
3810
+ "keyboardShortcutsMappingFiles": {
3811
+ "type": "object",
3812
+ "additionalProperties": false,
3813
+ "properties": {
3814
+ "shortcutsUrl": {
3815
+ "$ref": "#/definitions/secureHttpUrl",
3816
+ "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."
3817
+ },
3818
+ "localizationResourceUrl": {
3819
+ "$ref": "#/definitions/secureHttpUrl",
3820
+ "description": "The full URL of a file that provides supplemental resource, such as localized strings, for the file specified in the shortcutsUrl attribute."
3821
+ }
3822
+ },
3823
+ "required": [
3824
+ "shortcutsUrl"
3825
+ ]
3826
+ },
3827
+ "extensionShortcut": {
3828
+ "type": "object",
3829
+ "properties": {
3830
+ "key": {
3831
+ "type": "object",
3832
+ "$ref": "#/definitions/extensionKeyCombination"
3833
+ },
3834
+ "actionId": {
3835
+ "type": "string",
3836
+ "description": "The ID of an execution-type action that handles this key combination.",
3837
+ "minLength": 1,
3838
+ "maxLength": 64
3839
+ }
3840
+ },
3841
+ "required": [
3842
+ "key",
3843
+ "actionId"
3844
+ ]
3845
+ },
3846
+ "extensionKeyCombination": {
3847
+ "type": "object",
3848
+ "description": "Key combinations in different platform (i.e. default, windows, web and mac).",
3849
+ "properties": {
3850
+ "default": {
3851
+ "type": "string",
3852
+ "description": "Fallback key for any platform that isn't specified.",
3853
+ "pattern": "^[A-Za-z0-9-_+]+$",
3854
+ "minLength": 1,
3855
+ "maxLength": 32
3856
+ },
3857
+ "mac": {
3858
+ "type": "string",
3859
+ "description": "key for mac platform. Alt is mapped to the Option key.",
3860
+ "pattern": "^[A-Za-z0-9-_+]+$",
3861
+ "minLength": 1,
3862
+ "maxLength": 32
3863
+ },
3864
+ "web": {
3865
+ "type": "string",
3866
+ "description": "key for web platform.",
3867
+ "pattern": "^[A-Za-z0-9-_+]+$",
3868
+ "minLength": 1,
3869
+ "maxLength": 32
3870
+ },
3871
+ "windows": {
3872
+ "type": "string",
3873
+ "description": "key for windows platform. Command is mapped to the Ctrl key.",
3874
+ "pattern": "^[A-Za-z0-9-_+]+$",
3875
+ "minLength": 1,
3876
+ "maxLength": 32
3877
+ }
3878
+ },
3879
+ "required": [
3880
+ "default"
3881
+ ]
3882
+ },
3883
+ "extensionMenuItem": {
3305
3884
  "type": "array",
3306
- "description": "Represents the copilot extension point",
3885
+ "description": "The title used for the top of the callout.",
3307
3886
  "minItems": 1,
3308
3887
  "items": {
3309
3888
  "type": "object",
3310
3889
  "properties": {
3311
- "requirements": {
3312
- "type": "object",
3313
- "$ref": "#/definitions/requirementsExtensionElement"
3314
- },
3315
- "contexts": {
3316
- "type": "array",
3317
- "$ref": "#/definitions/extensionContexts"
3318
- },
3319
- "actionId": {
3320
- "type": "string",
3321
- "description": "The ID of an action defined in runtimes. Manifest should be invalidated if no action with an id matching actionId is present in runtimes.",
3322
- "maxLength": 64
3323
- },
3324
- "label": {
3890
+ "entryPoint": {
3325
3891
  "type": "string",
3326
- "description": "the text that will be shown on the app as a clickable item.",
3327
- "maxLength": 64
3892
+ "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.",
3893
+ "enum": [
3894
+ "text",
3895
+ "cell"
3896
+ ]
3328
3897
  },
3329
- "semanticDescription": {
3330
- "type": "string",
3331
- "description": "the text metadata, for recommendation engine.",
3332
- "maxLength": 255
3898
+ "controls": {
3899
+ "type": "array",
3900
+ "items": {
3901
+ "$ref": "#/definitions/extensionCommonCustomGroupControlsItem",
3902
+ "description": "The control type should be menu. Minimum size is 1."
3903
+ },
3904
+ "minItems": 1
3333
3905
  }
3334
3906
  },
3335
3907
  "additionalProperties": false,
3336
3908
  "required": [
3337
- "contexts",
3338
- "actionId",
3339
- "label",
3340
- "semanticDescription"
3909
+ "entryPoint",
3910
+ "controls"
3341
3911
  ]
3342
3912
  }
3343
3913
  },
3344
- "extensionContentRuntimeArray": {
3345
- "type": "array",
3346
- "description": "Content runtime is for 'ContentApp', which can be embedded directly into Excel or PowerPoint documents.",
3347
- "minItems": 1,
3348
- "items": {
3349
- "type": "object",
3350
- "properties": {
3351
- "requirements": {
3352
- "type": "object",
3353
- "$ref": "#/definitions/requirementsExtensionElement"
3354
- },
3914
+ "extensionRibbonsArrayFixedControlItem": {
3915
+ "type": "object",
3916
+ "additionalProperties": false,
3917
+ "properties": {
3355
3918
  "id": {
3356
- "type": "string",
3357
- "description": "A unique identifier for this runtime within the app. This is developer specified.",
3358
- "maxLength": 64
3359
- },
3360
- "code": {
3361
- "$ref": "#/definitions/extensionRuntimeCode"
3362
- },
3363
- "requestedHeight": {
3364
- "type": "number",
3365
- "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.",
3366
- "minimum": 32,
3367
- "maximum": 1000
3368
- },
3369
- "requestedWidth": {
3370
- "type": "number",
3371
- "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.",
3372
- "minimum": 32,
3373
- "maximum": 1000
3374
- },
3375
- "disableSnapshot": {
3376
- "type": "boolean",
3377
- "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.",
3378
- "default": false
3379
- }
3380
- },
3381
- "additionalProperties": false,
3382
- "required": [
3383
- "id",
3384
- "code"
3385
- ]
3386
- }
3387
- },
3388
- "extensionGetStartedMessageArray": {
3389
- "type": "array",
3390
- "description": "Provides information used by the callout that appears when the add-in is installed.",
3391
- "minItems": 1,
3392
- "maxItems": 3,
3393
- "items": {
3394
- "type": "object",
3395
- "properties": {
3396
- "requirements": {
3397
- "type": "object",
3398
- "$ref": "#/definitions/requirementsExtensionElement"
3919
+ "type": "string",
3920
+ "description": "A unique identifier for this control within the app. Maximum length is 64 characters. ",
3921
+ "maxLength": 64
3399
3922
  },
3400
- "title": {
3401
- "type": "string",
3402
- "description": "The title used for the top of the callout.",
3403
- "maxLength": 125
3923
+ "type": {
3924
+ "type": "string",
3925
+ "description": "Defines the type of control.",
3926
+ "enum": [
3927
+ "button"
3928
+ ]
3404
3929
  },
3405
- "description": {
3406
- "type": "string",
3407
- "description": "The description/body content for the callout.",
3408
- "maxLength": 250
3930
+ "label": {
3931
+ "type": "string",
3932
+ "description": "Displayed text for the control. Maximum length is 64 characters.",
3933
+ "maxLength": 64
3409
3934
  },
3410
- "learnMoreUrl": {
3411
- "$ref": "#/definitions/anyHttpUrl",
3412
- "description": "A URL to a page that explains the add-in in detail."
3413
- }
3414
- },
3415
- "additionalProperties": false,
3416
- "required": [
3417
- "title",
3418
- "description",
3419
- "learnMoreUrl"
3420
- ]
3421
- }
3422
- },
3423
- "extensionRuntimeCode": {
3424
- "type": "object",
3425
- "properties": {
3426
- "page": {
3427
- "$ref": "#/definitions/secureHttpUrl",
3428
- "description": "URL of the .html page to be loaded in browser-based runtimes."
3429
- },
3430
- "script": {
3431
- "$ref": "#/definitions/secureHttpUrl",
3432
- "description": "URL of the .js script file to be loaded in UI-less runtimes."
3433
- }
3434
- },
3435
- "additionalProperties": false,
3436
- "required": [
3437
- "page"
3438
- ]
3439
- },
3440
- "extensionContextMenuArray": {
3441
- "type": "array",
3442
- "minItems": 1,
3443
- "items": {
3444
- "type": "object",
3445
- "properties": {
3446
- "requirements": {
3447
- "type": "object",
3448
- "$ref": "#/definitions/requirementsExtensionElement"
3935
+ "icons": {
3936
+ "type": "array",
3937
+ "minItems": 1,
3938
+ "maxItems": 3,
3939
+ "items": {
3940
+ "$ref": "#/definitions/extensionCommonIcon"
3941
+ }
3449
3942
  },
3450
- "menus": {
3451
- "$ref": "#/definitions/extensionMenuItem",
3452
- "description": "Configures the context menus. Minimum size is 1."
3453
- }
3454
- },
3455
- "additionalProperties": false,
3456
- "required": [
3457
- "menus"
3458
- ]
3459
- }
3460
- },
3461
- "extensionMenuItem": {
3462
- "type": "array",
3463
- "description": "The title used for the top of the callout.",
3464
- "minItems": 1,
3465
- "items": {
3466
- "type": "object",
3467
- "properties": {
3468
- "entryPoint": {
3469
- "type": "string",
3470
- "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.",
3471
- "enum": [
3472
- "text",
3473
- "cell"
3474
- ]
3943
+ "supertip": {
3944
+ "$ref": "#/definitions/extensionCommonSuperToolTip"
3475
3945
  },
3476
- "controls": {
3477
- "type": "array",
3478
- "items": {
3479
- "$ref": "#/definitions/extensionCommonCustomGroupControlsItem"
3480
- },
3481
- "minItems": 1
3482
- }
3483
- },
3484
- "additionalProperties": false,
3485
- "required": [
3486
- "entryPoint",
3487
- "controls"
3488
- ]
3489
- }
3490
- },
3491
- "extensionRibbonsArrayFixedControlItem": {
3492
- "type": "object",
3493
- "additionalProperties": false,
3494
- "properties": {
3495
- "id": {
3496
- "type": "string",
3497
- "description": "A unique identifier for this control within the app. Maximum length is 64 characters. ",
3498
- "maxLength": 64
3499
- },
3500
- "type": {
3501
- "type": "string",
3502
- "description": "Defines the type of control.",
3503
- "enum": [
3504
- "button"
3505
- ]
3506
- },
3507
- "label": {
3508
- "type": "string",
3509
- "description": "Displayed text for the control. Maximum length is 64 characters.",
3510
- "maxLength": 64
3511
- },
3512
- "icons": {
3513
- "type": "array",
3514
- "minItems": 1,
3515
- "maxItems": 3,
3516
- "items": {
3517
- "$ref": "#/definitions/extensionCommonIcon"
3946
+ "actionId": {
3947
+ "type": "string",
3948
+ "description": "The ID of an execution-type action that handles this key combination. Maximum length is 64 characters.",
3949
+ "maxLength": 64
3950
+ },
3951
+ "enabled": {
3952
+ "type": "boolean",
3953
+ "description": "Whether the control is initially enabled.",
3954
+ "default": true
3518
3955
  }
3519
- },
3520
- "supertip": {
3521
- "$ref": "#/definitions/extensionCommonSuperToolTip"
3522
- },
3523
- "actionId": {
3524
- "type": "string",
3525
- "description": "The ID of an execution-type action that handles this key combination. Maximum length is 64 characters.",
3526
- "maxLength": 64
3527
- },
3528
- "enabled": {
3529
- "type": "boolean",
3530
- "description": "Whether the control is initially enabled.",
3531
- "default": true
3532
- }
3533
3956
  },
3534
3957
  "required": [
3535
- "id",
3536
- "type",
3537
- "label",
3538
- "icons",
3539
- "supertip",
3540
- "actionId",
3541
- "enabled"
3958
+ "id",
3959
+ "type",
3960
+ "label",
3961
+ "icons",
3962
+ "supertip",
3963
+ "actionId",
3964
+ "enabled"
3542
3965
  ]
3543
- },
3544
- "extensionRibbonsSpamPreProcessingDialog": {
3966
+ },
3967
+ "extensionRibbonsSpamPreProcessingDialog": {
3545
3968
  "type": "object",
3546
3969
  "additionalProperties": false,
3547
3970
  "properties": {
3548
- "title": {
3549
- "type": "string",
3550
- "description": "Specifies the custom title of the preprocessing dialog.",
3551
- "maxLength": 128
3552
- },
3553
- "description": {
3554
- "type": "string",
3555
- "description": "Specifies the custom text that appears in the preprocessing dialog.",
3556
- "maxLength": 250
3557
- },
3558
- "spamNeverShowAgainOption": {
3559
- "type": "boolean",
3560
- "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.",
3561
- "default": "false"
3562
- },
3563
- "spamReportingOptions": {
3564
- "type": "object",
3565
- "description": "Specifies up to five options that a user can select from the preprocessing dialog to provide a reason for reporting a message.",
3566
- "properties": {
3567
- "title": {
3971
+ "title": {
3568
3972
  "type": "string",
3569
- "description": "Specifies the title listed before the reporting options list.",
3973
+ "description": "Specifies the custom title of the preprocessing dialog.",
3570
3974
  "maxLength": 128
3571
- },
3572
- "options": {
3573
- "type": "array",
3574
- "description": "Specifies the custom options that a user can select from the preprocessing dialog to provide a reason for reporting a message.",
3575
- "items": {
3576
- "type": "string",
3577
- "minItems": 1,
3578
- "maxItems": 5
3579
- }
3580
- },
3581
- "type": {
3975
+ },
3976
+ "description": {
3582
3977
  "type": "string",
3583
- "enum": [ "radio", "checkbox" ],
3584
- "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.",
3585
- "default": "checkbox"
3586
- }
3978
+ "description": "Specifies the custom text that appears in the preprocessing dialog.",
3979
+ "maxLength": 250
3587
3980
  },
3588
- "required": [
3589
- "title",
3590
- "options"
3591
- ]
3592
- },
3593
- "spamFreeTextSectionTitle": {
3594
- "type": "string",
3595
- "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.",
3596
- "maxLength": 128
3597
- },
3598
- "spamMoreInfo": {
3599
- "type": "object",
3600
- "description": "Specifies the custom text and URL to provide informational resources to the users.",
3601
- "properties": {
3602
- "text": {
3981
+ "spamNeverShowAgainOption": {
3982
+ "type": "boolean",
3983
+ "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.",
3984
+ "default": "false"
3985
+ },
3986
+ "spamReportingOptions": {
3987
+ "type": "object",
3988
+ "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.",
3989
+ "properties": {
3990
+ "title": {
3991
+ "type": "string",
3992
+ "description": "Specifies the title listed before the reporting options list.",
3993
+ "maxLength": 128
3994
+ },
3995
+ "options": {
3996
+ "type": "array",
3997
+ "description": "Specifies the custom options that a user can select from the preprocessing dialog to provide a reason for reporting a message.",
3998
+ "items": {
3999
+ "type": "string",
4000
+ "minItems": 1,
4001
+ "maxItems": 5
4002
+ }
4003
+ },
4004
+ "type": {
4005
+ "type": "string",
4006
+ "enum": [
4007
+ "radio",
4008
+ "checkbox"
4009
+ ],
4010
+ "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.",
4011
+ "default": "checkbox"
4012
+ }
4013
+ },
4014
+ "required": [
4015
+ "title",
4016
+ "options"
4017
+ ]
4018
+ },
4019
+ "spamFreeTextSectionTitle": {
3603
4020
  "type": "string",
3604
- "description": "Specifies display content of the hyperlink pointing to the site containing informational resources in the preprocessing dialog of a spam-reporting add-in.",
4021
+ "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.",
3605
4022
  "maxLength": 128
3606
- },
3607
- "url": {
3608
- "type": "string",
3609
- "description": "Specifies the URL of the hyperlink pointing to the site containing informational resources in the preprocessing dialog of a spam-reporting add-in.",
3610
- "maxLength": 2048
3611
- }
3612
4023
  },
3613
- "required": [
3614
- "text",
3615
- "url"
3616
- ]
3617
- }
4024
+ "spamMoreInfo": {
4025
+ "type": "object",
4026
+ "description": "Specifies the custom text and URL to provide informational resources to the users.",
4027
+ "properties": {
4028
+ "text": {
4029
+ "type": "string",
4030
+ "description": "Specifies display content of the hyperlink pointing to the site containing informational resources in the preprocessing dialog of a spam-reporting add-in.",
4031
+ "maxLength": 128
4032
+ },
4033
+ "url": {
4034
+ "type": "string",
4035
+ "description": "Specifies the URL of the hyperlink pointing to the site containing informational resources in the preprocessing dialog of a spam-reporting add-in.",
4036
+ "maxLength": 2048
4037
+ }
4038
+ },
4039
+ "required": [
4040
+ "text",
4041
+ "url"
4042
+ ]
4043
+ }
3618
4044
  },
3619
4045
  "required": [
3620
- "title",
3621
- "description"
4046
+ "title",
4047
+ "description"
3622
4048
  ]
3623
- },
4049
+ },
3624
4050
  "dashboardCard": {
3625
4051
  "type": "object",
3626
4052
  "description": "Cards wich could be pinned to dashboard providing summarized view of information relevant to user.",
@@ -3692,7 +4118,8 @@
3692
4118
  "sourceType": {
3693
4119
  "type": "string",
3694
4120
  "enum": [
3695
- "bot"
4121
+ "bot",
4122
+ null
3696
4123
  ],
3697
4124
  "description": "The content of the dashboard card is sourced from a bot."
3698
4125
  },
@@ -3710,22 +4137,60 @@
3710
4137
  },
3711
4138
  "additionalProperties": false
3712
4139
  },
4140
+ "declarativeCopilotRef": {
4141
+ "type": "object",
4142
+ "properties": {
4143
+ "id": {
4144
+ "type": "string",
4145
+ "description": "A unique identifier for this declarative copilot element."
4146
+ },
4147
+ "file": {
4148
+ "$ref": "#/definitions/relativePath",
4149
+ "description": "Relative file path to this declarative copilot element file in the application package."
4150
+ }
4151
+ },
4152
+ "description": "A reference to a declarative copilot element. The element's definition is in a separate file.",
4153
+ "required": [
4154
+ "id",
4155
+ "file"
4156
+ ],
4157
+ "additionalProperties": false
4158
+ },
3713
4159
  "declarativeAgentRef": {
3714
4160
  "type": "object",
3715
4161
  "properties": {
3716
- "id": {
3717
- "type": "string",
3718
- "description": "A unique identifier for this declarative agent element."
3719
- },
3720
- "file": {
3721
- "$ref": "#/definitions/relativePath",
3722
- "description": "Relative file path to this declarative agent element file in the application package."
3723
- }
4162
+ "id": {
4163
+ "type": "string",
4164
+ "description": "A unique identifier for this declarative agent element."
4165
+ },
4166
+ "file": {
4167
+ "$ref": "#/definitions/relativePath",
4168
+ "description": "Relative file path to this declarative agent element file in the application package."
4169
+ }
3724
4170
  },
3725
4171
  "description": "A reference to a declarative agent element. The element's definition is in a separate file.",
3726
4172
  "required": [
3727
- "id",
3728
- "file"
4173
+ "id",
4174
+ "file"
4175
+ ],
4176
+ "additionalProperties": false
4177
+ },
4178
+ "pluginRef": {
4179
+ "type": "object",
4180
+ "properties": {
4181
+ "id": {
4182
+ "type": "string",
4183
+ "description": "A unique identifier for this plugin element."
4184
+ },
4185
+ "file": {
4186
+ "$ref": "#/definitions/relativePath",
4187
+ "description": "Relative file path to this plugin element file in the application package."
4188
+ }
4189
+ },
4190
+ "description": "A reference to a plugin element. The element's definition is in a separate file.",
4191
+ "required": [
4192
+ "id",
4193
+ "file"
3729
4194
  ],
3730
4195
  "additionalProperties": false
3731
4196
  },
@@ -3733,15 +4198,57 @@
3733
4198
  "type": "object",
3734
4199
  "properties": {
3735
4200
  "id": {
3736
- "type": "string",
3737
- "description": "Unique identifier for the agentic user template. Must contain only alphanumeric characters, dots, underscores, and hyphens.",
3738
- "pattern": "^[a-zA-Z0-9._-]+$",
3739
- "minLength": 1,
3740
- "maxLength": 64
4201
+ "type": "string",
4202
+ "description": "Unique identifier for the agentic user template. Must contain only alphanumeric characters, dots, underscores, and hyphens.",
4203
+ "pattern": "^[a-zA-Z0-9._-]+$",
4204
+ "minLength": 1,
4205
+ "maxLength": 64
4206
+ },
4207
+ "file": {
4208
+ "$ref": "#/definitions/relativePath",
4209
+ "description": "Relative file path to this agentic user template element file in the application package."
4210
+ }
4211
+ },
4212
+ "required": [
4213
+ "id",
4214
+ "file"
4215
+ ],
4216
+ "additionalProperties": false
4217
+ },
4218
+ "localAgentRef": {
4219
+ "type": "object",
4220
+ "properties": {
4221
+ "id": {
4222
+ "type": "string",
4223
+ "description": "Unique identifier for this local agent reference. Must match the id declared in the referenced localagent.json manifest. Must contain only alphanumeric characters, dots, underscores, and hyphens.",
4224
+ "pattern": "^[a-zA-Z0-9._-]+$",
4225
+ "minLength": 1,
4226
+ "maxLength": 64
4227
+ },
4228
+ "file": {
4229
+ "$ref": "#/definitions/relativePath",
4230
+ "description": "Relative file path to this local agent's localagent.json file in the application package."
4231
+ }
4232
+ },
4233
+ "required": [
4234
+ "id",
4235
+ "file"
4236
+ ],
4237
+ "additionalProperties": false
4238
+ },
4239
+ "localToolRef": {
4240
+ "type": "object",
4241
+ "properties": {
4242
+ "id": {
4243
+ "type": "string",
4244
+ "description": "Unique identifier for this local tool reference. Must match the id declared in the referenced localtool.json manifest. Must contain only alphanumeric characters, dots, underscores, and hyphens.",
4245
+ "pattern": "^[a-zA-Z0-9._-]+$",
4246
+ "minLength": 1,
4247
+ "maxLength": 64
3741
4248
  },
3742
4249
  "file": {
3743
- "$ref": "#/definitions/relativePath",
3744
- "description": "Relative file path to this agentic user template element file in the application package."
4250
+ "$ref": "#/definitions/relativePath",
4251
+ "description": "Relative file path to this local tool's localtool.json file in the application package."
3745
4252
  }
3746
4253
  },
3747
4254
  "required": [
@@ -3846,4 +4353,4 @@
3846
4353
  "description": "An object representing a specific functionality that a host must support."
3847
4354
  }
3848
4355
  }
3849
- }
4356
+ }