发布 teamsApp
命名空间:microsoft.graph
将 应用 发布到 Microsoft Teams 应用目录。
具体而言,此 API 将应用发布到组织的目录 (租户应用目录) ;创建的资源的 distributionMethod 属性值 organization
为 。
requiresReview 属性允许任何用户提交应用以供管理员审阅。 管理员可以通过此 API 或 Microsoft Teams 管理中心批准或拒绝这些应用。
此 API 可用于以下国家级云部署。
全局服务 | 美国政府 L4 | 美国政府 L5 (DOD) | 由世纪互联运营的中国 |
---|---|---|---|
✅ | ✅ | ✅ | ❌ |
权限
为此 API 选择标记为最低特权的权限。 只有在应用需要它时,才使用更高的特权权限。 有关委派权限和应用程序权限的详细信息,请参阅权限类型。 要了解有关这些权限的详细信息,请参阅 权限参考。
权限类型 | 最低特权权限 | 更高特权权限 |
---|---|---|
委派(工作或学校帐户) | AppCatalog.Submit | AppCatalog.ReadWrite.All、Directory.ReadWrite.All |
委派(个人 Microsoft 帐户) | 不支持。 | 不支持。 |
应用程序 | 不支持。 | 不支持。 |
注意
- 仅
Directory.ReadWrite.All
支持向后兼容权限。 建议更新解决方案,以使用上表中列出的替代权限,并避免今后使用这些权限。 - 该
AppCatalog.Submit
权限允许你仅提交应用以供审阅,而不能将其发布到目录。
HTTP 请求
POST /appCatalogs/teamsApps
若要发布需要评审的应用,请执行以下操作:
POST /appCatalogs/teamsApps?requiresReview={Boolean}
查询参数
属性 | 类型 | 说明 |
---|---|---|
requiresReview | 布尔值 | 此可选查询参数将触发应用评审过程。 具有管理员权限的用户无需触发评审即可提交应用。 如果用户希望在发布前请求评审,则必须将 requiresReview 设置为 true 。 具有管理员权限的用户可以选择不设置 requiresReview 或将值设置为 false ,并且应用获得批准并立即发布。 |
请求标头
标头 | 值 |
---|---|
Authorization | 持有者 {token}。 必填。 详细了解 身份验证和授权。 |
Content-Type | application/zip。 必填。 |
请求正文
在请求正文中,包括 Teams zip 清单有效负载。 有关详细信息,请参阅 创建应用包。
应用目录中的每个应用都必须具有唯一的清单 ID。
响应
如果成功,此方法将 200 OK
返回响应代码和 teamsApp 对象。 如果应用清单有任何验证错误,则请求将返回错误响应,其中包含有关架构错误的详细信息。
错误响应
如果发送上传包含缺失信息或错误的应用清单的请求,则会收到一条错误消息,其中包含内部错误代码 UnableToParseTeamsAppManifest
。 内部错误的 details 属性包含错误代码和错误消息。 下表描述了可能会遇到的错误代码。
错误响应
错误代码 | 错误消息 | 说明 |
---|---|---|
ActivityGroupIdFromActivitiesTypeValidation |
ActivityType 中的 ActivityGroupId 字段必须是 ActivityGroup 中 ID 字段的子集。 | 中的ActivityGroupId ActivityType 字段不是应用清单中 字段ActivityGroup 的Id 子集。 |
ActivityTypesMustExistWithActivitiesGroupValidation |
缺少活动类型时,清单不应包含活动组。 | 属性 ActivityGroup 可用,但 ActivityType 应用清单中缺少该属性。 |
ApiBasedComposeExtensionApiResponseRenderingTemplateFileNullOrEmpty |
基于 API 的 compose 扩展必须在清单上定义 apiResponseRenderingTemplateFile。 | 基于 API 的撰写扩展未 apiResponseRenderingTemplateFile 在应用清单中定义 。 |
ApiBasedComposeExtensionApiSpecificationFileNullOrEmpty |
基于 API 的 compose 扩展必须在清单上定义 apiSpecificationFile。 | 基于 API 的撰写扩展未 apiSpecificationFile 在应用清单中定义 。 |
ApiBasedComposeExtensionManifestCommandIdsNotIncludedInOperationIdsOnApiSpecficationFile |
清单上的命令 ID 不包括在 API 规范文件中的操作 ID 中。 | 当应用清单中的 未包含在 Operation Ids API 规范文件中时Command Ids 发生的错误。 |
ApiBasedComposeExtensionWithBotId |
基于 API 的撰写扩展无法定义 botId。 | 基于 API 的撰写扩展已在 botId 应用清单中定义。 |
ApiBasedComposeExtensionWithCanUpdateConfiguration |
基于 API 的撰写扩展无法在清单上定义 canUpdateConfiguration。 | 基于 API 的撰写扩展已在 canUpdateConfiguration 应用清单中定义。 |
ApiBasedComposeExtensionWithNoParameter |
基于 API 的撰写扩展必须在清单上定义命令参数。 | 基于 API 的 compose 扩展未在应用清单中定义任何命令参数。 |
ApiSecretServiceAuthTypeComposeExtensionContainsMsftEntraConfiguration |
具有 apiSecretServiceAuth authType 的基于 API 的 compose 扩展已定义 microsoftEntraConfiguration。 | 基于 API 的撰写扩展已在 microsoftEntraConfiguration 应用清单中定义。 |
ApiSecretServiceAuthTypeComposeExtensionContainsNoApiSecretRegistrationId |
具有 apiSecretServiceAuth auth authType 的基于 API 的 compose 扩展未定义 apiSecretRegistrationId。 | 基于 API 的 compose 扩展,具有 apiSecretServiceAuth authType,未 apiSecretRegistrationId 在应用清单中定义。 |
ApiSecretServiceAuthTypeComposeExtensionContainsNoApiSecretServiceAuthConfiguration |
具有 apiSecretServiceAuth authType 的基于 API 的 compose 扩展没有 apiSecretServiceConfiguration。 | 基于 API 的撰写扩展未在应用清单中设置为 supportsSingleSignOn true 。 |
ApiSpecificationFileContainUnsupportedHttpMethod |
基于 API 的 compose 扩展具有在 apiSpecificationFile 上定义的不支持 http 方法的服务器 URL。 目前仅支持 GET 和 POST。 | 基于 API 的撰写扩展在 中apiSpecificationFile 定义了不支持http 的方法。 |
ApiSpecificationFileParameterContainUnsupportedSchemaType |
基于 API 的 compose 扩展在 apiSpecificationFile 上定义了不支持的参数架构类型。 不支持数组。 | 基于 API 的 compose 扩展具有 在 中 apiSpecificationFile 定义的不支持的参数架构类型。 |
ApiSpecificationFileRequestBodyContainUnsupportedMediaType |
基于 API 的撰写扩展在 apiSpecificationFile 上的请求正文中定义了不支持的媒体类型。 目前仅支持 application/json。 | 基于 API 的撰写扩展在 的请求正文中apiSpecificationFile 定义了不支持media 的类型。 |
ApiSpecificationFileRequestBodyContainUnsupportedSchemaType |
基于 API 的 compose 扩展在 apiSpecificationFile 上的请求正文中定义了不支持的架构类型。 目前不支持数组。 | 基于 API 的 compose 扩展在 的请求正文中定义了不支持的 apiSpecificationFile 架构类型。 |
ApiSpecificationFileRequestBodySchemaContainKeywords |
基于 API 的撰写扩展具有关键字。 | 基于 API 的撰写扩展具有 在 中的请求正文中 apiSpecificationFile 定义的关键字。 |
ApiSpecificationFileRequiredParameterContainUnsupportedLocation |
基于 API 的 compose 扩展在 apiSpecificationFile {0}上定义了不支持的参数位置。 目前仅支持路径和查询。 | 基于 API 的 compose 扩展具有在 中 apiSpecificationFile 定义的不支持的参数位置。 |
ApiSpecificationFileRequiredParameterOrPropertyNotDefinedOnManifest |
基于 API 的撰写扩展具有清单上未定义的必需参数或属性 {0} 。 | 基于 API 的撰写扩展具有 required 参数,该参数未在应用清单中定义。 |
ApiSpecificationFileResponseContainUnsupportedMediaType |
基于 API 的撰写扩展在 apiSpecificationFile 的响应中定义了不支持的媒体类型。 目前仅支持 application/json。 | 基于 API 的 compose 扩展在 中的响应中apiSpecificationFile 定义了不支持media 的类型。 |
ApiSpecificationFileServerUrlsContainHttp |
基于 API 的 compose 扩展具有在 apiSpecificationFile 上定义的 http 协议的服务器 URL。 | 基于 API 的 compose 扩展具有包含 http 中的 apiSpecificationFile 协议的服务器 URL。 |
ApiSpecificationFileServerUrlsContainInvalidUrl |
基于 API 的撰写扩展具有在 apiSpecificationFile 上定义的无效 URL 的服务器 URL。 | 基于 API 的撰写扩展具有 invalid 在 中 apiSpecificationFile 定义的 URL。 |
BotBasedComposeExtensionApiResponseRenderingTemplateFileExists |
基于机器人的 compose 扩展无法定义 apiResponseRenderingTemplateFile。 | 基于机器人的 compose 扩展在应用清单中定义了属性 apiResponseRenderingTemplateFile 。 |
BotBasedComposeExtensionApiSpecificationFileExists |
基于机器人的 compose 扩展无法定义 apiSpecificationFile。 | 基于机器人的 compose 扩展具有应用清单中定义的 API 规范文件。 |
BotBasedComposeExtensionBotIdNotGuid |
基于机器人的撰写扩展必须具有 GUID botId。 | 基于机器人的撰写扩展 botId 不是 GUID。 |
BotIdIsNotGuid |
BotId 不是 Guid 值。 |
BotId 应用清单中的值不是 GUID。 |
CommonAppIdIsNotGuid |
字段“ID”不是清单中的 Guid。 |
appId 不是 GUID。 |
CommonAppIdIsRequiredField |
清单中缺少必填字段“ID”。 |
appId 未提供 。 |
CommonManifestVersionIsRequiredField |
清单“清单版本”中缺少必填字段。 | 未提供清单版本。 |
CommonSchemaUrlIsRequiredField |
架构 URL 必须存在。 | 未提供架构。 |
DashboardCardBothIconNameAndUrlPresent |
仪表板卡片图标不应同时包含图标名称和 URL。 | 仪表板卡片图标不能同时包含图标名称和 URL。 |
DashboardCardEntityIdsAreNotUnique |
仪表板卡实体 ID 应是唯一的。 | 仪表板 卡返回的实体 ID 在清单中不唯一。 |
DeveloperNameIsRequiredField |
清单中缺少必填字段“开发人员名称”。 | 未提供开发人员名称。 |
DeveloperNameLengthCheck |
最大字符长度不得超过 32 个字符。 | 开发人员名称长度超过 32 个字符。 |
DeveloperPrivacyUrlIsRequiredField |
清单中缺少必填字段“privacyUrl”。 |
privacyUrl 应用清单中缺少 。 |
DeveloperPrivacyUrlMustBeHttps |
隐私 URL 必须受到 HTTPS) (支持 URL 的安全。 | 开发人员隐私 URL 未使用 HTTPS。 |
DeveloperTermsOfUseUrlIsRequiredField |
清单中缺少必填字段“termsOfUseUrl”。 | 清单中缺少 termsOfUseUrl 。 |
DeveloperTermsOfUseUrlMustBeHttps |
使用条款 URL 必须是安全的支持 URL (HTTPS) 。 | 开发人员使用条款 URL 未使用 HTTPS。 |
DeveloperWebsiteUrlIsRequiredField |
清单中缺少必填字段“websiteUrl”。 | 缺少开发人员网站 URL。 |
DeveloperWebsiteUrlMustBeHttps |
网站 URL 必须受到 https) (支持 URL 的安全。 | 开发人员网站 URL 未使用 HTTPS。 |
FullDescriptionCannotBeEmpty |
完整说明不能为空。 | 完整说明为空。 |
FullDescriptionLengthCheck |
长描述的最大字符长度不得超过 4,000 个字符。 | 完整说明长度超过 4,000 个字符。 |
GroupChatForBotsLessThanV13 |
请将清单的版本升级到 V1.3,因为清单 v1.3 以后支持群聊机器人。 |
groupChat 应用清单 1.3 及更低版本不支持机器人的范围。 |
GroupChatForConfigurableTabsLessThanV13 |
请将清单的版本升级到 V1.3,因为清单 v1.3 以后支持群组聊天可配置选项卡。 |
groupChat 应用清单 1.3 及更低版本不支持可配置选项卡的范围。 |
InvalidColor32x32IconHeightAndWidth |
颜色 32x32 图标应为 32x32,只有白色和透明。 | 颜色 32x32 图标没有正确的尺寸。 |
InvalidColorIconHeightAndWidth |
颜色图标不符合所需的尺寸。 | 颜色图标的尺寸不正确。 |
InvalidOutlineIconHeightAndWidth |
小图标应为 32x32,只有白色和透明。 | 大纲图标的尺寸不正确。 |
InvalidOutlineIconTransparency |
大纲图标不透明。 是阿尔法 | 大纲图标包含既不透明也不为白色的像素,Alpha、R、G、B 值为 {0}、 {1}、 {2}和 {3}。 |
MsftEntraAuthTypeComposeExtensionContainsApiSecretServiceConfiguration |
具有 microsoftEntra authType 的基于 API 的 compose 扩展定义了 apiSecretServiceConfiguration。 | 基于 API 的撰写扩展已在 apiSecretServiceConfiguration 清单中定义。 |
MsftEntraAuthTypeComposeExtensionContainsNoMsftEntraConfiguration |
使用 microsoftEntra authType 的基于 API 的 compose 扩展未定义 microsoftEntraConfiguration。 | 基于 API 的撰写扩展未 microsoftEntraConfiguration 在应用清单中定义。 |
MsftEntraAuthTypeComposeExtensionResourceURLNotMatchServerURLOnApiSpec |
清单上具有 microsoftEntra authType 资源 URL 的基于 API 的撰写扩展与 API 规范文件中的服务器 URL 不匹配。 | 应用清单中具有 microsoftEntra authType 资源 URL 的基于 API 的撰写扩展与 API 规范文件中的服务器 URL 不匹配。 |
MsftEntraAuthTypeComposeExtensionSupportsSingleSignOnFalse |
使用 microsoftEntra authType 的基于 API 的 compose 扩展未将 supportsSingleSignOn 设置为 true。 | 基于 API 的 compose 扩展未在应用清单中将 supportsSingleSignOntrue 设置为 。 |
NoAuthTypeComposeExtensionContainsAuthConfiguration |
没有 authType 的基于 API 的撰写扩展定义了与身份验证相关的配置。 | 具有 authType microsoftEntraConfiguration 或 apiSecretServiceConfiguration 的基于 API 的撰写扩展未在应用清单中定义。 |
ParameterOnManifestNotDefinedOnApiSpecFile |
基于 API 的撰写扩展具有未在 API 规范文件上定义的清单上的参数 {0} 。 | 应用清单中基于 API 的撰写扩展参数未在 API 规范文件中定义。 |
ReservedActivitiesValidation |
清单不应包含保留的活动类型“systemDefault”。 | 活动 systemDefault 类型在应用清单中定义。 |
ReservedStaticTabNameShouldBeNull |
不应指定保留选项卡“名称”属性。 | 指定了保留 staticTabs 名称属性。 |
SchemaError_AdditionalItems |
架构不允许其他项。 | 应用清单文件未能 additionalItems 验证架构。 |
SchemaError_AdditionalProperties |
尚未定义属性 {0} ,并且架构不允许其他属性。 | 应用清单文件未能 additionalProperties 验证架构。 此处表示 {0} 附加属性。 |
SchemaError_AllOf |
JSON 与“allOf”中的所有架构不匹配。 | 应用清单文件未能 allOf 验证架构。 |
SchemaError_AnyOf |
JSON 与“anyOf”中的任何架构都不匹配。 | 应用清单文件未能 anyOf 验证架构。 |
SchemaError_Const |
值 {0} 与常量 {1}不匹配。 | 应用清单文件未能 const 验证架构。 此处表示 {0} 失败的值,并 {1} 表示正确的值。 |
SchemaError_ContentEncoding |
字符串 {0} 不会针对内容编码 {1}进行验证。 | 应用清单文件未能 contentEncoding 验证架构。 此处表示 {0} 与内容编码不匹配的字符串,并 {1} 表示预期的内容编码。 |
SchemaError_Dependencies |
属性 {0} 的依赖项失败。 缺少所需的密钥。 | 应用清单文件未能 dependencies 验证架构。 此处表示 {0} 失败的属性。 |
SchemaError_Else |
JSON 与“else”的架构不匹配。 | 应用清单文件未能 else 验证架构。 |
SchemaError_Enum |
枚举中未定义值 {0} 。 | 应用清单文件未能 enum 验证架构。 此处, {0} 表示不在枚举中的值。 |
SchemaError_Format |
字符串 {0} 不会针对格式 {1}进行验证。 | 应用清单文件未能 format 验证架构。 此处表示 {0} 不采用预期格式的字符串,并 {1} 表示预期格式。 |
SchemaError_Id |
遇到重复的架构 ID {0} 。 | 应用清单文件未能 id 验证架构。 此处, {0} 表示 id 架构的 。 |
SchemaError_Maximum |
整数 {0} 超过 的最大值 {1}。 | 应用清单文件未能 maximum 验证架构。 此处表示 {0} 超出最大限制的值,表示 {1} 最大限制。 |
SchemaError_MaximumItems |
数组项计数 {0} 超过 的最大计数 {1}。 | 应用清单文件未能 maximumItems 验证架构。 此处表示 {0} 数组中的元素数,表示 {1} 允许的最大元素数。 |
SchemaError_MaximumLength |
字符串 {0} 超过 的最大长度 {1}。 | 应用清单文件未能 maximumLength 验证架构。 此处, {0} 表示超过最大长度的字符串,表示 {1} 最大长度。 |
SchemaError_MaximumProperties |
对象属性计数 {0} 超过 的最大计数 {1}。 | 应用清单文件未能 maximumProperties 验证架构。 此处表示 {0} 提供的属性数,表示 {1} 允许的最大属性数。 |
SchemaError_Minimum |
整数 {0} 小于 的最小值 {1}。 | 应用清单文件未能 minimum 验证架构。 此处表示 {0} 超出最小限制的值,表示 {1} 最小限制。 |
SchemaError_MinimumItems |
数组项计数 {0} 小于 的最小计数 {1}。 | 应用清单文件未能 minimumItems 验证架构。 此处表示 {0} 数组中的元素数,表示 {1} 允许的最小值。 |
SchemaError_MinimumLength |
字符串 {0} 小于 的 {1}最小长度。 | 应用清单文件未能 minimumLength 验证架构。 此处, {0} 表示小于最小长度的字符串,并 {1} 表示最小值。 |
SchemaError_MinimumProperties |
对象属性计数 {0} 小于 的最小计数 {1}。 | 应用清单文件未能 minimumProperties 验证架构。 此处表示 {0} 提供的属性数,表示 {1} 允许的最小属性。 |
SchemaError_Not |
JSON 对来自“not”的架构有效。 | 应用清单文件未能 not 验证架构。 |
SchemaError_OneOf |
JSON 对“oneOf”的多个架构有效。 | 应用清单文件未能 oneOf 验证架构。 |
SchemaError_Pattern |
字符串 {0} 与正则表达式模式“”{1}不匹配。 | 应用清单文件未能 pattern 验证架构。 此处表示 {0} 与模式不匹配的值,并 {1} 表示预期的模式。 |
SchemaError_PatternProperties |
无法使用正则表达式模式“”{0}测试属性名称。 | 应用清单文件未能 patternProperties 验证架构。 此处表示 {0} 属性的模式。 |
SchemaError_Required |
对象中缺少必需的属性: {0}。 | 应用清单文件未能 required 验证架构。 此处表示 {0} 所需的属性。 |
SchemaError_Then |
JSON 与“then”的架构不匹配。 | 应用清单文件未能 then 验证架构。 |
SchemaError_Type |
值 {0} 不是预期的类型 {1}。 | 应用清单文件未能 type 验证架构。 此处, {0} 表示不在预期类型中的字符串,并 {1} 表示预期的类型。 |
SchemaError_UniqueItems |
数组包含不唯一的项。 | 应用清单文件未能 uniqueItems 验证架构。 |
SchemaError_Valid |
架构始终无法通过验证。 | 应用清单文件未能 valid 验证架构。 |
Serialization_FileMissing |
在应用包中找不到该文件 {0} 。 | 应用包中缺少预期的文件。 |
Serialization_FileNotValidJson |
无法将文件分析为 JSON 对象。 | 提交的文件不符合有效的 JSON 格式。 |
Serialization_ManifestVersionPropertyMissing |
该文件不包含“”{0}属性。 | 应用清单文件中缺少 manifestVersion 属性。 此处表示 {0}manifestVersion 属性的字符串。 |
Serialization_TrailingCommaInManifestJsonFile |
清单 json 文件包含尾随逗号。 | 应用清单文件包含尾随逗号。 |
ServerUrlsMissingOnApiSpecificationFile |
基于 API 的 compose 扩展没有在 apiSpecificationFile 上定义的服务器 URL。 | 发生的错误 基于 API 的 compose 扩展未在 中 apiSpecificationFile 定义服务器 URL。 |
ShortDescriptionCannotBeEmpty |
简短说明不能为空。 | 简短说明为空。 |
ShortDescriptionLengthCheck |
短说明的最大字符长度不得超过 80 个字符。 | 简短说明长度超过 80 个字符。 |
ShortNameEqualsReservedName |
应用的短名称不能为保留名称。 | 短名称是保留名称。 |
ShortNameIsRequiredField |
应用的短名称不能为空。 | 短名称为空。 |
ShortNameLengthCheck |
短名称的最大字符长度不得超过 30 个字符。 | 短名称超过 30 个字符。 |
UniqueActivityTypeInActivitiesValidation |
清单不应包含重复的活动类型。 | 活动类型在应用清单中并不唯一。 |
UniqueIdInActivitiesGroupValidation |
清单不应在活动组中包含重复 ID。 | 活动组 ID 在应用清单中不是唯一的。 |
VersionCannotBeEmpty |
清单中缺少必填字段“version”。 | 缺少应用包版本。 |
VersionContainsOnlyNumbersDotSeparated |
应用版本仅支持“#.#.#”格式的数字。 | 应用包中的版本与模式 #.#.# 不匹配。 |
VersionHasMajorLessThan1 |
应用版本不应以“0”开头。 例如,0.0.1 或 0.1 不是有效的应用版本,1.0/1.5.1/1.0.0/2.5.0 是有效的应用版本。 在清单中对应用商店中的现有应用进行新更新时。 | 应用版本小于 1.0。 需要升级应用版本。 例如,如果应用商店中应用的当前版本为 1.0,并且你要提交更新进行验证,则应用版本必须高于 1.0。 |
示例
示例 1:将应用发布到应用目录
请求
以下示例显示了一个请求。
POST https://graph.microsoft.com/v1.0/appCatalogs/teamsApps
Content-type: application/zip
[Zip file containing a Teams app package]
有关如何创建 Microsoft Teams 应用程序 zip 文件的信息,请参阅 创建应用包。
响应
以下示例显示了相应的响应。
HTTP/1.1 201 Created
Content-Type: application/json
{
"id": "e3e29acb-8c79-412b-b746-e6c39ff4cd22",
"externalId": "b5561ec9-8cab-4aa3-8aa2-d8d7172e4311",
"displayName": "Test App",
"distributionMethod": "organization"
}
示例 2:将新应用程序上传到组织的应用目录以供审阅
请求
以下示例显示了一个请求。
POST https://graph.microsoft.com/v1.0/appCatalogs/teamsApps?requiresReview=true
Content-type: application/zip
响应
以下示例显示了相应的响应。
HTTP/1.1 201 Created
Location: https://graph.microsoft.com/v1.0/appCatalogs/teamsApps/e3e29acb-8c79-412b-b746-e6c39ff4cd22
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#appCatalogs/teamsApps/$entity",
"id": "e3e29acb-8c79-412b-b746-e6c39ff4cd22",
"externalId": "b5561ec9-8cab-4aa3-8aa2-d8d7172e4311",
"displayName": "Test App",
"distributionMethod": "organization"
}
示例 3:批准或拒绝等待评审的应用
请求
以下示例显示了一个请求。
PATCH https://graph.microsoft.com/v1.0/appCatalogs/teamsApps/a761ad07-22ef-4a53-9feb-2837c8ad4a84/appDefinitions/YTc2MWFkMDctMjJlZi00YTUzLTlmZWItMjgzN2M4YWQ0YTg0IyMxLjEuOCMjU3VibWl0dGVk
Content-type: application/json
If-Match: InFtSStsNVJHVWdzWUJRU2ZVWGp4RWc9PSI=
{
"publishingState":"published"
}
响应
以下示例显示了相应的响应。
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#appCatalogs/teamsApps('a761ad07-22ef-4a53-9feb-2837c8ad4a84')/appDefinitions/$entity",
"id": "YTc2MWFkMDctMjJlZi00YTUzLTlmZWItMjgzN2M4YWQ0YTg0IyMxLjEuOCMjUHVibGlzaGVk",
"teamsAppId": "a761ad07-22ef-4a53-9feb-2837c8ad4a84",
"azureADAppId": null,
"displayName": "Ducks",
"version": "1.1.8",
"requiredResourceSpecificApplicationPermissions": [],
"publishingState": "published",
"shortDescription": "quaerat quasi magnam. slight change. 5",
"description": "Aliquid placeat animi debitis accusamus. Non perferendis ullam. Quis est consequuntur vitae provident. Sunt laudantium id aut. slight change 5",
"lastModifiedDateTime": null,
"createdBy": null
}
示例 4:将应用发布到应用目录,但应用清单中出现错误
请求
以下示例显示了一个请求。
POST https://graph.microsoft.com/v1.0/appCatalogs/teamsApps
Content-type: application/zip
[Zip file containing a Teams app package]
响应
以下示例显示了相应的响应。
HTTP/1.1 200 OK
Content-type: application/json
{
"error": {
"code": "BadRequest",
"message": "name | Required properties are missing from object: [].; developer.websiteUrl | String \"hs://www.yo.com\" does not match regex pattern \"^[Hh][Tt][Tt][Pp][Ss]?://\".",
"innerError": {
"code": "UnableToParseTeamsAppManifest",
"message": "name | Required properties are missing from object: [].; developer.websiteUrl | String \"hs://www.yo.com\" does not match regex pattern \"^[Hh][Tt][Tt][Pp][Ss]?://\".",
"details": [
{
"code": "SchemaError_Required",
"message": "Required properties are missing from object: [].",
"target": "name"
},
{
"code": "SchemaError_Pattern",
"message": "String \"hs://www.yo.com\" does not match regex pattern \"^[Hh][Tt][Tt][Pp][Ss]?://\".",
"target": "developer.websiteUrl"
}
],
"date": "2024-01-18T21:47:58",
"request-id": "d1878136-bc88-421a-b342-c3d883db31a1",
"client-request-id": "d1878136-bc88-421a-b342-c3d883db31a1"
}
}
}