C# UWP/WinRT Zendesk: Create a Ticket

Back to Index

Creates a new Zendesk ticket.

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

CURL Command

curl -X POST https://subdomain.zendesk.com/api/v2/tickets.json \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
  "ticket": {
    "subject": "My printer is on fire!",
    "comment": {
      "body": "The smoke is very colorful."
    }
  }
}' \
  -u zendesk_email:zendesk_password

C# UWP/WinRT Example

Chilkat.Rest rest = new Chilkat.Rest();
bool success;

//  URL: https://subdomain.zendesk.com/api/v2/tickets.json
bool bTls = true;
int port = 443;
bool bAutoReconnect = true;
success = await rest.ConnectAsync("subdomain.zendesk.com",port,bTls,bAutoReconnect);
if (success != true) {
    Debug.WriteLine("ConnectFailReason: " + Convert.ToString(rest.ConnectFailReason));
    Debug.WriteLine(rest.LastErrorText);
    return;
}

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

Chilkat.JsonObject json = new Chilkat.JsonObject();
json.UpdateString("ticket.subject","My printer is on fire!");
json.UpdateString("ticket.comment.body","The smoke is very colorful.");

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

Chilkat.StringBuilder sbRequestBody = new Chilkat.StringBuilder();
json.EmitSb(sbRequestBody);
Chilkat.StringBuilder sbResponseBody = new Chilkat.StringBuilder();
success = await rest.FullRequestSbAsync("POST","/api/v2/tickets.json",sbRequestBody,sbResponseBody);
if (success != true) {
    Debug.WriteLine(rest.LastErrorText);
    return;
}

int respStatusCode = rest.ResponseStatusCode;
if (respStatusCode >= 400) {
    Debug.WriteLine("Response Status Code = " + Convert.ToString(respStatusCode));
    Debug.WriteLine("Response Header:");
    Debug.WriteLine(rest.ResponseHeader);
    Debug.WriteLine("Response Body:");
    Debug.WriteLine(sbResponseBody.GetAsString());
    return;
}

Chilkat.JsonObject jsonResponse = new Chilkat.JsonObject();
jsonResponse.LoadSb(sbResponseBody);

string ticketUrl;
int ticketId;
string ticketExternal_id;
string ticketViaChannel;
string ticketViaSourceRel;
string ticketCreated_at;
string ticketUpdated_at;
string ticketType;
string ticketSubject;
string ticketRaw_subject;
string ticketDescription;
string ticketPriority;
string ticketStatus;
string ticketRecipient;
int ticketRequester_id;
int ticketSubmitter_id;
int ticketAssignee_id;
int ticketOrganization_id;
int ticketGroup_id;
string ticketForum_topic_id;
string ticketProblem_id;
bool ticketHas_incidents;
bool ticketIs_public;
string ticketDue_at;
string ticketSatisfaction_rating;
int ticketBrand_id;
bool ticketAllow_channelback;
int auditId;
int auditTicket_id;
string auditCreated_at;
int auditAuthor_id;
string auditMetadataSystemIp_address;
string auditMetadataSystemLocation;
int auditMetadataSystemLatitude;
int auditMetadataSystemLongitude;
string auditViaChannel;
string auditViaSourceRel;
int i;
int count_i;
int id;
string type;
int author_id;
string body;
string html_body;
string plain_body;
bool public;
int audit_id;
string value;
string field_name;
string viaChannel;
bool viaSourceFromDeleted;
string viaSourceFromTitle;
int viaSourceFromId;
string viaSourceRel;
string subject;
int j;
int count_j;
int intVal;

