Поделиться через


Публикация teamsApp

Пространство имен: microsoft.graph

Опубликуйте приложение в каталоге приложений Microsoft Teams. В частности, этот API публикует приложение в каталоге вашей организации (каталог приложений клиента); Созданный ресурс имеет значение свойства distributionMethod , равное organization.

Свойство requiresReview позволяет любому пользователю отправлять приложение на проверку администратором. Администраторы могут утверждать или отклонять эти приложения с помощью этого API или Центра администрирования Microsoft Teams.

Этот API доступен в следующих национальных облачных развертываниях.

Глобальная служба Правительство США L4 Правительство США L5 (DOD) Китай управляется 21Vianet

Разрешения

Выберите разрешение или разрешения, помеченные как наименее привилегированные для этого API. Используйте более привилегированное разрешение или разрешения только в том случае, если это требуется приложению. Дополнительные сведения о делегированных разрешениях и разрешениях приложений см. в разделе Типы разрешений. Дополнительные сведения об этих разрешениях см. в справочнике по разрешениям.

Тип разрешения Разрешения с наименьшими привилегиями Более высокие привилегированные разрешения
Делегированные (рабочая или учебная учетная запись) AppCatalog.Submit AppCatalog.ReadWrite.All, Directory.ReadWrite.All
Делегированные (личная учетная запись Майкрософт) Не поддерживается. Не поддерживается.
Для приложений Не поддерживается. Не поддерживается.

Примечание.

Разрешение Directory.ReadWrite.All поддерживается только для обратной совместимости. Рекомендуется обновить решения, чтобы использовать другое разрешение, указанное в предыдущей таблице, и избегать использования этих разрешений в будущем.

HTTP-запрос

POST /appCatalogs/teamsApps

Чтобы опубликовать приложение, требующее проверки, выполните следующие действия:

POST /appCatalogs/teamsApps?requiresReview={Boolean}

Параметры запроса

Свойство Тип Описание
requiresReview Логический Этот необязательный параметр запроса активирует процесс проверки приложения. Пользователи с правами администратора могут отправлять приложения без запуска проверки. Если пользователи хотят запросить проверку перед публикацией, они должны задать для параметра requiresReview значение true. Пользователь с правами администратора может отказаться от установки обязательного просмотра или задать значение false , а приложение будет утверждено и немедленно опубликовано.

Заголовки запросов

Заголовок Значение
Авторизация Bearer {token}. Обязательно. Дополнительные сведения о проверке подлинности и авторизации.
Content-Type application/zip. Обязательно.

Текст запроса

В тексте запроса добавьте полезные данные zip-манифеста Teams. Дополнительные сведения см. в разделе Создание пакета приложения.

Каждое приложение в каталоге приложений должно иметь уникальный идентификатор манифеста.

Отклик

В случае успешного 200 OK выполнения этот метод возвращает код ответа и объект teamsApp . Если манифест приложения содержит ошибки проверки, запрос возвращает ответ на ошибку с подробными сведениями об ошибках схемы.

Отклик с ошибкой

При отправке запроса на отправку манифеста приложения, содержащего отсутствующие сведения или ошибки, вы получите сообщение об ошибке, содержащее внутренний код UnableToParseTeamsAppManifestошибки . Свойство details внутренней ошибки содержит код ошибки и сообщение об ошибке. В следующей таблице описаны коды ошибок, которые могут возникнуть.


