Form Cloning
This document lays out the specification of interacting with the Qgiv Form Cloning system, allowing for generating new forms based upon existing forms within your permitted organization.
Form Properties
- form (int)
- name (string)
- skin (int)
- state (int)
POST : https://secure.qgiv.com/admin/api/forms/clone
Generates a new form based upon the settings and options of the specified form to be cloned.
Input
{"form":[
{
"id":"37",
"name":"New Form Title",
}
]}
Libraries to use :
using System.Net;
using System.Text;
using System.IO;
string postData = "token=skyMV9YeaxQ7EjbEUHt8TUiP&package=[xml or json formatted input]";
HttpWebResponse resp = null;
string result = null;
try {
HttpWebRequest req = WebRequest.Create(new Uri("https://secure.qgiv.com/admin/api/forms/clone")) 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");
data += "&" + URLEncoder.encode("package", "UTF-8") + "=" URLEncoder.encode("[xml or json formatted input]", "UTF-8");
URL url = new URL("https://secure.qgiv.com/admin/api/forms/clone");
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/forms/clone";
var postData = "token=skyMV9YeaxQ7EjbEUHt8TUiP&package=[xml or json formatted input]";
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]',
'package' => '[xml or json formatted input]'
);
$postString = http_build_query($postArray);
$url = 'https://secure.qgiv.com/admin/api/forms/clone';
$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]',
'package' : '[xml or json formatted input]'
}
postString = urllib.urlencode(postArray)
url = 'https://secure.qgiv.com/admin/api/forms/clone';
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
Output
{
"form":
{
"id":"7745",
"name":"New Form Title",
"path":"newformtitle",
"skin":"637",
"state":"1",
}
}
* 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