ticketUrl = jsonResponse.StringOf("ticket.url");
ticketId = jsonResponse.IntOf("ticket.id");
ticketExternal_id = jsonResponse.StringOf("ticket.external_id");
ticketViaChannel = jsonResponse.StringOf("ticket.via.channel");
ticketViaSourceRel = jsonResponse.StringOf("ticket.via.source.rel");
ticketCreated_at = jsonResponse.StringOf("ticket.created_at");
ticketUpdated_at = jsonResponse.StringOf("ticket.updated_at");
ticketType = jsonResponse.StringOf("ticket.type");
ticketSubject = jsonResponse.StringOf("ticket.subject");
ticketRaw_subject = jsonResponse.StringOf("ticket.raw_subject");
ticketDescription = jsonResponse.StringOf("ticket.description");
ticketPriority = jsonResponse.StringOf("ticket.priority");
ticketStatus = jsonResponse.StringOf("ticket.status");
ticketRecipient = jsonResponse.StringOf("ticket.recipient");
ticketRequester_id = jsonResponse.IntOf("ticket.requester_id");
ticketSubmitter_id = jsonResponse.IntOf("ticket.submitter_id");
ticketAssignee_id = jsonResponse.IntOf("ticket.assignee_id");
ticketOrganization_id = jsonResponse.IntOf("ticket.organization_id");
ticketGroup_id = jsonResponse.IntOf("ticket.group_id");
ticketForum_topic_id = jsonResponse.StringOf("ticket.forum_topic_id");
ticketProblem_id = jsonResponse.StringOf("ticket.problem_id");
ticketHas_incidents = jsonResponse.BoolOf("ticket.has_incidents");
ticketIs_public = jsonResponse.BoolOf("ticket.is_public");
ticketDue_at = jsonResponse.StringOf("ticket.due_at");
ticketSatisfaction_rating = jsonResponse.StringOf("ticket.satisfaction_rating");
ticketBrand_id = jsonResponse.IntOf("ticket.brand_id");
ticketAllow_channelback = jsonResponse.BoolOf("ticket.allow_channelback");
auditId = jsonResponse.IntOf("audit.id");
auditTicket_id = jsonResponse.IntOf("audit.ticket_id");
auditCreated_at = jsonResponse.StringOf("audit.created_at");
auditAuthor_id = jsonResponse.IntOf("audit.author_id");
auditMetadataSystemIp_address = jsonResponse.StringOf("audit.metadata.system.ip_address");
auditMetadataSystemLocation = jsonResponse.StringOf("audit.metadata.system.location");
auditMetadataSystemLatitude = jsonResponse.IntOf("audit.metadata.system.latitude");
auditMetadataSystemLongitude = jsonResponse.IntOf("audit.metadata.system.longitude");
auditViaChannel = jsonResponse.StringOf("audit.via.channel");
auditViaSourceRel = jsonResponse.StringOf("audit.via.source.rel");
i = 0;
count_i = jsonResponse.SizeOfArray("ticket.collaborator_ids");
while (i < count_i) {
    jsonResponse.I = i;
    i = i + 1;
}

i = 0;
count_i = jsonResponse.SizeOfArray("ticket.follower_ids");
while (i < count_i) {
    jsonResponse.I = i;
    i = i + 1;
}

i = 0;
count_i = jsonResponse.SizeOfArray("ticket.email_cc_ids");
while (i < count_i) {
    jsonResponse.I = i;
    i = i + 1;
}

i = 0;
count_i = jsonResponse.SizeOfArray("ticket.tags");
while (i < count_i) {
    jsonResponse.I = i;
    i = i + 1;
}

i = 0;
count_i = jsonResponse.SizeOfArray("ticket.custom_fields");
while (i < count_i) {
    jsonResponse.I = i;
    i = i + 1;
}

i = 0;
count_i = jsonResponse.SizeOfArray("ticket.sharing_agreement_ids");
while (i < count_i) {
    jsonResponse.I = i;
    i = i + 1;
}

i = 0;
count_i = jsonResponse.SizeOfArray("ticket.fields");
while (i < count_i) {
    jsonResponse.I = i;
    i = i + 1;
}

i = 0;
count_i = jsonResponse.SizeOfArray("ticket.followup_ids");
while (i < count_i) {
    jsonResponse.I = i;
    i = i + 1;
}

i = 0;
count_i = jsonResponse.SizeOfArray("audit.events");
while (i < count_i) {
    jsonResponse.I = i;
    id = jsonResponse.IntOf("audit.events[i].id");
    type = jsonResponse.StringOf("audit.events[i].type");
    author_id = jsonResponse.IntOf("audit.events[i].author_id");
    body = jsonResponse.StringOf("audit.events[i].body");
    html_body = jsonResponse.StringOf("audit.events[i].html_body");
    plain_body = jsonResponse.StringOf("audit.events[i].plain_body");
    public = jsonResponse.BoolOf("audit.events[i].public");
    audit_id = jsonResponse.IntOf("audit.events[i].audit_id");
    value = jsonResponse.StringOf("audit.events[i].value");
    field_name = jsonResponse.StringOf("audit.events[i].field_name");
    viaChannel = jsonResponse.StringOf("audit.events[i].via.channel");
    viaSourceFromDeleted = jsonResponse.BoolOf("audit.events[i].via.source.from.deleted");
    viaSourceFromTitle = jsonResponse.StringOf("audit.events[i].via.source.from.title");
    viaSourceFromId = jsonResponse.IntOf("audit.events[i].via.source.from.id");
    viaSourceRel = jsonResponse.StringOf("audit.events[i].via.source.rel");
    subject = jsonResponse.StringOf("audit.events[i].subject");
    j = 0;
    count_j = jsonResponse.SizeOfArray("audit.events[i].attachments");
    while (j < count_j) {
        jsonResponse.J = j;
        j = j + 1;
    }

    j = 0;
    count_j = jsonResponse.SizeOfArray("audit.events[i].recipients");
    while (j < count_j) {
        jsonResponse.J = j;
        intVal = jsonResponse.IntOf("audit.events[i].recipients[j]");
        j = j + 1;
    }

    i = i + 1;
}

