Peer-to-Peer Registrations
This document lays out the specification of interacting with the Peer-to-Peer Registrations system, allowing for reading of P2P Registrations.
GET : https://secure.qgiv.com/admin/api/reporting/registrations/last/[limit]
[limit] must be an integer value greater than zero
Returns the last [limit] registrations associated with the current Hobnob event
{
  "forms": {
    "form": {
      "id": "1995",
      "registrations": {
        "registration": {
          "id": "704",
          "form": "1995",
          "category": {
            "id": "1569",
            "title": "5k Walk"
          },
          "fundraisingGoal": "750.00",
          "registrant": {
            "id": "20022",
            "firstName": "Tester",
            "lastName": "Qgiv",
            "street": "50 Lake Morton Dr.",
            "city": "Lakeland",
            "state": "Florida",
            "zip": "33811",
            "country": "US",
            "phone": "8888888888",
            "email": "parent@qgiv.com"
          },
          "emergencyContact1": "0",
          "emergencyContact2": "0",
          "emailFollowup": "1",
          "showInSearch": "1",
          "showInLeaderboard": "1",
          "notifyForDonation": "1",
          "notifyForBadges": "1",
          "classification": {
            "id": "1590",
            "title": "Lakeland Walk"
          },
          "purchaseHistory": {
            "id": "3032",
            "category": "1569",
            "categoryFee": "20.00",
            "registrationTotal": "10.00",
            "promoCode": "10OFF",
            "promoCodeFee": "10.00"
          },
          "globalAccount": "24514",
          "team": "1456",
          "teamName": "SuperWalk",
          "teamCaptain": "1",
          "totalRaised": "0.00",
          "totalOnline": "0.00",
          "totalOfflineUnverified": "0.00",
          "totalOfflineVerified": "0.00",
          "registrationDate": "2016-01-28 12:25:31",
          "childRegistrations": {
            "childRegistration": {
              "id": "705",
              "form": "1995",
              "category": {
                "id": "1569",
                "title": "5k Walk"
              },
              "fundraisingGoal": "75.00",
              "registrant": {
                "id": "20023",
                "firstName": "Child",
                "lastName": "Qgiv",
                "street": "50 Lake Morton Dr.",
                "city": "Lakeland",
                "state": "Florida",
                "zip": "33811",
                "country": "US",
                "phone": "8888888888",
                "email": "child@qgiv.com"
              },
              "emergencyContact1": "0",
              "emergencyContact2": "0",
              "parentRegistration": "704",
              "emailFollowup": "1",
              "showInSearch": "1",
              "showInLeaderboard": "1",
              "notifyForDonation": "1",
              "notifyForBadges": "1",
              "classification": {
                "id": "1590",
                "title": "Seattle Walk"
              },
              "purchaseHistory": {
                "id": "3033",
                "category": "1599",
                "categoryFee": "10.00",
                "registrationTotal": "0.00",
                "promoCode": "FREECHILD",
                "promoCodeFee": "10.00"
              },
              "globalAccount": "24515",
              "team": "1456",
              "teamName": "SuperWalk",
              "teamCaptain": "0",
              "totalRaised": "0.00",
              "totalOnline": "0.00",
              "totalOfflineUnverified": "0.00",
              "totalOfflineVerified": "0.00",
              "registrationDate": "2016-01-28 12:26:02",
              "state": "1"
            }
            ...
          },
          "state": "1"
        }
        ...
      }
    }
    ...
  }
}Libraries to use :
using System.Net;
using System.Text;
using System.IO;
string postData = "token=skyMV9YeaxQ7EjbEUHt8TUiP";
HttpWebResponse resp = null;
string result = null;
try {
		HttpWebRequest req = WebRequest.Create(new Uri("GET : https://secure.qgiv.com/admin/api/reporting/registrations/last/10.xml")) as HttpWebRequest;
		req.Method = "POST";  
		req.Accept = "*/*";
		req.UserAgent = "http_request/0.1";
		req.Timeout = 50000;
		req.ContentType = "application/x-www-form-urlencoded";
		byte[] formData = UTF8Encoding.UTF8.GetBytes(postData);
		using (Stream post = req.GetRequestStream()) { 
 		post.Write(formData, 0, formData.Length);
		}
		// Pick up the response:
		resp = req.GetResponse() as HttpWebResponse;
		if (resp.StatusCode == System.Net.HttpStatusCode.OK) {
			using (resp) { 
  			StreamReader reader =
    		new StreamReader(resp.GetResponseStream());
  			result = reader.ReadToEnd();
			}
		}
} catch (Exception e) {
  	result = "error : " + e.Message;
}
String data = URLEncoder.encode("token", "UTF-8") + "=" + URLEncoder.encode("skyMV9YeaxQ7EjbEUHt8TUiP", "UTF-8");
URL url = new URL("GET : https://secure.qgiv.com/admin/api/reporting/registrations/last/10.xml");
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
String output;
while ((line = rd.readLine()) != null) {
  output += line;
}
wr.close();
rd.close();
return output;
var apiRequest = false;
var url = "GET : https://secure.qgiv.com/admin/api/reporting/registrations/last/10.xml";
var postData = "token=skyMV9YeaxQ7EjbEUHt8TUiP";
var results;
var isIE8 = window.XDomainRequest ? true : false;
if (typeof XMLHttpRequest != "undefined") {
	if(isIE8) {
		apiRequest = new Window.XDomainRequest()
	} else {
		apiRequest = new XMLHttpRequest();
	}
} else if (window.ActiveXObject) {
	var ieVersions = ["MSXML2.XMLHttp.5.0","MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp","Microsoft.XMLHttp"];
	for (var i = 0; i < ieVersions.length; i++) {
		try {
			apiRequest = new ActiveXObject(aVersions[i]);
		} catch(oError) {
			throw new Error("XMLHttp object could be created.");
		}
	}
}
if (!apiRequest) {
	alert("An error has occuerd while creating XMLHttpRequest object");
}
if (apiRequest) {
	apiRequest.open("POST", url, true);
	apiRequest.onreadystatechange = handleResponse;
	apiRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	apiRequest.send(postData);
}
function handleResponse() {
	if (apiRequest.readyState == 4) {
	if (apiRequest.status == 200) {
		results = apiRequest.responseText;
	} else {
		results = "Server response is unsuccessful";
	}
	} else {
		results = "Server response is incomplete"
	}
}
$postArray = array(
  	'token' => '[your API token]'
);
$postString = http_build_query($postArray);
$url = 'GET : https://secure.qgiv.com/admin/api/reporting/registrations/last/10.xml';
$curlHandler = curl_init();
curl_setopt($curlHandler, CURLOPT_URL, $url);
curl_setopt($curlHandler, CURLOPT_POST, true);
curl_setopt($curlHandler, CURLOPT_POSTFIELDS, $postString);
curl_setopt($curlHandler, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curlHandler, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curlHandler, CURLOPT_SSL_VERIFYHOST, false);
$response = curl_exec($curlHandler);
if (curl_errno($curlHandler)) {
	$response = 'error : '.curl_error($curlHandler);
} else {
	curl_close($curlHandler);
}
return $response;
import urllib, urllib2
postArray = {
  	'token' => '[your API token]'
}
postString = urllib.urlencode(postArray)
url = 'GET : https://secure.qgiv.com/admin/api/reporting/registrations/last/10.xml';
request = urllib2.Request(url, data=data)
try:
  response = urllib2.urlopen(request)
  result = response.read()
  response.close()
