Compartir a través de


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 UnableToParseTeamsAppManifestde 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 supportsSingleSignOntrue 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 apiSpecificationFilesolicitud 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 apiSpecificationFilesolicitud 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 apiSpecificationFilesolicitud 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"
        }
    }
}