Sample JSON Response Body

{
  "ticket": {
    "url": "https://chilkat.zendesk.com/api/v2/tickets/7.json",
    "id": 7,
    "external_id": null,
    "via": {
      "channel": "api",
      "source": {
        "from": {},
        "to": {},
        "rel": null
      }
    },
    "created_at": "2018-04-15T18:13:15Z",
    "updated_at": "2018-04-15T18:13:15Z",
    "type": null,
    "subject": "My printer is on fire!",
    "raw_subject": "My printer is on fire!",
    "description": "The smoke is very colorful.",
    "priority": null,
    "status": "open",
    "recipient": null,
    "requester_id": 361801727573,
    "submitter_id": 361801727573,
    "assignee_id": 361801727573,
    "organization_id": 360015071793,
    "group_id": 360000681553,
    "collaborator_ids": [
    ],
    "follower_ids": [
    ],
    "email_cc_ids": [
    ],
    "forum_topic_id": null,
    "problem_id": null,
    "has_incidents": false,
    "is_public": true,
    "due_at": null,
    "tags": [
    ],
    "custom_fields": [
    ],
    "satisfaction_rating": null,
    "sharing_agreement_ids": [
    ],
    "fields": [
    ],
    "followup_ids": [
    ],
    "brand_id": 360000471533,
    "allow_channelback": false
  },
  "audit": {
    "id": 391248331553,
    "ticket_id": 7,
    "created_at": "2018-04-15T18:13:15Z",
    "author_id": 361801727573,
    "metadata": {
      "system": {
        "ip_address": "52.25.83.238",
        "location": "Boardman, OR, United States",
        "latitude": 45.86959999999999,
        "longitude": -119.688
      },
      "custom": {}
    },
    "events": [
      {
        "id": 391248331653,
        "type": "Comment",
        "author_id": 361801727573,
        "body": "The smoke is very colorful.",
        "html_body": "<div class=\"zd-comment\"><p dir=\"auto\">The smoke is very colorful.</p></div>",
        "plain_body": "The smoke is very colorful.",
        "public": true,
        "attachments": [
        ],
        "audit_id": 391248331553
      },
      {
        "id": 391248331833,
        "type": "Create",
        "value": "My printer is on fire!",
        "field_name": "subject"
      },
      {
        "id": 391248331973,
        "type": "Create",
        "value": "361801727573",
        "field_name": "requester_id"
      },
      {
        "id": 391248332053,
        "type": "Create",
        "value": "open",
        "field_name": "status"
      },
      {
        "id": 391248332193,
        "type": "Create",
        "value": null,
        "field_name": "priority"
      },
      {
        "id": 391248332313,
        "type": "Create",
        "value": null,
        "field_name": "type"
      },
      {
        "id": 391248332353,
        "type": "Create",
        "value": "361801727573",
        "field_name": "assignee_id"
      },
      {
        "id": 391248332373,
        "type": "Create",
        "value": "360000681553",
        "field_name": "group_id"
      },
      {
        "id": 391248332393,
        "type": "Create",
        "value": "360015071793",
        "field_name": "organization_id"
      },
      {
        "id": 391248332413,
        "type": "Notification",
        "via": {
          "channel": "rule",
          "source": {
            "from": {
              "deleted": false,
              "title": "Notify requester of received request",
              "id": 360018516913
            },
            "rel": "trigger"
          }
        },
        "subject": "[Request received] {{ticket.title}}",
        "body": "Your request ({{ticket.id}}) has been received and is being reviewed by our support staff.\n\nTo add additional comments, reply to this email.\n\n{{ticket.comments_formatted}}",
        "recipients": [
          361801727573
        ]
      },
      {
        "id": 391248332433,
        "type": "Notification",
        "via": {
          "channel": "rule",
          "source": {
            "from": {
              "deleted": false,
              "title": "Notify all agents of received request",
              "id": 360018517033
            },
            "rel": "trigger"
          }
        },
        "subject": "[{{ticket.account}}] {{ticket.title}}",
        "body": "A ticket (#{{ticket.id}}) by {{ticket.requester.name}} has been received. It is unassigned.\n\n{{ticket.comments_formatted}}",
        "recipients": [
          361801727573
        ]
      }
    ],
    "via": {
      "channel": "api",
      "source": {
        "from": {},
        "to": {},
        "rel": null
      }
    }
  }
}