For non required fields, you can either omit from the JSON string or set it to a default value
(e.g. String = "", Integer/Double = 0, Boolean = false, DateTime = 1900-01-01T00:00:00.000Z)
{"attribute": {"customer_attribute_no": 0, "customer_no": 0, "attribute_type": "", "attribute_value": "", "created_on": "1/1/1900 12:00 AM", "company_no": 0, "facebook_handle": "", "twitter_handle": "", "google_handle": "", "instagram_handle": "", "latitude": "", "longitude": "", "first_name": "", "last_name": "", "address": "", "address2": "", "city": "", "state": "", "zip_code": "", "country": "", "phone_number": "", "mobile_number": "", "email": "", "password": "", "device_type": "", "passbook_enabled": "", "wallet_enabled": "", "opt_in_email": "", "opt_in_sms": "", "opt_in_updates": "", "user_no": 0, "company_name": "", "birthdate": "1/1/1900 12:00 AM", "modified_on": "1/1/1900 12:00 AM", "address3": "", "customer_reference": "", "facebook_id": "", "twitter_id": "", "google_id": "", "instagram_id": "", "middle_name": "", "website": "", "customer_type": "" }, "auth": {"api_username": "", "api_password": "", "api_key": "", "company_no": 0, "username": "", "password": "", "timezone_offset": 0, "auth_type": "", "system_name": "", "system_company_no": 0 } }
{"attribute": {"customer_attribute_no": 0, "customer_no": 0, "attribute_type": "", "attribute_value": "", "created_on": "1/1/1900 12:00 AM", "company_no": 0, "facebook_handle": "", "twitter_handle": "", "google_handle": "", "instagram_handle": "", "latitude": "", "longitude": "", "first_name": "", "last_name": "", "address": "", "address2": "", "city": "", "state": "", "zip_code": "", "country": "", "phone_number": "", "mobile_number": "", "email": "", "password": "", "device_type": "", "passbook_enabled": "", "wallet_enabled": "", "opt_in_email": "", "opt_in_sms": "", "opt_in_updates": "", "user_no": 0, "company_name": "", "birthdate": "1/1/1900 12:00 AM", "modified_on": "1/1/1900 12:00 AM", "address3": "", "customer_reference": "", "facebook_id": "", "twitter_id": "", "google_id": "", "instagram_id": "", "middle_name": "", "website": "", "customer_type": "" }, "auth": {"api_username": "", "api_password": "", "api_key": "", "company_no": 0, "username": "", "password": "" } }
This sample code is to generate a function leveraging existing core functions you've already built.
func getAPIKit() -> (url: String, dict: Dictionary<String, AnyObject>) {
var customer_attribute_no = 0
var customer_no = 0
var attribute_type = ""
var attribute_value = ""
var created_on = "1/1/1900 12:00 AM"
var company_no = 0
var facebook_handle = ""
var twitter_handle = ""
var google_handle = ""
var instagram_handle = ""
var latitude = ""
var longitude = ""
var first_name = ""
var last_name = ""
var address = ""
var address2 = ""
var city = ""
var state = ""
var zip_code = ""
var country = ""
var phone_number = ""
var mobile_number = ""
var email = ""
var password = ""
var device_type = ""
var passbook_enabled = ""
var wallet_enabled = ""
var opt_in_email = ""
var opt_in_sms = ""
var opt_in_updates = ""
var user_no = 0
var company_name = ""
var birthdate = "1/1/1900 12:00 AM"
var modified_on = "1/1/1900 12:00 AM"
var address3 = ""
var customer_reference = ""
var facebook_id = ""
var twitter_id = ""
var google_id = ""
var instagram_id = ""
var middle_name = ""
var website = ""
var customer_type = ""
let url = "https://api.peoplevine.com/customer.asmx/updateCustomerAttribute"
let key = "attribute"
let attributeDict: Dictionary<String, AnyObject> = ["customer_attribute_no": customer_attribute_no, "customer_no": customer_no, "attribute_type": attribute_type, "attribute_value": attribute_value, "created_on": created_on, "company_no": company_no, "facebook_handle": facebook_handle, "twitter_handle": twitter_handle, "google_handle": google_handle, "instagram_handle": instagram_handle, "latitude": latitude, "longitude": longitude, "first_name": first_name, "last_name": last_name, "address": address, "address2": address2, "city": city, "state": state, "zip_code": zip_code, "country": country, "phone_number": phone_number, "mobile_number": mobile_number, "email": email, "password": password, "device_type": device_type, "passbook_enabled": passbook_enabled, "wallet_enabled": wallet_enabled, "opt_in_email": opt_in_email, "opt_in_sms": opt_in_sms, "opt_in_updates": opt_in_updates, "user_no": user_no, "company_name": company_name, "birthdate": birthdate, "modified_on": modified_on, "address3": address3, "customer_reference": customer_reference, "facebook_id": facebook_id, "twitter_id": twitter_id, "google_id": google_id, "instagram_id": instagram_id, "middle_name": middle_name, "website": website, "customer_type": customer_type ]
let finalDict = User.getAuthDict(dictToAdd: attributeDict, dictKey: key)
return (url, finalDict)
}
To get started we reccomend that you download the Alamofire project to simplify integration: https://github.com/Alamofire/Alamofire, in addition to SwiftyJSON: https://github.com/SwiftyJSON/SwiftyJSON
import Foundation
struct ATTRIBUTE {
static var customer_attribute_no = <double>
static var customer_no = <double>
static var attribute_type = <string>
static var attribute_value = <string>
static var created_on = <dateTime>
static var company_no = <double>
static var facebook_handle = <string>
static var twitter_handle = <string>
static var google_handle = <string>
static var instagram_handle = <string>
static var latitude = <string>
static var longitude = <string>
static var first_name = <string>
static var last_name = <string>
static var address = <string>
static var address2 = <string>
static var city = <string>
static var state = <string>
static var zip_code = <string>
static var country = <string>
static var phone_number = <string>
static var mobile_number = <string>
static var email = <string>
static var password = <string>
static var device_type = <string>
static var passbook_enabled = <string>
static var wallet_enabled = <string>
static var opt_in_email = <string>
static var opt_in_sms = <string>
static var opt_in_updates = <string>
static var user_no = <double>
static var company_name = <string>
static var birthdate = <dateTime>
static var modified_on = <dateTime>
static var address3 = <string>
static var customer_reference = <string>
static var facebook_id = <string>
static var twitter_id = <string>
static var google_id = <string>
static var instagram_id = <string>
static var middle_name = <string>
static var website = <string>
static var customer_type = <string>}
struct AUTH {
static var api_username = <string>
static var api_password = <string>
static var api_key = <string>
static var company_no = <double>
static var username = <string>
static var password = <string>
static var timezone_offset = <double>
static var auth_type = <string>
static var system_name = <string>
static var system_company_no = <double>}
func updateCustomerAttributeRequest() {
var updateCustomerAttributeObjects = [AnyObject]()
let postsEndpoint: String = "https://api.peoplevine.com/customer.asmx/updateCustomerAttribute"
let authAndFieldsDict = ["attribute": ["customer_attribute_no": ATTRIBUTE.customer_attribute_no, "customer_no": ATTRIBUTE.customer_no, "attribute_type": ATTRIBUTE.attribute_type, "attribute_value": ATTRIBUTE.attribute_value, "created_on": ATTRIBUTE.created_on, "company_no": ATTRIBUTE.company_no, "facebook_handle": ATTRIBUTE.facebook_handle, "twitter_handle": ATTRIBUTE.twitter_handle, "google_handle": ATTRIBUTE.google_handle, "instagram_handle": ATTRIBUTE.instagram_handle, "latitude": ATTRIBUTE.latitude, "longitude": ATTRIBUTE.longitude, "first_name": ATTRIBUTE.first_name, "last_name": ATTRIBUTE.last_name, "address": ATTRIBUTE.address, "address2": ATTRIBUTE.address2, "city": ATTRIBUTE.city, "state": ATTRIBUTE.state, "zip_code": ATTRIBUTE.zip_code, "country": ATTRIBUTE.country, "phone_number": ATTRIBUTE.phone_number, "mobile_number": ATTRIBUTE.mobile_number, "email": ATTRIBUTE.email, "password": ATTRIBUTE.password, "device_type": ATTRIBUTE.device_type, "passbook_enabled": ATTRIBUTE.passbook_enabled, "wallet_enabled": ATTRIBUTE.wallet_enabled, "opt_in_email": ATTRIBUTE.opt_in_email, "opt_in_sms": ATTRIBUTE.opt_in_sms, "opt_in_updates": ATTRIBUTE.opt_in_updates, "user_no": ATTRIBUTE.user_no, "company_name": ATTRIBUTE.company_name, "birthdate": ATTRIBUTE.birthdate, "modified_on": ATTRIBUTE.modified_on, "address3": ATTRIBUTE.address3, "customer_reference": ATTRIBUTE.customer_reference, "facebook_id": ATTRIBUTE.facebook_id, "twitter_id": ATTRIBUTE.twitter_id, "google_id": ATTRIBUTE.google_id, "instagram_id": ATTRIBUTE.instagram_id, "middle_name": ATTRIBUTE.middle_name, "website": ATTRIBUTE.website, "customer_type": ATTRIBUTE.customer_type ], "auth": ["api_username": AUTH.api_username, "api_password": AUTH.api_password, "api_key": AUTH.api_key, "company_no": AUTH.company_no, "username": AUTH.username, "password": AUTH.password, "timezone_offset": AUTH.timezone_offset, "auth_type": AUTH.auth_type, "system_name": AUTH.system_name, "system_company_no": AUTH.system_company_no ] ]
Alamofire.request(.POST, postsEndpoint, parameters: authAndFieldsDict, encoding: .JSON).responseJSON { (request, response, data, error) in
if let anError = error {
println("error calling POST on /posts")
println(error)
} else if let jsonData: AnyObject = data {
if let dataString = (jsonData.valueForKey("d") as! String).dataUsingEncoding(NSUTF8StringEncoding) {
let json = JSON(data: dataString) //use this object to parse data
//SAMPLE PARSING
let varData = json["returnObject"][0]["object"].stringValue
// ----------
// BELOW REPRESENTS AN EXAMPLE USING PURE SWIFT JSONSERIALIZATION INSTEAD OF SWIFTYJSON --------//
// if let updateCustomerAttributeDict = NSJSONSerialization.JSONObjectWithData(encoString, options: .MutableContainers, error: nil) as? NSDictionary {
// if let returnObjectArray = updateCustomerAttributeDict["returnObject"] as? NSArray {
//
// for updateCustomerAttributeObject in returnObjectArray {
// updateCustomerAttributeObjects.append(updateCustomerAttributeObject)
// if let item = updateCustomerAttributeObject["object_name"] as? NSDictionary {
// let varItem = item["field_name"] as! String
// }
// }
//
// println("\n\(updateCustomerAttributeObjects.count) Total")
// }
// }
}
}
}
}
<!DOCTYPE html>
<html>
<head>
<title>API Call - updateCustomerAttribute</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
</head>
<body>
<script type="text/javascript">
$(function() {
var dataValue = {
"attribute": {
"customer_attribute_no": 0,
"customer_no": 0,
"attribute_type": "",
"attribute_value": "",
"created_on": "1/1/1900 12:00 AM",
"company_no": 0,
"facebook_handle": "",
"twitter_handle": "",
"google_handle": "",
"instagram_handle": "",
"latitude": "",
"longitude": "",
"first_name": "",
"last_name": "",
"address": "",
"address2": "",
"city": "",
"state": "",
"zip_code": "",
"country": "",
"phone_number": "",
"mobile_number": "",
"email": "",
"password": "",
"device_type": "",
"passbook_enabled": "",
"wallet_enabled": "",
"opt_in_email": "",
"opt_in_sms": "",
"opt_in_updates": "",
"user_no": 0,
"company_name": "",
"birthdate": "1/1/1900 12:00 AM",
"modified_on": "1/1/1900 12:00 AM",
"address3": "",
"customer_reference": "",
"facebook_id": "",
"twitter_id": "",
"google_id": "",
"instagram_id": "",
"middle_name": "",
"website": "",
"customer_type": "",
},
"auth": {
"api_username": "",
"api_password": "",
"api_key": "",
"company_no": 0,
"username": "",
"password": "",
"timezone_offset": 0,
"auth_type": "",
"system_name": "",
"system_company_no": 0,
},
};
$.ajax({
url: 'https://api.peoplevine.com/customer.asmx/updateCustomerAttribute',
type: 'POST',
data: JSON.stringify(dataValue),
contentType: 'application/json; charset=utf-8',
dataType: 'json',
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("ERROR");
},
success: function (result) {
var obj = JSON.parse(result.d).returnObject;
$.each(obj, function(i) {
$("#divID").html(obj[i].field_name); //do something with the data
})
}
})
});
</script>
</body>
</html>
System.Net.HttpWebRequest req = System.Net.HttpWebRequest.Create("https://api.peoplevine.com/customer.asmx/updateCustomerAttribute");
req.Method = "POST";
req.ContentType = "application/json; charset=utf-8";
string dataValue = "{attribute: {customer_attribute_no: <double>, customer_no: <double>, attribute_type: <string>, attribute_value: <string>, created_on: <dateTime>, company_no: <double>, facebook_handle: <string>, twitter_handle: <string>, google_handle: <string>, instagram_handle: <string>, latitude: <string>, longitude: <string>, first_name: <string>, last_name: <string>, address: <string>, address2: <string>, city: <string>, state: <string>, zip_code: <string>, country: <string>, phone_number: <string>, mobile_number: <string>, email: <string>, password: <string>, device_type: <string>, passbook_enabled: <string>, wallet_enabled: <string>, opt_in_email: <string>, opt_in_sms: <string>, opt_in_updates: <string>, user_no: <double>, company_name: <string>, birthdate: <dateTime>, modified_on: <dateTime>, address3: <string>, customer_reference: <string>, facebook_id: <string>, twitter_id: <string>, google_id: <string>, instagram_id: <string>, middle_name: <string>, website: <string>, customer_type: <string> },auth: {api_username: <string>, api_password: <string>, api_key: <string>, company_no: <double>, username: <string>, password: <string>, timezone_offset: <double>, auth_type: <string>, system_name: <string>, system_company_no: <double> }}";
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] bytes = encoding.GetBytes(dataValue);
req.ContentLength = bytes.Length;
System.IO.Stream strm = req.GetRequestStream();
strm.Write(bytes, 0, bytes.Length);
strm.Close();
System.Net.HttpWebResponse rsp = req.GetResponse();
System.IO.Stream data = rsp.GetResponseStream();
System.IO.StreamReader rdr = new System.IO.StreamReader(data);
string response = rdr.ReadToEnd();
Dim req As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create("https://api.peoplevine.com/customer.asmx/updateCustomerAttribute")
req.Method = "POST"
req.ContentType = "application/json; charset=utf-8"
Dim dataValue As String = "{attribute: {customer_attribute_no: <double>, customer_no: <double>, attribute_type: <string>, attribute_value: <string>, created_on: <dateTime>, company_no: <double>, facebook_handle: <string>, twitter_handle: <string>, google_handle: <string>, instagram_handle: <string>, latitude: <string>, longitude: <string>, first_name: <string>, last_name: <string>, address: <string>, address2: <string>, city: <string>, state: <string>, zip_code: <string>, country: <string>, phone_number: <string>, mobile_number: <string>, email: <string>, password: <string>, device_type: <string>, passbook_enabled: <string>, wallet_enabled: <string>, opt_in_email: <string>, opt_in_sms: <string>, opt_in_updates: <string>, user_no: <double>, company_name: <string>, birthdate: <dateTime>, modified_on: <dateTime>, address3: <string>, customer_reference: <string>, facebook_id: <string>, twitter_id: <string>, google_id: <string>, instagram_id: <string>, middle_name: <string>, website: <string>, customer_type: <string> },auth: {api_username: <string>, api_password: <string>, api_key: <string>, company_no: <double>, username: <string>, password: <string>, timezone_offset: <double>, auth_type: <string>, system_name: <string>, system_company_no: <double> }}"
Dim encoding As New ASCIIEncoding()
Dim bytes As Byte() = encoding.GetBytes(dataValue)
req.ContentLength = bytes.Length
Dim strm As System.IO.Stream = req.GetRequestStream()
strm.Write(bytes, 0, bytes.Length)
strm.Close()
Dim rsp As System.Net.HttpWebResponse = req.GetResponse()
Dim data As System.IO.Stream = rsp.GetResponseStream()
Dim rdr As New System.IO.StreamReader(data)
Dim response As String = rdr.ReadToEnd()
// This sample uses the Apache HTTP client from HTTP Components (http://hc.apache.org/httpcomponents-client-ga/)
import java.net.URI;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
public class JavaSample {
public static void main(String[] args) {
HttpClient httpclient = HttpClients.createDefault();
try
{
URIBuilder builder = new URIBuilder("https://peoplevine.azure-api.net/customer/customer/registerCustomer");
// Specify your subscription key
builder.setParameter("subscription-key", "");
URI uri = builder.build();
HttpPost request = new HttpPost(uri);
StringEntity reqEntity = new StringEntity("", ContentType.create("application/json"));
request.setEntity(reqEntity);
HttpResponse response = httpclient.execute(request);
HttpEntity entity = response.getEntity();
if (entity != null) {
System.out.println(EntityUtils.toString(entity));
}
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
}
}
<?php
// This sample uses the HTTP_Request2 package. (for more information: http://pear.php.net/package/HTTP_Request2)
require_once 'HTTP/Request2.php';
$headers = array(
'Content-Type' => 'application/json',
);
$query_params = array(
// Specify your subscription key
'subscription-key' => '',
);
$request = new Http_Request2('https://peoplevine.azure-api.net/customer/customer/registerCustomer');
$request->setMethod(HTTP_Request2::METHOD_POST);
// Basic Authorization Sample
// $request-setAuth('{username}', '{password}');
$request->setHeader($headers);
$url = $request->getUrl();
$url->setQueryVariables($query_params);
$request->setBody("");
try
{
$response = $request->send();
echo $response->getBody();
}
catch (HttpException $ex)
{
echo $ex;
}
?>
#import <Foundation/Foundation.h>
NSDictionary *attributeDic = [NSDictionary dictionaryWithObjectsAndKeys:
<double>, @"customer_attribute_no",
<double>, @"customer_no",
<string>, @"attribute_type",
<string>, @"attribute_value",
<dateTime>, @"created_on",
<double>, @"company_no",
<string>, @"facebook_handle",
<string>, @"twitter_handle",
<string>, @"google_handle",
<string>, @"instagram_handle",
<string>, @"latitude",
<string>, @"longitude",
<string>, @"first_name",
<string>, @"last_name",
<string>, @"address",
<string>, @"address2",
<string>, @"city",
<string>, @"state",
<string>, @"zip_code",
<string>, @"country",
<string>, @"phone_number",
<string>, @"mobile_number",
<string>, @"email",
<string>, @"password",
<string>, @"device_type",
<string>, @"passbook_enabled",
<string>, @"wallet_enabled",
<string>, @"opt_in_email",
<string>, @"opt_in_sms",
<string>, @"opt_in_updates",
<double>, @"user_no",
<string>, @"company_name",
<dateTime>, @"birthdate",
<dateTime>, @"modified_on",
<string>, @"address3",
<string>, @"customer_reference",
<string>, @"facebook_id",
<string>, @"twitter_id",
<string>, @"google_id",
<string>, @"instagram_id",
<string>, @"middle_name",
<string>, @"website",
<string>, @"customer_type", nil];
NSDictionary *authDic = [NSDictionary dictionaryWithObjectsAndKeys:
<string>, @"api_username",
<string>, @"api_password",
<string>, @"api_key",
<double>, @"company_no",
<string>, @"username",
<string>, @"password",
<double>, @"timezone_offset",
<string>, @"auth_type",
<string>, @"system_name",
<double>, @"system_company_no", nil];
NSDictionary *finalDic = [NSDictionary dictionaryWithObjectsAndKeys:
attributeDic, @"attribute",authDic, @"auth", nil];
NSMutableDictionary* jsonString = nil;
jsonString = [NSJSONSerialization JSONObjectWithData: findalDic options:NSJSONReadingMutableContainers];
NSMutableData *bodyData = [NSMutableData dataWithData:[jsonString dataUsingEncoding:NSUTF8StringEncoding]];
NSString *urlString = @"https://api.peoplevine.com/customer.asmx/updateCustomerAttribute";
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:urlString]];
[request setTimeOutSeconds:250];
[request setRequestMethod:@"POST"];
[request addRequestHeader:@"Content-Type" value:@"application/json"];
[request addRequestHeader:[NSString stringWithFormat:@"%d",bodyData.length] value:@"Content-length"];
[request setPostBody:bodyData];
[request startSynchronous];
NSDictionary *responseDic = (NSDictionary*)[request.responseString JSONValue];
if (responseDic || [responseDic objectForKey:@"d"])
{
NSMutableDictionary *dicSave=[responseDic objectForKey:@"d"];
// -------------------------------------------------------------------
// convert into the data and NSUTF8StringEncoding
// -------------------------------------------------------------------
NSString *strDic=[dicSave copy];
NSMutableDictionary *dirJson;
if (strDic)
{
NSData* dataFile=[strDic dataUsingEncoding:NSUTF8StringEncoding];
NSString* newStr = [[NSString alloc] initWithData:dataFile
encoding:NSUTF8StringEncoding];
dirJson = [newStr JSONValue] ;
}
// -------------------------------------------------------------------
NSString *str=[[dirJson objectForKey:@"returnObject"]valueForKey:@"customer_no"];
}
else
{
UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Error" message:@"An Error Occurred" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];
[alert show];
}
require 'net/http'
uri = URI('https://peoplevine.azure-api.net/customer/customer/registerCustomer')
uri.query = URI.encode_www_form({
# Specify your subscription key
'subscription-key' => '',
})
request = Net::HTTP::Post.new(uri.request_uri)
# Basic Authorization Sample
# request.basic_auth 'username', 'password'
request['Content-type'] = 'application/json'
request.body = ""
response = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http|
http.request(request)
end
puts response.body
########### Python 2.7 #############
import httplib, urllib, base64
headers = {
# Basic Authorization Sample
# 'Authorization': 'Basic %s' % base64.encodestring('{username}:{password}'),
'Content-type': 'application/json',
}
params = urllib.urlencode({
# Specify your subscription key
'subscription-key': '',
})
try:
conn = httplib.HTTPSConnection('peoplevine.azure-api.net')
conn.request("POST", "/customer/customer/registerCustomer?%s" % params, "", headers)
response = conn.getresponse()
data = response.read()
print(data)
conn.close()
except Exception as e:
print("[Errno {0}] {1}".format(e.errno, e.strerror))
####################################
########### Python 3.2 #############
import http.client, urllib.request, urllib.parse, urllib.error, base64
headers = {
# Basic Authorization Sample
# 'Authorization': 'Basic %s' % base64.encodestring('{username}:{password}'),
'Content-type': 'application/json',
}
params = urllib.parse.urlencode({
# Specify your subscription key
'subscription-key': '',
})
try:
conn = http.client.HTTPSConnection('peoplevine.azure-api.net')
conn.request("POST", "/customer/customer/registerCustomer?%s" % params, "", headers)
response = conn.getresponse()
data = response.read()
print(data)
conn.close()
except Exception as e:
print("[Errno {0}] {1}".format(e.errno, e.strerror))
####################################
@ECHO OFF
REM for Basic Authorization use: --user {username}:{password}
REM Specify values for path parameters (shown as {...}), your subscription key and values for query parameters
curl -v -X POST "https://peoplevine.azure-api.net/customer/customer/registerCustomer?subscription-key="^
-H "Content-Type: application/json"