Introduction

The Freshservice API

Freshservice is a cloud-based IT Service Management solution that was designed using ITIL best practices. Freshservice helps IT organizations streamline their service delivery processes with a strong focus on user experience and employee happiness.

Freshservice's APIs belong to the Representational State Transfer (REST) category. They allow you to perform 'RESTful' operations such as reading, modifying, adding or deleting data from your service desk. The APIs also support Cross-Origin Resource Sharing (CORS).

Note: This documentation is for the v2.0 of the APIs. Documentation for the v1.0 APIs can be found here.

What API commands are used by Freshservice?

Freshservice APIs are plain JSON over HTTP and use the following HTTP verbs:

Command Purpose
POST Create an object
GET Fetch one or more objects
PUT Update an object / Restore an object
DELETE Remove an object

Note: All API requests should hit the secured endpoint i.e. only HTTPS

What's New?

Version 2 of the API brings several new features as well as changes to the previous APIs. This section highlights some of the new features introduced in v2.

  1. Higher rate limits as a result of significant performance enhancements
  2. Improved error handling - errors will return appropriate HTTP status codes and an error body
  3. New APIs that enable you to Reply to a ticket and enhancements to existing APIs that enable you to Update a ticket's description, Update a ticket's notes, and Retrieve a list of tickets that have been recently modified
  4. Only JSON is supported in V2
  5. Only SSL calls (HTTPS) will be allowed
  6. Works only via Freshservice domains and not via custom CNAMEs
  7. Support for page sizes up to 100 has been added

Rate limit

Freshservice accounts created on or after 01-Sep-2020 will use minute-level rate limiting. The limits vary based on the Freshservice plan. Certain API operations also have sublimits within the overall limit. This limit is applied on an account wide basis irrespective of factors such as the number of agents or IP addresses used to make the calls.

Action Rate Limit/Min
Starter Growth Pro Enterprise
Overall Limit 100 200 400 500
Sub Limits
List All Tickets 40 70 120 140
View Ticket 50 80 140 160
Create Ticket 50 80 140 160
Update Ticket 50 80 140 160
List All Assets 40 70 120 140
Update Asset 50 80 140 160
List All Agents 40 70 120 140
List All Requesters 40 70 120 140

Note:
1. Please follow the best practices to stay under the rate limit.
2. If you need more than the default limit, please contact us.
3. Even invalid requests will count towards the rate limit.
4. Embedding additional resources will consume 1 credit if performed from a SHOW action, and 3 credits if performed from a LIST action.
5. Some custom apps (freshplugs) consume API calls which also count towards the rate limit.

You can check your current rate limit status by looking at the following HTTP headers which are returned in response to every API request.

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
X-Ratelimit-Total: 3000
X-Ratelimit-Remaining: 998
X-Ratelimit-Used-CurrentRequest: 1
X-Freshservice-Api-Version: latest=v2; requested=v2

Header Name Description
X-RateLimit-Total Total number of API calls allowed per hour.
X-RateLimit-Remaining The number of requests remaining in the current rate limit window.
X-RateLimit-Used-CurrentRequest The number of API calls consumed by the current request. Most API requests consume one call, however, including additional information in the response will consume more calls.
Retry-After The number in seconds that you will have to wait to fire your next API request. This header will be returned only when the rate limit has been reached.

If your API request is received after the rate limit has been reached, Freshservice will return an error in the response. The Retry-After value in the response header will tell you how long you need to wait before you can send another API request.

HTTP/1.1 429
Content-Type: application/json; charset=utf-8
Retry-After: 1521

Policies

Freshservice APIs are classified into either production or beta APIs. A production API is one that has been made available for public use and is stable. A beta API is one that is still in development or is for internal or limited use and whose stability cannot be guaranteed. Beta APIs may be removed or modified at any time without advance notice. Please note that the following policies apply to production APIs only.

Deprecation Policy

The scope of the V2 API is currently limited to only tickets and conversations. Once all modules are made available through the API, API V1 would be deprecated after a given notice period.

Breaking Change Policy

Changes that do not break an API, such as adding a new attribute can be made at any time. Changes that break a production level API such as removing attributes or making major changes to the API’s behavior will only be done with an advance notice of 60 days. However, there may be rare occasions where due to legal, performance, or security reasons, we are forced to make breaking changes without advance notice.

Changelog

April 2024
  • Freshservice APIs support Oauth authentication. Refer scopes required against the respective APIs.
  • 'Create a Child Ticket' API allows creating incidents as child tickets for SR/Case/Query/Issue/Request apart from an incident.
  • 'Create a Child Service Request' API allows creating SR/Case/Query/Issue/Request as child ticket for an Incident/Major Incident also.
Dec 2023
  • List All Groups will return agent groups only from the specified workspace, or the primary workspace if workspace_id is not specified.
Oct 2023
  • Restricted groups are supported in all workspaces
Sep 2023
  • Audit logs of requesters ("type": ["requester"]) can be exported
  • Audit logs of a requester ("requester_id": number) can be exported
Aug 2023

Following attributes are no longer supported:

In the object "Agent"

  • Attribute ticket_scope is no longer supported. Instead use roles -> assignment_scope
  • Attribute problem_scope is no longer supported. Instead use roles -> assignment_scope
  • Attribute change_scope is no longer supported. Instead use roles -> assignment_scope
  • Attribute release_scope is no longer supported. Instead use roles -> assignment_scope
  • Attribute scopes is no longer supported. Instead use roles -> assignment_scope
  • Attribute group_ids is no longer supported. Instead use member_of and observer_of
  • Attribute role_ids is no longer supported. Instead use roles -> role_id

In the object "group"

  • Attribute agent_ids is no longer supported. Instead use members and observers
June 2023
  • Username and password-based basic authentication of Freshservice APIs is no longer supported. Instead use basic auth with API Key authentication.
Sept 2017
  • Initial version - V2 APIs for tickets and conversations

Authentication

How does it work? Who can access my helpdesk? Can everybody see my data?

Before you can set the priority of a ticket or change a customer's name or use any of the APIs listed above, you need to "authenticate your ID" or "log in" in the same way you log in to your helpdesk's web portal.

You can use your personal API key to authenticate the request. If you use the API key, there is no need for a password. You can use any set of characters as a dummy password.

curl -v -u apikey:X -H "Content-Type: application/json" -X GET 'https://domain.freshservice.com/api/v2/tickets'

For example, if your API key is abcdefghij1234567890, the curl command to use is:

curl -v -u abcdefghij1234567890:X -H "Content-Type: application/json" -X GET 'https://domain.freshservice.com/api/v2/tickets'

Where can I find my API key?

  1. Login to your Support Portal
  2. Click on your profile picture on the top right corner of your portal
  3. Go to Profile settings Page
  4. Your API key will be available below the change password section to your right

Freshservice supports Basic Access Authorization only with API key.

curl -v -u api_key:X -H "Content-Type: application/json" -X 'GET https://domain.freshservice.com/api/v2/tickets'

Note:
  • If you are sure that your API key is correct, but are still unable to access your helpdesk, make sure that your "APIkey:X" is Base64-encoded before passing it as an "Authorization" header.
  • Username/password basic authentication is deprecated as of May 31st 2023. See the solution here for more details.

What are the resources available via the API?

Every single piece of information - be it a customer's ID or the priority of a specific ticket - can be identified by its own unique identifier or "URI". If you want your data from the helpdesk, whether via your smartphone app or via a third party service, you need this identifier. All URIs follow a specific format and that format is:

https://your_helpdesk_domain_name/api/v2/resource_name

For example, if you are the admin of the Freshservice portal "acmeinc.freshservice.com", then to access the tickets in your helpdesk, the syntax would be

https://acmeinc.freshservice.com/api/v2/tickets

Note: We have shortened API resource URLs throughout this document by omitting the domain name. For example, /api/v2/tickets is actually https://domain.freshservice.com/api/v2/tickets

Will everyone have the same access rights?

No, everyone will not have the same access rights. Your ability to access data depends on the permissions available for your freshservice profile. If your freshservice Agent Role is "Newbie Agent" who is not allowed to answer to tickets, but is only allowed to view them, then the APIs will restrict you from answering and you'll only be able to view the tickets.

Schema

Blank Fields:

Blank fields are included as null instead of being omitted.

Timestamps:

All timestamps are returned in the UTC format, YYYY-MM-DDTHH:MM:SSZ. ( Example : 2016-02-13T23:27:49Z )

Date Fields:

Input for date fields is expected to be in one of the following formats:

YYYY-MM-DD
YYYY-MM-DDTHH:MM
YYYY-MM-DDTHH:MMZ
YYYY-MM-DDTHH:MM:SS
YYYY-MM-DDTHH:MM:SSZ
YYYY-MM-DDTHH:MM:SS±hh:mm
YYYY-MM-DDTHH:MM:SS±hh
YYYY-MM-DDTHH:MM:SS±hhmm

If the time zone information is not present, it will be assumed to be in UTC.
( some valid datefields : 2016-02-15T21:16:25Z, 2012-12-24T12:56:15+05:30, 2010-03-23T12:00 )
For more details on date format : ISO 8601

Location Header:

POST requests will contain the Location Header in the response that points to the URL of the created resource.

Response
HTTP STATUS: HTTP 201 Created
Headers:
"Location": https://domain.freshservice.com/api/v2/tickets/1

Embedding

Our previous version of APIs returned a large number of fields by default. In order to increase performance and reduce data usage, we have removed several of these fields in our v2.0 APIs. For example, when you view a ticket, we no longer return the requester's name or the company name. However, there may be situations where these fields are required and hence, we have included a mechanism to embed additional resources into an API call in order to minimise the number of required API calls.

Note: Embedding resources into an API that returns a single object will consume an additional API call credit per embedded resource while embedding into APIs that return a collection of objects will consume two additional credits.

You can request for additional resources using the "include" keyword. For example you can embed the requester's details within the ticket view API by using the following command

Request
1
curl -v -u 'abcdefgh12345678:X' -X GET 'https://domain.freshservice.com/api/v2/tickets/20?include=requester'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
{ "ticket": { "cc_emails": [], "fwd_emails": [], "reply_cc_emails": [], "fr_escalated": true, "spam": false, "email_config_id": null, "group_id": null, "priority": 4, "requester_id": 1000000542, "responder_id": null, "source": 2, "status": 2, "subject": "New child ticket via Agent Login -qhxorxcb", "to_emails": null, "sla_policy_id": 1000000029, "department_id": 1000000226, "id": 259, "type": "Incident", "due_by": "2017-09-06T12:32:14Z", "fr_due_by": "2017-09-06T09:32:14Z", "is_escalated": true, "description": "<div style=\"font-size: 13px; font-family: Helvetica Neue,Helvetica,Arial,sans-serif;\">New child ticket ticket via Agent Login</div>", "description_text": "New child ticket ticket via Agent Login", "custom_fields": { "auto_checkbox": false }, "created_at": "2017-09-06T08:32:14Z", "updated_at": "2017-09-06T08:32:14Z", "urgency": 1, "impact": 1, "category": null, "sub_category": null, "item_category": null, "deleted": false, "attachments": [], "requester": { "id": 1000000542, "name": "FS Requester1", "email": "fs.req12@gmail.com", "mobile": "", "phone": "" } } }
EXPAND ↓

Attachments

Attachments are supported for the following endpoints

Please follow the guidelines listed below

  • Only files on your local machine can be attached using API.
  • The Content-Type should always be multipart/form-data for create/update requests with attachments.
  • The name of the file is preserved after it is attached i.e the filename sent in the response will be the same as the one in the request.

Errors

I have encountered an error. How do I debug it?

API requests that result in errors will return an appropriate HTTP status code to help you identify the type of error. You can use the table below to understand what each code means.

HTTP STATUS CODE TEXT DESCRIPTION
400 Client or Validation Error The request body/query string is not in the correct format. For example, the Create a ticket API requires the requester_id field to be sent as part of the request and if it is missing, this status code is returned.

