Публикация teamsApp
Пространство имен: microsoft.graph
Важно!
API версии /beta
в Microsoft Graph могут быть изменены. Использование этих API в производственных приложениях не поддерживается. Чтобы определить, доступен ли API в версии 1.0, используйте селектор версий.
Опубликуйте приложение в каталоге приложений 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
поддерживается только для обратной совместимости. Рекомендуется обновить решения, чтобы использовать другое разрешение, указанное в предыдущей таблице, и избегать использования этих разрешений в будущем. - Разрешение
AppCatalog.Submit
позволяет отправлять приложения только для проверки, а не публиковать их в каталоге.
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 внутренней ошибки содержит код ошибки и сообщение об ошибке. В следующей таблице описаны коды ошибок, которые могут возникнуть.
Ответ об ошибке
Код ошибки | Сообщение об ошибке | Описание |
---|---|---|
ActivityGroupIdFromActivitiesTypeValidation |
Поле ActivityGroupId в ActivityType должно быть подмножеством поля идентификатора в ActivityGroup. | Поле ActivityGroupId в ActivityType не является подмножеством поля Id в ActivityGroup в манифесте приложения. |
ActivityTypesMustExistWithActivitiesGroupValidation |
Манифест не должен содержать группу действий, если отсутствуют типы действий. | Свойство ActivityGroup доступно, но свойство ActivityType отсутствует в манифесте приложения. |
ApiBasedComposeExtensionApiResponseRenderingTemplateFileNullOrEmpty |
Расширение compose на основе API должно иметь apiResponseRenderingTemplateFile, определенный в манифесте. | Расширение compose на основе API не содержит apiResponseRenderingTemplateFile, определенного в манифесте приложения. |
ApiBasedComposeExtensionApiSpecificationFileNullOrEmpty |
Расширение compose на основе API должно иметь apiSpecificationFile, определенный в манифесте. | Расширение compose на основе API не содержит apiSpecificationFile, определенного в манифесте приложения. |
ApiBasedComposeExtensionManifestCommandIdsNotIncludedInOperationIdsOnApiSpecficationFile |
Идентификаторы команд в манифесте не включаются в файл идентификаторов операций в спецификации API. | Ошибка, возникающая, если идентификаторы команд в манифесте приложения не включены в файл идентификаторов операций в файле спецификации API. |
ApiBasedComposeExtensionWithBotId |
Расширение compose на основе API не может иметь определение botId. | Расширение compose на основе API имеет botId, определенный в манифесте приложения. |
ApiBasedComposeExtensionWithCanUpdateConfiguration |
Расширение compose на основе API не может содержать параметр canUpdateConfiguration в манифесте. | Расширение compose на основе API имеет свойство canUpdateConfiguration, определенное в манифесте приложения. |
ApiBasedComposeExtensionWithNoParameter |
Расширение compose на основе API должно иметь параметры команды, определенные в манифесте. | Расширение compose на основе API не содержит параметров команд, определенных в манифесте приложения. |
ApiSecretServiceAuthTypeComposeExtensionContainsMsftEntraConfiguration |
Расширение создания на основе API с apiSecretServiceAuth authType имеет определение microsoftEntraConfiguration. | Расширение compose на основе API содержит определение microsoftEntraConfiguration в манифесте приложения. |
ApiSecretServiceAuthTypeComposeExtensionContainsNoApiSecretRegistrationId |
Расширение создания на основе API с apiSecretServiceAuth authType не определяет apiSecretRegistrationId. | Расширение compose на основе API с authType apiSecretServiceAuth без apiSecretRegistrationId, определенного в манифесте приложения. |
ApiSecretServiceAuthTypeComposeExtensionContainsNoApiSecretServiceAuthConfiguration |
Расширение создания на основе API с apiSecretServiceAuth authType не имеет apiSecretServiceConfiguration. | Расширение compose на основе API не устанавливает значение true в манифесте приложения для параметра supportsSingleSignOn. |
ApiSpecificationFileContainUnsupportedHttpMethod |
Расширение compose на основе API содержит URL-адреса сервера с неподдерживаемым методом HTTP, определенным в apiSpecificationFile. В настоящее время поддерживаются только GET и POST. | Расширение compose на основе API имеет неподдерживаемый метод HTTP, определенный в apiSpecificationFile. |
ApiSpecificationFileParameterContainUnsupportedSchemaType |
Расширение compose на основе API имеет неподдерживаемый тип схемы параметра, определенный в apiSpecificationFile.Массивы не поддерживаются. | Расширение compose на основе API имеет неподдерживаемый тип схемы параметра, определенный в apiSpecificationFile. |
ApiSpecificationFileRequestBodyContainUnsupportedMediaType |
Расширение compose на основе API имеет неподдерживаемый тип мультимедиа, определенный в тексте запроса на apiSpecificationFile. В настоящее время поддерживается только приложение или json. | Расширение compose на основе API имеет неподдерживаемый тип мультимедиа, определенный в тексте запроса в apiSpecificationFile. |
ApiSpecificationFileRequestBodyContainUnsupportedSchemaType |
Расширение compose на основе API имеет неподдерживаемый тип схемы, определенный в тексте запроса в apiSpecificationFile. В настоящее время массивы не поддерживаются. | Расширение compose на основе API имеет неподдерживаемый тип схемы, определенный в тексте запроса в apiSpecificationFile. |
ApiSpecificationFileRequestBodySchemaContainKeywords |
Расширение compose на основе API содержит ключевые слова. | Расширение compose на основе API содержит ключевые слова, определенные в тексте запроса в apiSpecificationFile. |
ApiSpecificationFileRequiredParameterContainUnsupportedLocation |
Расширение compose на основе API имеет неподдерживаемое расположение параметров, определенное в apiSpecificationFile для {0}. В настоящее время поддерживаются только путь и запрос. | Расширение compose на основе API имеет неподдерживаемое расположение параметра, определенное в apiSpecificationFile. |
ApiSpecificationFileRequiredParameterOrPropertyNotDefinedOnManifest |
Расширение compose на основе API содержит обязательные параметры или свойства {0} , не определенные в манифесте. | Расширение compose на основе API имеет обязательный параметр, который не определен в манифесте приложения. |
ApiSpecificationFileResponseContainUnsupportedMediaType |
Расширение compose на основе API имеет неподдерживаемый тип мультимедиа, определенный в ответе на apiSpecificationFile. В настоящее время поддерживается только приложение или json. | Расширение compose на основе API имеет неподдерживаемый тип мультимедиа, определенный в ответе в apiSpecificationFile. |
ApiSpecificationFileServerUrlsContainHttp |
Расширение compose на основе API содержит URL-адреса сервера с протоколом HTTP, определенным в apiSpecificationFile. | Расширение compose на основе API содержит URL-адреса сервера, содержащие протокол HTTP в apiSpecificationFile. |
ApiSpecificationFileServerUrlsContainInvalidUrl |
Расширение compose на основе API содержит URL-адреса сервера, которые являются недопустимыми URL-адресами, определенными в apiSpecificationFile. | Расширение compose на основе API имеет недопустимый URL-адрес, определенный в apiSpecificationFile. |
BotBasedComposeExtensionApiResponseRenderingTemplateFileExists |
Расширение compose на основе ботов не может иметь apiResponseRenderingTemplateFile. | Расширение compose на основе бота содержит свойство apiResponseRenderingTemplateFile, определенное в манифесте приложения. |
BotBasedComposeExtensionApiSpecificationFileExists |
Расширение compose на основе бота не может иметь apiSpecificationFile. | Расширение compose на основе бота содержит файл спецификации API, определенный в манифесте приложения. |
BotBasedComposeExtensionBotIdNotGuid |
Расширение compose на основе бота должно иметь идентификатор GUID botId. | Bot-based compose extensionid не является GUID. |
BotIdIsNotGuid |
BotId не является значением GUID. | Значение BotId в манифесте приложения не является GUID. |
CommonAppIdIsNotGuid |
Поле ID не является guid в манифесте. | Идентификатор приложения не является 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. |
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 с белым и прозрачным. | Размеры значка контура неверны. |
InvalidOutlineIconTransparency |
Значок структуры не является прозрачным. Это Альфа. | Значок структуры содержит пиксели, которые не являются ни прозрачными, ни белыми со значениями {0}Alpha, R, G, B , {1}, {2}и {3}. |
MsftEntraAuthTypeComposeExtensionContainsApiSecretServiceConfiguration |
Расширение создания на основе API с microsoftEntra authType определяет apiSecretServiceConfiguration. | Расширение compose на основе API содержит apiSecretServiceConfiguration, определенное в манифесте. |
MsftEntraAuthTypeComposeExtensionContainsNoMsftEntraConfiguration |
Расширения создания на основе API с microsoftEntra authType не определены в microsoftEntraConfiguration. | Расширение compose на основе API не определяет microsoftEntraConfiguration в манифесте приложения. |
MsftEntraAuthTypeComposeExtensionResourceURLNotMatchServerURLOnApiSpec |
Расширение создания на основе API с URL-адресом ресурса microsoftEntra authType в манифесте не соответствует URL-адресу сервера в файле спецификации API. | Расширение compose на основе API с URL-адресом ресурса microsoftEntra authType в манифесте приложения не соответствует URL-адресу сервера в файле спецификации API. |
MsftEntraAuthTypeComposeExtensionSupportsSingleSignOnFalse |
Расширение compose на основе API с microsoftEntra authType не задает значение true для параметра supportSingleSignOn. | Расширение compose на основе API не задает значение supportsSingleSignOntrue в манифесте приложения. |
MsftEntraAuthTypeComposeExtensionWebApplicationInfoOrResourceNotDefined |
Расширение создания на основе API с microsoftEntra authType не определяет webApplicationInfo или ресурс в манифесте. | Расширение compose на основе API с microsoftEntra authType не содержит webApplicationInfo или ресурса, определенного в манифесте приложения. |
NoAuthTypeComposeExtensionContainsAuthConfiguration |
Для расширения создания на основе API без authType определена конфигурация, связанная с проверкой подлинности. | Расширение создания на основе API с authType microsoftEntraConfiguration или apiSecretServiceConfiguration не определено в манифесте приложения. |
ParameterOnManifestNotDefinedOnApiSpecFile |
Для расширения создания на основе API параметры {0} манифеста не определены в файле спецификации API. | Параметры расширения создания на основе API в манифесте приложения не определены в файле спецификации API. |
ReservedActivitiesValidation |
Манифест не должен содержать зарезервированный тип действия systemDefault. | Тип действия systemDefault определен в манифесте приложения. |
ReservedStaticTabNameShouldBeNull |
Зарезервированное свойство "Имя" вкладки не должно указываться. | Задано зарезервированное свойство staticTabs name. |
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_Contains |
Массив не содержит обязательный элемент. | Файл манифеста приложения не смог проверить схему. |
SchemaError_ContentEncoding |
Строка {0} не проверяет кодировку {1}содержимого . | Файл манифеста приложения не выполнил проверку contentEncoding схемы. Здесь представляет строку, {0} которая не соответствует кодировке содержимого, и {1} представляет ожидаемую кодировку содержимого. |
SchemaError_Dependencies |
Сбой зависимостей для свойства {0} . Отсутствуют необходимые ключи. | Файл манифеста приложения не выполнил проверку зависимостей схемы. Здесь представляет свойство, {0} которое завершилось сбоем. |
SchemaError_Else |
JSON не соответствует схеме из "else". | Файл манифеста приложения не выполнил проверку схемы else. |
SchemaError_Enum |
Значение {0} не определено в перечислении. | Файл манифеста приложения не выполнил проверку перечисления схемы. Здесь представляет значение, {0} которое отсутствует в перечислении. |
SchemaError_Format |
Строка {0} не проверяет формат {1}. | Файл манифеста приложения не выполнил проверку формата схемы. Здесь представляет строку, {0} которая не соответствует ожидаемому формату, и {1} представляет ожидаемый формат. |
SchemaError_Id |
Обнаружен повторяющийся идентификатор {0} схемы. | Файл манифеста приложения не выполнил проверку идентификатора схемы. {0} Здесь представляет идентификатор схемы. |
SchemaError_Maximum |
Целое число {0} превышает максимальное значение {1}. | Файл манифеста приложения не выполнил максимальную проверку схемы. Здесь представляет значение, превышающее максимальное ограничение, {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}значения . | Файл манифеста приложения не выполнил минимальную проверку схемы. Здесь представляет значение, {0} которое превышает минимальное ограничение, и {1} представляет минимальное ограничение. |
SchemaError_MinimumItems |
Число {0} элементов массива меньше минимального {1}числа . | Файл манифеста приложения не выполнил проверку схемы minimumItems. {0} Здесь представляет количество элементов в массиве и {1} минимально допустимое значение. |
SchemaError_MinimumLength |
Строка {0} меньше минимальной {1}длины . | Файл манифеста приложения не выполнил минимальную проверку схемы. Здесь представляет строку, {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 |
Расширение compose на основе API не имеет URL-адресов сервера, определенных в apiSpecificationFile. | Ошибка, возникающая. Расширение compose на основе API не имеет URL-адресов сервера, определенных в apiSpecificationFile. |
ShortDescriptionCannotBeEmpty |
Краткое описание не может быть пустым | Краткое описание было пустым. |
ShortDescriptionLengthCheck |
Максимальная длина символов для краткого описания не должна превышать 80 символов. | Краткое описание содержит более 80 символов. |
ShortNameEqualsReservedName |
Краткое имя приложения не может быть зарезервированным. | Короткое имя является зарезервированным. |
ShortNameIsRequiredField |
Краткое имя приложения не может быть пустым. | Короткое имя пусто. |
ShortNameLengthCheck |
Максимальная длина символа для краткого имени не должна превышать 30 символов. | Краткое имя превышает 30 символов. |
StaticTabNameCouldNotBeEmpty |
Не зарезервированное свойство staticTabs "Name" не может быть пустым. | Свойство staticTabs name пусто. |
UniqueActivityTypeInActivitiesValidation |
Манифест не должен содержать повторяющийся тип действия. | Тип действия не является уникальным в манифесте приложения. |
UniqueIdInActivitiesGroupValidation |
Манифест не должен содержать повторяющийся идентификатор в Группы действия. | Идентификатор группы действий не является уникальным в манифесте приложения. |
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]
Сведения о создании 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/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"
}
}
}