Map<String, Object> nsAttachReference = new Map<String, Object>();
nsAttachReference.put('attachTo', new Map<String, Object>{'internalId'=>'120956','type'=>'salesOrder'});
nsAttachReference.put('contact', new Map<String, Object>{'internalId'=>'15959'});
Map<String, Object> nsAttachment = new Map<String, Object>();
nsAttachment.put('attachReference',nsAttachReference);
// Initialize the RequestJSON Data to be passed.
Map<String, Object> requestJSONMap = new Map<String, Object>();
requestJSONMap.put('attachContacts', new List<Object>{nsAttachment});
String reqJSON = JSON.serialize(requestJSONMap);
Map<String, Object> reqObj = new Map<String, Object>();
reqObj.put('version', '1.0');
reqObj.put('action', 'attachContact');
reqObj.put('requestJSON', reqJSON);
// Placing a request to Breadwinner Global API
Map<String, Object> resp = breadwinner_ns.BreadwinnerNetSuiteAPI.call(reqObj);
System.debug(resp);