1. Authentication API Python
This code is running on Python 2, please install requests module first (pip install requests)
import re
import time
import calendar
from base64 import b64encode
from datetime import timedelta, datetime
from hmac import HMAC
import sys, os, base64, hashlib, hmac
import requests
import time
import calendar
from base64 import b64encode
from datetime import timedelta, datetime
from hmac import HMAC
import sys, os, base64, hashlib, hmac
import requests
1.1. Get Your credentials from developer portal
consumer_key = "Your Consumer Key"
consumer_secret = "Your Consumer Secret"
callback_url = "Your callback url"
environment_url = "enterprise-api-stg.autodesk.com"; #STG Environment
consumer_secret = "Your Consumer Secret"
callback_url = "Your callback url"
environment_url = "enterprise-api-stg.autodesk.com"; #STG Environment
1.2. Create Signature
timestamp = calendar.timegm(time.gmtime());
signed_signature = base64.b64encode(hmac.new(bytearray(consumer_secret, "ASCII"),bytearray(callback_url + consumer_key + str(timestamp), "ASCII"), hashlib.sha256).digest()
signed_signature = base64.b64encode(hmac.new(bytearray(consumer_secret, "ASCII"),bytearray(callback_url + consumer_key + str(timestamp), "ASCII"), hashlib.sha256).digest()
1.3. Create Authorization
string = consumer_key + ":" + consumer_secret
auth_header = base64.b64encode(string.encode())
Auth = "Basic " + auth_header
auth_header = base64.b64encode(string.encode())
Auth = "Basic " + auth_header
1.4. Call Authentication API to get access token
OAuth_Url = "https://"+ environment_url +"/v2/oauth/generateaccesstoken?grant_type=client_credentials"
OAuth_Headers = {'timestamp':str(timestamp), 'signature': signed_signature, 'Authorization': Auth}
r = requests.post(url= OAuth_Url, headers = OAuth_Headers)
data = r.json()
token = data['access_token']
print('access_token: ' + token
OAuth_Headers = {'timestamp':str(timestamp), 'signature': signed_signature, 'Authorization': Auth}
r = requests.post(url= OAuth_Url, headers = OAuth_Headers)
data = r.json()
token = data['access_token']
print('access_token: ' + token
Response:
{
access_token: LI0wasdNAfXLasd5v34lh9xyfTA
access_token: LI0wasdNAfXLasd5v34lh9xyfTA
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.
consumer_secret = 'Your Consumer Secret'
callback_url = 'Your callback url'
client_secret = 'Your client secret'
partner_csn = 'Your CSN'
access_token = 'Get your Access Token'
Auth = "Bearer " + token;
order_number = 'Your Order Number
callback_url = 'Your callback url'
client_secret = 'Your client secret'
partner_csn = 'Your CSN'
access_token = 'Get your Access Token'
Auth = "Bearer " + token;
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
timestamp = calendar.timegm(time.gmtime())
signed_signature = base64.b64encode(hmac.new(bytearray(consumer_secret, "ASCII"),bytearray(callback_url +access_token+ str(timestamp), "ASCII"), hashlib.sha256).digest())
signed_signature = base64.b64encode(hmac.new(bytearray(consumer_secret, "ASCII"),bytearray(callback_url +access_token+ str(timestamp), "ASCII"), hashlib.sha256).digest())
2.3 Call Get Order API
Order_Details_Url = "https://enterprise-api-stg.autodesk.com/v1/orders"
OAuth_Headers = { 'CSN': partner_csn,
'timestamp':str(timestamp),
'signature': signed_signature,
'authorization': Auth}
PARAMS = { 'customer_number':partner_csn
'order_number':order_number}
r = requests.get(url = Order_Details_Url, headers = OAuth_Headers, params = PARAMS)
print('Result: '+ str(data)
OAuth_Headers = { 'CSN': partner_csn,
'timestamp':str(timestamp),
'signature': signed_signature,
'authorization': Auth}
PARAMS = { 'customer_number':partner_csn
'order_number':order_number}
r = requests.get(url = Order_Details_Url, headers = OAuth_Headers, params = PARAMS)
print('Result: '+ str(data)
Response:
Result: {
u 'status': u 'OK'
u 'message': {
u 'elements': [{
u 'order_header_array': [{
u 'contract_end_date': u '2020-06-05T00:00:00+0000'
u 'purchase_order_number': u '2019-06-06_12345',
.................
u 'contract_number': u '110003207893',
u 'status': u 'OK'
u 'message': {
u 'elements': [{
u 'order_header_array': [{
u 'contract_end_date': u '2020-06-05T00:00:00+0000'
u 'purchase_order_number': u '2019-06-06_12345',
.................
u 'contract_number': u '110003207893',
3. Get value from the JSON response
json_data = r.json()
result = data['message']['elements'][0]['order_header_array'][0][‘contract_number'
print(result)
result = data['message']['elements'][0]['order_header_array'][0][‘contract_number'
print(result)