Using Partner Center Ingestion API for managing Azure Application offers in Azure Marketplace

Arsen Vladimirskiy
3 min readSep 10, 2020

In this video, we look at how to use Microsoft Partner Center Ingestion API for managing “Azure Application” offers in Azure Marketplace.

Document called “Partner Center submission API to onboard Azure apps in Partner Center” provides some high-level information on how to create a Service Principal, add it to the Partner Center account, and use it to obtain access_token from Azure Active Directory. The document also points to the Swagger defining the API methods, but it does not provide specific examples for the sequences for the API calls required to manage Azure Application offers.

In this video walkthrough, we go a bit deeper and look at how to use Postman to invoke the multiple REST methods of the Partner Center Ingestion REST API and how these calls “map” to the Partner Center Commercial Marketplace UI experience.

You can download my Postman collection here.

This video is specifically about the “Azure Application” offer type. If you are looking at how to manage “Virtual Machine” offers, please see “Using CPP API for managing Virtual Machine offers in Azure Marketplace”.

Video Walkthrough

Tip: Play the video full screen.

Approximate Mapping of Partner Center UI to the Ingestion APIs

Uploading Package Zip

Update from April 4, 2022: In the video above, I showed how to upload the product images, but didn’t get a chance to show how to upload the package zip file because the API was having some issues during that time. I am including below the high-level steps and Postman screenshots of request and responses.

Create the new package with the response including Azure Storage SAS URL to which to upload the package zip file:

Upload package zip file to the Azure Storage SAS URL returned above:

Perform package PUT request to set the “state” of the package to “Uploaded” and it will respond with “InProcessing”:

Get package by id to make sure its “state” is “Processed”. If the state mentions an error, try uploading the package via the Partner Center UI to see why it fails.

Get package configuration from the current draft instance and update it to point to the newly uploaded and processed package:

Update the package configuration with packageReferences pointing to the new package id and setting the If-Match header to match the etag value in quotes.

So, should we use Partner Center API or Cloud Partner Portal CPP API?

Answer: It depends on the “offer type”

  • Azure Application Offers: (described in this article)
  • VM Offers (and a few other types): (described in the related article)

Thank you!

Please leave feedback and questions below or on Twitter



Arsen Vladimirskiy

Principal Engineer / Architect, FastTrack for Azure at Microsoft