Publicar teamsApp
Espacio de nombres: microsoft.graph
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 ActivityGroupId campo de ActivityType no es un subconjunto del Id campo en ActivityGroup en el manifiesto de la aplicación. |
ActivityTypesMustExistWithActivitiesGroupValidation |
El manifiesto no debe contener un grupo de actividad cuando faltan tipos de actividad. | La ActivityGroup propiedad está disponible, pero falta en ActivityType 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 definida en apiResponseRenderingTemplateFile 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 definida en apiSpecificationFile 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 en Command Ids el manifiesto de la aplicación no se incluyen en Operation Ids el archivo de especificación de 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 se ha 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 se ha 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 se ha 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 definir 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 se establece supportsSingleSignOn true en 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 no admitido http definido en .apiSpecificationFile |
ApiSpecificationFileParameterContainUnsupportedSchemaType |
La extensión de redacción basada en API tiene un tipo de esquema de parámetro no compatible definido en apiSpecificationFile. No se admiten matrices. | 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 no admitido media definido en el cuerpo de la apiSpecificationFile solicitud en . |
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 apiSpecificationFile solicitud en . |
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 apiSpecificationFile solicitud en . |
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 admitida 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 required parámetro, 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 no admitido media 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 de servidor que contienen http el protocolo 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 invalid dirección URL 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 apiResponseRenderingTemplateFile propiedad 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 botId de redacción basada en bots no es GUID. |
BotIdIsNotGuid |
BotId no es un valor Guid. | El BotId valor 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. |
appId No se proporciona . |
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. |
privacyUrl Falta 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 groupChat ámbito de los 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 groupChat ámbito de las pestañas configurables no se admite en la versión 1.3 y posteriores del manifiesto de la aplicación. |
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 se ha 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 se ha 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 authType en el manifiesto de la aplicación no coincide con microsoftEntra 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. |
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 systemDefault tipo de actividad 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 reservado staticTabs . |
SchemaError_AdditionalItems |
El esquema no permite elementos adicionales. | No se pudo validar el esquema en el additionalItems 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 el esquema en el additionalProperties archivo de manifiesto de la aplicación. Aquí, {0} representa la propiedad adicional. |
SchemaError_AllOf |
JSON no coincide con todos los esquemas de "allOf". | No se pudo validar el esquema en el allOf archivo de manifiesto de la aplicación. |
SchemaError_AnyOf |
JSON no coincide con ningún esquema de "anyOf". | No se pudo validar el esquema en el anyOf archivo de manifiesto de la aplicación. |
SchemaError_Const |
El valor {0} no coincide con la constante {1}. | No se pudo validar el esquema en el const archivo de manifiesto de la aplicación. Aquí, {0} representa el valor que produjo un error y {1} representa el valor correcto. |
SchemaError_ContentEncoding |
La cadena {0} no se valida con la codificación de {1}contenido . | No se pudo validar el esquema en el contentEncoding 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. | No se pudo validar el esquema en el dependencies archivo de manifiesto de la aplicación. Aquí, {0} representa la propiedad que produjo un error. |
SchemaError_Else |
JSON no coincide con el esquema de "else". | No se pudo validar el esquema en el else archivo de manifiesto de la aplicación. |
SchemaError_Enum |
El valor {0} no está definido en la enumeración. | No se pudo validar el esquema en el enum 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 esquema en el format 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 esquema en el id archivo de manifiesto de la aplicación. Aquí, {0} representa el id del esquema. |
SchemaError_Maximum |
Integer {0} supera el valor máximo de {1}. | No se pudo validar el esquema en el maximum archivo de manifiesto de la aplicación. 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 el esquema en el maximumItems 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 el esquema en el maximumLength 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 el esquema en el maximumProperties 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}. | No se pudo validar el esquema en el minimum archivo de manifiesto de la aplicación. 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 el esquema en el minimumItems 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 el esquema en el minimumLength 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 el esquema en el minimumProperties 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_Not |
JSON es válido para el esquema de "not". | No se pudo validar el esquema en el not archivo de manifiesto de la aplicación. |
SchemaError_OneOf |
JSON es válido en más de un esquema de "oneOf". | No se pudo validar el esquema en el oneOf archivo de manifiesto de la aplicación. |
SchemaError_Pattern |
La cadena {0} no coincide con el patrón regex "{1}". | No se pudo validar el esquema en el pattern 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}". | No se pudo validar el esquema en el patternProperties archivo de manifiesto de la aplicación. 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 required archivo de manifiesto de la aplicación. Aquí, {0} representa las propiedades necesarias. |
SchemaError_Then |
JSON no coincide con el esquema de "then". | No se pudo validar el esquema en el then archivo de manifiesto de la aplicación. |
SchemaError_Type |
El valor {0} no es del tipo {1}esperado. | No se pudo validar el esquema en el type 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. | No se pudo validar el esquema en el uniqueItems archivo de manifiesto de la aplicación. |
SchemaError_Valid |
El esquema siempre produce un error en la validación. | No se pudo validar el esquema en el valid 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. |
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/v1.0/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/v1.0/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/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"
}
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/v1.0/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/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
}
Ejemplo 4: Publicación de una aplicación en el catálogo de aplicaciones con un error en el manifiesto de la aplicación
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"
}
}
}