You are using an unsupported browser. Please update your browser to the latest version on or before July 31, 2020.
close
You are viewing the article in preview mode. It is not live at the moment.
Home > HappyFox Help Desk > Account Configuration > Developers > API > Using API to Set Multiple-Option Custom Fields
Using API to Set Multiple-Option Custom Fields
print icon

 

HappyFox allows users to create both Ticket & Contact custom fields. These custom fields can be of different types ranging from Text, Number, Date to Multiple-Option. In this article, let us explore how a Multiple-Option custom field can be set via API using PHP. 

 

Sample Multiple-Option custom field

 

An important thing to remember about multiple-option fields is that they behave similar to lookups/drop-down. When we try to set them via API, we need to pass the “Id” of the lookup values that we have created and not the actual lookup-value itself. 

In the sample screen above, if we need to select the following values for Multiple-Option field “Additional Services”

  • Refuel

  • Thruster Cleanup

  • Shield Verification

We need to be using the corresponding Id values in API i.e

 

Note that the indexing starts from 1 onwards.

So let us consider the scenario where we try to create a ticket via API using a PHP script and we would like to set this multiple-option field “Domain” during creation itself. 

Sample php script

 <?php
 $url = <applicable happyfox url>;
 $api_key = 
 $auth_code = 
 $input = array(
     "subject" => "Ignition issues with the millenium falcon",
     "text" => "Need to get this piece of junk flying",
     "category" => 1,
     "priority" => 1,
     "email" => "hansolo@rebelalliance.com",
     "name" => "Han Solo",
     "t-cf-1" => "Chewie, we're home!",
     "t-cf-2" => array(
        1, 4, 5
     )
 );
 $data = json_encode($input);
 $headers = array(
     "Content-Type:application/json"
 );
 $ch = curl_init();
 $options = array(
     CURLOPT_URL => $url,
     CURLOPT_HEADER => true,
     CURLOPT_POST => 1,
     CURLOPT_HTTPHEADER => $headers,
     CURLOPT_POSTFIELDS => $data,
     CURLOPT_RETURNTRANSFER => true,
     CURLOPT_BINARYTRANSFER => true,
     CURLOPT_USERPWD => $api_key . ":" . $auth_code
 );
 curl_setopt_array($ch, $options);
 $result = curl_exec($ch);
 if (!curl_errno($ch)) {
     $info = curl_getinfo($ch);
     if ($info['http_code'] == 500) {
         echo "Damn! ERROR 500";
         echo var_dump($info);
     } else {
         echo 'Successful run';
         echo $result;
         echo json_decode($result, true);
     }
 }
 curl_close($ch);
 ?>
   

In the above script, we have json-encoded the data that is being used for creating the ticket. Please ensure that when json-encoded data is used, the ContentType matches the type of input data i.e “Content-Type:application/json” in this case.

Also, “Additional Services” custom field is referred to by the internal field-name “t-cf-2”. Note that, the we are passing the lookup-ids to this array instead of the actual values.

On executing this script the following ticket gets created. On the ticket-detail page, we can see the proper display values for “Additional Services” field that we set via API.

 

 

Ticket detail page

 

Feedback
0 out of 3 found this helpful

scroll to top icon