Partner Developer Portal

Python Code Snippets

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

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

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()

1.3. Create Authorization

string = consumer_key + ":" + consumer_secret
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

Response:

{
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

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())

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)

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',

3. Get value from the JSON response

json_data = r.json()
result = data['message']['elements'][0]['order_header_array'][0][‘contract_number'
print(result)