Manage Product Submissions

Use the following methods in Microsoft Hardware APIs to manage submissions for your products and for getting them signed by Microsoft. For an introduction to Microsoft Hardware APIs, including prerequisites for using the API, see hardware dashboard API.

Methods for managing product submissions

Method URI Description
GET{productID} Get status/data for a specific product
GET{productID}/submissions/{submissionId} Get status/data for a specific submission of a product
POST Create a new product
POST{productID}/submissions/ Create a new submission for a product
POST{productID}/submissions/{submissionId}/commit Commit a product submission

Create and submit a product for signing

  1. If you have not done so already, complete all the prerequisites for the Microsoft Hardware APIs.

  2. Obtain an Microsoft Entra ID access token. You must pass this access token to the methods in the Microsoft Store submission API. After you obtain an access token, you have 60 minutes to use it before it expires. After the token expires, you can obtain a new one.

  3. Create a new product by executing the following method in the Microsoft Hardware API. This creates a new in-progress product and allows you to submit packages for this product.

    The response body contains a Product resource that includes the ID of this product.

  4. Create a submission for this product by executing the following method in the Microsoft Hardware API. Use the ProductID created in the step above.{productID}/submissions/

    The response body contains a Submission resource which includes the ID of the submission, the shared access signature (SAS) URI for uploading the product (driver) package for the submission to Azure Blob Storage. [!NOTE] > A SAS URI provides access to a secure resource in Azure storage without requiring account keys. For background information about SAS URIs and their use with Azure Blob Storage, see Shared Access Signatures, Part 1: Understanding the SAS model and Shared Access Signatures, Part 2: Create and use a SAS with Blob storage .

  5. Upload your package to the Azure Blob Storage at the location specified by the SAS URI in the previous step. The following C# code example demonstrates how to upload a package to Azure Blob Storage using the CloudBlockBlob class in the Azure Storage Client Library for .NET. This example assumes that the package has already been written to a stream object.

    string sasUrl = "";
    Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob blockBob =
        new Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob(new System.Uri(sasUrl));
    await blockBob.UploadFromStreamAsync(stream);
  6. Commit the product submission by executing the following method. This will alert Hardware Dev Center that you are done with your product submission and validation will be started for the submission.{productID}/submissions/{submissionId}/commit
  7. Check on the commit status by executing the following method to get the status of the product submission.{productID}/submissions/{submissionId}

    To confirm the submission status, review the commitStatus value in the response body. This value should change from CommitReceived to CommitComplete if the request succeeds or to CommitFailed if there are errors in the request.


    The main Search page refreshes about every 10 minutes. To view all of your results as you create them, click Driver List Page (all), at the top of the Drivers page of the Partner Center. Although the page takes some time to process and load if you have a lot of submissions, both successful and unsuccessful submissions should be listed when it does load. For more info, see Find a hardware submission.

Code examples

The following code examples demonstrates how to use the Microsoft Hardware API:

Data resources

The Microsoft Hardware APIs methods for creating and managing product data use the following JSON data resources:

See also