except urllib2.URLError, e:
  result = 'error : ' + str(e.code)
return result
GET : https://secure.qgiv.com/admin/api/reporting/registrations/dates/[begin]:[end]
[begin] and [end] must be valid dates in the following format: MMDDYYYY or MM-DD-YYYY
ex. /reporting/registrations/dates/01012012:12312012 or /reporting/registrations/dates/01-01-2012:12-31-2012
Timestamps can also be inputted to further filter results by using the following format: MMDDYYYY HHIISS ex. /reporting/registrations/dates/01-01-2012 083000:12-31-2012 093000
Returns all registrations associated with the current form or organization
{
  "forms": {
    "form": {
      "id": "1995",
      "registrations": {
        "registration": {
          "id": "704",
          "form": "1995",
          "category": {
            "id": "1569",
            "title": "5k Walk"
          },
          "fundraisingGoal": "750.00",
          "registrant": {
            "id": "20022",
            "firstName": "Tester",
            "lastName": "Qgiv",
            "street": "50 Lake Morton Dr.",
            "city": "Lakeland",
            "state": "Florida",
            "zip": "33811",
            "country": "US",
            "phone": "8888888888",
            "email": "parent@qgiv.com"
          },
          "emergencyContact1": "0",
          "emergencyContact2": "0",
          "emailFollowup": "1",
          "showInSearch": "1",
          "showInLeaderboard": "1",
          "notifyForDonation": "1",
          "notifyForBadges": "1",
          "classification": {
            "id": "1590",
            "title": "Lakeland Walk"
          },
          "purchaseHistory": {
            "id": "3032",
            "category": "1569",
            "categoryFee": "20.00",
            "registrationTotal": "10.00",
            "promoCode": "10OFF",
            "promoCodeFee": "10.00"
          },
          "globalAccount": "24514",
          "team": "1456",
          "teamName": "SuperWalk",
          "teamCaptain": "1",
          "totalRaised": "0.00",
          "totalOnline": "0.00",
          "totalOfflineUnverified": "0.00",
          "totalOfflineVerified": "0.00",
          "registrationDate": "2016-01-28 12:25:31",
          "childRegistrations": {
            "childRegistration": {
              "id": "705",
              "form": "1995",
              "category": {
                "id": "1569",
                "title": "5k Walk"
              },
              "fundraisingGoal": "75.00",
              "registrant": {
                "id": "20023",
                "firstName": "Child",
                "lastName": "Qgiv",
                "street": "50 Lake Morton Dr.",
                "city": "Lakeland",
                "state": "Florida",
                "zip": "33811",
                "country": "US",
                "phone": "8888888888",
                "email": "child@qgiv.com"
              },
              "emergencyContact1": "0",
              "emergencyContact2": "0",
              "parentRegistration": "704",
              "emailFollowup": "1",
              "showInSearch": "1",
              "showInLeaderboard": "1",
              "notifyForDonation": "1",
              "notifyForBadges": "1",
              "classification": {
                "id": "1590",
                "title": "Seattle Walk"
              },
              "purchaseHistory": {
                "id": "3033",
                "category": "1599",
                "categoryFee": "10.00",
                "registrationTotal": "0.00",
                "promoCode": "FREECHILD",
                "promoCodeFee": "10.00"
              },
              "globalAccount": "24515",
              "team": "1456",
              "teamName": "SuperWalk",
              "teamCaptain": "0",
              "totalRaised": "0.00",
              "totalOnline": "0.00",
              "totalOfflineUnverified": "0.00",
              "totalOfflineVerified": "0.00",
              "registrationDate": "2016-01-28 12:26:02",
              "state": "1"
            }
            ...
          },
          "state": "1"
        }
        ...
      }
    }
    ...
  }
}Libraries to use :
using System.Net;
using System.Text;
using System.IO;
string postData = "token=skyMV9YeaxQ7EjbEUHt8TUiP";
HttpWebResponse resp = null;
string result = null;
try {
		HttpWebRequest req = WebRequest.Create(new Uri("https://secure.qgiv.com/admin/api/reporting/registrations/dates/01012016:12312016.xml")) as HttpWebRequest;
		req.Method = "POST";  
		req.Accept = "*/*";
		req.UserAgent = "http_request/0.1";
		req.Timeout = 50000;
		req.ContentType = "application/x-www-form-urlencoded";
		byte[] formData = UTF8Encoding.UTF8.GetBytes(postData);
		using (Stream post = req.GetRequestStream()) { 
 		post.Write(formData, 0, formData.Length);
		}
		// Pick up the response:
		resp = req.GetResponse() as HttpWebResponse;
		if (resp.StatusCode == System.Net.HttpStatusCode.OK) {
			using (resp) { 
  			StreamReader reader =
    		new StreamReader(resp.GetResponseStream());
  			result = reader.ReadToEnd();
			}
		}
} catch (Exception e) {
  	result = "error : " + e.Message;
}
String data = URLEncoder.encode("token", "UTF-8") + "=" + URLEncoder.encode("skyMV9YeaxQ7EjbEUHt8TUiP", "UTF-8");
URL url = new URL("https://secure.qgiv.com/admin/api/reporting/registrations/dates/01012016:12312016.xml");
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
String output;
while ((line = rd.readLine()) != null) {
  output += line;
}
wr.close();
rd.close();
return output;
var apiRequest = false;
var url = "https://secure.qgiv.com/admin/api/reporting/registrations/dates/01012016:12312016.xml";
var postData = "token=skyMV9YeaxQ7EjbEUHt8TUiP";
var results;
var isIE8 = window.XDomainRequest ? true : false;
if (typeof XMLHttpRequest != "undefined") {
	if(isIE8) {
		apiRequest = new Window.XDomainRequest()
	} else {
		apiRequest = new XMLHttpRequest();
	}
} else if (window.ActiveXObject) {
	var ieVersions = ["MSXML2.XMLHttp.5.0","MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp","Microsoft.XMLHttp"];
	for (var i = 0; i < ieVersions.length; i++) {
		try {
			apiRequest = new ActiveXObject(aVersions[i]);
		} catch(oError) {
			throw new Error("XMLHttp object could be created.");
		}
	}
}
if (!apiRequest) {
	alert("An error has occuerd while creating XMLHttpRequest object");
}
if (apiRequest) {
	apiRequest.open("POST", url, true);
	apiRequest.onreadystatechange = handleResponse;
	apiRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	apiRequest.send(postData);
}
function handleResponse() {
	if (apiRequest.readyState == 4) {
	if (apiRequest.status == 200) {
		results = apiRequest.responseText;
	} else {
		results = "Server response is unsuccessful";
	}
	} else {
		results = "Server response is incomplete"
	}
}
$postArray = array(
  	'token' => '[your API token]'
);
$postString = http_build_query($postArray);
$url = 'https://secure.qgiv.com/admin/api/reporting/registrations/dates/01012016:12312016.xml';
$curlHandler = curl_init();
curl_setopt($curlHandler, CURLOPT_URL, $url);
curl_setopt($curlHandler, CURLOPT_POST, true);
curl_setopt($curlHandler, CURLOPT_POSTFIELDS, $postString);
curl_setopt($curlHandler, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curlHandler, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curlHandler, CURLOPT_SSL_VERIFYHOST, false);
$response = curl_exec($curlHandler);
if (curl_errno($curlHandler)) {
	$response = 'error : '.curl_error($curlHandler);
} else {
	curl_close($curlHandler);
}
return $response;
import urllib, urllib2
postArray = {
  	'token' => '[your API token]'
}
postString = urllib.urlencode(postArray)
url = 'https://secure.qgiv.com/admin/api/reporting/registrations/dates/01012016:12312016.xml';
request = urllib2.Request(url, data=data)
try:
  response = urllib2.urlopen(request)
  result = response.read()
  response.close()
