Publicar teamsApp
Espacio de nombres: microsoft.graph
Importante
Las API de la versión /beta
de Microsoft Graph están sujetas a cambios. No se admite el uso de estas API en aplicaciones de producción. Para determinar si una API está disponible en la versión 1.0, use el selector de Versión.
Publicar una aplicación en el catálogo de aplicaciones de Microsoft Teams.
En concreto, esta API publica la aplicación en el catálogo de la organización (el catálogo de aplicaciones de inquilino); el recurso creado tiene un valor de propiedad distributionMethod de organization
.
La propiedad requiresReview permite a cualquier usuario enviar una aplicación para que la revise un administrador. Los administradores pueden aprobar o rechazar estas aplicaciones a través de esta API o del Centro de administración de Microsoft Teams.
Esta API está disponible en las siguientes implementaciones nacionales de nube.
Servicio global | Gobierno de EE. UU. L4 | Us Government L5 (DOD) | China operada por 21Vianet |
---|---|---|---|
✅ | ✅ | ✅ | ❌ |
Permissions
Elija el permiso o los permisos marcados como con privilegios mínimos para esta API. Use un permiso o permisos con privilegios superiores solo si la aplicación lo requiere. Para obtener más información sobre los permisos delegados y de aplicación, consulte Tipos de permisos. Para obtener más información sobre estos permisos, consulte la referencia de permisos.
Tipo de permiso | Permisos con privilegios mínimos | Permisos con privilegios más altos |
---|---|---|
Delegado (cuenta profesional o educativa) | AppCatalog.Submit | AppCatalog.ReadWrite.All, Directory.ReadWrite.All |
Delegado (cuenta personal de Microsoft) | No admitida. | No admitida. |
Aplicación | No admitida. | No admitida. |
Nota:
- El
Directory.ReadWrite.All
permiso solo se admite para la compatibilidad con versiones anteriores. Se recomienda actualizar las soluciones para usar un permiso alternativo enumerado en la tabla anterior y así evitar el uso de estos permisos en el futuro. - El
AppCatalog.Submit
permiso le permite enviar aplicaciones solo para revisión, no para publicarlas en el catálogo.
Solicitud HTTP
POST /appCatalogs/teamsApps
Para publicar una aplicación que requiera una revisión:
POST /appCatalogs/teamsApps?requiresReview={Boolean}
Parámetros de consulta
Propiedad | Tipo | Descripción |
---|---|---|
requiresReview | Booleano | Este parámetro de consulta opcional desencadena el proceso de revisión de la aplicación. Los usuarios con privilegios de administrador pueden enviar aplicaciones sin desencadenar una revisión. Si los usuarios quieren solicitar una revisión antes de publicar, deben establecer requiresReview en true . Un usuario que tenga privilegios de administrador puede optar por no establecer requiresReview o establecer el valor en false y la aplicación se aprueba e inmediatamente se publica. |
Encabezados de solicitud
Encabezado | Valor |
---|---|
Authorization | {token} de portador. Obligatorio. Obtenga más información sobre la autenticación y la autorización. |
Content-Type | application/zip. Obligatorio. |
Cuerpo de la solicitud
En el cuerpo de la solicitud, incluya una carga del manifiesto zip de Teams. Para obtener más información, consulte Creación de un paquete de aplicación.
Cada aplicación del catálogo de aplicaciones debe tener un identificador de manifiesto único.
Respuesta
Si se ejecuta correctamente, este método devuelve un 200 OK
código de respuesta y un objeto teamsApp . Si el manifiesto de la aplicación tiene errores de validación, la solicitud devuelve una respuesta de error con detalles sobre los errores de esquema.
Respuesta de error
Si envía una solicitud para cargar un manifiesto de aplicación que contiene información o errores que faltan, recibirá un mensaje de error que incluye el código UnableToParseTeamsAppManifest
de error interno . La propiedad details del error interno contiene el código de error y el mensaje de error. En la tabla siguiente se describen los códigos de error que puede encontrar.
Respuesta de error
Código de error | Mensaje de error | Descripción |
---|---|---|
ActivityGroupIdFromActivitiesTypeValidation |
El campo ActivityGroupId de ActivityType debe ser un subconjunto del campo ID en ActivityGroup. | El campo ActivityGroupId de ActivityType no es un subconjunto del campo Id de ActivityGroup en el manifiesto de la aplicación. |
ActivityTypesMustExistWithActivitiesGroupValidation |
El manifiesto no debe contener un grupo de actividad cuando faltan tipos de actividad. | La propiedad ActivityGroup está disponible, pero falta la propiedad ActivityType en el manifiesto de la aplicación. |
ApiBasedComposeExtensionApiResponseRenderingTemplateFileNullOrEmpty |
La extensión de redacción basada en API debe tener apiResponseRenderingTemplateFile definido en el manifiesto. | La extensión de redacción basada en API no tiene la apiResponseRenderingTemplateFile definida en el manifiesto de la aplicación. |
ApiBasedComposeExtensionApiSpecificationFileNullOrEmpty |
La extensión de redacción basada en API debe tener apiSpecificationFile definido en el manifiesto. | La extensión de redacción basada en API no tiene la apiSpecificationFile definida en el manifiesto de la aplicación. |
ApiBasedComposeExtensionManifestCommandIdsNotIncludedInOperationIdsOnApiSpecficationFile |
Los identificadores de comando en el manifiesto no se incluyen en el archivo de especificación de identificadores de operación en la API. | Error que se produce cuando los identificadores de comando del manifiesto de la aplicación no se incluyen en los identificadores de operación en el archivo de especificación de la API. |
ApiBasedComposeExtensionWithBotId |
La extensión de redacción basada en API no puede tener botId definido. | La extensión de redacción basada en API tiene botId definido en el manifiesto de la aplicación. |
ApiBasedComposeExtensionWithCanUpdateConfiguration |
La extensión de redacción basada en API no puede tener canUpdateConfiguration definido en el manifiesto. | La extensión de redacción basada en API tiene canUpdateConfiguration definido en el manifiesto de la aplicación. |
ApiBasedComposeExtensionWithNoParameter |
La extensión de redacción basada en API debe tener parámetros de comando definidos en el manifiesto. | La extensión de redacción basada en API no tiene ningún parámetro de comando definido en el manifiesto de la aplicación. |
ApiSecretServiceAuthTypeComposeExtensionContainsMsftEntraConfiguration |
La extensión de redacción basada en API con apiSecretServiceAuth authType tiene definido microsoftEntraConfiguration. | La extensión de redacción basada en API tiene microsoftEntraConfiguration definido en el manifiesto de la aplicación. |
ApiSecretServiceAuthTypeComposeExtensionContainsNoApiSecretRegistrationId |
La extensión de redacción basada en API con apiSecretServiceAuth authType no tiene ninguna apiSecretRegistrationId definida. | La extensión de redacción basada en API con apiSecretServiceAuth authType sin apiSecretRegistrationId definido en el manifiesto de la aplicación. |
ApiSecretServiceAuthTypeComposeExtensionContainsNoApiSecretServiceAuthConfiguration |
La extensión de redacción basada en API con apiSecretServiceAuth authType no tiene apiSecretServiceConfiguration. | La extensión de redacción basada en API no establece supportsSingleSignOn en true en el manifiesto de la aplicación. |
ApiSpecificationFileContainUnsupportedHttpMethod |
La extensión de redacción basada en API tiene direcciones URL del servidor que tienen un método HTTP no compatible definido en apiSpecificationFile. Actualmente solo se admiten GET y POST. | La extensión de redacción basada en API tiene un método HTTP no admitido definido en apiSpecificationFile. |
ApiSpecificationFileParameterContainUnsupportedSchemaType |
La extensión de redacción basada en API no admite el tipo de esquema de parámetro definido en apiSpecificationFile.Arrays. | La extensión de redacción basada en API tiene un tipo de esquema de parámetro no admitido definido en apiSpecificationFile. |
ApiSpecificationFileRequestBodyContainUnsupportedMediaType |
La extensión de redacción basada en API tiene un tipo de medio no compatible definido en el cuerpo de la solicitud en apiSpecificationFile. Actualmente solo se admite application/json. | La extensión de redacción basada en API tiene un tipo de medio no admitido definido en el cuerpo de la solicitud en apiSpecificationFile. |
ApiSpecificationFileRequestBodyContainUnsupportedSchemaType |
La extensión de redacción basada en API tiene un tipo de esquema no compatible definido en el cuerpo de la solicitud en apiSpecificationFile. Actualmente no se admiten matrices. | La extensión de redacción basada en API tiene un tipo de esquema no admitido definido en el cuerpo de la solicitud en apiSpecificationFile. |
ApiSpecificationFileRequestBodySchemaContainKeywords |
La extensión de redacción basada en API tiene palabras clave. | La extensión de redacción basada en API tiene palabras clave definidas en el cuerpo de la solicitud en apiSpecificationFile. |
ApiSpecificationFileRequiredParameterContainUnsupportedLocation |
La extensión de redacción basada en API tiene una ubicación de parámetro no compatible definida en apiSpecificationFile para {0}. Actualmente solo se admiten la ruta de acceso y la consulta. | La extensión de redacción basada en API tiene una ubicación de parámetro no compatible definida en apiSpecificationFile. |
ApiSpecificationFileRequiredParameterOrPropertyNotDefinedOnManifest |
La extensión de redacción basada en API tiene parámetros o propiedades {0} necesarios no definidos en el manifiesto. | La extensión de redacción basada en API tiene un parámetro necesario, que no se define en el manifiesto de la aplicación. |
ApiSpecificationFileResponseContainUnsupportedMediaType |
La extensión de redacción basada en API tiene un tipo de medio no compatible definido en respuesta en apiSpecificationFile. Actualmente solo se admite application/json. | La extensión de redacción basada en API tiene un tipo de medio no admitido definido en respuesta en apiSpecificationFile. |
ApiSpecificationFileServerUrlsContainHttp |
La extensión de redacción basada en API tiene direcciones URL del servidor que tienen el protocolo HTTP definido en apiSpecificationFile. | La extensión de redacción basada en API tiene direcciones URL del servidor que contienen el protocolo http en apiSpecificationFile. |
ApiSpecificationFileServerUrlsContainInvalidUrl |
La extensión de redacción basada en API tiene direcciones URL de servidor que no son url no válidas definidas en apiSpecificationFile. | La extensión de redacción basada en API tiene una dirección URL no válida definida en apiSpecificationFile. |
BotBasedComposeExtensionApiResponseRenderingTemplateFileExists |
La extensión de redacción basada en bots no puede tener definida apiResponseRenderingTemplateFile. | La extensión de redacción basada en bots tiene una propiedad apiResponseRenderingTemplateFile definida en el manifiesto de la aplicación. |
BotBasedComposeExtensionApiSpecificationFileExists |
La extensión de redacción basada en bots no puede tener definida apiSpecificationFile. | La extensión de redacción basada en bots tiene un archivo de especificación de API definido en el manifiesto de la aplicación. |
BotBasedComposeExtensionBotIdNotGuid |
La extensión de redacción basada en bots debe tener guid botId. | La extensión de redacción basada en bots botId no es GUID. |
BotIdIsNotGuid |
BotId no es un valor Guid. | El valor BotId del manifiesto de la aplicación no es un GUID. |
CommonAppIdIsNotGuid |
El campo "ID" no es un Guid en el manifiesto. | AppId no es GUID. |
CommonAppIdIsRequiredField |
Falta el campo obligatorio "ID" en el manifiesto. | No se proporciona el appId. |
CommonManifestVersionIsRequiredField |
Falta el campo obligatorio del manifiesto "versión del manifiesto". | No se proporciona la versión del manifiesto. |
CommonSchemaUrlIsRequiredField |
La dirección URL del esquema debe estar presente. | No se proporciona el esquema. |
DashboardCardBothIconNameAndUrlPresent |
El icono de tarjetas de panel no debe contener el nombre y la dirección URL del icono. | El icono de tarjetas de panel no debe contener el nombre y la dirección URL del icono. |
DashboardCardEntityIdsAreNotUnique |
Los identificadores de entidad de tarjeta de panel deben ser únicos. | El identificador de entidad devuelto para una tarjeta de panel no es único en el manifiesto. |
DeveloperNameIsRequiredField |
Falta el campo obligatorio "nombre del desarrollador" en el manifiesto. | No se proporciona el nombre del desarrollador. |
DeveloperNameLengthCheck |
La longitud máxima de caracteres no debe superar los 32 caracteres. | El nombre del desarrollador tiene más de 32 caracteres. |
DeveloperPrivacyUrlIsRequiredField |
Falta el campo obligatorio "privacyUrl" en el manifiesto. | Falta privacyUrl en el manifiesto de la aplicación. |
DeveloperPrivacyUrlMustBeHttps |
La dirección URL de privacidad debe estar protegida como dirección URL de soporte técnico (HTTPS). | La dirección URL de privacidad del desarrollador no usó HTTPS. |
DeveloperTermsOfUseUrlIsRequiredField |
Falta el campo obligatorio 'termsOfUseUrl' en el manifiesto. | Faltan los términosOfUseUrl en el manifiesto. |
DeveloperTermsOfUseUrlMustBeHttps |
La dirección URL de los términos de uso debe estar protegida con la dirección URL de soporte técnico (HTTPS). | La dirección URL de los términos de uso del desarrollador no usó HTTPS. |
DeveloperWebsiteUrlIsRequiredField |
Falta el campo obligatorio 'websiteUrl' en el manifiesto. | Falta la dirección URL del sitio web para desarrolladores. |
DeveloperWebsiteUrlMustBeHttps |
La dirección URL del sitio web debe estar protegida como DIRECCIÓN URL de soporte técnico (HTTPS). | La dirección URL del sitio web para desarrolladores no usó HTTPS. |
FullDescriptionCannotBeEmpty |
La descripción completa no puede estar vacía. | La descripción completa está vacía. |
FullDescriptionLengthCheck |
La longitud máxima de caracteres para la descripción larga no debe superar los 4000 caracteres. | La longitud de la descripción completa es de más de 4000 caracteres. |
GroupChatForBotsLessThanV13 |
Actualice la versión del manifiesto a V1.3, ya que el bot de chat en grupo se admite en el manifiesto v1.3 en adelante. | El ámbito groupChat para bots no se admite en la versión 1.3 y posteriores del manifiesto de la aplicación. |
GroupChatForConfigurableTabsLessThanV13 |
Actualice la versión del manifiesto a V1.3, ya que las pestañas configurables de chat de grupo se admiten en el manifiesto v1.3 en adelante. | El ámbito groupChat para pestañas configurables no se admite en la versión 1.3 del manifiesto de la aplicación y versiones posteriores. |
InvalidColor32x32IconHeightAndWidth |
El icono de color 32x32 debe ser 32x32 con solo blanco y transparente. | El icono de color 32x32 no tiene las dimensiones correctas. |
InvalidColorIconHeightAndWidth |
Icono de color no es según la dimensión necesaria. | Las dimensiones del icono de color son incorrectas. |
InvalidOutlineIconHeightAndWidth |
El icono pequeño debe ser de 32 x 32 con solo blanco y transparente. | Las dimensiones del icono de esquema son incorrectas. |
InvalidOutlineIconTransparency |
El icono de esquema no es transparente. Es Alfa. | El icono de esquema contiene píxeles que no son transparentes ni blancos, con valores Alfa, R, G, B de {0}, {1}, {2}y {3}. |
MsftEntraAuthTypeComposeExtensionContainsApiSecretServiceConfiguration |
La extensión de redacción basada en API con microsoftEntra authType tiene definida apiSecretServiceConfiguration. | La extensión de redacción basada en API tiene apiSecretServiceConfiguration definido en el manifiesto. |
MsftEntraAuthTypeComposeExtensionContainsNoMsftEntraConfiguration |
La extensión de redacción basada en API con microsoftEntra authType no tiene definido microsoftEntraConfiguration. | La extensión de redacción basada en API no tiene microsoftEntraConfiguration definido en el manifiesto de la aplicación. |
MsftEntraAuthTypeComposeExtensionResourceURLNotMatchServerURLOnApiSpec |
La extensión de redacción basada en API con la dirección URL del recurso microsoftEntra authType en el manifiesto no coincide con la dirección URL del servidor en el archivo de especificación de API. | La extensión de redacción basada en API con la dirección URL del recurso microsoftEntra authType en el manifiesto de aplicación no coincide con la dirección URL del servidor en el archivo de especificación de API. |
MsftEntraAuthTypeComposeExtensionSupportsSingleSignOnFalse |
La extensión de redacción basada en API con microsoftEntra authType no establece supportsSingleSignOn en true. | La extensión de redacción basada en API no establece supportsSingleSignOntrue en en el manifiesto de la aplicación. |
MsftEntraAuthTypeComposeExtensionWebApplicationInfoOrResourceNotDefined |
La extensión de redacción basada en API con microsoftEntra authType no tiene webApplicationInfo ni ningún recurso definido en el manifiesto. | La extensión de redacción basada en API con microsoftEntra authType no tiene webApplicationInfo o un recurso definido en el manifiesto de la aplicación. |
NoAuthTypeComposeExtensionContainsAuthConfiguration |
La extensión de redacción basada en API con none authType tiene definida la configuración relacionada con la autenticación. | La extensión de redacción basada en API con authType microsoftEntraConfiguration o apiSecretServiceConfiguration no está definida en el manifiesto de la aplicación. |
ParameterOnManifestNotDefinedOnApiSpecFile |
La extensión de redacción basada en API tiene parámetros {0} en el manifiesto no definidos en el archivo de especificación de API. | Los parámetros de extensión de redacción basados en API en el manifiesto de aplicación no se definen en el archivo de especificación de API. |
ReservedActivitiesValidation |
El manifiesto no debe contener el tipo de actividad reservado "systemDefault". | El tipo de actividad systemDefault se define en el manifiesto de la aplicación. |
ReservedStaticTabNameShouldBeNull |
No se debe especificar la propiedad "Name" de la pestaña reservada. | Se especificó la propiedad de nombre staticTabs reservada. |
SchemaError_AdditionalItems |
El esquema no permite elementos adicionales. | No se pudo validar additionalItems del esquema en el archivo de manifiesto de la aplicación. |
SchemaError_AdditionalProperties |
No se ha definido la propiedad {0} y el esquema no permite propiedades adicionales. | No se pudo validar additionalProperties del esquema en el archivo de manifiesto de la aplicación. Aquí, {0} representa la propiedad adicional. |
SchemaError_AllOf |
JSON no coincide con todos los esquemas de "allOf". | El archivo de manifiesto de la aplicación no pudo validar allOf del esquema. |
SchemaError_AnyOf |
JSON no coincide con ningún esquema de "anyOf". | No se pudo validar anyOf del esquema en el archivo de manifiesto de la aplicación. |
SchemaError_Const |
El valor {0} no coincide con la constante {1}. | El archivo de manifiesto de la aplicación no pudo validar const el esquema. Aquí, {0} representa el valor que produjo un error y {1} representa el valor correcto. |
SchemaError_Contains |
La matriz no contiene un elemento necesario. | Error en el archivo de manifiesto de la aplicación que contiene la validación del esquema. |
SchemaError_ContentEncoding |
La cadena {0} no se valida con la codificación de {1}contenido . | No se pudo validar contentEncoding del esquema en el archivo de manifiesto de la aplicación. Aquí, {0} representa la cadena que no coincide con la codificación de contenido y {1} representa la codificación de contenido esperada. |
SchemaError_Dependencies |
Error en las dependencias de la propiedad {0} . Faltan las claves necesarias. | El archivo de manifiesto de la aplicación no pudo validar las dependencias del esquema. Aquí, {0} representa la propiedad que produjo un error. |
SchemaError_Else |
JSON no coincide con el esquema de "else". | El archivo de manifiesto de la aplicación no pudo validar el esquema. |
SchemaError_Enum |
El valor {0} no está definido en la enumeración. | No se pudo validar la enumeración del esquema en el archivo de manifiesto de la aplicación. Aquí, {0} representa el valor que no está en la enumeración. |
SchemaError_Format |
La cadena {0} no se valida con el formato {1}. | No se pudo validar el formato del esquema en el archivo de manifiesto de la aplicación. Aquí, {0} representa la cadena que no está en el formato esperado y {1} representa el formato esperado. |
SchemaError_Id |
Se encontró un identificador de {0} esquema duplicado. | No se pudo validar el identificador del esquema en el archivo de manifiesto de la aplicación. Aquí, {0} representa el identificador del esquema. |
SchemaError_Maximum |
Integer {0} supera el valor máximo de {1}. | El archivo de manifiesto de la aplicación produjo un error en la validación máxima del esquema. Aquí, {0} representa el valor que supera el límite máximo y {1} representa el límite máximo. |
SchemaError_MaximumItems |
El recuento {0} de elementos de matriz supera el recuento máximo de {1}. | No se pudo validar maximumItems del esquema en el archivo de manifiesto de la aplicación. Aquí, {0} representa el número de elementos de la matriz y {1} representa el máximo permitido. |
SchemaError_MaximumLength |
La cadena {0} supera la longitud máxima de {1}. | No se pudo validar maximumLength del esquema en el archivo de manifiesto de la aplicación. Aquí, {0} representa la cadena que supera la longitud máxima y {1} representa la longitud máxima. |
SchemaError_MaximumProperties |
El recuento {0} de propiedades de objeto supera el recuento máximo de {1}. | No se pudo validar maximumProperties del esquema en el archivo de manifiesto de la aplicación. Aquí, {0} representa el número de propiedades proporcionadas y {1} representa las propiedades máximas permitidas. |
SchemaError_Minimum |
Integer {0} es menor que el valor mínimo de {1}. | El archivo de manifiesto de la aplicación no pudo validar el esquema como mínimo. Aquí, {0} representa el valor que supera el límite mínimo y {1} representa el límite mínimo. |
SchemaError_MinimumItems |
El recuento {0} de elementos de matriz es menor que el número mínimo de {1}. | No se pudo validar minimumItems del esquema en el archivo de manifiesto de la aplicación. Aquí, {0} representa el número de elementos de la matriz y {1} representa el mínimo permitido. |
SchemaError_MinimumLength |
La cadena {0} es menor que la longitud mínima de {1}. | No se pudo validar minimumLength del esquema en el archivo de manifiesto de la aplicación. Aquí, {0} representa la cadena que es menor que la longitud mínima y {1} representa el mínimo. |
SchemaError_MinimumProperties |
El recuento {0} de propiedades de objeto es menor que el número mínimo de {1}. | No se pudo validar minimumProperties del esquema en el archivo de manifiesto de la aplicación. Aquí, {0} representa el número de propiedades proporcionadas y {1} representa las propiedades mínimas permitidas. |
SchemaError_MultipleOf |
Integer {0} no es un múltiplo de {1}. | El archivo de manifiesto de la aplicación no pudo validar multipleOf del esquema. Aquí, {0} representa el valor entero e {1} indica el múltiplo necesario. |
SchemaError_Not |
JSON es válido para el esquema de "not". | Error en el archivo de manifiesto de la aplicación al no validar el esquema. |
SchemaError_OneOf |
JSON es válido en más de un esquema de "oneOf". | No se pudo validar oneOf del esquema en el archivo de manifiesto de la aplicación. |
SchemaError_Other |
El valor no se ajusta al esquema de esta propiedad. | Error en el archivo de manifiesto de la aplicación en otras validaciones no controladas del esquema. |
SchemaError_Pattern |
La cadena {0} no coincide con el patrón regex "{1}". | No se pudo validar el patrón del esquema en el archivo de manifiesto de la aplicación. Aquí, {0} representa el valor que no coincide con el patrón y {1} representa el patrón esperado. |
SchemaError_PatternProperties |
No se pudieron probar los nombres de propiedad con el patrón regex "{0}". | El archivo de manifiesto de la aplicación produjo un error en la validación patternProperties del esquema. Aquí, {0} representa el patrón de las propiedades. |
SchemaError_Required |
Faltan propiedades necesarias en el objeto : {0}. | No se pudo validar el esquema en el archivo de manifiesto de la aplicación. Aquí, {0} representa las propiedades necesarias. |
SchemaError_Then |
JSON no coincide con el esquema de "then". | El archivo de manifiesto de la aplicación no pudo validar el esquema. |
SchemaError_Type |
El valor {0} no es del tipo {1}esperado. | No se pudo validar el tipo del esquema en el archivo de manifiesto de la aplicación. Aquí, {0} representa la cadena que no está en el tipo esperado y {1} representa el tipo esperado. |
SchemaError_UniqueItems |
La matriz contiene elementos que no son únicos. | Error en la validación uniqueItems del esquema del archivo de manifiesto de la aplicación. |
SchemaError_Valid |
El esquema siempre produce un error en la validación. | Error en la validación válida del esquema en el archivo de manifiesto de la aplicación. |
Serialization_FileMissing |
No se encontró el archivo {0} en el paquete de la aplicación. | Falta el archivo esperado en el paquete de la aplicación. |
Serialization_FileNotValidJson |
El archivo no se pudo analizar como un objeto JSON. | El archivo enviado no cumplió con un formato JSON válido. |
Serialization_ManifestVersionPropertyMissing |
El archivo no contiene la propiedad "{0}". | Falta la propiedad manifestVersion en el archivo de manifiesto de la aplicación. Aquí, {0} representa la cadena de la propiedad manifestVersion . |
Serialization_TrailingCommaInManifestJsonFile |
El archivo json de manifiesto contiene una coma final. | El archivo de manifiesto de la aplicación contiene una coma final. |
ServerUrlsMissingOnApiSpecificationFile |
La extensión de redacción basada en API no tiene ninguna dirección URL de servidor definida en apiSpecificationFile. | Error que se produce La extensión de redacción basada en API no tiene ninguna dirección URL de servidor definida en apiSpecificationFile. |
ShortDescriptionCannotBeEmpty |
La descripción breve no puede estar vacía | La breve descripción estaba vacía. |
ShortDescriptionLengthCheck |
La longitud máxima de caracteres para la descripción corta no debe superar los 80 caracteres. | La descripción corta tiene más de 80 caracteres. |
ShortNameEqualsReservedName |
El nombre corto de la aplicación no se puede reservar. | El nombre corto es un nombre reservado. |
ShortNameIsRequiredField |
El nombre corto de la aplicación no puede estar vacío. | El nombre corto está vacío. |
ShortNameLengthCheck |
La longitud máxima de caracteres para Nombre corto no debe superar los 30 caracteres. | El nombre corto supera los 30 caracteres. |
StaticTabNameCouldNotBeEmpty |
La propiedad "Name" de staticTabs no reservada no puede estar vacía. | La propiedad staticTabs name está vacía. |
UniqueActivityTypeInActivitiesValidation |
El manifiesto no debe contener un tipo de actividad duplicado. | El tipo de actividad no es único en el manifiesto de la aplicación. |
UniqueIdInActivitiesGroupValidation |
El manifiesto no debe contener un identificador duplicado en Grupos de actividad. | El identificador del grupo de actividad no es único en el manifiesto de la aplicación. |
VersionCannotBeEmpty |
Falta el campo obligatorio "version" en el manifiesto. | Falta la versión del paquete de la aplicación. |
VersionContainsOnlyNumbersDotSeparated |
La versión de la aplicación solo admite números en el formato "#.#.#". | La versión del paquete de la aplicación no coincide con el patrón #.#.#. |
VersionHasMajorLessThan1 |
La versión de la aplicación no debe comenzar con "0". Por ejemplo, 0.0.1 o 0.1 no son versiones de aplicación válidas y 1.0 / 1.5.1 / 1.0.0 / 2.5.0 son versiones de aplicación válidas. En caso de nueva actualización en el manifiesto a una aplicación existente en la tienda. | La versión de la aplicación es menor que la 1.0. Debe actualizar la versión de la aplicación. Por ejemplo, si la versión actual de la aplicación en la tienda es 1.0 y envías una actualización para la validación, la versión de la aplicación debe ser mayor que la 1.0. |
Ejemplos
Ejemplo 1: Publicación de una aplicación en el catálogo de aplicaciones
Solicitud
En el ejemplo siguiente se muestra la solicitud.
POST https://graph.microsoft.com/beta/appCatalogs/teamsApps
Content-type: application/zip
[Zip file containing a Teams app package]
Para obtener información sobre cómo crear un archivo zip de aplicación de Microsoft Teams, consulte Creación de un paquete de aplicación.
Respuesta
En el ejemplo siguiente se muestra la respuesta.
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"
}
Ejemplo 2: Carga de una nueva aplicación para su revisión en el catálogo de aplicaciones de una organización
Solicitud
En el ejemplo siguiente se muestra la solicitud.
POST https://graph.microsoft.com/beta/appCatalogs/teamsApps?requiresReview=true
Content-type: application/zip
Respuesta
En el ejemplo siguiente se muestra la respuesta.
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"
}
Ejemplo 3: Aprobación o rechazo de una aplicación pendiente de revisión
Solicitud
En el ejemplo siguiente se muestra la solicitud.
PATCH https://graph.microsoft.com/beta/appCatalogs/teamsApps/a761ad07-22ef-4a53-9feb-2837c8ad4a84/appDefinitions/YTc2MWFkMDctMjJlZi00YTUzLTlmZWItMjgzN2M4YWQ0YTg0IyMxLjEuOCMjU3VibWl0dGVk
Content-type: application/json
If-Match: InFtSStsNVJHVWdzWUJRU2ZVWGp4RWc9PSI=
{
"publishingState":"published"
}
Respuesta
En el ejemplo siguiente se muestra la respuesta.
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
}
Ejemplo 4: Publicación de una aplicación con un error en el manifiesto de la aplicación en el catálogo de aplicaciones
Solicitud
En el ejemplo siguiente se muestra la solicitud.
POST https://graph.microsoft.com/v1.0/appCatalogs/teamsApps
Content-type: application/zip
[Zip file containing a Teams app package]
Respuesta
En el ejemplo siguiente se muestra la respuesta.
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"
}
}
}