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
OBTENER 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.

  1. 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.

  2. 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.

  3. 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.

  4. Si añade nuevos iconos para el envío, prepare los iconos y agréguelos a un archivo ZIP.

  5. 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.

  6. 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:

    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);
    
  7. 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
    
  8. 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.

  9. 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:
  • NotSet
  • BookDownload
  • EMagazine
  • ENewspaper
  • MusicDownload
  • MusicStream
  • OnlineDataStorage
  • VideoDownload
  • VideoStream
  • Asp
  • OnlineDownload
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:
  • Siempre
  • OneDay
  • ThreeDays
  • FiveDays
  • OneWeek
  • TwoWeeks
  • OneMonth
  • TwoMonths
  • ThreeMonths
  • SixMonths
  • OneYear
listings object 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 object 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:
  • Inmediato
  • Manual
  • SpecificDate
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:
  • Oculto
  • Público
  • Privada
  • NotSet
status string El estado del envío. Este puede ser uno de los siguientes valores:
  • None
  • Canceled
  • PendingCommit
  • CommitStarted
  • CommitFailed
  • PendingPublication
  • Publicación
  • Publicado
  • PublishFailed
  • PreProcessing
  • PreProcessingFailed
  • Certificación
  • CertificationFailed
  • Release
  • ReleaseFailed
statusDetails object 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 object 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:
  • None
  • PendingUpload
  • Cargado
  • PendingDelete

Recurso de precios

Este recurso contiene información sobre los precios del complemento. Este recurso tiene los siguientes valores.

Valor Tipo Descripción
marketSpecificPricings object 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.

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 object 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 object Una matriz de recurso de detalles de estado que contiene los detalles de error para el envío.
advertencias object Una matriz de recurso de detalles de estado que contiene los detalles de advertencia para el envío.
certificationReports object 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.

Value 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:

  • Si el valor isAdvancedPricingModel del recurso de precios es true, los valores del nivel de precios disponibles para su cuenta son Tier1012 - Tier1424.
  • Si el valor isAdvancedPricingModel del recurso de precios es false, los valores del nivel de precios disponibles para su cuenta son Tier2 - Tier96.
Para ver la tabla completa de niveles de precios que están disponibles para su cuenta de desarrollador, incluidos los precios específicos del mercado asociados con cada nivel, vaya a la página de precios y disponibilidad para cualquiera de los envíos de su aplicación en el Centro de partners y haga clic en el vínculo ver tabla en la sección Mercados y precios personalizados (para algunas cuentas de desarrollador, este enlace se encuentra en la sección Precios).

Código de estado de envío

Los valores siguientes representan el código de estado de un envío.

Value 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.