Manage add-on submissions (Administrar envíos de complemento)
La API de envío de Microsoft Store proporciona métodos que puede usar para administrar envíos de complemento (también conocidos como productos integrados en la aplicación o IAP) para sus aplicaciones. Para obtener una introducción a la API de envío de Microsoft Store, incluidos los requisitos previos para usar la API, consulte Crear y administrar envíos mediante los servicios de Microsoft Store.
Importante
Si usa la API de envío de Microsoft Store para crear un envío para un complemento, asegúrese de realizar cambios adicionales en el envío sólo mediante la API, en lugar de realizar cambios en el Centro de partners. Si usa el Centro de partners para cambiar un envío que creó originalmente mediante la API, ya no podrá cambiar ni confirmar ese envío mediante la API. En algunos casos, el envío podría quedar en un estado de error que le impedirá continuar con el proceso de envío. Si esto ocurre, debe eliminar el envío y crear uno nuevo.
Métodos para administrar envíos de complemento
Utilice los siguientes métodos para obtener, crear, actualizar, confirmar o eliminar un envío de complemento. Antes de poder utilizar estos métodos, el complemento ya debe existir en su cuenta del Centro de partners. Puede crear un complemento en el Centro de partners definiendo su tipo de producto y su Id. de producto o utilizando los métodos de la API de envío de Microsoft Store que se describen en Administrar complemento.
Método | URI | Descripción |
---|---|---|
GET | https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{id}/submissions/{submissionId} | Obtener un envío de complemento existente |
GET | https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{id}/submissions/{submissionId}/status | Obtener el estado de un envío de complemento existente |
PUBLICAR | https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{id}/submissions | Crear un nuevo envío de complemento |
PUT | https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{id}/submissions/{submissionId} | Actualizar un envío de complemento existente |
PUBLICAR | https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{id}/submissions/{submissionId}/commit | Confirmar un envío de complemento nuevo o actualizado |
Delete | https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{id}/submissions/{submissionId} | Eliminar un envío de complemento |
Crear un envío de complemento
Para crear un envío para un complemento, siga este proceso.
Si aún no lo ha hecho, complete los requisitos previos que se describen en Crear y administrar envíos mediante los servicios de Microsoft Store, incluida la asociación de una aplicación de Azure AD con su cuenta del Centro de partners y la obtención de su Id. y clave de cliente. Sólo es necesario hacer esto una vez; después de tener el Id. y la clave del cliente, puede reutilizarlos en cualquier momento que los necesite para crear un nuevo token de acceso de Azure AD.
Obtener un token de acceso de Azure AD. Debe pasar este token de acceso a los métodos de la API de envío de Microsoft Store. Una vez que haya obtenido un token de acceso, tiene 60 minutos para usarlo antes de que expire. Una vez que expire el token, puede obtener uno nuevo.
Ejecute el siguiente método de la API de envío de Microsoft Store. Este método crea un nuevo envío en curso, que es una copia del último envío publicado. Para obtener más información, consulte Crear un envío de complemento.
POST https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{id}/submissions
El cuerpo de la respuesta contiene un recurso envío de complemento que incluye el Id. del nuevo envío, el URI de firma de acceso compartido (SAS) para cargar cualquier icono del complemento para el envío a Azure Blob Storage y todos los datos para el nuevo envío (como los listados y la información de precios).
Nota:
Un URI de SAS proporciona acceso a un recurso seguro en el almacenamiento de Azure sin necesidad de claves de cuenta. Para obtener información de antecedentes sobre los URI de SAS y su uso con Azure Blob Storage, consulte Firma de acceso compartido, parte 1: comprender el modelo SAS y Firma de acceso compartido, parte 2: crear y usar un SAS con almacenamiento de blobs.
Si añade nuevos iconos para el envío, prepare los iconos y agréguelos a un archivo ZIP.
Actualice los datos del envío de complemento con los cambios necesarios para el nuevo envío y ejecute el siguiente método para actualizar el envío. Para obtener más información, consulte Actualizar un envío de complemento.
PUT https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{id}/submissions/{submissionId}
Nota:
Si está agregando nuevos iconos para el envío, asegúrese de actualizar los datos del envío para que hagan referencia al nombre y la ruta relativa de estos archivos en el archivo ZIP.
Si está agregando nuevos iconos para el envío, cargue el archivo ZIP en Azure Blob Storage mediante el URI de SAS que se proporcionó en el cuerpo de respuesta del método POST al que llamó anteriormente. Existen diferentes bibliotecas de Azure que puede usar para hacer esto en una variedad de plataformas, que incluyen:
- Biblioteca de cliente de Azure Storage para .NET
- SDK de Azure Storage para Java
- SDK de Azure Storage para Python
El siguiente ejemplo de código C# muestra cómo cargar un archivo ZIP en Azure Blob Storage mediante la clase CloudBlockBlob en la biblioteca cliente de Azure Storage para .NET. Este ejemplo supone que el archivo ZIP ya se ha escrito en un objeto de secuencia.
string sasUrl = "https://productingestionbin1.blob.core.windows.net/ingestion/26920f66-b592-4439-9a9d-fb0f014902ec?sv=2014-02-14&sr=b&sig=usAN0kNFNnYE2tGQBI%2BARQWejX1Guiz7hdFtRhyK%2Bog%3D&se=2016-06-17T20:45:51Z&sp=rwl"; Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob blockBob = new Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob(new System.Uri(sasUrl)); await blockBob.UploadFromStreamAsync(stream);
Confirme el envío ejecutando el siguiente método. Esto alertará al Centro de partners de que ha terminado con el envío y que las actualizaciones ahora deberían aplicarse a su cuenta. Para obtener más información, consulte Confirma un envío de complemento.
POST https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{id}/submissions/{submissionId}/commit
Verifique el estado de confirmación ejecutando el siguiente método. Para obtener más información, consulte Obtener el estado de un envío de complemento.
GET https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{id}/submissions/{submissionId}/status
Para confirmar el estado del envío, revise el valor estado en el cuerpo de respuesta. Este valor debe cambiar de CommitStarted a PreProcessing si la solicitud se realiza correctamente, o bien a CommitFailed si hay errores en la solictud. Si hay errores, el campo statusDetails contiene más detalles sobre el error.
Una vez que la confirmación se ha completado con éxito, el envío se destina al almacén para su ingesta. Puede continuar supervisando el progreso del envío utilizando el método anterior o visitando el Centro de partners.
Ejemplos de código
Los siguientes artículos proporcionan ejemplos de código que demuestran cómo crear un envío de complemento en varios lenguajes de programación diferentes:
Módulo StoreBroker de PowerShell
Como alternativa a llamar directamente a la API de envío de Microsoft Store, también proporcionamos un módulo de PowerShell de código abierto que implementa una interfaz de la línea de comandos sobre la API. Este módulo se denomina StoreBroker. Puede utilizar este módulo para administrar los envíos de aplicaciones, versiones piloto y complementos desde la línea de comandos en lugar de llamar directamente a la API de envío de Microsoft Store, o simplemente puede examinar el origen para ver más ejemplos de cómo llamar a esta API. El módulo StoreBroker se usa activamente en Microsoft como la principal forma en que muchas aplicaciones propias se envían al almaceń.
Para obtener más información, consulte nuestra página StoreBroker en GitHub.
Recursos de datos
Los métodos de la API de envío de Microsoft Store para administrar envíos de complemento utilizan los siguientes recursos de datos JSON.
Recurso de envío de complemento
Este recurso describe un envío de complemento.
{
"id": "1152921504621243680",
"contentType": "EMagazine",
"keywords": [
"books"
],
"lifetime": "FiveDays",
"listings": {
"en": {
"description": "English add-on description",
"icon": {
"fileName": "add-on-en-us-listing2.png",
"fileStatus": "Uploaded"
},
"title": "Add-on Title (English)"
},
"ru": {
"description": "Russian add-on description",
"icon": {
"fileName": "add-on-ru-listing.png",
"fileStatus": "Uploaded"
},
"title": "Add-on Title (Russian)"
}
},
"pricing": {
"marketSpecificPricings": {
"RU": "Tier3",
"US": "Tier4",
},
"sales": [],
"priceId": "Free",
"isAdvancedPricingModel": true
},
"targetPublishDate": "2016-03-15T05:10:58.047Z",
"targetPublishMode": "Immediate",
"tag": "SampleTag",
"visibility": "Public",
"status": "PendingCommit",
"statusDetails": {
"errors": [
{
"code": "None",
"details": "string"
}
],
"warnings": [
{
"code": "ListingOptOutWarning",
"details": "You have removed listing language(s): []"
}
],
"certificationReports": [
{
}
]
},
"fileUploadUrl": "https://productingestionbin1.blob.core.windows.net/ingestion/26920f66-b592-4439-9a9d-fb0f014902ec?sv=2014-02-14&sr=b&sig=usAN0kNFNnYE2tGQBI%2BARQWejX1Guiz7hdFtRhyK%2Bog%3D&se=2016-06-17T20:45:51Z&sp=rwl",
"friendlyName": "Submission 2"
}
Este recurso tiene los siguientes valores.
Valor | Tipo | Descripción |
---|---|---|
id | string | El identificador del envío. Este identificador está disponible en los datos de respuesta para solicitudes para crear un envío de complemento, obtener todos los complementos y obtener un complemento. Para un envío creado en el Centro de partners, este identificador también está disponible en la dirección URL de la página de envío en el Centro de partners. |
contentType | string | El tipo de contenido que se proporciona en el complemento. Este puede ser uno de los siguientes valores:
|
palabras clave | array | Una matriz de cadenas que contiene hasta 10 palabras clave para el complemento. Su aplicación puede consultar complementos utilizando estas palabras clave. |
lifetime | string | La vida útil del complemento. Este puede ser uno de los siguientes valores:
|
listings | objeto | Un diccionario de pares de clave y valor, donde cada clave es un código de país ISO 3166-1 alfa-2 de dos letras y cada valor es un recurso de listado que contiene información de listado para el complemento. |
Precios | objeto | Un recurso de precios que contiene información de precios para el complemento. |
targetPublishMode | string | El modo de publicación para el envío. Este puede ser uno de los siguientes valores:
|
targetPublishDate | string | La fecha de publicación para el envío en formato ISO 8601, si targetPublishMode está establecido en SpecificDate. |
etiqueta | string | Los datos de desarrollador personalizados para el complemento (esta información anteriormente se denominaba etiqueta). |
visibility | string | La visibilidad del complemento. Este puede ser uno de los siguientes valores:
|
status | string | El estado del envío. Este puede ser uno de los siguientes valores:
|
statusDetails | objeto | Un recurso de detalles de estado que contiene detalles adicionales sobre el estado del envío, incluida información sobre cualquier error. |
fileUploadUrl | string | El URI de firma de acceso compartido (SAS) para cargar cualquier paquete para el envío. Si añade nuevos paquetes para el envío, cargue el archivo ZIP que contiene los paquetes para ese URI. Para obtener más información, consulte Crear un envío de complemento. |
friendlyName | string | El nombre descriptivo del envío, tal como se muestra en el Centro de partners. Este valor se genera para usted cuando crea el envío. |
Recurso de listado
Este recurso contiene información de listado para un complemento. Este recurso tiene los siguientes valores.
Valor | Tipo | Descripción |
---|---|---|
descripción | string | La descripción del listado de complementos. |
Icono | objeto | Un recurso de icono que contiene datos del icono para el listado de complementos. |
title | string | El título del listado de complementos. |
Recurso de icono
Este recurso contiene datos del icono para un listado de complementos. Este recurso tiene los siguientes valores.
Valor | Tipo | Descripción |
---|---|---|
fileName | string | El nombre del archivo de icono en el archivo ZIP que usted cargó para el envío. El icono debe ser un archivo .png que mida exactamente 300 x 300 píxeles. |
fileStatus | string | El estado del archivo de icono. Este puede ser uno de los siguientes valores:
|
Recurso de precios
Este recurso contiene información sobre los precios del complemento. Este recurso tiene los siguientes valores.
Valor | Tipo | Descripción |
---|---|---|
marketSpecificPricings | objeto | Un diccionario de pares de clave y valor, donde cada clave es un código de país ISO 3166-1 alfa-2 de dos letras y cada valor es un nivel de precios. Estos artículos representan los precios personalizados para su complemento en mercados específicos. Cualquier elemento de este diccionario anula el precio base especificado por el valor priceId para el mercado especificado. |
sales (ventas) | array | Obsoleto. Una matriz de recursos de venta que contiene información de ventas para el complemento. |
priceId | string | Un nivel de precios que especifica el precio base para el complemento. |
isAdvancedPricingModel | boolean | Si es true, su cuenta de desarrollador tiene acceso al conjunto ampliado de niveles de precios de 0,99 USD a 1999,99 USD. Si es false, su cuenta de desarrollador tiene acceso al conjunto original de niveles de precios de 0,99 USD a 999,99 USD. Para obtener más información sobre los diferentes niveles, consulte niveles de precios Nota Este campo es de sólo lectura. |
Recurso de venta
Este recurso contiene información de venta para un complemento.
Importante
El recurso Venta ya no es compatible y actualmente no es posible obtener ni modificar los datos de venta para el envío de un complemento mediante la API de envío de Microsoft Store. En el futuro, actualizaremos la API de envío de Microsoft Store para introducir una nueva manera de acceder mediante programación a la información de ventas para envíos de complementos.
- Después de llamar al método GET para obtener un envío de complemento, el valor ventas estará vacío. Puede continuar utilizando el Centro de partners para obtener los datos de venta para el envío de su complemento.
- Al llamar al método PUT para actualizar un envío de complemento, se ignora la información en el valor ventas. Puede continuar utilizando el Centro de partners para cambiar los datos de venta para el envío de su complemento.
Este recurso tiene los siguientes valores.
Valor | Tipo | Descripción |
---|---|---|
name | string | El nombre de la venta. |
basePriceId | string | El nivel de precios que se utilizará para el precio base de la venta. |
startDate | string | La fecha de inicio de la venta en formato ISO 8601. |
endDate | string | La fecha de finalización de la venta en formato ISO 8601. |
marketSpecificPricings | objeto | Un diccionario de pares de clave y valor, donde cada clave es un código de país ISO 3166-1 alfa-2 de dos letras y cada valor es un nivel de precios. Estos artículos representan los precios personalizados para su complemento en mercados específicos. Cualquier elemento de este diccionario anula el precio base especificado por el valor basePriceId para el mercado especificado. |
Recurso de detalles de estado
Este recurso contiene detalles adicionales sobre el estado de un envío. Este recurso tiene los siguientes valores.
Valor | Tipo | Descripción |
---|---|---|
errors | objeto | Una matriz de recurso de detalles de estado que contiene los detalles de error para el envío. |
advertencias | objeto | Una matriz de recurso de detalles de estado que contiene los detalles de advertencia para el envío. |
certificationReports | objeto | Una matriz de recursos de informe de certificación que proporciona acceso a los datos del informe de certificación para el envío. Puede examinar estos informes para obtener más información si la certificación falla. |
Recurso de detalle de estado
Este recurso contiene información adicional sobre cualquier error relacionado o advertencias para un envío. Este recurso tiene los siguientes valores.
Valor | Tipo | Descripción |
---|---|---|
código | string | Un código de estado de envío que describe el tipo de error o advertencia. |
detalles | string | Un mensaje con más detalle sobre el problema. |
Recurso de informe de certificación
Este recurso proporciona acceso a los datos del informe de certificación para un envío. Este recurso tiene los siguientes valores.
Valor | Tipo | Descripción |
---|---|---|
date | string | La fecha y hora en que se generó el informe en formato ISO 8601. |
reportUrl | string | La URL en la que puede acceder al informe. |
Enumeraciones
Estos métodos utilizan las siguientes enumeraciones.
Franjas de precio
Los siguientes valores representan niveles de precios disponibles en el recurso recurso de precios para un envío de complemento.
Valor | Descripción |
---|---|
Base | El nivel de precios no está establecido; utilice el precio base para el complemento. |
NotAvailable | El complemento no está disponible en la región especificada. |
Gratuito | El complemento es gratuito. |
Tierxxxx | Una cadena que especifica el nivel de precio del complemento, en el formato Tierxxxx. Actualmente, se admiten los siguientes rangos de niveles de precios:
|
Código de estado de envío
Los valores siguientes representan el código de estado de un envío.
Valor | Descripción |
---|---|
None | No se ha especificado ningún código. |
InvalidArchive | El archivo ZIP que contiene el paquete no es válido o tiene un formato de archivo desconocido. |
MissingFiles | El archivo ZIP no tiene todos los archivos que figuran en los datos de envío o están en la ubicación incorrecta del archivo. |
PackageValidationFailed | Uno o más paquetes de su envío no se pudieron validar. |
InvalidParameterValue | Uno de los parámetros del cuerpo de la solicitud no es válido. |
InvalidOperation | La operación que intentó no es válida. |
InvalidState | La operación que intentó no es válida para el estado actual de la versión piloto del paquete. |
ResourceNotFound | No se pudo encontrar la versión piloto del paquete especificado. |
ServiceError | Un error de servicio interno impidió que la solicitud se realizara correctamente. Inténtelo de nuevo. |
ListingOptOutWarning | El desarrollador eliminó un listado de un envío anterior o no incluyó información de listado compatible con el paquete. |
ListingOptInWarning | El desarrollador agregó un listado. |
UpdateOnlyWarning | El desarrollador está intentando insertar algo que sólo admite actualizaciones. |
Otros | El envío se encuentra en un estado no reconocido o sin clasificar. |
PackageValidationWarning | El proceso de validación del paquete generó una advertencia. |