Sample (Python)
It will show how to generate signature by using Python, and show a sample to request API.
1. Sample for Signature
#coding=utf-8
import hashlib
import hmac
import time
from random import randint
###Configure APP SERVER###
api_server = "https://base-api.swiftfederation.com"
def signature():
###Paste your access key id!!!###
access_key_id="O80ybSq26xUE383u"
###Paste your access key secret!!!###
access_key_secret="q738531SV3s0yFC2I3p7QJ49og37yIat"
request_method = "GET"
uri = "https://base-api.swiftfederation.com/v1.1/customer/35394"
nonce = str(randint(10000, 99999))
signature_version = 2
request_body = null
'''Caculate signature'''
signing_string = "%s\n%s\n%s\n%s\n%s\n%s\n%s" % (request_method.upper(), uri, request_timestamp, nonce, access_key_id, signature_version, request_body)
signature = hex_hmac_sha256(access_key_secret, signing_string)
'''Assemble Authroization value'''
authorization_val = "HMAC-SHA256 " + access_key_id + ":" + signature
print "================ Signature ==================="
print("signature: %s" % signature)
print("")
'''hex hamc sha256 algorithm'''
def hex_hmac_sha256(sign_key, signing_string):
signed_bytes = hmac.new(sign_key, signing_string, digestmod=hashlib.sha256).digest()
return signed_bytes.encode('hex')
signature()
2. Sample for API Request
refer to Get Customer
2.1. Get Customer
- API URL:
https://base-api.swiftfederation.com/v1.1/customer/35394
- Request Method:
GET
- Request Header:
Authorization: HMAC-SHA256 O80ybSq26xUE383u:83a330537bff8e7a1d563a815dba1d92d817a1fa6541466379a1ea37753bae83
Content-Type: application/json; charset=utf-8
X-SFD-Date: 20250721T125732Z
X-SFD-Nonce: 12561
X-SFD-Signature-Version: 2
- Request Body Example
{
"id": 35394,
"name": "Customer_Demo",
"ingestDomain": "",
"industry": "Cloud Service Provider",
"partnership": 1,
"type": 2,
"region": "SG",
"parentId": 2,
"onboardingType": 1
}
2.2. Request Get Customer API
Please replace 3 parts commented by '###' as below:
- api_server
- access_key_id
- access_key_secret
#coding=utf-8
import json
import traceback
import urllib2
import hashlib
import hmac
import datetime
import time
from random import randint
import requests
###Configure APP SERVER###
api_server = "https://base-api.swiftfederation.com"
def get_customer():
###Paste your access key id!!!###
access_key_id="V265i4K31j991E19"
###Paste your access key secret!!!###
access_key_secret="06427n2vLExuYH3cn7v5GG1MeYQ7n6S3"
request_method = "GET"
uri = "https://base-api.swiftfederation.com/v1.1/customer/35394"
nonce = str(randint(10000, 99999))
signature_version = 2
request_body = null
'''Caculate signature'''
signing_string = "%s\n%s\n%s\n%s\n%s\n%s\n%s" % (request_method.upper(), uri, request_timestamp, nonce, access_key_id,signature_version, request_body)
signature = hex_hmac_sha256(access_key_secret, signing_string)
'''Assemble Authroization value'''
authorization_val = "HMAC-SHA256 " + access_key_id + ":" + signature
print "================ Signature ==================="
print("signature: %s" % signature)
print("")
print "================ Request ==================="
print("Authorization: %s" % authorization_val)
print("Content-Type: application/json; charset=utf-8")
print("x-sfd-date: %s" % request_timestamp)
print("x-sfd-nonce: %s" % nonce)
print("X-SFD-Signature-Version: %s" % signature_version)
print("\r\n")
print(request_body)
print("\r\n")
url = "%s%s" % (api_server, uri)
headers = dict()
headers['Authorization'] = authorization_val
headers['Content-Type'] = "application/json; charset=utf-8"
headers['x-sfd-date'] = request_timestamp
headers['x-sfd-nonce'] = nonce
headers['X-SFD-Signature-Version'] = signature_version
try:
rs = requests.get(url, data=request_body, headers=headers)
rs.raise_for_status()
except requests.RequestException as e:
traceback.print_exc()
else:
return rs
'''hex hamc sha256 algorithm'''
def hex_hmac_sha256(sign_key, signing_string):
signed_bytes = hmac.new(sign_key, signing_string, digestmod=hashlib.sha256).digest()
return signed_bytes.encode('hex')
ret = get_customer()
print "================ Response ==================="
parsed_output = json.loads(ret.text)
print(parsed_output)