Also, requests containing a deprecated or invalid attribute will result in this error. For example, if ticket_scope, problem_scope or any of the deprecated attributes are sent in the API requests to /api/v2/agents then this error is returned.
401 Authentication Failure Indicates that the Authorization header is either missing or incorrect. For example, if you send an API request containing username/password then authentication will fail with this error. You can learn more about the Authorization header here.
403 Access Denied This indicates that the agent whose credentials were used for making this request was not authorized to perform this API call. It could be that this API call requires admin level credentials or perhaps the Freshservice portal doesn't have the corresponding feature enabled. It could also indicate that the user has reached the maximum number of failed login attempts or that the account has reached the maximum number of agents.
404 Requested Resource not Found This status code is returned when the request contains invalid ID/Freshservice domain in the URL or an invalid URL itself. For example, an API call to retrieve a ticket with an invalid ID will return an HTTP 404 status code to let you know that no such ticket exists.
405 Method not allowed This API request used the wrong HTTP verb/method. For example an API PUT request on /api/v2/tickets endpoint will return an HTTP 405 as /api/v2/tickets allows only GET and POST requests.
406 Unsupported Accept Header Only application/json and */* are supported.
When uploading files multipart/form-data is supported.
409 Inconsistent/Conflicting State The resource that is being created/updated is in an inconsistent or conflicting state.
415 Unsupported Content-type Content type application/xml is not supported. Only application/json is supported.
429 Rate Limit Exceeded The API rate limit allotted for your Freshservice domain has been exhausted.
500 Unexpected Server Error You can't do much here. This indicates an error at Freshservice's side. Please email us your script which invokes our API, along with the response headers. We will work with you to fix the issue.

Error Response

In addition to the HTTP status code, most errors will also return a response body that contains more information to help you debug the error. A sample error response is shown below. The format of the error response body is explained after the example.

Error Response Fields

FIELD DESCRIPTION
field The request field that triggered this error. Applicable to HTTP 400 errors only.
message Detailed error message.
code Custom error code that is machine-parseable.

Error Codes

In addition to the the error message, the error response will also contain an error code that is machine-parseable. The following table lists the error codes and their descriptions.

CODE DESCRIPTION
missing_field A mandatory attribute is missing. For example, calling Create a Ticket without the mandatory description in the request will result in this error.
invalid_value This code indicates that a request contained an incorrect or blank value, or was in an invalid format.
duplicate_value Indicates that this value already exists.
datatype_mismatch Indicates that the field value doesn't match the expected data type. For instance, entering text in a numerical field would trigger this error.
invalid_field An unexpected field was part of the request. If any additional field is included in the request payload (other than what is specified in the API documentation), this error will occur.
invalid_json Request parameter is not a valid JSON. We recommend that you validate the JSON payload with a JSON validator before firing the API request.
invalid_credentials Incorrect or missing API credentials. As the name suggests, it indicates that the API request was made with invalid credentials. Forgetting to apply Base64 encoding on the API key is a common cause of this error.
access_denied Insufficient privileges to perform this action. An agent attempting to access admin APIs will result in this error.
require_feature Not allowed since a specific feature has to be enabled in your Freshservice portal for you to perform this action.
account_suspended Account has been suspended.
ssl_required HTTPS is required in the API URL.
readonly_field Read only field cannot be altered.
password_lockout The agent has reached the maximum number of failed login attempts.
password_expired The agent's password has expired.
no_content_required No JSON data required.
inaccessible_field The agent is not authorized to update this field.
incompatible_field The field cannot be updated due to the current state of the record.
unsupported_authentication_type API request is made with an unsupported authentication type such as username/password.
access_token_expired API request is made with an expired Oauth access token. Obtain a new access token using the refresh token and retry the request.
access_token_invalid API request is made with Oauth token with invalid signature or invalid scope(s) or an account which is no longer part of the Freshworks organization for which the token was issued.
Response
1
2
3
4
5
6
7
8
9
10
{ "description":"Validation failed", "errors":[ { "field":"name", "message":"Mandatory attribute missing", "code":"missing_field" } ] }
EXPAND ↓

Best Practices

Rate Limit

  • Whenever possible, please queue API calls at your end. This ensures that you can buffer calls on your end to avoid hitting the rate limit and retry API calls when you hit the rate limit after the retry-after time.
  • Cache non-volatile data on your end whenever it is feasible. For e.g. the mapping between agent name and ID is extremely unlikely to change. Hence, by caching it on the client side, you will be able to avoid API calls.
  • As soon as you recognise that a rate limit increase will be required in the future, contact us. This will make it possible for us to ensure that we are prepared to increase the limit as and when needed.

Others

  • Avoid making API calls directly from a mobile app. Instead, send the request to your servers and make the API calls from there. This ensures that in the event of an API endpoint being modified, you will be able to make and deploy the change to your server rather than updating your app and forcing your users to the latest version.
  • Always use HTTP connection/multiplexing when making the API request. This will save some time while opening TCP connection to Freshservice.
  • When retrieving a list of objects, avoid making calls referencing page numbers over 500 (deep pagination). These are performance intensive calls and you may suffer from extremely long response times.

API Index

Category Create View View List Update Delete Others
Tickets Yes Yes Yes Yes Yes 29 more
Conversations Yes No Yes Yes Yes 2 more
Problems Yes Yes Yes Yes Yes 18 more
Changes Yes Yes Yes Yes Yes 18 more
Releases Yes Yes Yes Yes Yes 19 more
CABs Yes Yes Yes Yes Yes
Workspaces No Yes Yes No No
Approvals No No Yes No No
Requesters Yes Yes Yes Yes Yes 7 more
Agents Yes Yes Yes Yes Yes 6 more
Agent Roles No Yes Yes No No
Agent Groups Yes Yes Yes Yes Yes
Requester Groups Yes Yes Yes Yes Yes 3 more
Locations Yes Yes Yes Yes Yes 1 more
Products Yes Yes Yes Yes Yes
Vendors Yes Yes Yes Yes Yes
Assets Yes Yes Yes Yes Yes 15 more
Purchase Order Yes Yes Yes Yes Yes 1 more
Asset Types Yes Yes Yes Yes Yes 1 more
Software Yes Yes Yes Yes Yes 12 more
Contracts Yes Yes Yes Yes No 10 more
Departments Yes Yes Yes Yes Yes 2 more
Business Hours No Yes Yes No No
Projects Yes Yes Yes Yes Yes 2 more
Project Tasks Yes Yes Yes Yes Yes
Projects NewGen Yes Yes Yes Yes Yes 9 more
Project Tasks NewGen Yes Yes Yes Yes Yes 17 more
Solution Category Yes Yes Yes Yes Yes
Solution Folder Yes Yes Yes Yes Yes 1 more
Solution Article Yes Yes Yes Yes Yes 6 more
Service Catalog Yes Yes Yes No No 2 more
Announcements Yes Yes Yes Yes Yes
Employee Onboarding Yes Yes Yes No No 2 more
Employee Offboarding Yes Yes Yes No No 2 more
Oncall management Yes Yes Yes Yes Yes 19 more
Custom Objects Yes No Yes Yes Yes 2 more
SLA Policies No No Yes No No
Canned Responses No Yes Yes No No 3 more
Audit Logs No No No No No 1 more
Attachment No Yes No No No 1 more

Tickets

This section lists all API that can be used to create, edit or otherwise manipulate tickets.

Attribute Type Description
id number Unique ID of the ticket.
workspace_id number ID of the workspace that the ticket belongs to. If not provided, the ID of the primary workspace will be defaulted. Applicable only to accounts on the Employee Support Mode.
attachments array of objects Ticket attachments. The total size of these attachments cannot exceed 40 MB.
cc_emails array of strings Email addresses added in the 'cc' field of the incoming ticket email.
department_id number ID of the department to which this ticket belongs.
custom_fields dictionary Key value pairs containing the names and values of custom fields. Read more here.
deleted boolean Set to true if the ticket has been deleted/trashed. Deleted tickets will not be displayed in any views except the "deleted" filter.
description string HTML content of the ticket.
description_text string Content of the ticket in plain text.
due_by datetime Timestamp that denotes when the ticket is due to be resolved.
email string Email address of the requester. If no contact exists with this email address in Freshservice, it will be added as a new contact.
email_config_id number ID of email config which is used for this ticket. (i.e., support@yourcompany.com/sales@yourcompany.com)
fr_due_by datetime Timestamp that denotes when the first response is due.
fr_escalated boolean Set to true if the ticket has been escalated as a result of the first response time being breached.
fwd_emails array of strings Email addresses added while forwarding a ticket.
group_id number ID of the group to which the ticket has been assigned.
is_escalated boolean Set to true if the ticket has been escalated for any reason.
name string Name of the requester.
phone string Phone number of the requester. If no contact exists with this phone number in Freshservice, it will be added as a new contact. If the phone number is set and the email address is not, then the name attribute is mandatory.
priority number Priority of the ticket.
category number Ticket Category.
sub_category string Ticket sub category.
item_category string Ticket item category.
reply_cc_emails array of strings Email addresses added while replying to a ticket.
requester_id number User ID of the requester. For existing contacts, the requester_id can be passed instead of the requester's email.
responder_id number ID of the agent to whom the ticket has been assigned.
source number The channel through which the ticket was created.
spam boolean Set to true if the ticket has been marked as spam.
status number Status of the ticket.
subject string Subject of the ticket.
tags array of strings Tags that have been associated with the ticket.
to_emails Array of strings Email addresses to which the ticket was originally sent.
type string Helps categorize the ticket according to the different kinds of issues your support team deals with. [Support for only type ‘incident’ as of now]
created_at datetime Ticket creation timestamp.
updated_at datetime Ticket updated timestamp.
urgency number Ticket urgency.
impact number Ticket impact.
resolution_notes string Content of the ticket resolution note in plain text
resolution_notes_html string HTML content of the ticket resolution note

Ticket Properties

Every ticket uses certain fixed numerical values to denote its Status and Priorities. These numerical values along with their meanings are given below.

Source Type Value
Email 1
Portal 2
Phone 3
Chat 4
Feedback widget 5
Yammer 6
AWS Cloudwatch 7
Pagerduty 8
Walkup 9
Slack 10
Status Value
Open 2
Pending 3
Resolved 4
Closed 5
Priorities Value
Low 1
Medium 2
High 3
Urgent 4

Create a Ticket

This API helps you to create a new ticket in your service desk.

Ticket Properties

Every ticket uses certain fixed numerical values to denote its Status and Priorities. These numerical values along with their meanings are given below.

Source Type Value
Email 1
Portal 2
Phone 3
Chat 4
Feedback widget 5
Yammer 6
AWS Cloudwatch 7
Pagerduty 8
Walkup 9
Slack 10
Status Value
Open 2
Pending 3
Resolved 4
Closed 5
Priorities Value
Low 1
Medium 2
High 3
Urgent 4
post /api/v2/tickets
OAuth 2.0 Scope
freshservice.tickets.create
Sample code | Curl
1
curl -v -u api_key:X -H "Content-Type: application/json" -d '{ "description": "Details about the issue...", "subject": "Support Needed...", "email": "tom@outerspace.com", "priority": 1, "status": 2, "cc_emails": ["ram@freshservice.com","diana@freshservice.com"], "workspace_id": 3 }' -X POST 'https://domain.freshservice.com/api/v2/tickets'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
{ "ticket": { "cc_emails": [ "ram@freshservice.com", "diana@freshservice.com" ], "fwd_emails": [], "reply_cc_emails": [ "ram@freshservice.com", "diana@freshservice.com" ], "fr_escalated": false, "spam": false, "email_config_id": null, "group_id": null, "priority": 1, "requester_id": 1000000675, "requested_for_id": 1000000670, "responder_id": null, "source": 2, "status": 2, "subject": "Support Needed...", "to_emails": null, "department_id": null, "id": 264, "type": "Incident", "due_by": "2017-09-11T10:26:17Z", "fr_due_by": "2017-09-09T10:26:17Z", "is_escalated": false, "description": "<div>Details about the issue...</div>", "description_text": "Details about the issue...", "category": null, "sub_category": null, "item_category": null, "custom_fields": { "auto_checkbox": null }, "created_at": "2017-09-08T10:26:17Z", "updated_at": "2017-09-08T10:26:17Z", "tags": [], "attachments": [], "workspace_id": 3, "resolution_notes": "Resolution note for the ticket...", "resolution_notes_html": "<div>Resolution note for the ticket...</div>" } }
EXPAND ↓
Sample code | Ruby
1
2
3
4
5
6
7
8
9
10
#Create a ticket with custom fields, cc_emails attributes. require "rubygems" require "rest_client" require "json" site = RestClient::Resource.new("https://domain.freshservice.com/helpdesk/tickets.json","user@yourcompany.com","test") response = site.post({:helpdesk_ticket=>{:description=>"Test ticket creation with attachments",:subject=>"new ticket sample",:email=>"test@abc.com",:custom_field=>{:license_1=>"ABCDEF"}},:cc_emails=>"myemail@gmail.com,test@gmail.com"},:content_type=>"application/json") puts "response: #{response.code} \n #{response.body}"
EXPAND ↓

Create a Ticket With Custom Fields

Sample code | Curl
1
curl -v -u api_key:X -H "Content-Type: application/json" -d '{ "description": "Details about the issue...", "subject": "Support Needed...", "email": "tom@outerspace.com", "priority": 1, "status": 2, "cc_emails": ["ram@freshservice.com","diana@freshservice.com"], "custom_fields" : { "custom_text" : "This is a custom text box" }, "workspace_id": 3 }' -X POST 'https://domain.freshservice.com/api/v2/tickets'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
{ "ticket": { "cc_emails": [ "ram@freshservice.com", "diana@freshservice.com" ], "fwd_emails": [], "reply_cc_emails": [ "ram@freshservice.com", "diana@freshservice.com" ], "fr_escalated": false, "spam": false, "email_config_id": null, "group_id": null, "priority": 1, "requester_id": 1000000675, "requested_for_id": 1000000670, "responder_id": null, "source": 2, "status": 2, "subject": "Support Needed...", "to_emails": null, "department_id": null, "id": 265, "type": "Incident", "due_by": "2017-09-11T10:34:28Z", "fr_due_by": "2017-09-09T10:34:28Z", "is_escalated": false, "description": "<div>Details about the issue...</div>", "description_text": "Details about the issue...", "category": null, "sub_category": null, "item_category": null, "custom_fields": { "custom_text": "This is a custom text box", "auto_checkbox": null }, "created_at": "2017-09-08T10:34:28Z", "updated_at": "2017-09-08T10:34:28Z", "tags": [], "attachments": [], "workspace_id": 3, "resolution_notes": "Resolution note for the ticket...", "resolution_notes_html": "<div>Resolution note for the ticket...</div>" } }
EXPAND ↓

Create Ticket with attachment

Note:
1. This API request must have its Content-Type set to multipart/form-data.
2. For more information on attachment refer to this section.

Sample code | Curl
1
curl -v -u api_key:X -F 'attachments[]=@/Users/user/Desktop/api_attach.png' -F 'subject=Support Needed...' -F 'description=Details about the issue...' -F 'email=tom@outerspace.com' -F 'priority=1' -F 'status=2' -F 'workspace_id=3' -X POST 'https://domain.freshservice.com/api/v2/tickets'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
{ "ticket": { "cc_emails": [], "fwd_emails": [], "reply_cc_emails": [], "fr_escalated": false, "spam": false, "email_config_id": null, "group_id": null, "priority": 1, "requester_id": 1232528431, "requested_for_id": 1000000670, "responder_id": null, "source": 2, "status": 2, "subject": "Support Needed...", "to_emails": null, "department_id": null, "id": 51, "type": "Incident", "due_by": "2021-04-22T06:01:08Z", "fr_due_by": "2021-04-15T03:01:08Z", "is_escalated": false, "description": "<div>Details about the issue...</div>", "description_text": "Details about the issue...", "category": null, "sub_category": null, "item_category": null, "custom_fields": { "new_number": null, "time_info": null, "number_test": null }, "created_at": "2021-04-12T06:01:08Z", "updated_at": "2021-04-12T06:01:08Z", "tags": [], "attachments": [ { "id": 368553, "content_type": "image/png", "size": 115399, "name": "api_attach.png", "attachment_url": "https://s3.amazonaws.com/cdn.freshgenie.com/data/helpdesk/attachments/production/19852343/original/api_attach.png", "created_at": "2021-04-12T06:01:08Z", "updated_at": "2021-04-12T06:01:08Z" } ], "workspace_id": 3, "resolution_notes": "Resolution note for the ticket...", "resolution_notes_html": "<div>Resolution note for the ticket...</div>" } }
EXPAND ↓

Create Ticket with assets

Note:
1. assets" key: contains comma (,) separated hash of the assets, each with key display id.
2. When "assets" is included as request parameter in PUT or POST request, the associated assets are returned implicitly in the response.
3. The existing request format to link a single asset ("associate_ci" : { "serial_no " : 123, "name " : "Andrea's Laptop " , "user ": "Andrea "}) will be deprecated soon.
4. If both "assets" and "associate_ci" keys are given in the request, assets key would be considered preferably and associate_ci would be ignored.

Sample code | Curl
1
curl -v -u api_key:X -H "Content-Type: application/json" -d '{ "description": "Create ticket with assets linked", "status": 2, "email": "sample@freshservice.com", "priority": 1, "subject": "Create ticket with assets linked", "assets": [{ "display_id": 8 }, { "display_id": 9 }] "workspace_id": 3}' -X POST 'https://domain.freshservice.com/api/v2/tickets'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
{ "ticket": { "cc_emails": [], "fwd_emails": [], "reply_cc_emails": [], "fr_escalated": false, "spam": false, "email_config_id": null, "group_id": null, "priority": 1, "requester_id": 1, "requested_for_id": 1000000670, "responder_id": null, "source": 2, "status": 2, "subject": "Create ticket with assets linked", "to_emails": null, "department_id": null, "id": 433, "type": "Incident", "due_by": "2020-02-06T11:30:00Z", "fr_due_by": "2020-01-30T08:30:00Z", "is_escalated": false, "description": "<div>Create ticket with assets linked</div>", "description_text": "Create ticket with assets linked", "category": null, "sub_category": null, "item_category": null, "resolution_notes":null, "resolution_notes_html":null, "custom_fields": { }, "created_at": "2020-01-27T12:08:06Z", "updated_at": "2020-01-27T12:08:06Z", "tags": [], "attachments": [], "workspace_id": 3, "assets": [ { "name": "Dell Monitor", "description": null, "ci_type_id": 12, "impact": 1, "created": "2019-12-13T12:31:47+05:30", "updated": "2019-12-13T12:31:47+05:30", "user_id": null, "department_id": null, "assigned_on": null, "agent_id": null, "author_id": 2, "author_type": "User", "deleted": false, "display_id": 8, "salvage": null }, { "name": "Logitech Mouse", "description": null, "ci_type_id": 4, "impact": 1, "created": "2019-12-13T12:31:47+05:30", "updated": "2019-12-13T12:31:47+05:30", "user_id": null, "department_id": null, "assigned_on": null, "agent_id": null, "author_id": 2, "author_type": "User", "deleted": false, "display_id": 9, "salvage": null } ] } }
EXPAND ↓

Create Ticket with associations

Sample code | Curl
1
curl -v -u api_key:X -H "Content-Type: application/json" -d '{ "description": "Details about the issue...", "subject": "Support Needed...", "email": "tom@outerspace.com", "priority": 1, "status": 2, "problem": {"display_id": 2}, "change_initiating_ticket": {"display_id": 4}, "change_initiated_by_ticket": {"display_id": 5}, "workspace_id": 3 }' -X POST 'https://domain.freshservice.com/api/v2/tickets'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
{ "ticket": { "cc_emails": [], "fwd_emails": [], "reply_cc_emails": [], "fr_escalated": false, "spam": false, "email_config_id": null, "group_id": null, "priority": 1, "requester_id": 1232695482, "requested_for_id": 1000000670, "responder_id": null, "source": 2, "status": 2, "subject": "Support Needed...", "to_emails": null, "department_id": null, "id": 78, "type": "Incident", "due_by": "2021-04-30T10:39:46Z", "fr_due_by": "2021-04-28T10:39:46Z", "is_escalated": false, "description": "<div>Details about the issue...</div>", "description_text": "Details about the issue...", "category": null, "sub_category": null, "item_category": null, "custom_fields": { "deve": null, "locaite": null }, "created_at": "2021-04-27T10:39:46Z", "updated_at": "2021-04-27T10:39:46Z", "tags": [], "attachments": [], "workspace_id": 3, "problem": { "subject": "Unable to reach email server", "priority": 1, "status": 1, "impact": 1, "due_by": "2021-04-29T10:24:00Z", "display_id": 2, "requester_id": 1001536865, "owner_id": 1232265829, "group_id": null, "change_id": null, "deleted": false, "known_error": false, "created_at": "2021-04-27T10:25:20Z", "updated_at": "2021-04-27T10:25:20Z", "department_id": null, "email_config_id": null, "category": null, "sub_category": null, "item_category": null }, "change_initiating_ticket": { "display_id": 4, "requester_id": 1001536865, "owner_id": 1232265829, "group_id": null, "release_id": null, "priority": 1, "impact": 1, "status": 1, "risk": 1, "change_type": 1, "approval_status": 4, "deleted": false, "subject": "Getting ES3 back up to speed", "created_at": "2021-04-27T10:26:54Z", "updated_at": "2021-04-27T10:26:54Z", "cc_email": {}, "planned_start_date": "2021-04-19T18:45:00Z", "planned_end_date": "2021-04-19T23:15:00Z", "department_id": null, "email_config_id": null, "category": null, "sub_category": null, "item_category": null }, "change_initiated_by_ticket": { "display_id": 5, "requester_id": 1001536865, "owner_id": 1232265829, "group_id": null, "release_id": null, "priority": 1, "impact": 1, "status": 1, "risk": 1, "change_type": 1, "approval_status": 4, "deleted": false, "subject": "Upgrade Web Server", "created_at": "2021-04-27T10:28:48Z", "updated_at": "2021-04-27T10:28:48Z", "cc_email": {}, "planned_start_date": "2021-04-21T01:00:00Z", "planned_end_date": "2021-04-21T05:30:00Z", "department_id": 683112, "email_config_id": null, "category": null, "sub_category": null, "item_category": null } } }
EXPAND ↓

View a Ticket

Use 'include' to embed additional details in the response. Each include will consume an additional credit. For example if you embed the requester and company information you will be charged a total of 3 API credits for the call.

Note:
By default, certain fields such as conversations, tags and requester email will not be included in the response. They can be retrieved via the embedding functionality.

Embed Handle
conversations /api/v2/tickets/[id]?include=conversations
Will return up to ten conversations sorted by "created_at" in ascending order. Including conversations will consume two API calls. In order to access more than ten conversations belonging to a ticket, use the List All Conversationsof a Ticket API.
requester /api/v2/tickets/[id]?include=requester
Will return requester details like id, name, mobile, phone
requested_for /api/v2/tickets/[id]?include=requested_for
Will return details of the user on behalf of whom the request has been raised
stats /api/v2/tickets/[id]?include=stats
Will return the ticket’s closed_at, resolved_at and first_responded_at time
problem /api/v2/tickets/[id]?include=problem
Returns details of associated problem
assets /api/v2/tickets/[id]?include=assets
Returns set of associated asset details
changes /api/v2/tickets/[id]?include=changes
Returns list of associated changes and causing changes details
related_tickets /api/v2/tickets/[id]?include=related_tickets
Returns child ticket ids / parent ticket ids based on ticket. No ids returned for parent tickets with no children
onboarding_context /api/v2/tickets/[id]?include=onboarding_context
Returns onboarding data mapped to the ticket
offboarding_context /api/v2/tickets/[id]?include=offboarding_context
Returns offboarding data mapped to the ticket
get /api/v2/tickets/[id]
OAuth 2.0 Scope
freshservice.tickets.view
Sample code | Curl
1
curl -v -u api_key:X -H "Content-Type: application/json" -X GET 'https://domain.freshservice.com/api/v2/tickets/20'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
{ "ticket": { "cc_emails": [], "fwd_emails": [], "reply_cc_emails": [], "fr_escalated": false, "spam": false, "email_config_id": null, "group_id": null, "priority": 3, "requester_id": 1000000678, "requested_for_id": 1000000670, "responder_id": null, "source": 2, "status": 2, "subject": "Ticket Title", "to_emails": null, "sla_policy_id": 1000000029, "department_id": null, "id": 266, "type": "Incident", "due_by": "2017-09-08T23:03:44Z", "fr_due_by": "2017-09-08T15:03:44Z", "is_escalated": false, "description": "<div>this is a sample ticket</div>", "description_text": "this is a sample ticket", "custom_fields": { "custom_text": null, "auto_checkbox": false }, "created_at": "2017-09-08T11:03:44Z", "updated_at": "2017-09-08T11:37:01Z", "urgency": 1, "impact": 1, "category": null, "sub_category": null, "item_category": null, "deleted": false, "resolution_notes":null, "resolution_notes_html":null, "attachments": [ { "content_type": "text/plain", "size": 5, "name": "attachment.txt", "attachment_url": "https://cdn.freshservice/data/Helpdesk/attachments/production/19852343/original/attachment.txt", "created_at": "2017-09-08T11:03:45Z", "updated_at": "2017-09-08T11:03:45Z" } ], "workspace_id": 3, "created_within_business_hours": false, "approval_status": 4, "approval_status_name": "Not Requested" } }
EXPAND ↓
Sample code | Ruby
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#view tickets require "rubygems" require "rest_client" require "json" #you can also use apikey instead of user/passwd # to view all tickets #pass 'page' attribute to see the specific page. Default only 30 tickets per page is listed # site = RestClient::Resource.new("https://yourcompany.freshservice.com/helpdesk/tickets.json?page=1","user@yourcompany.com","test") #view specific tickets site = RestClient::Resource.new("https://domain.freshservice.com/helpdesk/tickets/[id].json","user@yourcompany.com","test") #avatar_attributes is the property to set the image file. response = site.get(:accept=>"application/json") puts "response: #{response.code} \n #{response.body}"
EXPAND ↓
Additional examples

1. Get the associated conversations along with the ticket response.

1
curl -v -u api_key:X -X GET 'https://domain.freshservice.com/api/v2/tickets/20?include=conversations'
EXPAND ↓

2. Get the associated tags and requester information along with the ticket response.

1
curl -v -u api_key:X -X GET 'https://domain.freshservice.com/api/v2/tickets/20?include=tags,requester'
EXPAND ↓

3. Get the associated stats information along with the ticket response.

1
curl -v -u api_key:X -X GET 'https://domain.freshservice.com/api/v2/tickets/20?include=stats'
EXPAND ↓

4. Get the associated onboarding information along with the ticket response.

1
curl -v -u api_key:X -X GET 'https://domain.freshservice.com/api/v2/tickets/20?include=onboarding_context'
EXPAND ↓

5. Get the associated offboarding information along with the ticket response.

1
curl -v -u api_key:X -X GET 'https://domain.freshservice.com/api/v2/tickets/20?include=offboarding_context'
EXPAND ↓

Filter Tickets

Custom ticket fields that you have created in your account can also be used to filter through the tickets and get a list of tickets matching the specified ticket fields.

Query Format(query) - "(ticket_field:integer OR ticket_field:'string') AND ticket_field:boolean"

Note:
1. The query must be URL encoded
2. Query can be framed using the ticket field name in snake case, which can be obtained from Ticket Fields endpoint. Ticket Fields are case sensitive
3. Query string must be enclosed between a pair of double quotes and can have up to 512 characters
4. Logical operators AND, OR along with parentheses () can be used to group conditions
5. Relational operators greater than or equal to :> and less than or equal to :< can be used along with date fields and numeric fields
6. Input for date fields should be in UTC Format
7. The number of objects returned per page is 30 also the total count of the results will be returned along with the result
8. To scroll through the pages add page parameter to the url
9. To filter for agent and group with no values assigned, use the null keyword
10. By default, only tickets from the primary workspace will be returned for accounts on the Employee Support Mode. For tickets from other workspaces, use the workspace_id query parameter.

Supported Ticket Fields

Field Type Description
workspace_id number Workspace ID of the ticket. This attribute is applicable only to accounts on the Employee Support Mode. The value 0 for workspace_id will return tickets from all workspaces, with only global level fields.
requester_id number User ID of the requester
email string Email address of the requester
agent_id number ID of the agent to whom the ticket has been assigned
group_id number ID of the group to which the ticket has been assigned
priority number Priority of the ticket
status number Status of the ticket
impact number Ticket impact
urgency number Ticket urgency
tag string Tag that has been associated to the tickets
due_by date Date (YYYY-MM-DD) when the ticket is due to be resolved
fr_due_by date Date (YYYY-MM-DD) when the first response is due
created_at date Ticket creation date (YYYY-MM-DD)

Custom Fields

Field Type Type
Number number
Checkbox boolean
Dropdown string
Date date(YYYY-MM-DD)

Note:
Queries can be combined using AND or OR.
https://domain.freshservice.com/api/v2/tickets/filter?query="priority: 1 AND status: 2 OR urgency: 3"
Supported operators
1. priority: 1 (priority equal to 1)
2. priority:> 1 (priority greater than or equal to 1)
3. priority :< 1 (priority less than or equal to 1)
Formatting
1. String fields to be enclosed in single quotes ('')
2. Number fields to be given as number without quotes.
3. Date and date_time fields to be enclosed in single quotes('yyyy-mm-dd')
4. only :> and :< are supported for date and date_time fields. Both fields expect input in the same format as 'yyyy-mm-dd'

get /api/v2/tickets/filter?query=[query]
OAuth 2.0 Scope
freshservice.tickets.view
Sample code | Curl
1
curl -v -u api_key:X -X GET 'https://domain.freshservice.com/api/v2/tickets/filter?query="priority:3"'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
{ "tickets": [{ "subject": "New ticket with attachment", "group_id": 1, "department_id": 1, "category": "Hardware", "sub_category": "Computer", "item_category": "Ink bottle", "requester_id": 3, "responder_id": 1, "due_by": "2021-01-18T21:00:00Z", "fr_escalated": false, "deleted": false, "spam": false, "email_config_id": null, "fwd_emails": [], "reply_cc_emails": [], "cc_emails": [], "is_escalated": false, "fr_due_by": "2021-01-11T03:00:00Z", "priority": 1, "source": 3, "status": 2, "created_at": "2021-01-06T06:06:13Z", "updated_at": "2021-04-29T09:03:21Z", "to_emails": null, "id": 506, "type": "Incident", "description": "<div style='font-size: 14px; font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;'>\n<div>New ticket with attachment</div>\n</div>", "description_text": "New ticket with attachment", "custom_fields": { "level_3": null, "release_checkbox": false, "custom_dropdown": "a & A", "level_2": null, "custom_date": "2021-01-12", "custom_date_time": "2021-01-11T19:30:00Z", "custom_checkbox": true, "single_line_text": "single", "change_checkbox": true, "custom_paragraph": "paragraph", "tf_with_section": "First Choice", "custom_number": null, "last_field": null, "sb_dropdown": "First Choice", "sb_section_field": "First Choice", "custom_dependent": "category 1" }, "workspace_id": 3 }, { "subject": "Email ticket", "group_id": 1, "department_id": 7, "category": null, "sub_category": null, "item_category": null, "requester_id": 1, "responder_id": null, "due_by": "2020-10-05T04:06:00Z", "fr_escalated": false, "deleted": false, "spam": false, "email_config_id": 1, "fwd_emails": [], "reply_cc_emails": [], "cc_emails": [], "is_escalated": false, "fr_due_by": "2020-09-28T02:06:00Z", "priority": 1, "source": 1, "status": 4, "created_at": "2020-08-21T17:40:52Z", "updated_at": "2020-09-23T20:00:52Z", "to_emails": [ "helpdesk@domain.freshservice.com" ], "id": 491, "type": "Incident", "description": "<div>Description</div>", "description_text": "Description", "custom_fields": { "level_3": null, "release_checkbox": false, "custom_dropdown": "a & A", "level_2": null, "custom_date": "2021-01-12", "custom_date_time": "2021-01-11T19:30:00Z", "custom_checkbox": true, "single_line_text": "single", "change_checkbox": true, "custom_paragraph": "paragraph", "tf_with_section": "First Choice", "custom_number": null, "last_field": null, "sb_dropdown": "First Choice", "sb_section_field": "First Choice", "custom_dependent": "category 1" }, "workspace_id": 3 }], "total": 2 }
EXPAND ↓
Additional examples

1. Get the list of Urgent and High priority tickets ('priority:4 OR priority:3')

1
curl -v -u api_key:X -X GET 'https://domain.freshservice.com/api/v2/tickets/filter?query="priority:4%20OR%20priority:3"'
EXPAND ↓

2. Get the second page of Open and Pending tickets ('status:3 OR status:4')

1
curl -v -u api_key:X -X GET 'https://domain.freshservice.com/api/v2/tickets/filter?query="status:3%20OR%20status:4"&page=2'
EXPAND ↓

3. Get the list of Urgent and High priority tickets in Open Status belong to the group_id 11 ('priority:3 AND group_id:11 AND status:2')

1
curl -v -u api_key:X -X GET 'https://domain.freshservice.com/api/v2/tickets/filter?query="priority:>3%20AND%20group_id:11%20AND%20status:2"'
EXPAND ↓

4. Get the list of tickets having Custom Dropdown selected as First Choice or Custom Checkbox false (Custom Fields: custom_dropdown, custom_checkbox) '(custom_dropdown:'First Choice' OR custom_checkbox: true)'

1
curl -v -u api_key:X -X GET 'https://domain.freshservice.com/api/v2/tickets/filter?query="custom_dropdown:%27First%20Choice%27%20OR%20custom_checkbox:true"'
EXPAND ↓

5. Get the list of Urgent priority tickets created after a particular day ("priority:4 AND created_at:>'2021-01-01'")

1
curl -v -u api_key:X -X GET 'https://domain.freshservice.com/api/v2/tickets/filter?query="%20priorIty:%203%20AND%20created_at:%3E%272020-01-01%27%20AND%20created_at:%3C%272021-01-01%27"'
EXPAND ↓

6. Get list of tickets with tag abc ("tag: 'abc'")

1
curl -v -u api_key:X -X GET 'https://domain.freshservice.com/api/v2/tickets/filter?query="tag:%27abc%27"'
EXPAND ↓

7. Get list of tickets with no agent assigned ('agent_id: null') from a particular workspace

1
curl -v -u api_key:X -X GET 'https://domain.freshservice.com/api/v2/tickets/filter?workspace_id=2&query="agent_id%3Anull"'
EXPAND ↓

8. Get the list of Urgent and High priority tickets ('priority:4 OR priority:3') from all accessible workspaces

1
curl -v -u api_key:X -X GET 'https://domain.freshservice.com/api/v2/tickets/filter?workspace_id=0&query="priority%3A4%20OR%20priority%3A3"'
EXPAND ↓

View List of Tickets

Use filters to view only specific tickets (those which match the criteria that you choose). By default only tickets that have not been deleted or marked as spam will be returned, unless you use the 'deleted' filter.

Note:
1. By default only tickets that have been created within the past 30 days will be returned. For older tickets, use the updated_since filter.
2. Use 'include' to embed additional details in the response. Each include will consume an additional 2 credits. For example if you embed the stats information you will be charged a total of 3 API credits (1 credit for the API call, and 2 credits for the additional stats embedding).
3. If a workspace_id is not specified as a URL parameter, only tickets from the primary workspace will be included in the response. If workspace_id is specified as 0, tickets from across all workspaces will be included in the response with just the global fields. Applicable only to accounts on the Employee Support Mode.

Filter by Handle
Predefined filters /api/v2/tickets?filter=[filter_name]
The filters available are new_and_my_open, watching, spam, deleted.
Requester /api/v2/tickets?requester_id=[id]
/api/v2/tickets?email=[requester_email]
Example:
/api/v2/tickets?email=superman@freshservice.com
/api/v2/tickets?email=bat%2Bman%40gmail.com (URL encoded bat+man@gmail.com)
Updated since /api/v2/tickets?updated_since=2015-01-19T02:00:00Z
Type For Incidents: /api/v2/tickets?type=Incident
For Service Requests: /api/v2/tickets?type=Service+Request
Workspace /api/v2/tickets?workspace_id=2
Sort by Handle
asc, desc /api/v2/tickets?order_type=asc
Default sort order type is desc
Embed Handle
stats /api/v2/tickets?include=stats
Will return the ticket’s closed_at, resolved_at and first_responded_at time.
Requester /api/v2/tickets?include=requester
Will return the requester's email, id, mobile, name, and phone.
Requested For /api/v2/tickets?include=requested_for
Will return details of the user on behalf of whom the request has been raised
onboarding_context /api/v2/tickets?include=onboarding_context
Will return details of the onboarding data mapped to the ticket
offboarding_context /api/v2/tickets?include=offboarding_context
Will return details of the offboarding data mapped to the ticket
get /api/v2/tickets
OAuth 2.0 Scope
freshservice.tickets.view
Sample code | Curl
1
curl -v -u api_key:X -X GET 'https://domain.freshservice.com/api/v2/tickets'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
{ "tickets": [ { "cc_emails": [], "fwd_emails": [], "reply_cc_emails": [], "fr_escalated": false, "spam": false, "email_config_id": null, "group_id": null, "priority": 3, "requester_id": 1000000678, "requested_for_id": 1000000670, "responder_id": null, "source": 2, "status": 2, "subject": "Ticket Title", "to_emails": null, "department_id": null, "id": 266, "type": "Incident", "due_by": "2017-09-08T23:03:44Z", "fr_due_by": "2017-09-08T15:03:44Z", "is_escalated": false, "description": "<div>this is a sample ticket</div>", "description_text": "this is a sample ticket", "category": null, "sub_category": null, "item_category": null, "custom_fields": { "custom_text": null, "auto_checkbox": false }, "workspace_id": 2, "created_at": "2017-09-08T11:03:44Z", "updated_at": "2017-09-08T11:37:01Z", "deleted": false }, { "cc_emails": [ "ram@freshservice.com", "diana@freshservice.com" ], "fwd_emails": [], "reply_cc_emails": [ "ram@freshservice.com", "diana@freshservice.com" ], "fr_escalated": false, "spam": false, "email_config_id": null, "group_id": null, "priority": 1, "requester_id": 1000000675, "requested_for_id": 1000000670, "responder_id": null, "source": 2, "status": 2, "subject": "Support Needed...", "to_emails": null, "department_id": null, "id": 265, "type": "Incident", "due_by": "2017-09-11T10:34:28Z", "fr_due_by": "2017-09-09T10:34:28Z", "is_escalated": false, "description": "<div>Details about the issue...</div>", "description_text": "Details about the issue...", "category": null, "sub_category": null, "item_category": null, "custom_fields": { "custom_text": "This is a custom text box", "auto_checkbox": null }, "workspace_id": 2, "created_at": "2017-09-08T10:34:28Z", "updated_at": "2017-09-08T10:34:28Z", "deleted": false } ] }
EXPAND ↓
Sample code | Ruby
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#view tickets require "rubygems" require "rest_client" require "json" #you can also use apikey instead of user/passwd # to view all tickets #pass 'page' attribute to see the specific page. Default only 30 tickets per page is listed # site = RestClient::Resource.new("https://yourcompany.freshservice.com/helpdesk/tickets.json?page=1","user@yourcompany.com","test") #view specific tickets site = RestClient::Resource.new("https://domain.freshservice.com/helpdesk/tickets/[id].json","user@yourcompany.com","test") #avatar_attributes is the property to set the image file. response = site.get(:accept=>"application/json") puts "response: #{response.code} \n #{response.body}"
EXPAND ↓
Additional examples

1. Get the first page of a list of tickets that are being watched by the agent whose credentials were used to make this API call.

1
curl -v -u api_key:X -X GET 'https://domain.freshservice.com/api/v2/tickets?filter=watching'
EXPAND ↓

2. Get the first page of a list of tickets from the specified requestor. The tickets will be returned in the descending order.

1
curl -v -u api_key:X -X GET 'https://domain.freshservice.com/api/v2/tickets?requester_id=1230&order_type=desc'
EXPAND ↓

3. Get the second page (tickets from 11-20) of a list of all tickets.

1
curl -v -u api_key:X -X GET 'https://domain.freshservice.com/api/v2/tickets?per_page=10&page=2'
EXPAND ↓

4. Get the first page of a list of tickets that have shown any activity since the 17th of August, 2015.

1
curl -v -u api_key:X -X GET 'https://domain.freshservice.com/api/v2/tickets?updated_since=2015-08-17'
EXPAND ↓

5. Get the associated stats information along with the ticket response.

1
curl -v -u api_key:X -X GET 'https://domain.freshservice.com/api/v2/tickets?include=stats'
EXPAND ↓

6. Filter tickets based on the following requester email (super+man@gmail.com) which needs to be URL encoded.

1
curl -v -u api_key:X -X GET 'https://domain.freshservice.com/api/v2/tickets?email=super%2Bman%40gmail.com'
EXPAND ↓

7. Get the list of all tickets from workspaces to which the user has access.

1
curl -v -u api_key:X -X GET 'https://domain.freshservice.com/api/v2/tickets?workspace_id=0'
EXPAND ↓

8. Get the list of tickets from a specific workspace

1
curl -v -u api_key:X -X GET 'https://domain.freshservice.com/api/v2/tickets?workspace_id=3'
EXPAND ↓

Update a Ticket

This API lets you make changes to the parameters of a ticket from updating statuses to changing ticket type.

Note:
1. While updating tags, all the tags that need to stay associated with the Ticket should be provided in the PUT request payload.
2. The requested_for_id field can be updated only for Service Request tickets.
3. The workspace_id attribute cannot be updated through the Update operation. It can only be updated through the Move operation.

Query Parameters Handle
bypass_mandatory To bypass mandatory fields check while updating the ticket except for requester_id, source. Any business rules trying to mandate certain fields will also be bypassed. All fields configured as mandatory upon closing or resolving the ticket will be skipped while updating the ticket. This can only be passed by an admin.
Example: api/v2/ticket/{ticket_id}?bypass_mandatory=true

Ticket Properties

Every ticket uses certain fixed numerical values to denote its Source, Status, and Priorities. These numerical values along with their meanings are given below.

Source Type Value
Email 1
Portal 2
Phone 3
Chat 4
Feedback widget 5
Yammer 6
AWS Cloudwatch 7
Pagerduty 8
Walkup 9
Slack 10
Status Value
Open 2
Pending 3
Resolved 4
Closed 5
Priorities Value
Low 1
Medium 2
High 3
Urgent 4
put /api/v2/tickets/[id]
OAuth 2.0 Scope
freshservice.tickets.edit
Sample code | Curl
1
curl -v -u api_key:X -H "Content-Type: application/json" -X PUT -d '{ "priority": 3 }' 'https://domain.freshservice.com/api/v2/tickets/1'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
{ "ticket": { "cc_emails": [ "ram@freshservice.com", "diana@freshservice.com" ], "fwd_emails": [], "reply_cc_emails": [ "ram@freshservice.com", "diana@freshservice.com" ], "spam": false, "email_config_id": null, "fr_escalated": true, "group_id": null, "priority": 3, "requester_id": 1000000675, "requested_for_id": 1000000670, "responder_id": null, "source": 2, "status": 2, "subject": "Support Needed...", "description": "<div>Details about the issue...</div>", "description_text": "Details about the issue...", "category": null, "sub_category": null, "item_category": null, "resolution_notes":null, "resolution_notes_html":null, "custom_fields": { "custom_text": "This is a custom text box", "auto_checkbox": null }, "id": 1, "type": "Incident", "to_emails": null, "department_id": null, "is_escalated": false, "tags": [ "hello", "how", "are", "you", "now" ], "due_by": "2017-09-09T04:04:28+05:30", "fr_due_by": "2017-09-08T20:04:28+05:30", "created_at": "2017-09-08T10:34:28Z", "updated_at": "2017-09-11T07:27:07Z", "attachments": [], "workspace_id": 3 } }
EXPAND ↓
Sample code | Ruby
1
2
3
4
5
6
7
8
9
10
11
require "rubygems" require "rest_client" require "json" #here you need to specify the ticket id as part of the URL "https://yourcompany.domain.com/helpdesk/tickets/ticketid.json" [REST standards for update] site = RestClient::Resource.new("https://domain.freshservice.com/helpdesk/tickets/5.json","user@yourcompany.com","test") #status property is mandatory. response = site.put({:helpdesk_ticket=>{:priority=>1,:status=>2}},:content_type=>"application/json") puts "response: #{response.code} \n #{response.body}"
EXPAND ↓

Update Ticket with attachment

Note:
1. This API request must have its Content-Type set to multipart/form-data.
2. For more information on attachment refer to this section.

Sample code | Curl
1
curl -v -u api_key:X -F 'attachments[]=@/Users/user/Desktop/api2.png' -F 'priority=1' -X PUT 'https://domain.freshservice.com/api/v2/tickets/51'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
{ "ticket": { "cc_emails": [], "fwd_emails": [], "reply_cc_emails": [], "spam": false, "email_config_id": null, "fr_escalated": false, "group_id": null, "priority": 1, "requester_id": 1232528431, "requested_for_id": 1000000670, "responder_id": null, "source": 2, "status": 2, "subject": "Support Needed...", "description": "<div>Details about the issue...</div>", "description_text": "Details about the issue...", "category": null, "sub_category": null, "item_category": null, "custom_fields": { "new_number": null, "time_info": null, "number_test": null }, "id": 51, "type": "Incident", "to_emails": null, "department_id": null, "is_escalated": false, "tags": [], "due_by": "2021-04-22T06:01:08Z", "fr_due_by": "2021-04-15T03:01:08Z", "created_at": "2021-04-12T06:01:08Z", "updated_at": "2021-04-12T06:01:08Z", "resolution_notes":null, "resolution_notes_html":null, "attachments": [ { "id": 368553, "content_type": "image/png", "size": 115399, "name": "api_attach.png", "attachment_url": "https://s3.amazonaws.com/cdn.freshgenie.com/data/helpdesk/attachments/production/19852343/original/api_attach.png", "created_at": "2021-04-12T06:01:08Z", "updated_at": "2021-04-12T06:01:08Z" }, { "id": 368554, "content_type": "image/png", "size": 274688, "name": "api2.png", "attachment_url": "https://s3.amazonaws.com/cdn.freshgenie.com/data/helpdesk/attachments/production/19852343/original/api2.png", "created_at": "2021-04-12T06:26:40Z", "updated_at": "2021-04-12T06:26:40Z" } ], "workspace_id": 3 } }
EXPAND ↓

Update Ticket with assets

Note:
1. Existing assets, if they are different from what are given in request, are destroyed and the current ones are linked to the ticket. So, all the assets that need to stay associated with the Ticket need to be provided in the PUT/POST calls
2. "assets" key: contains comma (,) separated hash of the assets, each with key display id.
3. When "assets" is included as request parameter in PUT or POST request, the associated assets are returned implicitly in the response.
4. The existing request format to link a single asset ("associate_ci" : { "serial_no " : 123, "name " : "Andrea's Laptop " , "user ": "Andrea "}) will be deprecated soon.
5. If both "assets" and "associate_ci" keys are given in the request, assets key would be considered preferably and associate_ci would be ignored.

Sample code | Curl
1
curl -v -u api_key:X -H "Content-Type: application/json" -X PUT -d '{ "description": "Update ticket with assets", "status": 2, "email": "sample@freshservice.com", "priority": 1, "subject": "Update ticket with assets", "assets": [ { "display_id": 7 }, { "display_id": 8 }]}' 'https://domain.freshservice.com/api/v2/tickets/1'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
{ "ticket": { "cc_emails": [], "fwd_emails": [], "reply_cc_emails": [], "spam": false, "email_config_id": null, "fr_escalated": false, "group_id": null, "priority": 1, "requester_id": 1, "requested_for_id": 1000000670, "responder_id": null, "source": 2, "status": 2, "subject": "Update ticket with assets", "description": "Update ticket with assets", "description_text": "Update ticket with assets", "category": null, "sub_category": null, "item_category": null, "custom_fields": {}, "id": 433, "type": "Incident", "to_emails": null, "department_id": null, "is_escalated": false, "tags": [], "due_by": "2020-02-06T17:00:00+05:30", "fr_due_by": "2020-01-30T14:00:00+05:30", "created_at": "2020-01-27T12:08:06Z", "updated_at": "2020-01-27T12:13:39Z", "attachments": [], "workspace_id": 3, "resolution_notes":null, "resolution_notes_html":null, "assets": [ { "name": "Andrea's Laptop", "description": null, "ci_type_id": 25, "impact": 2, "created": "2019-12-13T12:31:47+05:30", "updated": "2019-12-13T12:31:47+05:30", "user_id": 2, "department_id": null, "assigned_on": null, "agent_id": null, "author_id": 2, "author_type": "User", "deleted": false, "display_id": 7, "salvage": null }, { "name": "Dell Monitor", "description": null, "ci_type_id": 12, "impact": 1, "created": "2019-12-13T12:31:47+05:30", "updated": "2019-12-13T12:31:47+05:30", "user_id": null, "department_id": null, "assigned_on": null, "agent_id": null, "author_id": 2, "author_type": "User", "deleted": false, "display_id": 8, "salvage": null } ] } }
EXPAND ↓

Move a Ticket

This API moves a ticket to a different workspace, while also allowing the assigned group and agent to be modified.

Note:
This endpoint is applicable only to accounts on the Employee Support Mode.

put /api/v2/tickets/[id]/move_workspace
OAuth 2.0 Scope
freshservice.tickets.edit
Sample code | Curl
1
curl -v -u api_key:X -X PUT -d '{ "workspace_id": 3, "group_id": 3, "responder_id": 4 }' 'https://domain.freshservice.com/api/v2/tickets/1/move_workspace'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
{ "ticket": { "cc_emails": [ "ram@freshservice.com", "diana@freshservice.com" ], "fwd_emails": [], "reply_cc_emails": [ "ram@freshservice.com", "diana@freshservice.com" ], "spam": false, "email_config_id": null, "fr_escalated": true, "group_id": 3, "responder_id": 4, "priority": 3, "requester_id": 1000000675, "requested_for_id": 1000000670, "source": 2, "status": 2, "subject": "Support Needed...", "description": "<div>Details about the issue...</div>", "description_text": "Details about the issue...", "category": null, "sub_category": null, "item_category": null, "custom_fields": { "custom_text": "This is a custom text box", "auto_checkbox": null }, "id": 1, "type": "Incident", "to_emails": null, "department_id": null, "is_escalated": false, "tags": [ "hello", "how", "are", "you", "now" ], "due_by": "2017-09-09T04:04:28+05:30", "fr_due_by": "2017-09-08T20:04:28+05:30", "created_at": "2017-09-08T10:34:28Z", "updated_at": "2017-09-11T07:27:07Z", "resolution_notes":null, "resolution_notes_html":null, "attachments": [], "workspace_id": 3 } }
EXPAND ↓

Delete a Ticket

This API helps you delete a ticket.

Note:
1. Deleted tickets are not permanently lost. You can retrieve them using the Restore Ticket API.
2. When a parent SR is deleted all the child tickets will also be deleted.

delete /api/v2/tickets/[id]
OAuth 2.0 Scope
freshservice.tickets.delete
Sample code | Curl
1
curl -v -u api_key:X -X DELETE 'https://domain.freshservice.com/api/v2/tickets/1'
EXPAND ↓
Response
1
HTTP Status: 204 No Content
EXPAND ↓
Sample code | Ruby
1
2
3
4
5
6
7
8
require "rubygems" require "rest_client" require "json" value = 58 #pass the ticket display_id here. site = RestClient::Resource.new("https://domain.freshservice.com/helpdesk/tickets/#{value}.json","user@yourcompany.com","test") response = site.delete(:accept=>"application/json") puts "response: #{response.code} \n #{response.body}"
EXPAND ↓

Delete a Ticket Attachment

This API helps you delete an attachment from a ticket.

delete /api/v2/tickets/[ticket_id]/attachments/[id]
OAuth 2.0 Scope
freshservice.tickets.edit
Sample code | Curl
1
curl -v -u api_key:X -X DELETE 'https://domain.freshservice.com/api/v2/tickets/1/attachments/1'
EXPAND ↓
Response
1
HTTP Status: 204 No Content
EXPAND ↓

Restore a Ticket

The API mentioned previously. If you deleted some tickets and regret doing so now, this API will help you restore them.

get /api/v2/tickets/[id]/restore
OAuth 2.0 Scope
freshservice.tickets.delete
Sample code | Curl
1
curl -v -u api_key:X -H "Content-Type: application/json" -X PUT -d '' 'https://domain.freshservice.com/api/v2/tickets/1/restore'
EXPAND ↓
Response
1
HTTP Status: 204 No Content
EXPAND ↓
Sample code | Ruby
1
2
3
4
5
6
7
8
9
10
11
12
13
require "rubygems" require "rest_client" require "json" #here you need to specify the ticket id as part of the URL # eg: "https://yourcompany.domain.com/helpdesk/tickets/123/restore.json" site = RestClient::Resource.new("https://domain.freshservice.com/helpdesk/tickets/[ticket_id]/restore.json","user@yourcompany.com","test") #status property is mandatory. response = site.put({},:content_length=>0) puts "response: #{response.code} \n #{response.body}"
EXPAND ↓

Create a Child Ticket

This API lets you to create a new child ticket on an existing ticket

Note:
1. Association of child tickets is not available in the Sprout plan.
2. Association of child tickets to a deleted or a spammed ticket is not allowed.
3. Nesting of a child ticket under another child ticket is not supported.

Attribute Type Description
workspace_id number ID of the workspace to which this ticket belongs. This attribute is applicable only to accounts on the Employee Support Mode. The default value is the ID of the parent ticket's workspace.
name string Name of the requester
requester_id * number User ID of the requester. For existing contacts, the requester_id can be passed instead of the requester's email.
email * string Email address of the requester. If no contact exists with this email address in Freshservice, it will be added as a new contact.
phone * string Phone number of the requester. If no contact exists with this phone number in Freshservice, it will be added as a new contact. If the phone number is set and the email address is not, then the name attribute is mandatory.
subject string Subject of the ticket. The default value is null.
type string Helps categorize the ticket according to the different kinds of issues your support team deals with. The default Value is incident. * As of now, API v2 supports only type ‘incident’
status * number Status of the ticket.
priority * number Priority of the ticket.
description string HTML content of the ticket.
responder_id number ID of the agent to whom the ticket has been assigned
attachments array of objects Ticket attachments. The total size of these attachments cannot exceed 40 MB.
cc_emails array of strings Email address added in the 'cc' field of the incoming ticket email.
custom_fields dictionary Key value pairs containing the names and values of custom fields. Read more here.
due_by datetime Timestamp that denotes when the ticket is due to be resolved.
email_config_id number ID of email config which is used for this ticket. (i.e., support@yourcompany.com/sales@yourcompany.com)
fr_due_by datetime Timestamp that denotes when the first response is due
group_id number ID of the group to which the ticket has been assigned. The default value is the ID of the group that is associated with the given email_config_id
source * number The channel through which the ticket was created. The default value is 2.
tags array of strings Tags that have been associated with the ticket
department_id number Department ID of the requester.
category string Ticket category
sub_category string Ticket sub category
item_category string Ticket item category
associate_ci hash Search for asset and associate with ticket
urgency number Ticket urgency
impact number Ticket impact
* Refer to the Ticket properties table for supported values.
* Any of the five attributes is mandatory.

Ticket Properties

Every ticket uses certain fixed numerical values to denote its Status and Priorities. These numerical values along with their meanings are given below.

Source Type Value
Email 1
Portal 2
Phone 3
Chat 4
Feedback widget 5
Yammer 6
AWS Cloudwatch 7
Pagerduty 8
Walkup 9
Slack 10
Status Value
Open 2
Pending 3
Resolved 4
Closed 5
Priorities Value
Low 1
Medium 2
High 3
Urgent 4
post /api/v2/tickets/[parent_id]/create_child_ticket
OAuth 2.0 Scope
freshservice.tickets.create
Sample code | Curl
1
curl -v -u api_key:X -H "Content-Type: application/json" -d '{ "description": "Details about the issue...", "subject": "Support Needed...", "email": "tom@outerspace.com", "priority": 1, "status": 2, "cc_emails": ["ram@freshservice.com","diana@freshservice.com"], "workspace_id": 3 }' -X POST 'https://domain.freshservice.com/api/v2/tickets/20/create_child_ticket'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
{ "ticket": { "cc_emails": [ "ram@freshservice.com", "diana@freshservice.com" ], "fwd_emails": [], "reply_cc_emails": [ "ram@freshservice.com", "diana@freshservice.com" ], "fr_escalated": false, "spam": false, "email_config_id": null, "group_id": null, "priority": 1, "requester_id": 1000000675, "responder_id": null, "source": 2, "status": 2, "subject": "Support Needed...", "to_emails": null, "department_id": null, "id": 264, "type": "Incident", "due_by": "2017-09-11T10:26:17Z", "fr_due_by": "2017-09-09T10:26:17Z", "is_escalated": false, "description": "<div>Details about the issue...</div>", "description_text": "Details about the issue...", "category": null, "sub_category": null, "item_category": null, "custom_fields": { "auto_checkbox": null }, "created_at": "2017-09-08T10:26:17Z", "updated_at": "2017-09-08T10:26:17Z", "resolution_notes":null, "resolution_notes_html":null, "tags": [], "attachments": [], "workspace_id": 3 } }
EXPAND ↓
Sample code | Ruby
1
2
3
4
5
6
7
8
9
10
#Create a ticket with custom fields, cc_emails attributes. require "rubygems" require "rest_client" require "json" site = RestClient::Resource.new("https://domain.freshservice.com/api/v2/tickets/20/create_child_ticket","user@yourcompany.com","test") response = site.post({:helpdesk_ticket=>{:description=>"Test ticket creation with attachments",:subject=>"new ticket sample",:email=>"test@abc.com",:custom_field=>{:license_1=>"ABCDEF"}},:cc_emails=>"myemail@gmail.com,test@gmail.com"},:content_type=>"application/json") puts "response: #{response.code} \n #{response.body}"
EXPAND ↓

List All Ticket Fields

Retrieve all the Fields that constitute the Ticket Object

Note:
By default, only global fields and fields from the primary workspace will be returned for accounts on the Employee Support Mode. For fields from other workspaces, use the workspace_id filter.

Ticket Fields
Change field Description
id Unique ID of the Field
workspace_id ID of the workspace to which this ticket field belongs. This attribute is applicable only to accounts on the Employee Support Mode.
created_at Date time at which the field was added
updated_at Date time at which the field was modified
name Name of the field
label Label of the field for display
description Description of the field
field_type Indicates if the field is a checkbox, dropdown, text field
required True if the field is marked mandatory
required_for_closure True if the field is marked mandatory while closing the Release item
default_field True if the field is a default field. False if customm
choices List of values supported by the field
nested_fields contain details of nested fields
required_for_agents Set to true if the field is mandatory for Agents
required_for_customers Set to true if the field is mandatory in the customer portal
label_for_customers Display name for the field (as seen in the customer portal)
customers_can_edit Set to true if the field can be updated by customers
displayed_to_customers Set to true if the field is displayed in the customer portal
portal_cc Applicable only for the requester field. Set to true if customer can add additional requesters to a ticket
portal_cc_to Applicable only if portal_cc is set to true. Value will be all when a customer can add any requester to the CC list and company when a customer can add only company contacts to the CC list
date_only Applicable only for custom_date field. When ‘Request time information’ is selected, the field date_only returns false and if unchecked, date_only returns true
get /api/v2/ticket_form_fields
OAuth 2.0 Scope
freshservice.tickets.fields.manage
Sample code | Curl
1
curl -v -u api_key:X -X GET 'https://domain.freshservice.com/api/v2/ticket_form_fields'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
{ "ticket_fields": [ { "id": 54281, "label": "Workspace", "description": "Default Workspace", "field_type": "default_workspace", "created_at": "2023-01-19T17:25:21Z", "updated_at": "2023-01-27T16:35:34Z", "position": 0, "required_for_closure": true, "name": "workspace_id", "default_field": true, "required_for_agents": true, "customers_can_edit": true, "label_for_customers": "Issue related to", "required_for_customers": false, "displayed_to_customers": true, "belongs_to_section": false, "choices": [], "nested_fields": [], "sections": [], "workspace_id": null }, { "id": 54268, "label": "Requester", "description": "Ticket requester", "field_type": "default_requester", "created_at": "2023-01-19T17:25:20Z", "updated_at": "2023-01-19T17:25:20Z", "position": 1, "required_for_closure": false, "name": "requester", "default_field": true, "required_for_agents": true, "customers_can_edit": true, "label_for_customers": "Requester", "required_for_customers": true, "displayed_to_customers": true, "belongs_to_section": false, "portal_cc": false, "portalcc_to": "company", "choices": [], "nested_fields": [], "sections": [], "workspace_id": 1 }, { "id": 54269, "label": "Subject", "description": "Ticket subject", "field_type": "default_subject", "created_at": "2023-01-19T17:25:20Z", "updated_at": "2023-01-19T17:25:20Z", "position": 2, "required_for_closure": false, "name": "subject", "default_field": true, "required_for_agents": true, "customers_can_edit": true, "label_for_customers": "Subject", "required_for_customers": true, "displayed_to_customers": true, "belongs_to_section": false, "choices": [], "nested_fields": [], "sections": [], "workspace_id": 1 }, { "id": 54270, "label": "Source", "description": "Ticket source", "field_type": "default_source", "created_at": "2023-01-19T17:25:20Z", "updated_at": "2023-01-19T17:25:20Z", "position": 3, "required_for_closure": false, "name": "source", "default_field": true, "required_for_agents": false, "customers_can_edit": false, "label_for_customers": "Source", "required_for_customers": false, "displayed_to_customers": false, "belongs_to_section": false, "choices": [ { "id": 3, "value": "Phone" }, { "id": 1, "value": "Email" }, { "id": 2, "value": "Portal" }, { "id": 4, "value": "Chat" }, { "id": 5, "value": "Feedback Widget" }, { "id": 6, "value": "Yammer" }, { "id": 7, "value": "AWS CloudWatch" }, { "id": 8, "value": "PagerDuty" }, { "id": 9, "value": "Walk-up" }, { "id": 10, "value": "Slack" }, { "id": 12, "value": "Workplace" }, { "id": 13, "value": "Employee Onboarding" }, { "id": 15, "value": "MS Teams" }, { "id": 1001, "value": "Source Name" } ], "nested_fields": [], "sections": [], "workspace_id": 1 }, { "id": 54280, "label": "Type", "description": "Ticket type", "field_type": "default_ticket_type", "created_at": "2023-01-19T17:25:20Z", "updated_at": "2023-01-27T16:31:28Z", "position": 4, "required_for_closure": false, "name": "ticket_type", "default_field": true, "required_for_agents": false, "customers_can_edit": false, "label_for_customers": "Type", "required_for_customers": false, "displayed_to_customers": false, "belongs_to_section": false, "choices": [ { "id": 52961, "value": "Case" } ], "nested_fields": [], "sections": [], "workspace_id": 1 }, { "id": 54271, "label": "Status", "description": "Ticket status", "field_type": "default_status", "created_at": "2023-01-19T17:25:20Z", "updated_at": "2023-01-27T16:31:28Z", "position": 5, "required_for_closure": false, "name": "status", "default_field": true, "required_for_agents": true, "customers_can_edit": false, "label_for_customers": "Status", "required_for_customers": false, "displayed_to_customers": true, "belongs_to_section": false, "choices": [ { "id": 2, "value": "Open", "requester_display_value": "Being Processed" }, { "id": 3, "value": "Pending", "requester_display_value": "Awaiting your Reply" }, { "id": 4, "value": "Resolved", "requester_display_value": "This ticket has been Resolved" }, { "id": 5, "value": "Closed", "requester_display_value": "This ticket has been Closed" } ], "nested_fields": [], "sections": [], "workspace_id": 1 }, { "id": 54272, "label": "Urgency", "description": "Ticket urgency", "field_type": "default_urgency", "created_at": "2023-01-19T17:25:20Z", "updated_at": "2023-01-27T16:31:28Z", "position": 6, "required_for_closure": false, "name": "urgency", "default_field": true, "required_for_agents": false, "customers_can_edit": false, "label_for_customers": "Urgency", "required_for_customers": false, "displayed_to_customers": false, "belongs_to_section": false, "choices": [ { "id": 1, "value": "Low" }, { "id": 2, "value": "Medium" }, { "id": 3, "value": "High" } ], "nested_fields": [], "sections": [], "workspace_id": 1 }, { "id": 54273, "label": "Impact", "description": "Ticket impact", "field_type": "default_impact", "created_at": "2023-01-19T17:25:20Z", "updated_at": "2023-01-27T16:31:28Z", "position": 7, "required_for_closure": false, "name": "impact", "default_field": true, "required_for_agents": false, "customers_can_edit": false, "label_for_customers": "Impact", "required_for_customers": false, "displayed_to_customers": false, "belongs_to_section": false, "choices": [ { "id": 1, "value": "Low" }, { "id": 2, "value": "Medium" }, { "id": 3, "value": "High" } ], "nested_fields": [], "sections": [], "workspace_id": 1 }, { "id": 54274, "label": "Priority", "description": "Ticket priority", "field_type": "default_priority", "created_at": "2023-01-19T17:25:20Z", "updated_at": "2023-01-27T16:31:28Z", "position": 8, "required_for_closure": false, "name": "priority", "default_field": true, "required_for_agents": true, "customers_can_edit": false, "label_for_customers": "Priority", "required_for_customers": false, "displayed_to_customers": false, "belongs_to_section": false, "choices": [ { "id": 1, "value": "Low" }, { "id": 2, "value": "Medium" }, { "id": 3, "value": "High" }, { "id": 4, "value": "Urgent" } ], "nested_fields": [], "sections": [], "workspace_id": 1 }, { "id": 54275, "label": "Group", "description": "Ticket group", "field_type": "default_group", "created_at": "2023-01-19T17:25:20Z", "updated_at": "2023-01-27T16:31:28Z", "position": 9, "required_for_closure": false, "name": "group", "default_field": true, "required_for_agents": false, "customers_can_edit": false, "label_for_customers": "Group", "required_for_customers": false, "displayed_to_customers": false, "belongs_to_section": false, "choices": [ { "id": 63557, "value": "HR - Benefits and Compensation Team" }, { "id": 63559, "value": "HR - Employee Onboarding and Offboarding Team" }, { "id": 63558, "value": "HR - Employee Relations Team" }, { "id": 63561, "value": "HR - HR Operations Team" }, { "id": 63560, "value": "HR - Talent Management Team" }, { "id": 63549, "value": "IT - Capacity Management Team" }, { "id": 63545, "value": "IT - Change Team" }, { "id": 63547, "value": "IT - Database Team" }, { "id": 63548, "value": "IT - Hardware Team" }, { "id": 63554, "value": "IT - Helpdesk Monitoring Team" }, { "id": 63541, "value": "IT - Incident Team" }, { "id": 63542, "value": "IT - Major Incident Team" }, { "id": 63553, "value": "IT - Network Team" }, { "id": 63544, "value": "IT - Problem Management Team" }, { "id": 63546, "value": "IT - Release Team" }, { "id": 63551, "value": "IT - Service Design Team" }, { "id": 63543, "value": "IT - Service Request Fulfillment Team" }, { "id": 63552, "value": "IT - Software Team" }, { "id": 63550, "value": "IT - Supplier Management Team" } ], "nested_fields": [], "sections": [], "workspace_id": 1 }, { "id": 54276, "label": "Assigned to", "description": "Agent", "field_type": "default_agent", "created_at": "2023-01-19T17:25:20Z", "updated_at": "2023-01-27T16:31:28Z", "position": 10, "required_for_closure": false, "name": "agent", "default_field": true, "required_for_agents": false, "customers_can_edit": false, "label_for_customers": "Assigned to", "required_for_customers": false, "displayed_to_customers": true, "belongs_to_section": false, "choices": [ { "id": 66447, "value": "Pavithra (Me)" }, { "id": 66449, "value": "Rachel (Deactivated)" } ], "nested_fields": [], "sections": [], "workspace_id": 1 }, { "id": 54277, "label": "Department", "description": "Select the department, the ticket belongs to.", "field_type": "default_department", "created_at": "2023-01-19T17:25:20Z", "updated_at": "2023-01-27T16:31:28Z", "position": 11, "required_for_closure": false, "name": "department", "default_field": true, "required_for_agents": false, "customers_can_edit": false, "label_for_customers": "Department", "required_for_customers": false, "displayed_to_customers": false, "belongs_to_section": false, "choices": [ { "id": 55787, "value": "Customer Support" }, { "id": 55785, "value": "Development" }, { "id": 55788, "value": "Finance" }, { "id": 55789, "value": "HR" }, { "id": 55791, "value": "IT" }, { "id": 55790, "value": "Operations" }, { "id": 55786, "value": "Sales" } ], "nested_fields": [], "sections": [], "workspace_id": 1 }, { "id": 54278, "label": "Description", "description": "Ticket description", "field_type": "default_description", "created_at": "2023-01-19T17:25:20Z", "updated_at": "2023-01-27T16:31:28Z", "position": 12, "required_for_closure": false, "name": "description", "default_field": true, "required_for_agents": true, "customers_can_edit": true, "label_for_customers": "Description", "required_for_customers": true, "displayed_to_customers": true, "belongs_to_section": false, "choices": [], "nested_fields": [], "sections": [], "workspace_id": 1 }, { "id": 54279, "label": "Category", "description": "Ticket category", "field_type": "default_category", "created_at": "2023-01-19T17:25:20Z", "updated_at": "2023-01-27T16:31:28Z", "position": 13, "required_for_closure": false, "name": "category", "default_field": true, "required_for_agents": false, "customers_can_edit": false, "label_for_customers": "Category", "required_for_customers": false, "displayed_to_customers": false, "belongs_to_section": false, "choices": [ { "id": 53978, "display_id": 1, "value": "Hardware", "nested_options": [ { "id": 53979, "display_id": 2, "value": "Computer", "nested_options": [ { "id": 53980, "display_id": 3, "value": "Mac" }, { "id": 53981, "display_id": 4, "value": "PC" } ] }, { "id": 53982, "display_id": 5, "value": "Printer", "nested_options": [] }, { "id": 53983, "display_id": 6, "value": "Phone", "nested_options": [] }, { "id": 53984, "display_id": 7, "value": "Peripherals", "nested_options": [ { "id": 53985, "display_id": 8, "value": "Router" }, { "id": 53986, "display_id": 9, "value": "Switch" }, { "id": 53987, "display_id": 10, "value": "Access point" } ] } ] }, { "id": 53988, "display_id": 11, "value": "Software", "nested_options": [ { "id": 53989, "display_id": 12, "value": "MS Office", "nested_options": [] }, { "id": 53990, "display_id": 13, "value": "Adobe Reader", "nested_options": [] }, { "id": 53991, "display_id": 14, "value": "Windows", "nested_options": [] }, { "id": 53992, "display_id": 15, "value": "Chrome", "nested_options": [] } ] }, { "id": 53993, "display_id": 16, "value": "Network", "nested_options": [ { "id": 53994, "display_id": 17, "value": "Access", "nested_options": [] }, { "id": 53995, "display_id": 18, "value": "Connectivity", "nested_options": [] } ] }, { "id": 53996, "display_id": 19, "value": "Office Applications", "nested_options": [ { "id": 53997, "display_id": 20, "value": "HR", "nested_options": [ { "id": 53998, "display_id": 21, "value": "Oracle" }, { "id": 53999, "display_id": 22, "value": "SmartRecruiter" } ] }, { "id": 54000, "display_id": 23, "value": "Design", "nested_options": [ { "id": 54001, "display_id": 24, "value": "Photoshop" }, { "id": 54002, "display_id": 25, "value": "Creative Cloud" }, { "id": 54003, "display_id": 26, "value": "Canva" } ] } ] }, { "id": 54004, "display_id": 27, "value": "Office Furniture", "nested_options": [ { "id": 54005, "display_id": 28, "value": "Cabinet", "nested_options": [] }, { "id": 54006, "display_id": 29, "value": "Desk", "nested_options": [] }, { "id": 54007, "display_id": 30, "value": "Chair", "nested_options": [] } ] }, { "id": 54008, "display_id": 31, "value": "Office Equipment ", "nested_options": [ { "id": 54009, "display_id": 32, "value": "Laptop", "nested_options": [] }, { "id": 54010, "display_id": 33, "value": "Printer", "nested_options": [] }, { "id": 54011, "display_id": 34, "value": "Desktop", "nested_options": [] } ] }, { "id": 54012, "display_id": 35, "value": "Employee Benefits", "nested_options": [ { "id": 54013, "display_id": 36, "value": "Health Insurance", "nested_options": [] }, { "id": 54014, "display_id": 37, "value": "Life Insurance", "nested_options": [] }, { "id": 54015, "display_id": 38, "value": "Retirement", "nested_options": [] }, { "id": 54016, "display_id": 39, "value": "Tuition Reimbursement", "nested_options": [] }, { "id": 54017, "display_id": 40, "value": "Financial Assistance", "nested_options": [] }, { "id": 54018, "display_id": 41, "value": "Relocation Assistance", "nested_options": [] } ] }, { "id": 54019, "display_id": 42, "value": "Employee Records and Documents", "nested_options": [ { "id": 54020, "display_id": 43, "value": "Verification Letter", "nested_options": [] }, { "id": 54021, "display_id": 44, "value": "Visa", "nested_options": [] } ] }, { "id": 54022, "display_id": 45, "value": "Employee Onboarding/Offboarding", "nested_options": [ { "id": 54023, "display_id": 46, "value": "Onboarding", "nested_options": [] }, { "id": 54024, "display_id": 47, "value": "Offboarding", "nested_options": [] }, { "id": 54025, "display_id": 48, "value": "Termination", "nested_options": [] } ] }, { "id": 54026, "display_id": 49, "value": "Talent Management", "nested_options": [ { "id": 54027, "display_id": 50, "value": "New role", "nested_options": [] }, { "id": 54028, "display_id": 51, "value": "Hiring request", "nested_options": [] }, { "id": 54029, "display_id": 52, "value": "Internal Transfer", "nested_options": [] } ] }, { "id": 54030, "display_id": 53, "value": "Employee Relations", "nested_options": [ { "id": 54031, "display_id": 54, "value": "Harrasment", "nested_options": [] } ] }, { "id": 54032, "display_id": 55, "value": "Workplace Access and Security", "nested_options": [ { "id": 54033, "display_id": 56, "value": "Access badge", "nested_options": [] }, { "id": 54034, "display_id": 57, "value": "Biometric system", "nested_options": [] }, { "id": 54035, "display_id": 58, "value": "Surveillance system", "nested_options": [] }, { "id": 54036, "display_id": 59, "value": "Alarms", "nested_options": [] }, { "id": 54037, "display_id": 60, "value": "Lighting in parking lots", "nested_options": [] }, { "id": 54038, "display_id": 61, "value": "After-hours access", "nested_options": [] } ] }, { "id": 54039, "display_id": 62, "value": "Travel", "nested_options": [ { "id": 54040, "display_id": 63, "value": "Accomodation", "nested_options": [] }, { "id": 54041, "display_id": 64, "value": "Flight Booking", "nested_options": [] }, { "id": 54042, "display_id": 65, "value": "Car rental", "nested_options": [] } ] }, { "id": 54043, "display_id": 66, "value": "Building and Grounds Maintenance", "nested_options": [ { "id": 54044, "display_id": 67, "value": "Electrical", "nested_options": [] }, { "id": 54045, "display_id": 68, "value": "Plumbing", "nested_options": [] }, { "id": 54046, "display_id": 69, "value": "HVAC", "nested_options": [] }, { "id": 54047, "display_id": 70, "value": "Furniture", "nested_options": [] }, { "id": 54048, "display_id": 71, "value": "Equipment", "nested_options": [] }, { "id": 54049, "display_id": 72, "value": "Painting", "nested_options": [] }, { "id": 54050, "display_id": 73, "value": "Landscaping", "nested_options": [] }, { "id": 54051, "display_id": 74, "value": "Pest Control", "nested_options": [] }, { "id": 54052, "display_id": 75, "value": "Cleaning", "nested_options": [] } ] }, { "id": 54053, "display_id": 76, "value": "Vendor Document Review", "nested_options": [ { "id": 54054, "display_id": 77, "value": "NDA", "nested_options": [] }, { "id": 54055, "display_id": 78, "value": "POC", "nested_options": [] }, { "id": 54056, "display_id": 79, "value": "EULA", "nested_options": [] }, { "id": 54057, "display_id": 80, "value": "SOW", "nested_options": [] } ] }, { "id": 54058, "display_id": 81, "value": "Payroll", "nested_options": [ { "id": 54059, "display_id": 82, "value": "Setup", "nested_options": [] }, { "id": 54060, "display_id": 83, "value": "Payslip", "nested_options": [] }, { "id": 54061, "display_id": 84, "value": "Salary", "nested_options": [] }, { "id": 54062, "display_id": 85, "value": "Bonus", "nested_options": [] }, { "id": 54063, "display_id": 86, "value": "Overtime", "nested_options": [] } ] }, { "id": 54064, "display_id": 87, "value": "Vendor Payment", "nested_options": [ { "id": 54065, "display_id": 88, "value": "New registration", "nested_options": [] }, { "id": 54066, "display_id": 89, "value": "Modify details", "nested_options": [] }, { "id": 54067, "display_id": 90, "value": "Payment issues", "nested_options": [] } ] }, { "id": 54068, "display_id": 91, "value": "Customer Payment", "nested_options": [ { "id": 54069, "display_id": 92, "value": "Refund", "nested_options": [] }, { "id": 54070, "display_id": 93, "value": "Credit Note", "nested_options": [] }, { "id": 54071, "display_id": 94, "value": "Invoice issues", "nested_options": [] } ] }, { "id": 54072, "display_id": 95, "value": "Reimbursements and Advances", "nested_options": [ { "id": 54073, "display_id": 96, "value": "Business Expenses", "nested_options": [] }, { "id": 54074, "display_id": 97, "value": "Corporate Credit Card", "nested_options": [] }, { "id": 54075, "display_id": 98, "value": "Cash Advance", "nested_options": [] } ] }, { "id": 54076, "display_id": 99, "value": "Legal Document Creation", "nested_options": [ { "id": 54077, "display_id": 100, "value": "MOU", "nested_options": [] }, { "id": 54078, "display_id": 101, "value": "NDA", "nested_options": [] } ] }, { "id": 54079, "display_id": 102, "value": "Legal Review - Vendor Documents", "nested_options": [ { "id": 54080, "display_id": 103, "value": "NDA", "nested_options": [] }, { "id": 54081, "display_id": 104, "value": "POC", "nested_options": [] }, { "id": 54082, "display_id": 105, "value": "EULA", "nested_options": [] }, { "id": 54083, "display_id": 106, "value": "SOW", "nested_options": [] }, { "id": 54084, "display_id": 107, "value": "MSA", "nested_options": [] } ] }, { "id": 54085, "display_id": 108, "value": "Legal Review - Customer Documents", "nested_options": [ { "id": 54086, "display_id": 109, "value": "NDA", "nested_options": [] }, { "id": 54087, "display_id": 110, "value": "POC", "nested_options": [] }, { "id": 54088, "display_id": 111, "value": "EULA", "nested_options": [] }, { "id": 54089, "display_id": 112, "value": "SOW", "nested_options": [] }, { "id": 54090, "display_id": 113, "value": "MSA", "nested_options": [] } ] }, { "id": 54091, "display_id": 114, "value": "Other", "nested_options": [] } ], "nested_fields": [ { "name": "sub_category", "id": 9522, "label": "Sub-Category", "label_in_portal": "Sub-Category", "level": 2, "description": "Ticket Sub Category", "created_at": "2023-01-19T17:25:21Z", "updated_at": "2023-01-19T17:25:21Z", "field_id": 54279 }, { "name": "item_category", "id": 9523, "label": "Item", "label_in_portal": "Item", "level": 3, "description": "Ticket Item", "created_at": "2023-01-19T17:25:21Z", "updated_at": "2023-01-19T17:25:21Z", "field_id": 54279 } ], "sections": [], "workspace_id": 1 }, { "id": 54868, "label": "IT field", "description": "", "field_type": "custom_dropdown", "created_at": "2023-01-27T16:31:28Z", "updated_at": "2023-01-27T16:31:28Z", "position": 14, "required_for_closure": false, "name": "it_field", "default_field": false, "required_for_agents": false, "customers_can_edit": true, "label_for_customers": "IT field", "required_for_customers": false, "displayed_to_customers": true, "belongs_to_section": false, "choices": [ { "id": 54047, "display_id": 7, "value": "First Choice" }, { "id": 54048, "display_id": 8, "value": "Second Choice" } ], "nested_fields": [], "sections": [], "workspace_id": 2 } ] }
EXPAND ↓
Additional examples

1. Get the list of ticket fields from a specific workspace

1
curl -v -u api_key:X -X GET 'https://domain.freshservice.com/api/v2/ticket_form_fields?workspace_id=2'
EXPAND ↓

Get Ticket Activites

get /api/v2/tickets/[id]/activities
OAuth 2.0 Scope
freshservice.tickets.view
Sample code | Curl
1
curl -v -u api_key:X -H "Content-Type: application/json" -X GET 'https://domain.freshservice.com/api/v2/tickets/152/activities'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
{ "activities": [ { "actor": { "id": 1434, "name": "Rubeus Hagrid" }, "content": " restored this ticket from trash", "sub_contents": [], "created_at": "2021-06-15T05:28:10Z" }, { "actor": { "id": 123456, "name": "Rubeus Hagrid" }, "content": " deleted this ticket", "sub_contents": [], "created_at": "2021-06-09T18:10:05Z" }, { "actor": { "id": 0, "name": "Ticket Workflow" }, "content": " executed sla test 1 workflow from Ticket is raised event", "sub_contents": [ "set Department as Development and set Group as Capacity Management Team", "Workflow Ends" ], "created_at": "2021-06-09T18:03:01Z" }, { "actor": { "id": 0, "name": "Ticket Workflow" }, "content": " executed Copy of sla test 1 workflow from Ticket is raised event", "sub_contents": [ "set Source as Portal", "Workflow Ends" ], "created_at": "2021-06-09T18:03:01Z" }, { "actor": { "id": 4223, "name": "Filius Flitwick" }, "content": "created ticket for Email210609233300, set Status as Open, set Urgency as Low, set Priority as Medium, set Source as Portal, set Type as Incident and set Impact as Low", "sub_contents": [ "System executed Default SLA Policy (SLA)" ], "created_at": "2021-06-09T18:03:01Z" } ] }
EXPAND ↓

Time Entries

These APIs help to track exactly how much time an agent has spent on each ticket, start/stop timers and perform a lot of other time tracking and monitoring tasks to ensure that the support team is always performing at its peak efficiency.

Attribute Type Description
id Number Id of the time entry READ-ONLY
workspace_id Number ID of the workspace to which the time entry belongs(inherited from the ticket's workspace). This attribute is applicable only to accounts on the Employee Support Mode. READ-ONLY
created_at DateTime Time at which this time-entry is created READ-ONLY
updated_at DateTime Time at which the time-entry is updated READ-ONLY
start_time DateTime The time at which the time-entry is added. If a timer, which is in stopped state, is started again, this holds date_time at which the timer is started again READ-ONLY
timer_running Boolean Set to true if timer is currently running. Default value is false. At a time, only one timer can be running for an agent across the account
billable Boolean Set as true if the time-entry is billable. Default value is true
time_spent String The total amount of time spent by the timer in hh::mm format. This field cannot be set if timer_running is true. Mandatory if timer_running is false
executed_at DateTime Time at which the timer is executed. Default value (unless given in request) is the time at which timer is added. Should be less than or equal to current date_time
task_id Number Id of the task assigned to the time-entry. Task should be valid on the given ticket and assigned to agent_id
note String Description of the time-entry
agent_id Number The user/agent to whom this time-entry is assigned MANDATORY

Create a Time Entry

This API helps to create a Time Entry.

Note:
1. If timer_running is not specified in the request, it is considered as false and time_spent is mandatory in this scenario.
2. time_spent can be set only if timer_running is false or not set.

post /api/v2/tickets/[ticket_id]/time_entries
OAuth 2.0 Scope
freshservice.tickets.time_entries.create
Sample code | Curl
1
curl -v -u api_key:X -H "Content-Type: application/json" -d '{"time_entry":{"note":"test_entry","time_spent":"03:00","agent_id":1}}' -X POST 'https://domain.freshservice.com/api/v2/tickets/1/time_entries'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{ "time_entry": { "id": 20, "created_at": "2019-07-19T10:17:23Z", "updated_at": "2019-07-19T13:18:40Z", "start_time": "2019-07-19T13:18:09Z", "timer_running": false, "billable": true, "time_spent": "03:00", "executed_at": "2019-07-18T18:30:00Z", "task_id": null, "workspace_id": 3, "note": "test_entry", "agent_id": 1, "custom_fields": {} } }
EXPAND ↓
Additional examples

1. Create a time-entry along with time spent value. Timer will not be started

1
curl -v -u api_key:X -H 'Content-Type: application/json' -d '{"time_entry":{"note":"test_entry","time_spent":"03:00","agent_id":1}}' -X POST 'https://domain.freshservice.com/api/v2/tickets/1/time_entries'
EXPAND ↓

2. Create a time-entry with timer running

1
curl -v -u api_key:X -H 'Content-Type: application/json' -d '{"time_entry":{"note":"test_entry","timer_running":true,"agent_id":1}}' -X POST 'https://domain.freshservice.com/api/v2/tickets/1/time_entries'
EXPAND ↓

View a Time Entry

This API call helps to list a particular Time Entry.

get /api/v2/tickets/[ticket_id]/time_entries/[id]
OAuth 2.0 Scope
freshservice.tickets.time_entries.view
Sample code | Curl
1
curl -v -u api_key:X -H "Content-Type: application/json" -X GET 'https://domain.freshservice.com/api/v2/tickets/1/time_entries/20'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{ "time_entry": { "id": 20, "created_at": "2019-07-19T10:17:23Z", "updated_at": "2019-07-19T13:18:40Z", "start_time": "2019-07-19T13:18:09Z", "timer_running": false, "billable": true, "time_spent": "03:00", "executed_at": "2019-07-18T18:30:00Z", "task_id": null, "workspace_id": 3, "note": "view time_entry", "agent_id": 1, "custom_fields": {} } }
EXPAND ↓

List All Time Entries of a Ticket

This API helps to view all time entries of a particular ticket.

get /api/v2/tickets/[ticket_id]/time_entries
OAuth 2.0 Scope
freshservice.tickets.time_entries.view
Sample code | Curl
1
curl -v -u api_key:X -H "Content-Type: application/json" -X GET 'https://domain.freshservice.com/api/v2/tickets/1/time_entries'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
{ "time_entries": [ { "id": 20, "created_at": "2019-07-19T10:17:23Z", "updated_at": "2019-07-19T13:18:40Z", "start_time": "2019-07-19T13:18:09Z", "timer_running": false, "billable": true, "time_spent": "03:00", "executed_at": "2019-07-18T18:30:00Z", "task_id": null, "workspace_id": 3, "note": "time entry 1", "agent_id": 1, "custom_fields": {} }, { "id": 21, "created_at": "2019-07-19T10:18:23Z", "updated_at": "2019-07-19T13:19:40Z", "start_time": "2019-07-19T13:19:09Z", "timer_running": false, "billable": true, "time_spent": "03:00", "executed_at": "2019-07-18T18:30:00Z", "task_id": null, "workspace_id": 3, "note": "time entry 2", "agent_id": 1, "custom_fields": {} } ] }
EXPAND ↓

Update a Time Entry

This API can be used to update/modify existing time entry.

Note:
1. For a running timer, time_spent cannot be updated without stopping it.

Attribute Type Description
id Number Id of the time entry READ-ONLY
workspace_id Number Workspace ID of the time entry(inherited from the ticket). This attribute is applicable only to accounts on the Employee Support Mode. READ-ONLY
created_at DateTime Time at which this time-entry is created READ-ONLY
updated_at DateTime Time at which this time-entry is updated READ-ONLY
start_time DateTime The time at which the time-entry is added. If a timer, which is in stopped state, is started again, date_time at which the timer is started again READ-ONLY
timer_running Boolean Cannot update timer_running to the same existing value.
billable Boolean Can be set to true or false
time_spent String The total amount of time spent by the timer in hh::mm format.
executed_at DateTime Time at which the timer is executed. Default value (unless given in request) is the time at which timer is added. Should be less than or equal to current date_time.
task_id Number Id of the task assigned to the time-entry. Task should be valid on the given ticket and should be assigned to the agent_id
note String Description of the time-entry
agent_id Number The user/agent to whom this time-entry is to be assigned MANDATORY
put /api/v2/tickets/[ticket_id]/time_entries/[id]
OAuth 2.0 Scope
freshservice.tickets.time_entries.edit
Sample code | Curl
1
curl -v -u api_key:X -H "Content-Type: application/json" -X PUT -d '{"time_entry":{"note":"text_update","agent_id":1}}' 'https://domain.freshservice.com/api/v2/tickets/1/time_entries/20'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{ "time_entry": { "id": 20, "created_at": "2019-07-19T14:33:48Z", "updated_at": "2019-07-19T14:33:48Z", "start_time": "2019-07-19T14:33:48Z", "timer_running": false, "billable": true, "time_spent": "00:01", "executed_at": "2019-07-19T14:33:48Z", "task_id": null, "workspace_id": 3, "note": "text_update", "agent_id": 1, "custom_fields": {} } }
EXPAND ↓

Delete a Time Entry

This API can be used to delete an existing Time Entry. Deleted time entries cannot be restored.

delete /api/v2/tickets/[ticket_id]/time_entries/[id]
OAuth 2.0 Scope
freshservice.tickets.time_entries.delete
Sample code | Curl
1
curl -v -u api_key:X -H "Content-Type: application/json" -X DELETE 'https://domain.freshservice.com/api/v2/tickets/1/time_entries/20'
EXPAND ↓
Response
1
HTTP Status: 200 OK
EXPAND ↓

Create a Source

This API helps you create a new Ticket Source.

Attribute Type Description
name string Name of the source
post /api/v2/ticket_fields/sources
OAuth 2.0 Scope
freshservice.tickets.fields.manage
Sample code | Curl
1
curl -v -u api_key:X -H "Content-Type: application/json" -d '{ "name": "Source Name" }' -X POST 'https://domain.freshservice.com/api/v2/ticket_fields/sources'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
{ "source": { "id": 42, "created_at": "2019-09-10T05:58:59Z", "updated_at": "2019-09-10T05:58:59Z", "choice_id": 1008, "value": "iPhone ", "position": 21, "visible": true, "default": false } }
EXPAND ↓

Service Request

This section lists all API that are related to service requests

Create a Service Request

This API helps you create a service request

Note 1:
The service requested will be created with the requester specified in “email” attribute. If no email is provided, the request is created on behalf of the agent

Note 2:
Fields in the API behave like the agent portal's new service request page. If a field is not visible in self service portal, you can still provide a value for that field using the api. If a field is marked mandatory but not visible in portal in service item, you must provide a value for it in the api.

Request Attrubutes

Attribute Type Description
quantity number Quantity needed by the requested
requested_for email Email id of the requester on whose behalf the service request is created
email email Email id of the requester
child_items - Service items that are included as child items. Provide the display id as service_item_id for each child item.
custom_fields - Values of custom fields present in the service item form

Response Attrubutes

Attribute Type Description
Ticket Attributes - Refer to Ticket attributes for complete list here
requested_items - Items requested as part of service request
approval_status number Current approval status of the service request. ‘1’ if approved, ‘2’ if rejected
approval_status_name string Display name of the approval status
custom_fields - Custom fields present in the ticket form
post /api/v2/service_catalog/items/{display_id}/place_request
OAuth 2.0 Scope
freshservice.tickets.create
Sample code | Curl
1
curl -v -u api_key:X -H "Content-Type: application/json" -d '{"email": "tom@outerspace.com", “quantity” : 1 }' -X POST 'https://domain.freshservice.com/api/v2/service_catalog/items/1/place_request'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
{ "service_request": { "cc_emails": [ "sample@freshservice.com" ], "fwd_emails": [], "reply_cc_emails": [], "fr_escalated": false, "spam": false, "email_config_id": null, "group_id": null, "priority": 2, "requester_id": 14000044687, "responder_id": null, "source": 2, "status": 2, "subject": "Request for : xx xx", "to_emails": null, "sla_policy_id": 14000001854, "department_id": 14000015070, "id": 49, "type": "Service Request", "due_by": "2020-03-23T21:00:00Z", "fr_due_by": "2020-03-23T20:00:00Z", "is_escalated": false, "description": "", "description_text": "", "custom_fields": { "reach": null }, "created_at": "2020-03-22T15:31:39Z", "updated_at": "2020-03-22T15:31:39Z", "urgency": 1, "impact": 1, "category": null, "sub_category": null, "item_category": null, "deleted": false, "attachments": [], "approval_status": null, "approval_status_name": "Not Requested", "workspace_id": 2, "resolution_notes":null, "resolution_notes_html":null } }
EXPAND ↓

Create a Child Service Request

This API helps you to create a new child ticket on an existing ticket

Note 1:
Association of child Service Request to a deleted or a spammed ticket is not allowed.

Note 2:
Nesting of a child Service Request under another child Service Request is not supported.

Request Attributes

Attribute Type Description
quantity number Quantity needed by the requested
requested_for email Email id of the requester on whose behalf the service request is created
email email Email id of the requester
child_items - Service items that are included as child items. Provide the display id as service_item_id for each child item.
custom_fields - Values of custom fields present in the service item form
parent_ticket_id number Display ID of the parent Service Request/Case/Query/Issue/Request/Incident/Major Incident

Response Attributes

Attribute Type Description
Ticket Attributes - Refer to Ticket attributes for complete list here
requested_items - Items requested as part of service request
approval_status number Current approval status of the service request. ‘1’ if approved, ‘2’ if rejected
approval_status_name string Display name of the approval status
custom_fields - Custom fields present in the ticket form
post /api/v2/service_catalog/items/{display_id}/place_request
OAuth 2.0 Scope
freshservice.tickets.create
Sample code | Curl
1
curl -v -u api_key:X -H "Content-Type: application/json" -d '{"email": "tom@outerspace.com", “quantity” : 1 , "parent_ticket_id":17894}' -X POST 'https://domain.freshservice.com/api/v2/service_catalog/items/1/place_request'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
{ "service_request": { "cc_emails": [ "sample@freshservice.com" ], "fwd_emails": [], "reply_cc_emails": [], "fr_escalated": false, "spam": false, "email_config_id": null, "group_id": null, "priority": 2, "requester_id": 14000044687, "responder_id": null, "source": 2, "status": 2, "subject": "Request for : xx xx", "to_emails": null, "sla_policy_id": 14000001854, "department_id": 14000015070, "id": 49, "type": "Service Request", "due_by": "2020-03-23T21:00:00Z", "fr_due_by": "2020-03-23T20:00:00Z", "is_escalated": false, "description": "", "description_text": "", "custom_fields": { "reach": null }, "created_at": "2020-03-22T15:31:39Z", "updated_at": "2020-03-22T15:31:39Z", "urgency": 1, "impact": 1, "category": null, "sub_category": null, "item_category": null, "deleted": false, "attachments": [], "approval_status": null, "approval_status_name": "Not Requested", "workspace_id": 2 } }
EXPAND ↓

View Requested Items of a Service Request

This api helps you to view requested items attached to a service request

Attribute Type Description
id number Unique id of the requested item
created_at datetime Timestamp at which the requested item was attached to service request
updated_at datetime Timestamp at which the requested item was updated in the service request
quantity number Number of units of the item needed by the requester. By default it is 1
stage number Current stage of the requested item
loaned boolean Indicated whether the requested item is a loaner item
cost_per_request number Cost of the requested service item
remarks string Remarks related to a requested item
delivery_time number Estimated delivery time (in hrs)
is_parent boolean Boolean indicating whether this is the parent service item
service_item_id number Display id of service item unique to your account

Stages

Stage Value
Requested 1
Delivered 2
Cancelled 3
Fulfilled 4
Partially Fulfilled 5
get /api/v2/tickets/[id]/requested_items
OAuth 2.0 Scope
freshservice.tickets.view
Sample code | Curl
1
curl -v -u api_key:X -H "Content-Type: application/json" -X GET 'https://domain.freshservice.com/api/v2/tickets/1/requested_items'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{ "requested_items": [ { "custom_fields": { "additional_property_1": "value1", "additional_property_2": "value2" }, "id": 1, "created_at": "2020-03-10T11:45:47Z", "updated_at": "2020-03-10T11:45:47Z", "quantity": 1, "stage": 1, "loaned": false, "cost_per_request": 0, "remarks": null, "delivery_time": null, "is_parent": true, "service_item_id": 30 } ] }
EXPAND ↓

Update Requested Items of a Service Request

This api helps you to update the requested items attached to a service request

put /api/v2/tickets/[id]/requested_items/[id]
OAuth 2.0 Scope
freshservice.tickets.edit
Sample code | Curl
1
curl -v -u api_key:X -H "Content-Type: application/json" -X PUT -d '{"quantity":2, "stage":2, "custom_fields":{"additional_property_1": "value1"}}' 'https://domain.freshservice.com/api/v2/tickets/1/requested_items/1'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
{ "requested_item": { "id": 1, "item_id": 1, "from_date": "2021-11-26T11:30:00Z", "to_date": "2021-11-29T11:30:00Z", "quantity": 2, "service_request_id": 1, "stage": { "id": 2, "name": "Delvered" }, "fulfilled": false, "cost": null, "custom_fields": { "additional_property_1": "value1", "additional_property_2": "value2" }, "item": { "name": "Catalog Item", "display_id": 1, "deleted": false, "item_type": { "id": 2, "name": "loaner" }, "ci_type_id": null, "cost_visibility": false, "quantity_visibility": false, "application_id": null, "short_description": "Short Description", "description": "Description" } } }
EXPAND ↓

Approvals

This section lists all API that can be used to create, edit or otherwise manipulate Service Request Approvals.

Attribute Type Description
id number Unique ID of the approval
created_at datetime Approval creation timestamp
updated_at datetime Approval updated timestamp
approver_id number User ID of the approver
approver_name string Name of the approver
approval_type number Helps define the type of approval in case there are more than one approvers
user_id number User ID of the initiator of the approval
user_name string Name of the initiator of the approval
level number Indicates the level information for multi-level approvals
approval_status hash Status ID and Name of the approval
delegatee hash User ID and Name of the delegatee for the approval
latest_remark string Remarks given by the approver
email_content string HTML content of the approval email (only available for “Request Approval” and “View an Approval” APIs)

Approval Properties

Approvals use certain fixed numerical values to denote its status and types. These numerical values along with their meanings are given below:

Approval Type Value
To be approved by Everyone 1
To be approved by Anyone 2
To be approved by Majority 3
To be approved by First Responder 4
Status Value
Requested 0
Approved 1
Rejected 2
Cancelled 3

Request Approval For A Service Request

Send a Service Request for approval

Note: "email_content" is an optional parameter for sending approval. If not provided, the default approval notification will be sent to approvers.

post /api/v2/tickets/[ticket_id]/approvals
OAuth 2.0 Scope
freshservice.tickets.edit
Sample code | Curl
1
curl -v -u api_key:X -H "Content-Type: application/json" -d '{"approver_id":39479, "approval_type": 2,"email_content": "Your approval email body goes here."}' -X POST 'https://domain.freshservice.com/api/v2/tickets/20/approvals'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{ "approvals": [{ "id": 1, "created_at": "2022-12-08T11:52:41Z", "updated_at": "2023-01-09T08:48:23Z", "approver_id": 8, "approver_name": "Alexander Schroeder", "approval_type": 1, "user_id": 1, "level": 2, "user_name": "Ronald Weasley", "approval_status": { "id": 3, "name": "cancelled" }, "delegatee": { "id": 29, "name": "Rolanda Hooch" }, "latest_remark": "" }] }
EXPAND ↓

List All Ticket Approvals

Retrieve all approvals on a Service Request with the given ID from Freshservice.

get /api/v2/tickets/[ticket_id]/approvals
OAuth 2.0 Scope
freshservice.tickets.view
Sample code | Curl
1
curl -v -u api_key:X -X GET 'https://domain.freshservice.com/api/v2/tickets/20/approvals'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
{ "approvals": [{ "id": 1, "created_at": "2022-12-08T11:52:41Z", "updated_at": "2023-01-09T08:48:23Z", "approver_id": 8, "approver_name": "Alexander Schroeder", "approval_type": 1, "user_id": 1, "level": 2, "user_name": "Rolanda Hooch", "approval_status": { "id": 3, "name": "cancelled" }, "delegatee": { "id": 29, "name": "Ronald Weasley" }, "latest_remark": "" },{ "id": 2, "created_at": "2022-12-09T11:49:00Z", "updated_at": "2023-01-30T08:48:08Z", "approver_id": 7, "approver_name": "Harry Potter", "approval_type": 1, "user_id": 1, "level": 1, "user_name": "Rolanda Hooch", "approval_status": { "id": 3, "name": "cancelled" }, "delegatee": { "id": 29, "name": "Ronald Weasley" }, "latest_remark": "You are not authorized for this request" }] }
EXPAND ↓

View An Approval

Retrieve an approval on a Service Request with the given ID from Freshservice

get /api/v2/tickets/[ticket_id]/approvals/[id]
OAuth 2.0 Scope
freshservice.tickets.view
Sample code | Curl
1
curl -v -u api_key:X -X GET 'https://domain.freshservice.com/api/v2/tickets/20/approvals/1'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{ "approval": { "id": 1, "created_at": "2022-12-08T11:52:41Z", "updated_at": "2023-01-09T08:48:23Z", "approver_id": 8, "approver_name": "Alexander Schroeder", "approval_type": 1, "user_id": 1, "level": 2, "user_name": "Rolanda Hooch", "approval_status": { "id": 3, "name": "cancelled" }, "delegatee": { "id": 29, "name": "Ronald Weasley" }, "email_content": "<p>Your Email content</p>" "latest_remark": "" } }
EXPAND ↓

Cancel An approval

Cancel an existing approval on a Service Request

Note: You can only update the approval status of a request to "cancelled" state through this API. Any other status change will be done based on the approver's action.

put /api/v2/tickets/[ticket_id]/approvals/[id]
OAuth 2.0 Scope
freshservice.tickets.edit
Sample code | Curl
1
curl -v -u api_key:X -H "Content-Type: application/json" -d '{ "approval_status":{ "id":3 }}' -X PUT 'https://domain.freshservice.com/api/v2/tickets/20/approvals/1'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{ "approval": { "id": 1, "created_at": "2022-12-08T11:52:41Z", "updated_at": "2023-01-09T08:48:23Z", "approver_id": 8, "approver_name": "Alexander Schroeder", "approval_type": 1, "user_id": 1, "level": 2, "user_name": "Ronald Weasley", "approval_status": { "id": 3, "name": "cancelled" }, "delegatee": { "id": 29, "name": "Rolanda Hooch" }, "latest_remark": "" } }
EXPAND ↓

Send Reminder For An Approval

Resends a reminder for a specific Approval raised for the ticket

put /api/v2/tickets/[ticket_id]/approvals/[id]/remind
OAuth 2.0 Scope
freshservice.tickets.edit
Sample code | Curl
1
curl -v -u api_key:X -H "Content-Type: application/json" -d '' -X PUT 'https://domain.freshservice.com/api/v2/tickets/20/approvals/1/remind'
EXPAND ↓
Response
1
HTTP Status: 200 No Content
EXPAND ↓

Tasks

This section lists all API that can be used to create, edit or otherwise manipulate Ticket Tasks.

Attribute Type Description
id number Unique ID of the task.
agent_id number Id of the agent to whom the task is assigned
status number Status of the task, 1-Open, 2-In Progress, 3-Completed
due_date DateTime Due date of the task
notify_before number Time in seconds before which notification is sent prior to due date
title string Title of the task
description string Description of the task
created_at DateTime Timestamp at which the task was created
updated_at DateTime Timestamp at which the task was updated
closed_at DateTime Timestamp at which the task was closed
group_id number Unique ID of the group to which the task is assigned

Create a Task

Create a new task on a ticket request in freshservice

Attribute Type Description
workspace_id number ID of the workspace to which the task belongs. This attribute is applicable only to accounts on the Employee Support Mode. The default value is the ID of the workspace of the ticket.
agent_id number ID of the agent to whom the task is assigned
status number Status of the task, 1-Open, 2-In Progress, 3-Completed
due_date datetime Due date of the task
notify_before number Time in seconds before which notification is sent prior to due date
title string Title of the task
description string Description of the task
group_id number Unique ID of the group to which the task is assigned
post /api/v2/tickets/[id]/tasks
OAuth 2.0 Scope
freshservice.tickets.tasks.create
Sample code | Curl
1
2
3
4
5
6
7
curl -v -u api_key:X -H "Content-Type: application/json" -d '{ "due_date": "2020-04-03T10:26:13.067Z", "notify_before": 0, "title": "Supply lightsabers to all the Jedis", "description": "We need to re-supply to win the war!", "workspace_id": 3 }' -X POST 'https://domain.freshservice.com/api/v2/tickets/1/tasks'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{ "task": { "id": 1, "agent_id": null, "status": 1, "due_date": "2020-04-27T11:45:15.964Z", "notify_before": 0, "title": "Supply lightsabers to all the Jedis", "description": "We need to re-supply to win the war!", "created_at": "2020-04-27T11:45:15.964Z", "updated_at": "2020-04-27T11:45:15.964Z", "closed_at": null, "group_id": null, "deleted": false, "workspace_id": 3 } }
EXPAND ↓

View a Task

Retrieve a task on a Ticket with the given ID from Freshservice

get api/v2/tickets/[id]/tasks/[id]
OAuth 2.0 Scope
freshservice.tickets.tasks.view
Sample code | Curl
1
curl -v -u api_key:X -H "Content-Type: application/json" -X GET 'https://domain.freshservice.com/api/v2/tickets/1/tasks/1'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{ "task": { "id": 1, "agent_id": null, "status": 1, "due_date": "2020-04-27T12:22:29.343Z", "notify_before": 0, "title": "Supply lightsabers to all the Jedis", "description": "We need to re-supply to win the war!", "created_at": "2020-04-27T12:22:29.343Z", "updated_at": "2020-04-27T12:22:29.343Z", "closed_at": null, "group_id": null, "workspace_id": 2 } }
EXPAND ↓

View all Tasks

Retrieve the tasks on a Ticket with the given ID from Freshservice.

get /api/v2/tickets/[id]/tasks
OAuth 2.0 Scope
freshservice.tickets.tasks.view
Sample code | Curl
1
curl -v -u api_key:X -X GET 'https://domain.freshservice.com/api/v2/tickets/1/tasks'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{ "tasks": [ { "id": 1, "agent_id": null, "status": 1, "due_date": "2020-04-27T11:44:04.269Z", "notify_before": 0, "title": "Supply lightsabers to all the Jedis", "description": "We need to re-supply to win the war!", "created_at": "2020-04-27T11:44:04.269Z", "updated_at": "2020-04-27T11:44:04.269Z", "closed_at": null, "group_id": null, "workspace_id": 2 } ] }
EXPAND ↓

Update a Task

Update an existing task on an existing Ticket in Freshservice

put /api/v2/tickets/[id]/tasks/[id]
OAuth 2.0 Scope
freshservice.tickets.tasks.edit
Sample code | Curl
1
2
3
4
5
6
7
curl -v -u api_key:X -H "Content-Type: application/json" -X PUT -d '{ "status": 3, "notify_before": 0, "title": "Supply lightsabers to all the Jedis", "description": "We need to re-supply to win the war!", "workspace_id": 2 }' 'https://domain.freshservice.com/api/v2/tickets/1/tasks/1'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{ "task": { "id": 1, "agent_id": null, "status": 3, "due_date": "2020-04-27T12:24:38.217Z", "notify_before": 0, "title": "Supply lightsabers to all the Jedis", "description": "We need to re-supply to win the war!", "created_at": "2020-04-27T12:24:38.217Z", "updated_at": "2020-04-27T12:24:38.217Z", "closed_at": "2020-04-27T12:24:38.217Z", "group_id": null, "workspace_id": 2 } }
EXPAND ↓

Delete a Task

Delete the task on a Ticket with the given ID from Freshservice

Note: Deleted tasks are permanently lost. You can't retrieve them once it's get deleted.

delete /api/v2/tickets/[id]/tasks/[id]
OAuth 2.0 Scope
freshservice.tickets.tasks.delete
Sample code | Curl
1
curl -v -u api_key:X -X DELETE 'https://domain.freshservice.com/api/v2/tickets/1/tasks/1'
EXPAND ↓
Response
1
HTTP Status: 204 Ok
EXPAND ↓

CSAT

This section lists all API that can be used to view Ticket CSAT Response.

Attribute Type Description
id number Unique ID of the survey response.
overall_rating_text string Overall feedback text of the survey response
overall_rating number Feedback code of the survey response
primary_question string Primary survey question
questionnaire_responses array of hashes Contains the list of responded questions and answer(s) chosen.
  • question_text: Question presented to the user
  • answer_text: Answer(s) selected
created_at DateTime Timestamp at which the survey response was created
updated_at DateTime Timestamp at which the survey response was updated

CSAT Response

Retrieve a csat response of a Ticket with the given ID from Freshservice

get /api/v2/tickets/id]/csat_response
OAuth 2.0 Scope
freshservice.tickets.view
Sample code | Curl
1
curl -v -u api_key:X -H "Content-Type: application/json" -X GET 'https://domain.freshservice.com/api/v2/tickets/1/csat_response'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{ "csat_response": { "id": 1, "overall_rating": 101, "overall_rating_text": "Awesome", "primary_question": "Share your experience working with us.", "questionnaire_responses": [ { "question": { "question_text": "Were we able to resolve your issue?" }, "answers": [ { "answer_text": "Yes" } ] } ] "created_at": "2021-02-01T12:22:22.343Z", "updated_at": "2021-02-01T12:22:29.343Z" } }
EXPAND ↓

Conversations

Conversations consist of replies as well as public and private notes added to a ticket. Notes are non-invasive ways of sharing updates about a ticket amongst agents and requesters. Private notes are for collaboration between agents and are not visible to the requester. Public notes are visible to, and can be created by, both requesters and agents.

Attribute Type Description
attachments array of attachment objects Attachments associated with the conversation. The total size of all of a ticket's attachments cannot exceed 40 MB.
body string Content of the conversation in HTML
body_text string Content of the conversation in plain text
id number ID of the conversation
incoming boolean Set to true if a particular conversation should appear as being created from the outside (i.e., not through the web portal)
to_emails array of strings Email addresses of agents/users who need to be notified about this conversation
private boolean Set to true if the note is private
source number Denotes the type of the conversation.
support_email string Email address from which the reply is sent. For notes, this value will be null.
ticket_id number ID of the ticket to which this conversation is being added
user_id number ID of the agent/user who is adding the conversation
created_at datetime Conversation creation timestamp
updated_at datetime Conversation updated timestamp

Conversation Properties

Conversations use certain fixed numerical values to denote their source. These numerical values along with their meanings are given below.

Note : This source attribute will be returned in the response body of the List All Conversations of a Ticket and View a ticket (only when 'include=conversation' is passed in url) endpoints.

Source Type Value
email 0
form 1
note 2
status 3
meta 4
feedback 5
forward_email 6

Create a Reply

Attribute Type Description
body * string Content of the note in HTML format
attachments array of attachment objects Attachments. The total size of all the ticket's attachments (not just this note) cannot exceed 40 MB.
from_email string The email address from which the reply is sent. By default the global support email will be used.
user_id number ID of the agent/user who is adding the note
cc_emails array of strings Email address added in the 'cc' field of the outgoing ticket email.
bcc_emails array of strings Email address added in the 'bcc' field of the outgoing ticket email.
* Mandatory attribute
post /api/v2/tickets/[id]/reply
OAuth 2.0 Scope
freshservice.tickets.conversations.create
Sample code | Curl
1
curl -v -u api_key:X -H "Content-Type: application/json" -X POST -d '{ "body":"We are working on this issue. Will keep you posted." }''https://domain.freshservice.com/api/v2/tickets/141/reply'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{ "conversation": { "id": 1000005176, "user_id": 1000000493, "from_email": "helpdesk@zubin.freshbase.co", "cc_emails": [], "bcc_emails": [], "body": "<div>We are working on this issue. Will keep you posted.</div>", "body_text": "We are working on this issue. Will keep you posted.", "ticket_id": 265, "to_emails": [ "tom@outerspace.com" ], "attachments": [], "created_at": "2017-09-11T09:54:36Z", "updated_at": "2017-09-11T09:54:36Z" } }
EXPAND ↓

Reply to a Ticket With Attachments

Note:
1. This API request must have its Content-Type set to multipart/form-data.
2. For more information on attachment refer to this section.

Sample code | Curl
1
curl -v -u api_key:X -F 'attachments[]=@/Users/user/Desktop/api2.png' -F 'body=We are working on this issue. Will keep you posted.' -X POST 'https://domain.freshservice.com/api/v2/tickets/51/reply'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
{ "conversation": { "id": 4289865, "user_id": 1232463344, "from_email": "user@yourcompany.com", "cc_emails": [], "bcc_emails": [], "body": "<div>We are working on this issue. Will keep you posted.</div>", "body_text": "We are working on this issue. Will keep you posted.", "ticket_id": 51, "to_emails": [ "tom@outerspace.com" ], "attachments": [ { "id": 368557, "content_type": "image/png", "size": 274688, "name": "api2.png", "attachment_url": "https://s3.amazonaws.com/cdn.freshgenie.com/data/helpdesk/attachments/production/19852343/original/api2.png", "created_at": "2021-04-12T07:41:03Z", "updated_at": "2021-04-12T07:41:04Z" } ], "created_at": "2021-04-12T07:41:04Z", "updated_at": "2021-04-12T07:41:04Z" } }
EXPAND ↓

Create a Note

Note: By default, any note that you add will be private. If you wish to add a public note, set the parameter to false.

Attribute Type Description
attachments array of attachment objects Attachments. The total size of all the ticket's attachments (not just this note) cannot exceed 40 MB.
body * string Content of the note in HTML format
incoming boolean Set to true if a particular note should appear as being created from the outside (i.e., not through the web portal). The default value is false
notify_emails array of strings Email addresses of agents/users who need to be notified about this note
private boolean Set to true if the note is private. The default value is true.
user_id number ID of the agent/user who is adding the note
* Mandatory attribute
post /api/v2/tickets/[ticket_id]/notes
OAuth 2.0 Scope
freshservice.tickets.conversations.create
Sample code | Curl
1
curl -v -u api_key:X -H "Content-Type: application/json" -X POST -d '{ "body":"Hi tom, Still Angry", "private":false }' 'https://domain.freshservice.com/api/v2/tickets/265/notes'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{ "conversation": { "id": 1000005178, "incoming": false, "private": false, "user_id": 1000000493, "support_email": null, "body": "<div>Hi tom, Still Angry</div>", "body_text": "Hi tom, Still Angry", "ticket_id": 265, "to_emails": [], "attachments": [], "created_at": "2017-09-11T10:06:17Z", "updated_at": "2017-09-11T10:06:17Z" } }
EXPAND ↓

Create a Note With Attachment

Note:
1. This API request must have its Content-Type set to multipart/form-data.

Sample code | Curl
1
curl -v -u api_key:X -F 'attachments[]=@/Users/user/Desktop/api_attach.png' -F 'body=Hi tom, Still Angry' -F 'private=false' -X POST 'https://domain.freshservice.com/api/v2/tickets/51/notes'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{ "conversation": { "id": 4289856, "incoming": false, "private": false, "user_id": 1232463344, "support_email": null, "body": "<div>Hi tom, Still Angry</div>", "body_text": "Hi tom, Still Angry", "ticket_id": 51, "to_emails": [], "attachments": [ { "id": 368555, "content_type": "image/png", "size": 115399, "name": "api_attach.png", "attachment_url": "https://s3.amazonaws.com/cdn.freshgenie.com/data/helpdesk/attachments/production/19852343/original/api_attach.png", "created_at: "2021-04-12T06:44:09Z", "updated_at": "2021-04-12T06:44:09Z" } ], "created_at": "2021-04-12T06:44:09Z", "updated_at": "2021-04-12T06:44:09Z" } }
EXPAND ↓

Update a Conversation

Note:
Only public & private notes can be edited.

Attribute Type Description
body string Content of the note in HTML format
put /api/v2/conversations/[id]
OAuth 2.0 Scope
freshservice.tickets.conversations.edit
Sample code | Curl
1
curl -v -u api_key:X -H "Content-Type: application/json" -X PUT -d '{ "body":"Can you provide some screenshots?" } 'https://domain.freshservice.com/api/v2/conversations/5'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{ "conversation": { "id": 5, "incoming": false, "private": false, "user_id": 1000000493, "support_email": null, "body": "Can you provide some screenshots?", "body_text": "Can you provide some screenshots?", "ticket_id": 265, "to_emails": [], "attachments": [ { "id": 1000000361, "content_type": "application/octet-stream", "size": 46695, "name": "attachment.txt", "Attachment_url": "https://cdn.freshservice/data/Helpdesk/attachments/production/19852343/original/attachment.txt", "created_at": "2017-09-11T10:07:54Z", "updated_at": "2017-09-11T10:07:54Z" } ], "created_at": "2017-09-11T10:07:54Z", "updated_at": "2017-09-11T10:12:54Z" } }
EXPAND ↓

Update a conversation With Attachment

Note:
1. This API request must have its Content-Type set to multipart/form-data.
2. For more information on attachment refer to this section.

Sample code | Curl
1
curl -v -u api_key:X -F 'attachments[]=@/Users/user/Desktop/api2.png' -F 'body=Can you provide some screenshots?' -X PUT 'https://domain.freshservice.com/api/v2/conversations/4289856'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
{ "conversation": { "id": 4289856, "incoming": false, "private": false, "user_id": 1232463344, "support_email": null, "body": "Can you provide some screenshots?", "body_text": "Can you provide some screenshots?", "ticket_id": 51, "to_emails": [], "attachments": [ { "id": 368555, "content_type": "image/png", "size": 115399, "name": "api_attach.png", "attachment_url": "https://s3.amazonaws.com/cdn.freshgenie.com/data/helpdesk/attachments/production/19852343/original/api_attach.png", "created_at": "2021-04-12T06:44:09Z", "updated_at": "2021-04-12T06:44:09Z" }, { "id": 368556, "content_type": "image/png", "size": 274688, "name": "api2.png", "attachment_url": "https://s3.amazonaws.com/cdn.freshgenie.com/data/helpdesk/attachments/production/19852343/original/api2.png", "created_at": "2021-04-12T06:48:53Z", "updated_at": "2021-04-12T06:48:53Z" } ], "created_at": "2021-04-12T06:44:09Z", "updated_at": "2021-04-12T06:48:53Z" } }
EXPAND ↓

Delete a Conversation

delete /api/v2/conversations/[id]
OAuth 2.0 Scope
freshservice.tickets.conversations.delete
Sample code | Curl
1
curl -v -u api_key:X -X DELETE 'https://domain.freshservice.com/api/v2/conversations/5'
EXPAND ↓
Response
1
HTTP Status: 204 No Content
EXPAND ↓

Delete a Conversation Attachment

This API helps you delete an attachment from a conversation.

delete /api/v2/conversations/[conversation_id]/attachments/[id]
OAuth 2.0 Scope
freshservice.tickets.conversations.delete
Sample code | Curl
1
curl -v -u api_key:X -X DELETE 'https://domain.freshservice.com/api/v2/conversations/1/attachments/1'
EXPAND ↓
Response
1
HTTP Status: 204 No Content
EXPAND ↓

List All Conversations of a Ticket

This API helps you List All Conversations of a Ticket.

get /api/v2/tickets/[id]/conversations
OAuth 2.0 Scope
freshservice.tickets.conversations.view
Sample code | Curl
1
curl -v -u api_key:X -H "Content-Type: application/json" -X GET 'https://domain.freshservice.com/api/v2/tickets/20/conversations'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{ "conversations": [ { "id": 1000005175, "body": "<div style='font-size: 13px; font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;'>\n<div>Is this still a problem</div>\r\n</div>", "body_text": "Is this still a problem", "incoming": false, "private": false, "created_at": "2017-09-11T09:28:52Z", "updated_at": "2017-09-11T09:28:52Z", "user_id": 1000000493, "support_email": null, "source": 2, "ticket_id": 1, "to_emails": [], "from_email": null, "cc_emails": [], "bcc_emails": null, "attachments": [] } ] }
EXPAND ↓
Sample code | Ruby
1
2
3
4
5
6
7
8
require "rubygems" require "rest_client" require "json" value = 58 #pass the ticket display_id here. site = RestClient::Resource.new("https://domain.freshservice.com/helpdesk/tickets/#{value}.json","user@yourcompany.com","test") response = site.delete(:accept=>"application/json") puts "response: #{response.code} \n #{response.body}"
EXPAND ↓
Additional examples

1. This ticket's conversation has more than 30 entries. This request returns the second page (entries from 31 to 60).

1
curl -v -u api_key:X -X GET 'https://domain.freshservice.com/api/v2/tickets/1/conversations?page=2'
EXPAND ↓

Problems

This section lists all API that can be used to create, edit or otherwise manipulate Problem.

Attribute Type Description
id number Unique identifier of the Problem Read-Only
workspace_id number ID of the workspace that the problem belongs to. If not provided, the ID of the primary workspace will be defaulted. Applicable only to accounts on the Employee Support Mode.
agent_id number Unique identifier of the agent to whom the Problem is assigned
requester_id * number Unique identifier of the initiator of the problem. Mandatory
group_id number Unique identifier of the agent group to which the Problem is assigned
description * string HTML content of the problem. Description and description_html should not be passed together Mandatory
description_text string Plain text content of the problem Read-Only
priority * number Priority of the Problem 1-Low, 2-Medium, 3-High, 4-Urgent
status * number Status identifier of the Problem. 1-Open, 2-Change Requested, 3-Closed Mandatory
impact * number Impact of the Problem. 1-Low, 2-Medium, 3-High Mandatory
known_error boolean States that the problem is known issue or not. true or false
subject * string Subject of the Problem Mandatory
due_by * DateTime Timestamp at which Problem due ends Mandatory
department_id number Unique ID of the department initiating the Problem
category string Category of the Problem
sub_category string Sub-category of the Problem
item_category string Item of the Problem
created_at DateTime Timestamp at which Problem was created
updated_at DateTime Timestamp at which Problem was last updated
associated_change number Unique ID of the Change associated with the Problem Read-Only
custom_fields Hash Key value pairs containing the names and values of custom fields.
analysis_fields Hash Key value pairs containing the names and values of Problem Cause, Problem Symptom and Problem Impact
assets hash List of assets associated with the problem

Create a Problem

Create a new problem request in Freshservice

post /api/v2/problems
OAuth 2.0 Scope
freshservice.problems.create
Sample code | Curl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
curl -v -u api_key:X -H "Content-Type: application/json" -d ' { "subject": "Unable to reach email server", "email": "sample@freshservice.com", "description": "<div>Hi guys, <br/><br/>We have been facing issues when we try to reach Email Server 3. Looks like there is something wrong here.<br/><br/>Regards<br/> Rachel<br/> </div>", "due_by": "2020-07-20T16:18:46Z", "priority": 2, "status": 2, "impact": 1, "category": "Hardware", "sub_category": "Peripherals", "item_category": "Router", "agent_id": 1, "group_id": 1, "department_id": 1, "custom_fields": { "sample_text_field": "Sample Text" }, "analysis_fields": { "problem_cause": { "description": "Problem cause description" }, "problem_symptom": { "description": "Problem symptom description" }, "problem_impact": { "description": "Problem impact description" } }, "workspace_id": 3 } ' -X POST 'https://domain.freshservice.com/api/v2/problems'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
{ "problem": { "id": 1, "agent_id": null, "requester_id": 1, "description": "<div>Hi guys, <br/><br/>We have been facing issues when we try to reach Email Server 3. Looks like there is something wrong here.<br/><br/>Regards<br/> Rachel<br/> </div> ", "description_text": "Hi guys, We have been facing issues when we try to reach Email Server 3. Looks like there is something wrong here. Regards Rachel", "due_by": "2020-07-20T16:18:46Z", "subject": "Unable to reach email server", "group_id": null, "priority": 2, "impact": 1, "status": 2, "known_error": false, "department_id": null, "category": "Hardware", "sub_category": "Peripherals", "item_category": "Router", "created_at": "2020-02-04T05:50:57Z", "updated_at": "2020-02-04T05:50:57Z", "workspace_id": 3, "associated_change": 1, "assets": [], "custom_fields": { "sample_text_field": "Sample Text" }, "analysis_fields": { "problem_cause": { "description": "<div> Problem cause description </div>", "description_text": "Problem cause description" }, "problem_symptom": { "description": "<div> Problem symptom description </div>", "description_text": "Problem symptom description" }, "problem_impact": { "description": "<div> Problem impact description </div>", "description_text": "Problem impact description" } } } }
EXPAND ↓

Create Problem with attachment

Note:
1. This API request must have its Content-Type set to multipart/form-data.
2. For more information on attachment refer to this section.

Sample code | Curl
1
curl -v -u api_key:X -F 'subject=Unable to reach email server' -F 'description=Hi guys, We have been facing issues when we try to reach Email Server 3. Looks like there is something wrong here.' -F 'priority=2' -F 'status=2' -F 'impact=1' -F 'due_by=2021-04-21T16:18:46Z' -F 'email=user@yourcompany.coom' -F 'attachments[]=@/Users/user/Desktop/api_attach.png' -F 'workspace_id=3' -X POST 'https://domain.freshservice.com/api/v2/problems'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
{ "problem": { "id": 47, "agent_id": null, "description": "<div>Hi guys, We have been facing issues when we try to reach Email Server 3. Looks like there is something wrong here.</div>", "description_text": "Hi guys, We have been facing issues when we try to reach Email Server 3. Looks like there is something wrong here.", "requester_id": 1232463344, "subject": "Unable to reach email server", "group_id": null, "priority": 2, "impact": 1, "status": 2, "due_by": "2021-04-21T16:18:46Z", "known_error": false, "department_id": null, "category": null, "sub_category": null, "item_category": null, "created_at": "2021-04-12T11:22:54Z", "updated_at": "2021-04-12T11:22:54Z", "workspace_id": 3, "associated_change": null, "assets": [] "custom_fields": { "requester": null, "subject": null, "description": null, "status": null, "priority": null, "impact": null, "due_by": null, "group": null, "agent": null, "department": null, "category": null }, "analysis_fields": {} } }
EXPAND ↓

Create Problem with assets

Note:
"assets" key: contains comma (,) separated hash of the assets, each with key display id.

Sample code | Curl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
curl -v -u api_key:X -H "Content-Type: application/json" -d ' { "subject": "Unable to reach email server", "email": "sample@freshservice.com", "description": "<div>Hi guys, <br/><br/>We have been facing issues when we try to reach Email Server 3. Looks like there is something wrong here.<br/><br/>Regards<br/> Rachel<br/> </div>", "due_by": "2020-07-20T16:18:46Z", "priority": 2, "status": 2, "impact": 1, "category": "Hardware", "sub_category": "Peripherals", "item_category": "Router", "agent_id": 1, "group_id": 1, "department_id": 1, "workspace_id": 2, "custom_fields": { "sample_text_field": "Sample Text" }, "analysis_fields": { "problem_cause": { "description": "Problem cause description" }, "problem_symptom": { "description": "Problem symptom description" }, "problem_impact": { "description": "Problem impact description" } }, "assets": [ { "display_id": 8 }, { "display_id": 9 } ] } ' -X POST 'https://domain.freshservice.com/api/v2/problems'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
{ "problem": { "id": 1, "agent_id": null, "requester_id": 1, "description": "<div>Hi guys, <br/><br/>We have been facing issues when we try to reach Email Server 3. Looks like there is something wrong here.<br/><br/>Regards<br/> Rachel<br/> </div> ", "description_text": "Hi guys, We have been facing issues when we try to reach Email Server 3. Looks like there is something wrong here. Regards Rachel", "due_by": "2020-07-20T16:18:46Z", "subject": "Unable to reach email server", "group_id": null, "priority": 2, "impact": 1, "status": 2, "known_error": false, "department_id": null, "category": "Hardware", "sub_category": "Peripherals", "item_category": "Router", "created_at": "2020-02-04T05:50:57Z", "updated_at": "2020-02-04T05:50:57Z", "workspace_id": 3, "associated_change": 1, "custom_fields": { "sample_text_field": "Sample Text" }, "analysis_fields": { "problem_cause": { "description": "<div> Problem cause description </div>", "description_text": "Problem cause description" }, "problem_symptom": { "description": "<div> Problem symptom description </div>", "description_text": "Problem symptom description" }, "problem_impact": { "description": "<div> Problem impact description </div>", "description_text": "Problem impact description" } }, "assets": [ { "name": "Dell Monitor", "description": null, "ci_type_id": 12, "impact": 1, "created": "2019-12-13T12:31:47+05:30", "updated": "2019-12-13T12:31:47+05:30", "user_id": null, "department_id": null, "assigned_on": null, "agent_id": null, "author_id": 2, "author_type": "User", "deleted": false, "display_id": 8, "salvage": null }, { "name": "Logitech Mouse", "description": null, "ci_type_id": 4, "impact": 1, "created": "2019-12-13T12:31:47+05:30", "updated": "2019-12-13T12:31:47+05:30", "user_id": null, "department_id": null, "assigned_on": null, "agent_id": null, "author_id": 2, "author_type": "User", "deleted": false, "display_id": 9, "salvage": null } ] } }
EXPAND ↓

View a Problem

Retrieve the problem with the given ID from Freshservice

get /api/v2/problems/[id]
OAuth 2.0 Scope
freshservice.problems.view
Sample code | Curl
1
curl -v -u api_key:X -H "Content-Type: application/json" -X GET 'https://domain.freshservice.com//api/v2/problems/1'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
{ "problem": { "id": 1, "agent_id": null, "requester_id": 1, "description": "<div>Hi guys, <br/><br/>We have been facing issues when we try to reach Email Server 3. Looks like there is something wrong here.<br/><br/>Regards<br/> Rachel<br/> </div> ", "description_text": "Hi guys, We have been facing issues when we try to reach Email Server 3. Looks like there is something wrong here. Regards Rachel", "due_by": "2020-07-20T16:18:46Z", "subject": "Unable to reach email server", "group_id": null, "priority": 2, "impact": 1, "status": 2, "known_error": false, "department_id": null, "category": "Hardware", "sub_category": "Peripherals", "item_category": "Router", "created_at": "2020-02-04T05:50:57Z", "updated_at": "2020-02-04T05:50:57Z", "workspace_id": 3, "assets": [], "associated_change": 1, "custom_fields": { "sample_text_field": "Sample Text" }, "analysis_fields": { "problem_cause": { "description": "<div> Problem cause description </div>", "description_text": "Problem cause description" }, "problem_symptom": { "description": "<div> Problem symptom description </div>", "description_text": "Problem symptom description" }, "problem_impact": { "description": "<div> Problem impact description </div>", "description_text": "Problem impact description" } } } }
EXPAND ↓

View List of Problems

Retrieve a list of all Problems in Freshservice

Note:
If a workspace_id is not specified as a URL parameter, only problems from the primary workspace will be included in the response. If workspace_id is specified as 0, problems from across all workspaces will be included in the response with just the global fields. Applicable only to accounts on the Employee Support Mode.

get /api/v2/problems
OAuth 2.0 Scope
freshservice.problems.view
Sample code | Curl
1
curl -v -u api_key:X -X GET 'https://domain.freshservice.com/api/v2/problems'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{ "problems": [{ "id": 1, "agent_id": null, "requester_id": 1, "description": "<div>Hi guys, <br/><br/>We have been facing issues when we try to reach Email Server 3. Looks like there is something wrong here.<br/><br/>Regards<br/> Rachel<br/> </div> ", "description_text": "Hi guys, We have been facing issues when we try to reach Email Server 3. Looks like there is something wrong here. Regards Rachel", "due_by": "2020-07-20T16:18:46Z", "subject": "Unable to reach email server", "group_id": null, "priority": 2, "impact": 1, "status": 2, "known_error": false, "department_id": null, "category": "Hardware", "sub_category": "Peripherals", "item_category": "Router", "assets": [], "created_at": "2020-02-04T05:50:57Z", "updated_at": "2020-02-04T05:50:57Z", "workspace_id": 2 }] }
EXPAND ↓
Additional examples

1. Get the list of all problems from workspaces to which the user has access.

1
curl -v -u api_key:X -X GET 'https://domain.freshservice.com/api/v2/problems?workspace_id=0'
EXPAND ↓

2. Get the list of problems from a specific workspace

1
curl -v -u api_key:X -X GET 'https://domain.freshservice.com/api/v2/problems?workspace_id=3'
EXPAND ↓

Update a Problem

Update an existing Problem in Freshservice

Note:
The workspace_id attribute cannot be updated through the Update operation. It can only be updated through the Move operation.

put /api/v2/problems/[id]
OAuth 2.0 Scope
freshservice.problems.edit
Sample code | Curl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
curl -v -u api_key:X -H "Content-Type: application/json" -X PUT -d '{ "subject": "Unable to reach email server", "email": "sample@freshservice.com", "description": "<div>Hi guys, <br/><br/>We have been facing issues when we try to reach Email Server 3. Looks like there is something wrong here.<br/><br/>Regards<br/> Rachel<br/> </div>", "due_by": "2020-07-20T16:18:46Z", "priority": 2, "status": 3, "impact": 2, "category": "Hardware", "sub_category": "Peripherals", "item_category": "Router", "agent_id": 1, "group_id": 1, "department_id": 1, "custom_fields": { "sample_text_field": "Sample Text" }, "analysis_fields": { "problem_cause": { "description": "Problem cause description" }, "problem_symptom": { "description": "Problem symptom description" }, "problem_impact": { "description": "Problem impact description" } } }' 'https://domain.freshservice.com/api/v2/problems/1'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
{ "problem": { "id": 1, "agent_id": null, "requester_id": 1, "description": "<div>Hi guys, <br/><br/>We have been facing issues when we try to reach Email Server 3. Looks like there is something wrong here.<br/><br/>Regards<br/> Rachel<br/> </div> ", "description_text": "Hi guys, We have been facing issues when we try to reach Email Server 3. Looks like there is something wrong here. Regards Rachel", "due_by": "2020-07-20T16:18:46Z", "subject": "Unable to reach email server", "group_id": null, "priority": 2, "impact": 2, "status": 3, "known_error": false, "department_id": null, "category": "Hardware", "sub_category": "Peripherals", "item_category": "Router", "created_at": "2020-02-04T05:50:57Z", "updated_at": "2020-02-04T05:50:57Z", "workspace_id": 3, "assets": [], "associated_change": 1, "custom_fields": { "sample_text_field": "Sample Text" }, "analysis_fields": { "problem_cause": { "description": "<div> Problem cause description </div>", "description_text": "Problem cause description" }, "problem_symptom": { "description": "<div> Problem symptom description </div>", "description_text": "Problem symptom description" }, "problem_impact": { "description": "<div> Problem impact description </div>", "description_text": "Problem impact description" } } } }
EXPAND ↓

Update Problem with attachment

Note:
1. This API request must have its Content-Type set to multipart/form-data.
2. For more information on attachment refer to this section.

Sample code | Curl
1
curl -v -u api_key:X -F 'subject=Unable to reach email server' -F 'description=Hi guys, We have been facing issues when we try to reach Email Server 3. Looks like there is something wrong here.' -F 'priority=2' -F 'status=2' -F 'impact=1' -F 'due_by=2021-04-21T16:18:46Z' -F 'email=fuser@yourcompany.com' -F 'attachments[]=@/Users/user/Desktop/api2.png' -X PUT 'https://domain.freshservice.com/api/v2/problems/47'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
{ "problem": { "id": 47, "agent_id": null, "description": "Hi guys, We have been facing issues when we try to reach Email Server 3. Looks like there is something wrong here.", "description_text": "Hi guys, We have been facing issues when we try to reach Email Server 3. Looks like there is something wrong here.", "requester_id": 1232463344, "subject": "Unable to reach email server", "group_id": null, "priority": 2, "impact": 1, "status": 2, "due_by": "2021-04-21T16:18:46Z", "known_error": false, "department_id": null, "category": null, "sub_category": null, "item_category": null, "created_at": "2021-04-12T11:22:54Z", "updated_at": "2021-04-12T11:22:54Z", "workspace_id": 3, "assets": [], "associated_change": null, "custom_fields": { "requester": null, "subject": null, "description": null, "status": null, "priority": null, "impact": null, "due_by": null, "group": null, "agent": null, "department": null, "category": null }, "analysis_fields": {} } }
EXPAND ↓

Move a Problem

This API moves a problem to a different workspace, while also allowing the assigned group and agent to be modified.

Note:
This endpoint is applicable only to accounts on the Employee Support Mode.

put /api/v2/problems/[id]/move_workspace
OAuth 2.0 Scope
freshservice.problems.edit
Sample code | Curl
1
curl -v -u api_key:X -X PUT -d '{ "workspace_id": 3, "group_id": 3, "owner_id": 4 }' 'https://domain.freshservice.com/api/v2/problems/1/move_workspace'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
{ "problem": { "id": 1, "agent_id": 4, "requester_id": 1, "description": "<div>Hi guys, <br/><br/>We have been facing issues when we try to reach Email Server 3. Looks like there is something wrong here.<br/><br/>Regards<br/> Rachel<br/> </div> ", "description_text": "Hi guys, We have been facing issues when we try to reach Email Server 3. Looks like there is something wrong here. Regards Rachel", "due_by": "2020-07-20T16:18:46Z", "subject": "Unable to reach email server", "group_id": 3, "priority": 2, "impact": 2, "status": 3, "known_error": false, "department_id": null, "category": "Hardware", "sub_category": "Peripherals", "item_category": "Router", "created_at": "2020-02-04T05:50:57Z", "updated_at": "2020-02-04T05:50:57Z", "workspace_id": 3, "assets": [], "associated_change": 1, "custom_fields": { "sample_text_field": "Sample Text" }, "analysis_fields": { "problem_cause": { "description": "<div> Problem cause description </div>", "description_text": "Problem cause description" }, "problem_symptom": { "description": "<div> Problem symptom description </div>", "description_text": "Problem symptom description" }, "problem_impact": { "description": "<div> Problem impact description </div>", "description_text": "Problem impact description" } } } }
EXPAND ↓

Delete a Problem

Delete the Problem with the given ID from Freshservice

delete /api/v2/problems/[id]
OAuth 2.0 Scope
freshservice.problems.delete
Sample code | Curl
1
curl -v -u api_key:X -X DELETE 'https://domain.freshservice.com/api/v2/problems/1'
EXPAND ↓
Response
1
HTTP Status: 200 OK
EXPAND ↓

Restore a Problem

The API mentioned previously. If you deleted some problems and regret doing so now, this API will help you restore them.

put /api/v2/problems/[id]/restore
OAuth 2.0 Scope
freshservice.problems.delete
Sample code | Curl
1
curl -v -u api_key:X -H "Content-Type: application/json" -X PUT -d '' 'https://domain.freshservice.com/api/v2/problems/1/restore'
EXPAND ↓
Response
1
HTTP Status: 204 No Content
EXPAND ↓

List All Problem Fields

Retrieve all the Fields that constitute the Problem Object

Note:
By default, only global fields and fields from the primary workspace will be returned for accounts on the Employee Support Mode. For fields from other workspaces, use the workspace_id filter.

Problem Fields
Problem field Description
id Unique ID of the Field
workspace_id ID of the workspace to which this problem field belongs. This attribute is applicable only to accounts on the Employee Support Mode.
created_at Date time at which the field was added
updated_at Date time at which the field was modified
name Name of the field
label Label of the field for display
description Description of the field
field_type Indicates if the field is a checkbox, dropdown, text field
required True if the field is marked mandatory
required_for_closure True if the field is marked mandatory while closing the problem item
default_field True if the field is a default field. False if customm
choices List of values supported by the field
nested_fields contain details of nested fields
get /api/v2/problem_form_fields
OAuth 2.0 Scope
freshservice.problems.fields.view
Sample code | Curl
1
curl -v -u api_key:X -X GET 'https://domain.freshservice.com/api/v2/problem_form_fields'
EXPAND ↓
Response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
{ "problem_fields": [ { "id": 187927, "created_at": "2023-01-19T17:25:22Z", "updated_at": "2023-01-19T17:25:22Z", "name": "workspace_id", "label": "Workspace", "description": "Default Workspace", "field_type": "default_workspace", "required": true, "required_for_closure": true, "position": 0, "default_field": true, "choices": [], "nested_fields": [], "workspace_id": null }, { "id": 187916, "created_at": "2023-01-19T17:25:22Z", "updated_at": "2023-01-19T17:25:22Z", "name": "requester", "label": "Requester", "description": "Problem requester", "field_type": "default_requester", "required": true, "required_for_closure": false, "position": 1, "default_field": true, "choices": [], "nested_fields": [], "workspace_id": 1 }, { "id": 187917, "created_at": "2023-01-19T17:25:22Z", "updated_at": "2023-01-19T17:25:22Z", "name": "subject", "label": "Title", "description": "Problem title", "field_type": "default_subject", "required": true, "required_for_closure": false, "position": 2, "default_field": true, "choices": [], "nested_fields": [], "workspace_id": 1 }, { "id": 187918, "created_at": "2023-01-19T17:25:22Z", "updated_at": "2023-01-19T17:25:22Z", "name": "description", "label": "Description", "description": "Problem description", "field_type": "default_description", "required": true, "required_for_closure": false, "position": 3, "default_field": true, "choices": [], "nested_fields": [], "workspace_id": 1 }, { "id": 187919, "created_at": "2023-01-19T17:25:22Z", "updated_at": "2023-01-19T17:25:22Z", "name": "status", "label": "Status", "description": "Problem status", "field_type": "default_status", "required": true, "required_for_closure": false, "position": 4, "default_field": true, "choices": [ { "id": 1, "value": "Open" }, { "id": 2, "value": "Change Requested" }, { "id": 3, "value": "Closed" } ], "nested_fields": [], "workspace_id": 1 }, { "id": 187920, "created_at": "2023-01-19T17:25:22Z", "updated_at": "2023-01-19T17:25:22Z", "name": "priority", "label": "Priority", "description": "Problem priority", "field_type": "default_priority", "required": true, "required_for_closure": false, "position": 5, "default_field": true, "choices": [ { "id": 1, "value": "Low" }, { "id": 2, "value": "Medium" }, { "id": 3, "value": "High" }, { "id": 4, "value": "Urgent" } ], "nested_fields": [], "workspace_id": 1 }, { "id": 187921, "created_at": "2023-01-19T17:25:22Z", "updated_at": "2023-01-19T17:25:22Z", "name": "impact", "label": "impact", "description": "Problem impact", "field_type": "default_impact", "required": true, "required_for_closure": false, "position": 6, "default_field": true, "choices": [ { "id": 1, "value": "Low" }, { "id": 2, "value": "Medium" }, { "id": 3, "value": "High" } ], "nested_fields": [], "workspace_id": 1 }, { "id": 187922, "created_at": "2023-01-19T17:25:22Z", "updated_at": "2023-01-19T17:25:22Z", "name": "due_by", "label": "Due date", "description": "Due date", "field_type": "default_due_by", "required": true, "required_for_closure": false, "position": 7, "default_field": true, "choices": [], "nested_fields": [], "workspace_id": 1 }, { "id": 187923, "created_at": "2023-01-19T17:25:22Z", "updated_at": "2023-01-19T17:25:22Z", "name": "group", "label": "Problem Group", "description": "Problem Group", "field_type": "default_group", "required": false, "required_for_closure": false, "position": 8, "default_field": true, "choices": [], "nested_fields": [], "workspace_id": 1 }, { "id": 187924, "created_at": "2023-01-19T17:25:22Z", "updated_at": "2023-01-19T17:25:22Z", "name": "agent", "label": "Assigned To", "description": "Problem Owner", "field_type": "default_agent", "required": false, "required_for_closure": false, "position": 9, "default_field": true, "choices": [], "nested_fields": [], "workspace_id": 1 }, { "id": 187925, "created_at": "2023-01-19T17:25:22Z", "updated_at": "2023-01-19T17:25:22Z", "name": "department", "label": "Department", "description": "Select the department, the problem belongs to.", "field_type": "default_department", "required": false, "required_for_closure": false, "position": 10, "default_field": true, "choices": [], "nested_fields": [], "workspace_id": 1 }, { "id": 187926, "created_at": "2023-01-19T17:25:22Z", "updated_at": "2023-01-19T17:25:22Z", "name": "category", "label": "Category", "description": "Problem category", "field_type": "default_category", "required": false, "required_for_closure": false, "position": 11, "default_field": true, "choices": [ { "id": 53978, "display_id": 1, "value": "Hardware", "nested_options": [ { "id": 53979, "display_id": 2, "value": "Computer", "nested_options": [ { "id": 53980, "display_id": 3, "value": "Mac" }, { "id": 53981, "display_id": 4, "value": "PC" } ] }, { "id": 53982, "display_id": 5, "value": "Printer", "nested_options": [] }, { "id": 53983, "display_id": 6, "value": "Phone", "nested_options": [] }, { "id": 53984, "display_id": 7, "value": "Peripherals", "nested_options": [ { "id": 53985, "display_id": 8, "value": "Router" }, { "id": 53986, "display_id": 9, "value": "Switch" }, { "id": 53987, "display_id": 10, "value": "Access point" } ] } ] }, { "id": 53988, "display_id": 11, "value": "Software", "nested_options": [ { "id": 53989, "display_id": 12, "value": "MS Office", "nested_options": [] }, { "id": 53990, "display_id": 13, "value": "Adobe Reader", "nested_options": [] }, { "id": 53991, "display_id": 14, "value": "Windows", "nested_options": [] }, { "id": 53992, "display_id": 15, "value": "Chrome", "nested_options": [] } ] }, { "id": 53993, "display_id": 16, "value": "Network", "nested_options": [ { "id": 53994, "display_id": 17, "value": "Access", "nested_options": [] }, { "id": 53995, "display_id": 18, "value": "Connectivity", "nested_options": [] } ] }, { "id": 53996, "display_id": 19, "value": "Office Applications", "nested_options": [ { "id": 53997, "display_id": 20, "value": "HR", "nested_options": [ { "id": 53998, "display_id": 21, "value": "Oracle" }, { "id": 53999, "display_id": 22, "value": "SmartRecruiter" } ] }, { "id": 54000, "display_id": 23, "value": "Design", "nested_options": [ { "id": 54001, "display_id": 24, "value": "Photoshop" }, { "id": 54002, "display_id": 25, "value": "Creative Cloud" }, { "id": 54003, "display_id": 26, "value": "Canva" } ] } ] }, { "id": 54004, "display_id": 27, "value": "Office Furniture", "nested_options": [ { "id": 54005, "display_id": 28, "value": "Cabinet", "nested_options": [] }, { "id": 54006, "display_id": 29, "value": "Desk", "nested_options": [] }, { "id": 54007, "display_id": 30, "value": "Chair", "nested_options": [] } ] }, { "id": 54008, "display_id": 31, "value": "Office Equipment ", "nested_options": [ { "id": 54009, "display_id": 32, "value": "Laptop", "nested_options": [] }, { "id": 54010, "display_id": 33, "value": "Printer", "nested_options": [] }, { "id": 54011, "display_id": 34, "value": "Desktop", "nested_options": [] } ] }, { "id": 54012, "display_id": 35, "value": "Employee Benefits", "nested_options": [ { "id": 54013, "display_id": 36, "value": "Health Insurance", "nested_options": [] }, { "id": 54014, "display_id": 37, "value": "Life Insurance", "nested_options": [] }, { "id": 54015, "display_id": 38, "value": "Retirement", "nested_options": [] }, { "id": 54016, "display_id": 39, "value": "Tuition Reimbursement", "nested_options": [] }, { "id": 54017, "display_id": 40, "value": "Financial Assistance", "nested_options": [] }, { "id": 54018, "display_id": 41, "value": "Relocation Assistance", "nested_options": [] } ] }, { "id": 54019, "display_id": 42, "value": "Employee Records and Documents", "nested_options": [ { "id": 54020, "display_id": 43, "value": "Verification Letter", "nested_options": [] }, { "id": 54021, "display_id": 44, "value": "Visa", "nested_options": [] } ] }, { "id": 54022, "display_id": 45, "value": "Employee Onboarding/Offboarding", "nested_options": [ { "id": 54023, "display_id": 46, "value": "Onboarding", "nested_options": [] }, { "id": 54024, "display_id": 47, "value": "Offboarding", "nested_options": [] }, { "id": 54025, "display_id": 48, "value": "Termination", "nested_options": [] } ] }, { "id": 54026, "display_id": 49, "value": "Talent Management", "nested_options": [ { "id": 54027, "display_id": 50, "value": "New role", "nested_options": [] }, { "id": 54028, "display_id": 51, "value": "Hiring request", "nested_options": [] }, { "id": 54029, "display_id": 52, "value": "Internal Transfer", "nested_options": [] } ] }, { "id": 54030, "display_id": 53, "value": "Employee Relations", "nested_options": [ { "id": 54031, "display_id": 54, "value": "Harrasment", "nested_options": [] } ] }, { "id": 54032, "display_id": 55, "value": "Workplace Access and Security", "nested_options": [ { "id": 54033, "display_id": 56, "value": "Access badge", "nested_options": [] }, { "id": 54034, "display_id": 57, "value": "Biometric system", "nested_options": [] }, { "id": 54035, "display_id": 58, "value": "Surveillance system", "nested_options": [] }, { "id": 54036, "display_id": 59, "value": "Alarms", "nested_options": [] }, { "id": 54037, "display_id": 60, "value": "Lighting in parking lots", "nested_options": [] }, { "id": 54038, "display_id": 61, "value": "After-hours access", "nested_options": [] } ] }, { "id": 54039, "display_id": 62, "value": "Travel", "nested_options": [ { "id": 54040, "display_id": 63, "value": "Accomodation", "nested_options": [] }, { "id": 54041, "display_id": 64, "value": "Flight Booking", "nested_options": [] }, { "id": 54042, "display_id": 65, "value": "Car rental", "nested_options": [] } ] }, { "id": 54043, "display_id": 66, "value": "Building and Grounds Maintenance", "nested_options": [ { "id": 54044, "display_id": 67, "value": "Electrical", "nested_options": [] }, { "id": 54045, "display_id": 68, "value": "Plumbing", "nested_options": [] }, { "id": 54046, "display_id": 69, "value": "HVAC", "nested_options": [] }, { "id": 54047, "display_id": 70, "value": "Furniture", "nested_options": [] }, { "id": 54048, "display_id": 71, "value": "Equipment", "nested_options": [] }, { "id": 54049, "display_id": 72, "value": "Painting", "nested_options": [] }, { "id": 54050, "display_id": 73, "value": "Landscaping", "nested_options": [] }, { "id": 54051, "display_id": 74, "value": "Pest Control", "nested_options": [] }, { "id": 54052, "display_id": 75, "value": "Cleaning", "nested_options": [] } ] }, { "id": 54053, "display_id": 76, "value": "Vendor Document Review", "nested_options": [ { "id": 54054, "display_id": 77, "value": "NDA", "nested_options": [] }, { "id": 54055, "display_id": 78, "value": "POC", "nested_options": [] }, { "id": 54056, "display_id": 79, "value": "EULA", "nested_options": [] }, { "id": 54057, "display_id": 80, "value": "SOW", "nested_options": [] } ] }, { "id": 54058, "display_id": 81, "value": "Payroll", "nested_options": [ { "id": 54059, "display_id": 82, "value": "Setup", "nested_options": [] }, { "id": 54060, "display_id": 83, "value": "Payslip", "nested_options": [] }, { "id": 54061, "display_id": 84, "value": "Salary", "nested_options": [] }, { "id": 54062, "display_id": 85, "value": "Bonus", "nested_options": [] }, { "id": 54063, "display_id": 86, "value": "Overtime", "nested_options": [] } ] }, { "id": 54064, "display_id": 87, "value": "Vendor Payment", "nested_options": [ { "id": 54065, "display_id": 88, "value": "New registration", "nested_options": [] }, { "id": 54066, "display_id": 89, "value": "Modify details", "nested_options": [] }, { "id": 54067, "display_id": 90, "value": "Payment issues", "nested_options": [] } ] }, { "id": 54068, "display_id": 91, "value": "Customer Payment", "nested_options": [ { "id": 54069, "display_id": 92, "value": "Refund", "nested_options": [] }, { "id": 54070, "display_id": 93, "value": "Credit Note", "nested_options": [] }, { "id": 54071, "display_id": 94, "value": "Invoice issues", "nested_options": [] } ] }, { "id": 54072, "display_id": 95, "value": "Reimbursements and Advances", "nested_options": [ { "id": 54