API : Create user + PHP sample script

  • 30 November 2011
  • 6 replies
  • 299 views

Hello,

I wanted to create a account using API : http://www.freshdesk.com/api/api_users/

But not sure how to execute this script:

curl -u {username}:{password} -H "Content-Type: application/xml" -d"{UserName}{user@customercompany.com}" -X POST http://{yourhelpdesk.freshdesk.com}/contacts.xml

Is it possible to do the same using PHP script OR do you provide any sort of PHP documentaion to execute above script in php. I am familiar with PHP curl (http://davidwalsh.name/execute-http-post-php-curl) but not sure how to send request and get response from freshdesk using your current API sample script.

Thanks in advance.


This topic has been closed for comments

6 replies

I have tried above thing using PHP curl shell_exec commad but it isn't working:

$var = shell_exec('curl -u my@secureusername.com:mypassword -H "Content-Type: application/xml" -d"rahul1 rahul221286@gmail.com" -X POST http://pageinvasion.freshdesk.com/contacts.xml');

echo $var;

It shows blank page.

This should help you:

$urltopost = "https://$yourfreshdeskurl/contacts.xml";
$header[] = "Content-type: application/xml";

$ch = curl_init ($urltopost);
curl_setopt ($ch, CURLOPT_POST, false);
curl_setopt($ch, CURLOPT_USERPWD, "$email:$password");
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);

$returndata = curl_exec ($ch);

This should get you authenticated and receive a response. 

 I coded create a ticket via API  same as your source with java but I received error:

<!-- This file lives in public/500.html --> 

<div class="dialog">  <h1>We're sorry, but something went wrong.</h1>  <p>We've been notified about this issue and we'll take a look at it shortly.</p>  </div>


Please help me 

my source:


 // Create an instance of

HttpClient.  HttpClient client = new HttpClient(); 

// Create a method instance. 

PostMethod method = new PostMethod("https://paygate.freshdesk.com/helpdesk/tickets.xml"); 

NameValuePair[] data = {  new NameValuePair("username", "***@****.net"),  new NameValuePair("password", "*****")  }; 

method.setRequestBody(data); 

method.addRequestHeader("Content-type", "application/xml");    

 // Execute the method. 

int statusCode = client.executeMethod(method);


Thank you so much


Best Regards


The reason you may be seeing a blank page if you are using Junior Hemelaer's example is because it returns xml which will not render as visible text in a browser.  try viewing the source or changing xml to json to see the results!

I have a repo here which provides a simple freshdesk wrapper: Most of the methods are geared around solutions.  But, extending for other objects would be really easy.

https://github.com/blak3r/freshdesk-solutions


Here's the simple rest wrapper function in particular:


 /**
* @param $urlMinusDomain - should start with /... example /solutions/categories.xml
* @param $method - should be either GET, POST, PUT (and theoretically DELETE but that's untested).
* @param string $postData - only specified if $method == POST or PUT
* @param $debugMode {bool} optional - prints the request and response with headers
* @return the raw response
*/
 private function restCall($urlMinusDomain, $method, $postData = '',$debugMode=false) {
 $url = "https://{$this->domain}$urlMinusDomain";

 //print "REST URL: " . $url . "\n";
 $header[] = "Content-type: application/xml";
 $ch = curl_init ($url);

 if( $method == "POST") {
 if( empty($postData) ){
 $header[] = "Content-length: 0"; // <-- seems to be unneccessary to specify this... curl does it automatically
 }
 curl_setopt ($ch, CURLOPT_POST, true);
 curl_setopt ($ch, CURLOPT_POSTFIELDS, $postData);
 }
else if( $method == "PUT" ) {
curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, "PUT" );
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postData);
}
else if( $method == "DELETE" ) {
curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, "DELETE" ); // UNTESTED!
}
 else {
 curl_setopt ($ch, CURLOPT_POST, false);
 }

 curl_setopt($ch, CURLOPT_USERPWD, "{$this->username}:{$this->password}");
 curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

 if( $debugMode ) {
 // CURLOPT_VERBOSE: TRUE to output verbose information. Writes output to STDERR,
 // or the file specified using CURLOPT_STDERR.
 curl_setopt($ch, CURLOPT_VERBOSE, true);
 $verbose = fopen('php://temp', 'rw+');
 curl_setopt($ch, CURLOPT_STDERR, $verbose);
 }

 $returndata = curl_exec ($ch);

 if( $debugMode ) {
 !rewind($verbose);
 $verboseLog = stream_get_contents($verbose);
 print $verboseLog;
 }


 $http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
 // curl_close($http);
 if( !preg_match( '/2\d\d/', $http_status ) ) {
 print "ERROR: HTTP Status Code == " . $http_status . " (302 also isn't an error)\n";
 }

 // print "\n\nREST RESPONSE: " . $returndata . "\n\n";

 return $returndata;
 }

Userlevel 4
Badge +12

Hi,




You can find some sample repos on API  here : https://github.com/freshdesk/fresh-samples . 




Cheers!