Partner Developer Portal

C# Code Snippets

1. Authentication API – C#

Note: .NET Framework 4.8 are used for the below sample, and please also add reference of Newtonsoft.Json Assembly to your project.

using System;
using System.IO;
using System.Net;
using System.Text;
using System.Security.Cryptography;
using Newtonsoft.Json

1.1. Get Your credentials from developer portal

String consumer_key = "Your Consumer Key";
String consumer_secret = "Your Consumer Secret";
String callback_url = "Your Callback url"
String environment_url = "enterprise-api-stg.autodesk.com"; //STG Environment

1.2. Create Signature

/*****Create Signature**********/
int epoch = (int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
string timestamp = Convert.ToString(epoch);
string message = callback_url + consumer_key + timestamp;
HMACSHA256 hmac = new HMACSHA256(Encoding.UTF8.GetBytes(consumer_secret))
var SignatureForAuthentication = Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(message)))

1.3. Create Authorization

/***Base 64 Encoded Authentication Header***/
string concatString = consumer_key + ':' + consumer_secret;
string AuthHeaderEncoded = Convert.ToBase64String(Encoding.UTF8.GetBytes(concatString));
string authHeader = "Basic" + " " + AuthHeaderEncoded;

1.4. Call Authentication API to get access toke

/*PWS Server supports TLS 1.2*/
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
| SecurityProtocolType.Tls11
| SecurityProtocolType.Tls12;

/***HTTP Request***/
String AuthenticationURL = "https://"+ environment_url +"/v2/oauth/generateaccesstoken?grant_type=client_credentials";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(AuthenticationURL);
request.Method = "POST";
request.Headers.Add("authorization", authHeader);
request.Headers.Add("signature", SignatureForAuthentication);
request.Headers.Add("timestamp", timestamp);

/***HTTP Response***/
HttpWebResponse response = (HttpWebResponse)request.GetResponse()

/***JSON Parser***/
using (Stream responseStream = response.GetResponseStream())
{
if (responseStream != null)
{
using (StreamReader reader = new StreamReader(responseStream))
{
string strResponseValue = reader.ReadToEnd();
dynamic obj = JsonConvert.DeserializeObject(strResponseValue);

Console.WriteLine("Access Token: " + obj.access_token);
}
}
}

Response:

Access Token: "ZbsJ0Nj2kwPNHxV7V9KuS1EkaYhS"

This access token will be used in next code sample.

2. Sample call to Autodesk API

In this example, we are calling GetOrderDetails API

2.1 Get your CSN, order number, make sure access token has been created by authentication API.

String consumer_secret = "Your Consumer Secret";
String callback_url = "Your Callback url";
String environment_url = "enterprise-api-stg.autodesk.com"; //STG Environment
String partner_csn = "Your CSN";

String csn = 'Your CSN';
String access_token = "Get Your Access Token";
String Bearertoken = "Bearer " + access_token;

String order_number = "Your Order Number";
Note - GetOrderDetails API has other parameters as well. Please refer to the API documentation and modify code accordingly.

2.2 Create Signature

/***Base 64 encoded signature***/
int epoch = (int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
string timestamp = Convert.ToString(epoch);
string message2 = callback_url + access_token + timestamp;
HMACSHA256 hmac2 = new HMACSHA256(Encoding.UTF8.GetBytes(consumer_secret));
var signature = Convert.ToBase64String(hmac2.ComputeHash(Encoding.UTF8.GetBytes(message2)));

2.3 Call Get Order API

/*PWS Server supports TLS 1.2*/
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
| SecurityProtocolType.Tls11
| SecurityProtocolType.Tls12;
/***HTTP Request***/
String GetOrderAPIUrl = "https://"+ environment_url +"/v1/orders?customer_number="+ partner_csn + "&order_number=" + order_number;
HttpWebRequest request2 = (HttpWebRequest)WebRequest.Create(GetOrderAPIUrl);
request2.Method = "GET";
request2.Headers.Add("authorization", Bearertoken);
request2.Headers.Add("signature", singature);
request2.Headers.Add("timestamp", timestamp);
request2.Headers.Add("CSN", partner_csn);

/***HTTP Response***/
HttpWebResponse response = (HttpWebResponse)request2.GetResponse()
using (Stream responseStream = response.GetResponseStream())
{
if (responseStream != null
{
using (StreamReader reader = new StreamReader(responseStream))
{
string strResponseValue = reader.ReadToEnd();
Console.WriteLine("Result: " + strResponseValue);
}
}
}

Response:

{
"status": "OK",
"message": {
"elements": [{
"order_header_array": [{
"order_date": "2019-06-10T00:00:00+0000"
"sales_order_number": "7058108640",
......
"contract_number": "110023207893"

3. Get value from the JSON response

/***JSON Parser***/
using (Stream responseStream2 = response2.GetResponseStream())
{
if (responseStream2!= null)
{
using (StreamReader reader2 = new StreamReader(responseStream2))
{
strResponseValue2 = reader2.ReadToEnd();
JavaScriptSerializer jsSerializer2 = new JavaScriptSerializer();
var result2 = jsSerializer.DeserializeObject(strResponseValue2);
Dictionary obj3 = new Dictionary(); {
Obj3 = (Dictionary)(result2);
/* obj3["customer_po_number"].ToString() returns value of customer PO number*/
string customer_po_number = obj3["customer_po_number"].ToString();
Console.WriteLine("This is customer_po_number:" + customer_po_number);
}
}