发布 teamsApp

命名空间:microsoft.graph

重要

Microsoft Graph /beta 版本下的 API 可能会发生更改。 不支持在生产应用程序中使用这些 API。 若要确定 API 是否在 v1.0 中可用,请使用 版本 选择器。

应用 发布到 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 字段的子集。 ActivityType 中的 ActivityGroupId 字段不是应用清单中 ActivityGroup 中 Id 字段的子集。
ActivityTypesMustExistWithActivitiesGroupValidation 缺少活动类型时,清单不应包含活动组。 ActivityGroup 属性可用,但应用清单中缺少 ActivityType 属性。
ApiBasedComposeExtensionApiResponseRenderingTemplateFileNullOrEmpty 基于 API 的 compose 扩展必须在清单上定义 apiResponseRenderingTemplateFile。 基于 API 的 compose 扩展没有在应用清单中定义的 apiResponseRenderingTemplateFile。
ApiBasedComposeExtensionApiSpecificationFileNullOrEmpty 基于 API 的 compose 扩展必须在清单上定义 apiSpecificationFile。 基于 API 的 compose 扩展未在应用清单中定义 apiSpecificationFile。
ApiBasedComposeExtensionManifestCommandIdsNotIncludedInOperationIdsOnApiSpecficationFile 清单上的命令 ID 不包括在 API 规范文件中的操作 ID 中。 当应用清单中的命令 ID 未包含在 API 规范文件中的操作 ID 中时发生的错误。
ApiBasedComposeExtensionWithBotId 基于 API 的撰写扩展无法定义 botId。 基于 API 的 compose 扩展在应用清单中定义了 botId。
ApiBasedComposeExtensionWithCanUpdateConfiguration 基于 API 的撰写扩展无法在清单上定义 canUpdateConfiguration。 基于 API 的 compose 扩展在应用清单中定义了 canUpdateConfiguration。
ApiBasedComposeExtensionWithNoParameter 基于 API 的撰写扩展必须在清单上定义命令参数。 基于 API 的 compose 扩展未在应用清单中定义任何命令参数。
ApiSecretServiceAuthTypeComposeExtensionContainsMsftEntraConfiguration 具有 apiSecretServiceAuth authType 的基于 API 的 compose 扩展已定义 microsoftEntraConfiguration。 基于 API 的 compose 扩展在应用清单中定义了 microsoftEntraConfiguration。
ApiSecretServiceAuthTypeComposeExtensionContainsNoApiSecretRegistrationId 具有 apiSecretServiceAuth auth authType 的基于 API 的 compose 扩展未定义 apiSecretRegistrationId。 基于 API 的 compose 扩展,其 apiSecretServiceAuth authType 中没有在应用清单中定义 apiSecretRegistrationId。
ApiSecretServiceAuthTypeComposeExtensionContainsNoApiSecretServiceAuthConfiguration 具有 apiSecretServiceAuth authType 的基于 API 的 compose 扩展没有 apiSecretServiceConfiguration。 基于 API 的 compose 扩展未在应用清单中将 supportsSingleSignOn 设置为 true。
ApiSpecificationFileContainUnsupportedHttpMethod 基于 API 的 compose 扩展具有在 apiSpecificationFile 上定义的不支持 http 方法的服务器 URL。 目前仅支持 GET 和 POST。 基于 API 的 compose 扩展具有 apiSpecificationFile 中定义的不支持的 http 方法。
ApiSpecificationFileParameterContainUnsupportedSchemaType 基于 API 的 compose 扩展不支持在 apiSpecificationFile.Arrays 上定义的参数架构类型。 基于 API 的 compose 扩展具有 apiSpecificationFile 中定义的不支持的参数架构类型。
ApiSpecificationFileRequestBodyContainUnsupportedMediaType 基于 API 的撰写扩展在 apiSpecificationFile 上的请求正文中定义了不支持的媒体类型。 目前仅支持 application/json。 基于 API 的 compose 扩展在 apiSpecificationFile 的请求正文中定义了不受支持的媒体类型。
ApiSpecificationFileRequestBodyContainUnsupportedSchemaType 基于 API 的 compose 扩展在 apiSpecificationFile 上的请求正文中定义了不支持的架构类型。 目前不支持数组。 基于 API 的 compose 扩展在 apiSpecificationFile 的请求正文中定义了不支持的架构类型。
ApiSpecificationFileRequestBodySchemaContainKeywords 基于 API 的撰写扩展具有关键字。 基于 API 的 compose 扩展在 apiSpecificationFile 的请求正文中定义了关键字。
ApiSpecificationFileRequiredParameterContainUnsupportedLocation 基于 API 的 compose 扩展在 apiSpecificationFile {0}上定义了不支持的参数位置。 目前仅支持路径和查询。 基于 API 的 compose 扩展具有 apiSpecificationFile 中定义的不支持的参数位置。
ApiSpecificationFileRequiredParameterOrPropertyNotDefinedOnManifest 基于 API 的撰写扩展具有清单上未定义的必需参数或属性 {0} 。 基于 API 的撰写扩展具有必需的参数,该参数未在应用清单中定义。
ApiSpecificationFileResponseContainUnsupportedMediaType 基于 API 的撰写扩展在 apiSpecificationFile 的响应中定义了不支持的媒体类型。 目前仅支持 application/json。 基于 API 的 compose 扩展在 apiSpecificationFile 中的响应中定义了不支持的媒体类型。
ApiSpecificationFileServerUrlsContainHttp 基于 API 的 compose 扩展具有在 apiSpecificationFile 上定义的 http 协议的服务器 URL。 基于 API 的 compose 扩展包含 apiSpecificationFile 中的 http 协议的服务器 URL。
ApiSpecificationFileServerUrlsContainInvalidUrl 基于 API 的撰写扩展具有在 apiSpecificationFile 上定义的无效 URL 的服务器 URL。 基于 API 的 compose 扩展具有 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 以后支持群聊机器人。 应用清单 1.3 及更低版本不支持机器人的 groupChat 范围。
GroupChatForConfigurableTabsLessThanV13 请将清单的版本升级到 V1.3,因为清单 v1.3 以后支持群组聊天可配置选项卡。 应用清单 1.3 及更低版本不支持可配置选项卡的 groupChat 范围。
InvalidColor32x32IconHeightAndWidth 颜色 32x32 图标应为 32x32,只有白色和透明。 颜色 32x32 图标没有正确的尺寸。
InvalidColorIconHeightAndWidth 颜色图标不符合所需的尺寸。 颜色图标的尺寸不正确。
InvalidOutlineIconHeightAndWidth 小图标应为 32x32,只有白色和透明。 大纲图标的尺寸不正确。
InvalidOutlineIconTransparency 大纲图标不透明。 是阿尔法 大纲图标包含既不透明也不为白色的像素,Alpha、R、G、B 值为 {0}、 {1}、 {2}和 {3}。
MsftEntraAuthTypeComposeExtensionContainsApiSecretServiceConfiguration 具有 microsoftEntra authType 的基于 API 的 compose 扩展定义了 apiSecretServiceConfiguration。 基于 API 的 compose 扩展在清单中定义了 apiSecretServiceConfiguration。
MsftEntraAuthTypeComposeExtensionContainsNoMsftEntraConfiguration 使用 microsoftEntra authType 的基于 API 的 compose 扩展未定义 microsoftEntraConfiguration。 基于 API 的 compose 扩展未在应用清单中定义 microsoftEntraConfiguration。
MsftEntraAuthTypeComposeExtensionResourceURLNotMatchServerURLOnApiSpec 清单上具有 microsoftEntra authType 资源 URL 的基于 API 的撰写扩展与 API 规范文件中的服务器 URL 不匹配。 应用清单中具有 microsoftEntra authType 资源 URL 的基于 API 的 compose 扩展与 API 规范文件中的服务器 URL 不匹配。
MsftEntraAuthTypeComposeExtensionSupportsSingleSignOnFalse 使用 microsoftEntra authType 的基于 API 的 compose 扩展未将 supportsSingleSignOn 设置为 true。 基于 API 的 compose 扩展未在应用清单中将 supportsSingleSignOntrue 设置为 。
MsftEntraAuthTypeComposeExtensionWebApplicationInfoOrResourceNotDefined 具有 microsoftEntra authType 的基于 API 的撰写扩展没有在清单上定义的 webApplicationInfo 或资源。 具有 microsoftEntra authType 的基于 API 的撰写扩展未在应用清单中定义 webApplicationInfo 或资源。
NoAuthTypeComposeExtensionContainsAuthConfiguration 没有 authType 的基于 API 的撰写扩展定义了与身份验证相关的配置。 应用清单中未定义具有 authType microsoftEntraConfiguration 或 apiSecretServiceConfiguration 的基于 API 的 compose 扩展。
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}不匹配。 应用清单文件未能通过架构的常量验证。 此处表示 {0} 失败的值,并 {1} 表示正确的值。
SchemaError_Contains 数组不包含必需的项。 应用清单文件未能通过 包含架构的验证。
SchemaError_ContentEncoding 字符串 {0} 不会针对内容编码 {1}进行验证。 应用清单文件未能通过 contentEncoding 验证架构。 此处表示 {0} 与内容编码不匹配的字符串,并 {1} 表示预期的内容编码。
SchemaError_Dependencies 属性 {0} 的依赖项失败。 缺少所需的密钥。 应用清单文件未能通过架构的依赖项验证。 此处表示 {0} 失败的属性。
SchemaError_Else JSON 与“else”的架构不匹配。 应用清单文件未通过架构的其他验证。
SchemaError_Enum 枚举中未定义值 {0} 。 应用清单文件未能通过架构的枚举验证。 此处, {0} 表示不在枚举中的值。
SchemaError_Format 字符串 {0} 不会针对格式 {1}进行验证。 应用清单文件未能通过架构的格式验证。 此处表示 {0} 不采用预期格式的字符串,并 {1} 表示预期格式。
SchemaError_Id 遇到重复的架构 ID {0} 。 应用清单文件未能通过架构的 ID 验证。 此处表示 {0} 架构的 ID。
SchemaError_Maximum 整数 {0} 超过 的最大值 {1}。 应用清单文件未能通过架构的最大验证。 此处表示 {0} 超出最大限制的值,表示 {1} 最大限制。
SchemaError_MaximumItems 数组项计数 {0} 超过 的最大计数 {1}。 应用清单文件未通过架构的 maximumItems 验证。 此处表示 {0} 数组中的元素数,表示 {1} 允许的最大元素数。
SchemaError_MaximumLength 字符串 {0} 超过 的最大长度 {1}。 应用清单文件未通过架构的最大验证。 此处, {0} 表示超过最大长度的字符串,表示 {1} 最大长度。
SchemaError_MaximumProperties 对象属性计数 {0} 超过 的最大计数 {1}。 应用清单文件未通过架构的 maximumProperties 验证。 此处表示 {0} 提供的属性数,表示 {1} 允许的最大属性数。
SchemaError_Minimum 整数 {0} 小于 的最小值 {1}。 应用清单文件未通过架构的最低验证。 此处表示 {0} 超出最小限制的值,表示 {1} 最小限制。
SchemaError_MinimumItems 数组项计数 {0} 小于 的最小计数 {1}。 应用清单文件未通过架构的 minimumItems 验证。 此处表示 {0} 数组中的元素数,表示 {1} 允许的最小值。
SchemaError_MinimumLength 字符串 {0} 小于 的 {1}最小长度。 应用清单文件未通过架构的 minimumLength 验证。 此处, {0} 表示小于最小长度的字符串,并 {1} 表示最小值。
SchemaError_MinimumProperties 对象属性计数 {0} 小于 的最小计数 {1}。 应用清单文件未能通过架构的 minimumProperties 验证。 此处表示 {0} 提供的属性数,表示 {1} 允许的最小属性。
SchemaError_MultipleOf 整数 {0} 不是 的倍数 {1}。 应用清单文件未能通过架构的 multipleOf 验证。 此处表示 {0} 整数值,并 {1} 指示所需的倍数。
SchemaError_Not JSON 对来自“not”的架构有效。 应用清单文件未通过架构验证。
SchemaError_OneOf JSON 对“oneOf”的多个架构有效。 应用清单文件未通过架构的 oneOf 验证。
SchemaError_Other 值不符合此属性的架构。 应用清单文件失败了架构的其他未经处理的验证。
SchemaError_Pattern 字符串 {0} 与正则表达式模式“”{1}不匹配。 应用清单文件未能通过架构的模式验证。 此处表示 {0} 与模式不匹配的值,并 {1} 表示预期的模式。
SchemaError_PatternProperties 无法使用正则表达式模式“”{0}测试属性名称。 应用清单文件未能通过架构的 patternProperties 验证。 此处表示 {0} 属性的模式。
SchemaError_Required 对象中缺少必需的属性: {0}。 应用清单文件未通过所需的架构验证。 此处表示 {0} 所需的属性。
SchemaError_Then JSON 与“then”的架构不匹配。 应用清单文件未通过架构的验证。
SchemaError_Type 值 {0} 不是预期的类型 {1}。 应用清单文件未能通过架构的类型验证。 此处, {0} 表示不在预期类型中的字符串,并 {1} 表示预期的类型。
SchemaError_UniqueItems 数组包含不唯一的项。 应用清单文件未能通过架构的 uniqueItems 验证。
SchemaError_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 个字符。
StaticTabNameCouldNotBeEmpty 非保留的 staticTabs“Name”属性不能为空。 staticTabs 名称属性为空。
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/beta/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/beta/appCatalogs/teamsApps?requiresReview=true
Content-type: application/zip

响应

以下示例显示了相应的响应。

HTTP/1.1 201 Created
Location: https://graph.microsoft.com/beta/appCatalogs/teamsApps/e3e29acb-8c79-412b-b746-e6c39ff4cd22

{
  "@odata.context": "https://graph.microsoft.com/beta/$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/beta/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/beta/$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"
        }
    }
}