Delphi ActiveX 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

Delphi ActiveX Example

var
rest: TChilkatRest;
success: Integer;
bTls: Integer;
port: Integer;
bAutoReconnect: Integer;
json: TChilkatJsonObject;
sbRequestBody: TChilkatStringBuilder;
sbResponseBody: TChilkatStringBuilder;
respStatusCode: Integer;
jsonResponse: TChilkatJsonObject;
job_statusId: WideString;
job_statusUrl: WideString;
job_statusTotal: WideString;
job_statusProgress: WideString;
job_statusStatus: WideString;
job_statusMessage: WideString;
job_statusResults: WideString;

begin
rest := TChilkatRest.Create(Self);

//  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) then
  begin
    Memo1.Lines.Add('ConnectFailReason: ' + IntToStr(rest.ConnectFailReason));
    Memo1.Lines.Add(rest.LastErrorText);
    Exit;
  end;

rest.SetAuthBasic('zendesk_email','zendesk_password');

json := TChilkatJsonObject.Create(Self);
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 := TChilkatStringBuilder.Create(Self);
json.EmitSb(sbRequestBody.ControlInterface);
sbResponseBody := TChilkatStringBuilder.Create(Self);
success := rest.FullRequestSb('POST','/api/v2/tickets/create_many.json',sbRequestBody.ControlInterface,sbResponseBody.ControlInterface);
if (success <> 1) then
  begin
    Memo1.Lines.Add(rest.LastErrorText);
    Exit;
  end;
respStatusCode := rest.ResponseStatusCode;
if (respStatusCode >= 400) then
  begin
    Memo1.Lines.Add('Response Status Code = ' + IntToStr(respStatusCode));
    Memo1.Lines.Add('Response Header:');
    Memo1.Lines.Add(rest.ResponseHeader);
    Memo1.Lines.Add('Response Body:');
    Memo1.Lines.Add(sbResponseBody.GetAsString());
    Exit;
  end;

jsonResponse := TChilkatJsonObject.Create(Self);
jsonResponse.LoadSb(sbResponseBody.ControlInterface);

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
  }
}