Download Price List – https://learn.microsoft.com/en-us/partner-center/developer/get-a-price-sheet
Hi guys, check if you can help me out.
I’m trying to download the price list of my customer, I’m following this documentation here https://learn.microsoft.com/en-us/partner-center/developer/get-a-price-sheet the problem is that I don’t have privileges to access this resource.
I’m using an access token retrieved through the OAuth2 user consent, I have an WebApplication created on my Microsoft Entra ID, this application has the permissions below:
I’m able to receive the authorization code and exchange it to an access code normaly, however this access code is not working when I try to use it to retrieve the price list, where is how I’m doing it:
var market = “EU”; // Two-letter country/region code
var view = “updatedlicensebased”; // Type of price sheet view
var requestUri = $”https://api.partner.microsoft.com/v1.0/sales/pricesheets(Market='{market}’,PricesheetView='{view}’)/$value”;
System.Net.Http.HttpRequestMessage linesMarketplaceReq6 = new System.Net.Http.HttpRequestMessage(HttpMethod.Get, requestUri);
linesMarketplaceReq6.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue(“Bearer”, accessToken);
linesMarketplaceReq6.Headers.Host = “api.partner.microsoft.com”;
var linesMarketplaceResult6 = client.Send(linesMarketplaceReq6);
var result6 = await linesMarketplaceResult6.Content.ReadAsStringAsync();
var t = await linesMarketplaceResult6.Content.ReadAsStringAsync();
t.Dump();
The response is: { “statusCode”: 401, “message”: “Unauthorized: Invalid Authorization header” }
Then I found this thread here
https://github.com/microsoft/Partner-Center-PowerShell/issues/405#issuecomment-1709773538
which tells me to get a new access_code using the current refresh_code, but changing the resource to https://api.partner.microsoft.com , but I when I try to do it I receive other error:
{“error”:”invalid_grant”,”error_description”:”AADSTS65001: The user or administrator has not consented to use the application with ID ’92b24bbe-bbe0-44e9-b9ca-35ba915bab5e’ named ‘SITC-CSP’. Send an interactive authorization request for this user and resource., …,”suberror”:”consent_required”}
Code to get the new access_code using the refresh token:
using var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, new Uri($”https://login.microsoftonline.com/{tenantId}/oauth2/token”))
{
Content = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>(“resource”, “https://api.partner.microsoft-int.com”),
new KeyValuePair<string, string>(“client_id”, “<client_id>”),
new KeyValuePair<string, string>(“client_secret”, “<client_secret>”),
new KeyValuePair<string, string>(“grant_type”, “refresh_token”),
new KeyValuePair<string, string>(“refresh_token”, refreshToken),
new KeyValuePair<string, string>(“scope”, “openid”),
})
};
request.Headers.Add(“ContentType”,”application/x-www-form-urlencoded”);
var response = await client.SendAsync(request);
var data = await response.Content.ReadAsStringAsync();
data.Dump();
Any help would be greatly appreciated. Thanks in advance!
Hi guys, check if you can help me out. I’m trying to download the price list of my customer, I’m following this documentation here https://learn.microsoft.com/en-us/partner-center/developer/get-a-price-sheet the problem is that I don’t have privileges to access this resource. I’m using an access token retrieved through the OAuth2 user consent, I have an WebApplication created on my Microsoft Entra ID, this application has the permissions below:I’m able to receive the authorization code and exchange it to an access code normaly, however this access code is not working when I try to use it to retrieve the price list, where is how I’m doing it: var market = “EU”; // Two-letter country/region code
var view = “updatedlicensebased”; // Type of price sheet view
var requestUri = $”https://api.partner.microsoft.com/v1.0/sales/pricesheets(Market='{market}’,PricesheetView='{view}’)/$value”;
System.Net.Http.HttpRequestMessage linesMarketplaceReq6 = new System.Net.Http.HttpRequestMessage(HttpMethod.Get, requestUri);
linesMarketplaceReq6.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue(“Bearer”, accessToken);
linesMarketplaceReq6.Headers.Host = “api.partner.microsoft.com”;
var linesMarketplaceResult6 = client.Send(linesMarketplaceReq6);
var result6 = await linesMarketplaceResult6.Content.ReadAsStringAsync();
var t = await linesMarketplaceResult6.Content.ReadAsStringAsync();
t.Dump(); The response is: { “statusCode”: 401, “message”: “Unauthorized: Invalid Authorization header” }Then I found this thread herehttps://github.com/microsoft/Partner-Center-PowerShell/issues/405#issuecomment-1709773538which tells me to get a new access_code using the current refresh_code, but changing the resource to https://api.partner.microsoft.com , but I when I try to do it I receive other error:{“error”:”invalid_grant”,”error_description”:”AADSTS65001: The user or administrator has not consented to use the application with ID ’92b24bbe-bbe0-44e9-b9ca-35ba915bab5e’ named ‘SITC-CSP’. Send an interactive authorization request for this user and resource., …,”suberror”:”consent_required”}Code to get the new access_code using the refresh token: using var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, new Uri($”https://login.microsoftonline.com/{tenantId}/oauth2/token”))
{
Content = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>(“resource”, “https://api.partner.microsoft-int.com”),
new KeyValuePair<string, string>(“client_id”, “<client_id>”),
new KeyValuePair<string, string>(“client_secret”, “<client_secret>”),
new KeyValuePair<string, string>(“grant_type”, “refresh_token”),
new KeyValuePair<string, string>(“refresh_token”, refreshToken),
new KeyValuePair<string, string>(“scope”, “openid”),
})
};
request.Headers.Add(“ContentType”,”application/x-www-form-urlencoded”);
var response = await client.SendAsync(request);
var data = await response.Content.ReadAsStringAsync();
data.Dump(); Any help would be greatly appreciated. Thanks in advance! Read More