except urllib2.URLError, e:
  result = 'error : ' + str(e.code)
return result
GET : https://secure.qgiv.com/admin/api/reporting/registrations/[id]
Returns the registration requested, individually specified by ID.
{
  "forms": {
    "form": {
      "id": "1995",
      "registration": {
          "id": "704",
          "form": "1995",
          "category": {
            "id": "1569",
            "title": "5k Walk"
          },
          "fundraisingGoal": "750.00",
          "registrant": {
            "id": "20022",
            "firstName": "Tester",
            "lastName": "Qgiv",
            "street": "50 Lake Morton Dr.",
            "city": "Lakeland",
            "state": "Florida",
            "zip": "33811",
            "country": "US",
            "phone": "8888888888",
            "email": "parent@qgiv.com"
          },
          "emergencyContact1": "0",
          "emergencyContact2": "0",
          "emailFollowup": "1",
          "showInSearch": "1",
          "showInLeaderboard": "1",
          "notifyForDonation": "1",
          "notifyForBadges": "1",
          "classification": {
            "id": "1590",
            "title": "Lakeland Walk"
          },
          "purchaseHistory": {
            "id": "3032",
            "category": "1569",
            "categoryFee": "20.00",
            "registrationTotal": "10.00",
            "promoCode": "10OFF",
            "promoCodeFee": "10.00"
          },
          "globalAccount": "24514",
          "team": "1456",
          "teamName": "SuperWalk",
          "teamCaptain": "1",
          "totalRaised": "0.00",
          "totalOnline": "0.00",
          "totalOfflineUnverified": "0.00",
          "totalOfflineVerified": "0.00",
          "registrationDate": "2016-01-28 12:25:31",
          "childRegistrations": {
            "childRegistration": {
              "id": "705",
              "form": "1995",
              "category": {
                "id": "1569",
                "title": "5k Walk"
              },
              "fundraisingGoal": "75.00",
              "registrant": {
                "id": "20023",
                "firstName": "Child",
                "lastName": "Qgiv",
                "street": "50 Lake Morton Dr.",
                "city": "Lakeland",
                "state": "Florida",
                "zip": "33811",
                "country": "US",
                "phone": "8888888888",
                "email": "child@qgiv.com"
              },
              "emergencyContact1": "0",
              "emergencyContact2": "0",
              "parentRegistration": "704",
              "emailFollowup": "1",
              "showInSearch": "1",
              "showInLeaderboard": "1",
              "notifyForDonation": "1",
              "notifyForBadges": "1",
              "classification": {
                "id": "1590",
                "title": "Seattle Walk"
              },
              "purchaseHistory": {
                "id": "3033",
                "category": "1599",
                "categoryFee": "10.00",
                "registrationTotal": "0.00",
                "promoCode": "FREECHILD",
                "promoCodeFee": "10.00"
              },
              "globalAccount": "24515",
              "team": "1456",
              "teamName": "SuperWalk",
              "teamCaptain": "0",
              "totalRaised": "0.00",
              "totalOnline": "0.00",
              "totalOfflineUnverified": "0.00",
              "totalOfflineVerified": "0.00",
              "registrationDate": "2016-01-28 12:26:02",
              "state": "1"
            }
            ...
          },
          "state": "1"
      }
    }
  }
}Libraries to use :
using System.Net;
using System.Text;
using System.IO;
string postData = "token=skyMV9YeaxQ7EjbEUHt8TUiP";
HttpWebResponse resp = null;
string result = null;
try {
		HttpWebRequest req = WebRequest.Create(new Uri("https://secure.qgiv.com/admin/api/reporting/registrations/704.xml")) as HttpWebRequest;
		req.Method = "POST";  
		req.Accept = "*/*";
		req.UserAgent = "http_request/0.1";
		req.Timeout = 50000;
		req.ContentType = "application/x-www-form-urlencoded";
		byte[] formData = UTF8Encoding.UTF8.GetBytes(postData);
		using (Stream post = req.GetRequestStream()) { 
 		post.Write(formData, 0, formData.Length);
		}
		// Pick up the response:
		resp = req.GetResponse() as HttpWebResponse;
		if (resp.StatusCode == System.Net.HttpStatusCode.OK) {
			using (resp) { 
  			StreamReader reader =
    		new StreamReader(resp.GetResponseStream());
  			result = reader.ReadToEnd();
			}
		}
} catch (Exception e) {
  	result = "error : " + e.Message;
}
String data = URLEncoder.encode("token", "UTF-8") + "=" + URLEncoder.encode("skyMV9YeaxQ7EjbEUHt8TUiP", "UTF-8");
URL url = new URL("https://secure.qgiv.com/admin/api/reporting/registrations/704.xml");
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
String output;
while ((line = rd.readLine()) != null) {
  output += line;
}
wr.close();
rd.close();
return output;
var apiRequest = false;
var url = "https://secure.qgiv.com/admin/api/reporting/registrations/704.xml";
var postData = "token=skyMV9YeaxQ7EjbEUHt8TUiP";
var results;
var isIE8 = window.XDomainRequest ? true : false;
if (typeof XMLHttpRequest != "undefined") {
	if(isIE8) {
		apiRequest = new Window.XDomainRequest()
	} else {
		apiRequest = new XMLHttpRequest();
	}
} else if (window.ActiveXObject) {
	var ieVersions = ["MSXML2.XMLHttp.5.0","MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp","Microsoft.XMLHttp"];
	for (var i = 0; i < ieVersions.length; i++) {
		try {
			apiRequest = new ActiveXObject(aVersions[i]);
		} catch(oError) {
			throw new Error("XMLHttp object could be created.");
		}
	}
}
if (!apiRequest) {
	alert("An error has occuerd while creating XMLHttpRequest object");
}
if (apiRequest) {
	apiRequest.open("POST", url, true);
	apiRequest.onreadystatechange = handleResponse;
	apiRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	apiRequest.send(postData);
}
function handleResponse() {
	if (apiRequest.readyState == 4) {
	if (apiRequest.status == 200) {
		results = apiRequest.responseText;
	} else {
		results = "Server response is unsuccessful";
	}
	} else {
		results = "Server response is incomplete"
	}
}
$postArray = array(
  	'token' => '[your API token]'
);
$postString = http_build_query($postArray);
$url = 'https://secure.qgiv.com/admin/api/reporting/registrations/704.xml';
$curlHandler = curl_init();
curl_setopt($curlHandler, CURLOPT_URL, $url);
curl_setopt($curlHandler, CURLOPT_POST, true);
curl_setopt($curlHandler, CURLOPT_POSTFIELDS, $postString);
curl_setopt($curlHandler, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curlHandler, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curlHandler, CURLOPT_SSL_VERIFYHOST, false);
$response = curl_exec($curlHandler);
if (curl_errno($curlHandler)) {
	$response = 'error : '.curl_error($curlHandler);
} else {
	curl_close($curlHandler);
}
return $response;
import urllib, urllib2
postArray = {
  	'token' => '[your API token]'
}
postString = urllib.urlencode(postArray)
url = 'https://secure.qgiv.com/admin/api/reporting/registrations/704.xml';
request = urllib2.Request(url, data=data)
try:
  response = urllib2.urlopen(request)
  result = response.read()
  response.close()
except urllib2.URLError, e:
  result = 'error : ' + str(e.code)
return result
* denotes a required field
** denotes a required field based on Event settings
*** denotes a field that is only required when submitting Form level API credentials