Perl Zendesk: Create Many Tickets

Back to Index

Creates multiple Zendesk tickets in one call.

Documentation: https://developer.zendesk.com/rest_api/docs/core/tickets#create-many-tickets

CURL Command

curl -X POST https://subdomain.zendesk.com/api/v2/tickets/create_many.json \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
  "tickets": [
    {
      "subject":  "My USB port is smokin!",
      "comment":  { "body": "The smoke is very colorful." },
      "priority": "urgent"
    },
    {
      "subject":  "Help",
      "comment":  { "body": "This is a comment" },
      "priority": "normal"
    }
  ]
}' \
  -u zendesk_email:zendesk_password

Perl Example

use chilkat();

$rest = chilkat::CkRest->new();

#  URL: https://subdomain.zendesk.com/api/v2/tickets/create_many.json
$bTls = 1;
$port = 443;
$bAutoReconnect = 1;
$success = $rest->Connect("subdomain.zendesk.com",$port,$bTls,$bAutoReconnect);
if ($success != 1) {
    print "ConnectFailReason: " . $rest->get_ConnectFailReason() . "\r\n";
    print $rest->lastErrorText() . "\r\n";
    exit;
}

$rest->SetAuthBasic("zendesk_email","zendesk_password");

$json = chilkat::CkJsonObject->new();
$json->UpdateString("tickets[0].subject","My USB port is smokin!");
$json->UpdateString("tickets[0].comment.body","The smoke is very colorful.");
$json->UpdateString("tickets[0].priority","urgent");
$json->UpdateString("tickets[1].subject","Help");
$json->UpdateString("tickets[1].comment.body","This is a comment");
$json->UpdateString("tickets[1].priority","normal");

$rest->AddHeader("Content-Type","application/json");
$rest->AddHeader("Accept","application/json");

$sbRequestBody = chilkat::CkStringBuilder->new();
$json->EmitSb($sbRequestBody);
$sbResponseBody = chilkat::CkStringBuilder->new();
$success = $rest->FullRequestSb("POST","/api/v2/tickets/create_many.json",$sbRequestBody,$sbResponseBody);
if ($success != 1) {
    print $rest->lastErrorText() . "\r\n";
    exit;
}

$respStatusCode = $rest->get_ResponseStatusCode();
if ($respStatusCode >= 400) {
    print "Response Status Code = " . $respStatusCode . "\r\n";
    print "Response Header:" . "\r\n";
    print $rest->responseHeader() . "\r\n";
    print "Response Body:" . "\r\n";
    print $sbResponseBody->getAsString() . "\r\n";
    exit;
}

$jsonResponse = chilkat::CkJsonObject->new();
$jsonResponse->LoadSb($sbResponseBody);

$job_statusId = $jsonResponse->stringOf("job_status.id");
$job_statusUrl = $jsonResponse->stringOf("job_status.url");
$job_statusTotal = $jsonResponse->stringOf("job_status.total");
$job_statusProgress = $jsonResponse->stringOf("job_status.progress");
$job_statusStatus = $jsonResponse->stringOf("job_status.status");
$job_statusMessage = $jsonResponse->stringOf("job_status.message");
$job_statusResults = $jsonResponse->stringOf("job_status.results");

Sample JSON Response Body

{
  "job_status": {
    "id": "5d5531f033737e327ce44bf2e8cc6a1a",
    "url": "https://chilkat.zendesk.com/api/v2/job_statuses/5d5531f033737e327ce44bf2e8cc6a1a.json",
    "total": null,
    "progress": null,
    "status": "queued",
    "message": null,
    "results": null
  }
}