Ответ об ошибке
Код ошибки Сообщение об ошибке Описание
Serialization_FileNotValidJson Не удалось проанализировать файл как объект JSON. Отправленный файл не соответствует допустимому формату JSON.
Serialization_FileMissing Не удалось найти файл {0} в пакете приложения. Ожидаемый файл отсутствует в пакете приложения.
Serialization_TrailingCommaInManifestJsonFile Json-файл манифеста содержит запятую. Файл манифеста приложения содержит запятую.
SchemaError_MultipleOf Целое число {0} не кратно {1}. Файл манифеста приложения не смог multipleOf проверить схему. {0} Здесь представляет целочисленное значение и {1} указывает на требуемое кратное значение.
SchemaError_Maximum Целое число {0} превышает максимальное значение {1}. Файл манифеста приложения не смог maximum проверить схему. Здесь представляет значение, превышающее максимальное ограничение, {0} и {1} максимальное ограничение.
SchemaError_Minimum Целое число {0} меньше минимального {1}значения . Файл манифеста приложения не смог minimum проверить схему. Здесь представляет значение, {0} которое превышает минимальное ограничение, и {1} представляет минимальное ограничение.
SchemaError_MaximumLength Строка {0} превышает максимальную длину {1}. Файл манифеста приложения не смог maximumLength проверить схему. Здесь представляет строку, {0} которая превышает максимальную длину, и {1} представляет максимальную длину.
SchemaError_MinimumLength Строка {0} меньше минимальной {1}длины . Файл манифеста приложения не смог minimumLength проверить схему. Здесь представляет строку, {0} которая меньше минимальной длины и {1} представляет минимальное значение.
SchemaError_Pattern Строка {0} не соответствует шаблону регулярных выражений "{1}". Файл манифеста приложения не смог pattern проверить схему. Здесь представляет значение, которое не соответствует шаблону, {0} и {1} представляет ожидаемый шаблон.
SchemaError_ContentEncoding Строка {0} не проверяет кодировку {1}содержимого . Файл манифеста приложения не смог contentEncoding проверить схему. Здесь представляет строку, {0} которая не соответствует кодировке содержимого, и {1} представляет ожидаемую кодировку содержимого.
SchemaError_Format Строка {0} не проверяет формат {1}. Файл манифеста приложения не смог format проверить схему. Здесь представляет строку, {0} которая не соответствует ожидаемому формату, и {1} представляет ожидаемый формат.
SchemaError_Type Значение {0} не имеет ожидаемого типа {1}. Файл манифеста приложения не смог type проверить схему. Здесь представляет строку, {0} которая не является ожидаемым типом, и {1} представляет ожидаемый тип.
SchemaError_AdditionalItems Схема не разрешает использование дополнительных элементов. Файл манифеста приложения не смог additionalItems проверить схему.
SchemaError_MaximumItems Число {0} элементов массива превышает максимальное число {1}элементов . Файл манифеста приложения не смог maximumItems проверить схему. {0} Здесь представляет количество элементов в массиве и {1} максимально допустимое значение.
SchemaError_MinimumItems Число {0} элементов массива меньше минимального {1}числа . Файл манифеста приложения не смог minimumItems проверить схему. {0} Здесь представляет количество элементов в массиве и {1} минимально допустимое значение.
SchemaError_UniqueItems Массив содержит элементы, которые не являются уникальными. Файл манифеста приложения не смог uniqueItems проверить схему.
SchemaError_MaximumProperties Число {0} свойств объекта превышает максимальное число {1}. Файл манифеста приложения не смог maximumProperties проверить схему. {0} Здесь представляет количество предоставленных свойств и {1} максимально допустимые свойства.
SchemaError_MinimumProperties Количество {0} свойств объекта меньше, чем минимальное {1}число . Файл манифеста приложения не смог minimumProperties проверить схему. {0} Здесь представляет количество предоставленных свойств и {1} минимально допустимые свойства.
SchemaError_Required В объекте отсутствуют обязательные свойства: {0}. Файл манифеста приложения не смог required проверить схему. {0} Здесь представляет обязательные свойства.
SchemaError_AdditionalProperties Свойство {0} не определено, и схема не разрешает дополнительные свойства. Файл манифеста приложения не смог additionalProperties проверить схему. {0} Здесь представляет дополнительное свойство.
SchemaError_Dependencies Сбой зависимостей для свойства {0} . Отсутствуют необходимые ключи. Файл манифеста приложения не смог dependencies проверить схему. Здесь представляет свойство, {0} которое завершилось сбоем.
SchemaError_Enum Значение {0} не определено в перечислении. Файл манифеста приложения не смог enum проверить схему. Здесь представляет значение, {0} которое отсутствует в перечислении.
SchemaError_AllOf JSON не соответствует всем схемам из allOf. Файл манифеста приложения не смог allOf проверить схему.
SchemaError_AnyOf JSON не соответствует ни одной схеме из anyOf. Файл манифеста приложения не смог anyOf проверить схему.
SchemaError_OneOf JSON допустим для нескольких схем из oneOf. Файл манифеста приложения не смог oneOf проверить схему.
SchemaError_Not JSON допустим для схемы из "not". Файл манифеста приложения не смог not проверить схему.
SchemaError_Id Обнаружен повторяющийся идентификатор {0} схемы. Файл манифеста приложения не смог id проверить схему. {0} Здесь представляет id объект схемы.
SchemaError_PatternProperties Не удалось проверить имена свойств с шаблоном регулярных выражений "{0}". Файл манифеста приложения не смог patternProperties проверить схему. {0} Здесь представляет шаблон для свойств .
SchemaError_Valid Проверка схемы всегда завершается сбоем. Файл манифеста приложения не смог valid проверить схему.
SchemaError_Const Значение {0} не соответствует константе {1}. Файл манифеста приложения не смог const проверить схему. Здесь представляет значение, {0} которое завершилось сбоем, и {1} представляет правильное значение.
SchemaError_Contains Массив не содержит обязательный элемент. Файл манифеста приложения не смог contains проверить схему.
SchemaError_Then JSON не соответствует схеме из "then". Файл манифеста приложения не смог then проверить схему.
SchemaError_Else JSON не соответствует схеме из "else". Файл манифеста приложения не смог else проверить схему.
SchemaError_Other Значение не соответствует схеме для этого свойства. Файл манифеста приложения завершился сбоем других необработанных проверок схемы.
ActivityGroupIdFromActivitiesTypeValidation Поле ActivityGroupId в ActivityType должно быть подмножеством поля идентификатора в ActivityGroup. Поле ActivityGroupId в ActivityType не является подмножеством Id поля в ActivityGroup манифесте приложения.
ActivityTypesMustExistWithActivitiesGroupValidation Манифест не должен содержать группу действий, если отсутствуют типы действий. Свойство ActivityGroup доступно, но ActivityType свойство отсутствует в манифесте приложения.
ApiSecretServiceAuthTypeComposeExtensionContainsMsftEntraConfiguration Расширение создания на основе API с apiSecretServiceAuth authType имеет определение microsoftEntraConfiguration. Расширение compose на основе API определено microsoftEntraConfiguration в манифесте приложения.
ApiSecretServiceAuthTypeComposeExtensionContainsNoApiSecretRegistrationId Расширение создания на основе API с apiSecretServiceAuth authType не определяет apiSecretRegistrationId. Расширение создания на основе API с apiSecretServiceAuth authType без apiSecretRegistrationId определения в манифесте приложения.
ApiSecretServiceAuthTypeComposeExtensionContainsNoApiSecretServiceAuthConfiguration Расширение создания на основе API с apiSecretServiceAuth authType не имеет apiSecretServiceConfiguration. Расширение compose на основе API не имеет значения supportsSingleSignOntrue в манифесте приложения.
ApiBasedComposeExtensionManifestCommandIdsNotIncludedInOperationIdsOnApiSpecficationFile Идентификаторы команд в манифесте не включаются в файл идентификаторов операций в спецификации API. Ошибка, возникающая, если Command Ids в манифест приложения не включены в Operation Ids файл спецификации API.
ApiBasedComposeExtensionWithBotId Расширение compose на основе API не может иметь определение botId. Расширение compose на основе API определено botId в манифесте приложения.
ApiBasedComposeExtensionWithCanUpdateConfiguration Расширение compose на основе API не может содержать параметр canUpdateConfiguration в манифесте. Расширение compose на основе API определено canUpdateConfiguration в манифесте приложения.
ApiBasedComposeExtensionWithNoParameter Расширение compose на основе API должно иметь параметры команды, определенные в манифесте. Расширение compose на основе API не содержит параметров команд, определенных в манифесте приложения.
ApiBasedComposeExtensionApiResponseRenderingTemplateFileNullOrEmpty Расширение compose на основе API должно иметь apiResponseRenderingTemplateFile, определенный в манифесте. Расширение compose на основе API не имеет определенного apiResponseRenderingTemplateFile в манифесте приложения.
ApiBasedComposeExtensionApiSpecificationFileNullOrEmpty Расширение compose на основе API должно иметь apiSpecificationFile, определенный в манифесте. Расширение compose на основе API не имеет определенного apiSpecificationFile в манифесте приложения.
MsftEntraAuthTypeComposeExtensionContainsApiSecretServiceConfiguration Расширение создания на основе API с microsoftEntra authType определяет apiSecretServiceConfiguration. Расширение compose на основе API определено apiSecretServiceConfiguration в манифесте.
MsftEntraAuthTypeComposeExtensionContainsNoMsftEntraConfiguration Расширения создания на основе API с microsoftEntra authType не определены в microsoftEntraConfiguration. Расширение compose на основе API не microsoftEntraConfiguration определено в манифесте приложения.
MsftEntraAuthTypeComposeExtensionWebApplicationInfoOrResourceNotDefined Расширение создания на основе API с microsoftEntra authType не определяет webApplicationInfo или ресурс в манифесте. Расширение создания на основе API с microsoftEntra authType не содержит webApplicationInfo и resource не определяется в манифесте приложения.
MsftEntraAuthTypeComposeExtensionResourceURLNotMatchServerURLOnApiSpec Расширение создания на основе API с URL-адресом ресурса microsoftEntra authType в манифесте не соответствует URL-адресу сервера в файле спецификации API. Расширение создания на основе API с microsoftEntra URL-адресом ресурса authType в манифесте приложения не соответствует URL-адресу сервера в файле спецификации API.
NoAuthTypeComposeExtensionContainsAuthConfiguration Для расширения создания на основе API без authType определена конфигурация, связанная с проверкой подлинности. Расширение создания на основе API с authType microsoftEntraConfiguration или apiSecretServiceConfiguration не определено в манифесте приложения.
ApiSpecificationFileContainUnsupportedHttpMethod Расширение compose на основе API содержит URL-адреса сервера с неподдерживаемым методом HTTP, определенным в apiSpecificationFile. В настоящее время поддерживаются только GET и POST. Расширение compose на основе API имеет неподдерживаемый http метод, определенный apiSpecificationFileв .
ApiSpecificationFileRequiredParameterContainUnsupportedLocation Расширение compose на основе API имеет неподдерживаемое расположение параметров, определенное в apiSpecificationFile для {0}. В настоящее время поддерживаются только путь и запрос. Расширение compose на основе API имеет неподдерживаемое расположение параметра, определенное apiSpecificationFileв .
ApiSpecificationFileRequestBodyContainUnsupportedMediaType Расширение compose на основе API имеет неподдерживаемый тип мультимедиа, определенный в тексте запроса на apiSpecificationFile. В настоящее время поддерживается только приложение или json. Расширение compose на основе API имеет неподдерживаемый media тип, определенный в тексте apiSpecificationFileзапроса в .
ApiSpecificationFileRequestBodyContainUnsupportedSchemaType Расширение compose на основе API имеет неподдерживаемый тип схемы, определенный в тексте запроса в apiSpecificationFile. В настоящее время массивы не поддерживаются. Расширение compose на основе API имеет неподдерживаемый тип схемы, определенный в тексте apiSpecificationFileзапроса в .
ApiSpecificationFileRequestBodySchemaContainKeywords Расширение compose на основе API содержит ключевые слова. Расширение compose на основе API содержит ключевые слова, определенные в тексте apiSpecificationFileзапроса в .
ApiSpecificationFileRequiredParameterOrPropertyNotDefinedOnManifest Расширение compose на основе API содержит обязательные параметры или свойства {0} , не определенные в манифесте. Расширение compose на основе API имеет required параметр, который не определен в манифесте приложения.
ApiSpecificationFileResponseContainUnsupportedMediaType Расширение compose на основе API имеет неподдерживаемый тип мультимедиа, определенный в ответе на apiSpecificationFile. В настоящее время поддерживается только приложение или json. Расширение compose на основе API имеет неподдерживаемый media тип, определенный в ответе apiSpecificationFileв .
ApiSpecificationFileServerUrlsContainHttp Расширение compose на основе API содержит URL-адреса сервера с протоколом HTTP, определенным в apiSpecificationFile. Расширение compose на основе API содержит URL-адреса сервера, содержащие http протокол в apiSpecificationFile.
ApiSpecificationFileServerUrlsContainInvalidUrl Расширение compose на основе API содержит URL-адреса сервера, которые являются недопустимыми URL-адресами, определенными в apiSpecificationFile. Расширение compose на основе API имеет invalid URL-адрес, определенный apiSpecificationFileв .
ServerUrlsMissingOnApiSpecificationFile Расширение compose на основе API не имеет URL-адресов сервера, определенных в apiSpecificationFile. Ошибка, возникающая. Расширение compose на основе API не имеет URL-адресов сервера, определенных в apiSpecificationFile.
BotBasedComposeExtensionApiResponseRenderingTemplateFileExists Расширение compose на основе ботов не может иметь apiResponseRenderingTemplateFile. Расширение compose на основе бота имеет свойство, apiResponseRenderingTemplateFile определенное в манифесте приложения.
BotBasedComposeExtensionApiSpecificationFileExists Расширение compose на основе бота не может иметь apiSpecificationFile. Расширение compose на основе бота содержит файл спецификации API, определенный в манифесте приложения.
BotBasedComposeExtensionBotIdNotGuid Расширение compose на основе бота должно иметь идентификатор GUID botId. Расширение botId создания на основе бота не является GUID.
CommonAppIdIsNotGuid Поле ID не является guid в манифесте. Не appId является GUID.
CommonAppIdIsRequiredField В манифесте отсутствует обязательное поле ID. Не appId указан.
CommonManifestVersionIsRequiredField Отсутствует обязательное поле в манифесте "версия манифеста". Версия манифеста не указана.
CommonSchemaUrlIsRequiredField Должен присутствовать URL-адрес схемы. Схема не указана.
DashboardCardBothIconNameAndUrlPresent Значок карточки панели мониторинга не должен содержать имя значка и URL-адрес. Значок карточки панели мониторинга не должен содержать имя значка и URL-адрес.
DashboardCardEntityIdsAreNotUnique Идентификаторы сущностей карточки панели мониторинга должны быть уникальными. Возвращаемый идентификатор сущности для карточки панели мониторинга не является уникальным в манифесте.
DeveloperNameIsRequiredField В манифесте отсутствует обязательное поле "имя разработчика". Имя разработчика не указано.
DeveloperNameLengthCheck Максимальная длина символов не должна превышать 32 символа. Имя разработчика содержит более 32 символов.
DeveloperPrivacyUrlIsRequiredField В манифесте отсутствует обязательное поле privacyUrl. Отсутствует privacyUrl в манифесте приложения.
DeveloperPrivacyUrlMustBeHttps URL-адрес конфиденциальности должен быть защищенным URL-адресом поддержки (HTTPS). URL-адрес конфиденциальности разработчика не использовал HTTPS.
DeveloperTermsOfUseUrlIsRequiredField В манифесте отсутствует обязательное поле termsOfUseUrl. В манифесте отсутствует параметр termsOfUseUrl .
DeveloperTermsOfUseUrlMustBeHttps URL-адрес условий использования должен быть защищен URL-адресом поддержки (HTTPS). URL-адрес условий использования разработчика не использует HTTPS.
DeveloperWebsiteUrlIsRequiredField В манифесте отсутствует обязательное поле websiteUrl. Отсутствует URL-адрес веб-сайта разработчика.
DeveloperWebsiteUrlMustBeHttps URL-адрес веб-сайта должен быть защищенным URL-адресом поддержки (HTTPS). URL-адрес веб-сайта разработчика не использует HTTPS.
UniqueActivityTypeInActivitiesValidation Манифест не должен содержать повторяющийся тип действия. Тип действия не является уникальным в манифесте приложения.
UniqueIdInActivitiesGroupValidation Манифест не должен содержать повторяющийся идентификатор в группах действий. Идентификатор группы действий не является уникальным в манифесте приложения.
FullDescriptionCannotBeEmpty Полное описание не может быть пустым. Полное описание пусто.
FullDescriptionLengthCheck Максимальная длина символов для длинного описания не должна превышать 4000 символов. Полная длина описания составляет более 4000 символов.
GroupChatForBotsLessThanV13 Обновите версию манифеста до версии 1.3, так как бот группового чата поддерживается в манифесте версии 1.3 и более поздних версий. Область groupChat для ботов не поддерживается в манифесте приложения версии 1.3 и ниже.
GroupChatForConfigurableTabsLessThanV13 Обновите версию манифеста до версии 1.3, так как настраиваемые вкладки группового чата поддерживаются в манифесте версии 1.3 и более поздней версии. Область groupChat для настраиваемых вкладок не поддерживается в манифесте приложения версии 1.3 и ниже.
InvalidColor32x32IconHeightAndWidth Цветной значок 32x32 должен иметь значение 32x32 с только белым и прозрачным. Цветной значок 32x32 имеет неправильные размеры.
InvalidColorIconHeightAndWidth Значок цвета не в соответствии с требуемым измерением. Размеры значка цвета неверны.
InvalidOutlineIconHeightAndWidth Маленький значок должен иметь размер 32 x 32 с белым и прозрачным. Размеры значка контура неверны.
ParameterOnManifestNotDefinedOnApiSpecFile Для расширения создания на основе API параметры {0} манифеста не определены в файле спецификации API. Параметры расширения создания на основе API в манифесте приложения не определены в файле спецификации API.
ReservedActivitiesValidation Манифест не должен содержать зарезервированный тип действия systemDefault. Тип systemDefault действия определяется в манифесте приложения.
ReservedStaticTabNameShouldBeNull Зарезервированное свойство "Имя" вкладки не должно указываться. Было указано свойство зарезервированного staticTabs имени.
ShortDescriptionCannotBeEmpty Краткое описание не может быть пустым Краткое описание было пустым.
ShortDescriptionLengthCheck Максимальная длина символов для краткого описания не должна превышать 80 символов. Краткое описание содержит более 80 символов.
ShortNameEqualsReservedName Краткое имя приложения не может быть зарезервированным. Короткое имя является зарезервированным.
ShortNameIsRequiredField Краткое имя приложения не может быть пустым. Короткое имя пусто.
StaticTabNameCouldNotBeEmpty Не зарезервированное свойство staticTabs "Name" не может быть пустым. Свойство staticTabs name пусто.
BotIdIsNotGuid BotId не является значением GUID. Значение BotId в манифесте приложения не является GUID.
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.
ShortNameLengthCheck Максимальная длина символа для краткого имени не должна превышать 30 символов. Краткое имя превышает 30 символов.
ApiSpecificationFileParameterContainUnsupportedSchemaType Расширение compose на основе API имеет неподдерживаемый тип схемы параметра, определенный в apiSpecificationFile.Массивы не поддерживаются. Расширение compose на основе API имеет неподдерживаемый тип схемы параметра, определенный apiSpecificationFileв .

Примеры

Пример 1. Публикация приложения в каталоге приложений

Запрос

Ниже показан пример запроса.

POST https://graph.microsoft.com/v1.0/appCatalogs/teamsApps
Content-type: application/zip

[Zip file containing a Teams app package]

Сведения о создании ZIP-файла приложения Microsoft Teams см. в разделе Создание пакета приложения.

Отклик

Ниже показан пример отклика.

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"
        }
    }
}