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)
           Updated 2025-07-21 13:24:34

results matching ""

    No results matching ""