Freshdesk

The Freshdesk component is an application component that allows users to use Freshdesk API to manage tickets, contacts and more.. It can carry out the following tasks:

#Release Stage

Alpha

#Configuration

The component definition and tasks are defined in the definition.json and tasks.json files respectively.

#Setup

In order to communicate with Freshdesk, the following connection details need to be provided. You may specify them directly in a pipeline recipe as key-value pairs within the component's setup block, or you can create a Connection from the Integration Settings page and reference the whole setup as setup: ${connection.<my-connection-id>}.

FieldField IDTypeNote
API key (required)api-keystringFill in your Freshdesk API key. To find your key, go to profile settigs and on the right pane, you can get your key once you have completed the captcha verification.
Domain (required)domainstringYour Freshdesk domain. You can find this by going to Admin -> Search for "Portals" -> Portal URL. Your portal URL will look like "yourdomain.freshdesk.com". Please only input your domain and not the whole URL.

#Supported Tasks

#Get Ticket

Get ticket using ID

InputIDTypeDescription
Task ID (required)taskstringTASK_GET_TICKET
Ticket ID (required)ticket-idintegerThe ID of the ticket
OutputIDTypeDescription
SubjectsubjectstringSubject of the ticket
Description Textdescription-textstringContent of the ticket
SourcesourcestringSource of the ticket. Eg: Email
StatusstatusstringStatus of the ticket. Eg: Pending
PriorityprioritystringPriority of the ticket. Eg: Medium
Ticket Type (optional)ticket-typestringUsed to categorize the ticket. To check the possible types a ticket can have, please go to Admin -> Ticket Fields
Association Type (optional)association-typestringUsed to determine whether a ticket is a parent, child, tracker or related ticket
Associated Ticket List (optional)associated-ticket-listarray[integer]List of associated ticket IDs
Tags (optional)tagsarray[string]Tags associated with the ticket.
CC Emails (optional)cc-emailsarray[string]Email addresses added in the 'cc' field of the incoming ticket email
Forward Emails (optional)forward-emailsarray[string]Email addresses added while forwarding a ticket
Reply CC Emails (optional)reply-cc-emailsarray[string]Email addresses added while replying to a ticket
Requester IDrequester-idintegerID of the requester
Responder ID (optional)responder-idintegerID of the agent to whom the ticket has been assigned. List of agents can be found in Admin -> Agents
Company ID (optional)company-idintegerID of the company to which this ticket belongs
Group ID (optional)group-idintegerID of the group to which the ticket has been assigned. List of groups can be found in Admin -> Groups
Product ID (optional)product-idintegerID of the product to which the ticket is associated. List of products can be found in Admin -> Multiple Products
Support Email (optional)support-emailstringSupport email address. You can find it in Admin -> Email (under channel).
To Emails (optional)to-emailsarray[string]Email addresses to which the ticket was originally sent
Spam (optional)spambooleanSet to true if the ticket is marked as spam
Due By (optional)due-bystringTimestamp that denotes when the ticket is due to be resolved. In UTC format.
Is Escalated (optional)is-escalatedbooleanSet to true if the ticket has been escalated
First Response Due By (optional)first-response-due-bystringTimestamp that denotes when the first response is due. In UTC format. You can adjust this by going to Admin -> SLA policy (under Workflows).
First Response Escalated (optional)first-response-escalatedbooleanSet to true if the ticket has been escalated as the result of first response time being breached
Next Response Due By (optional)next-response-due-bystringTimestamp that denotes when the next response is due. In UTC format. You can adjust this by going to Admin -> SLA policy (under Workflows).
Next Response Escalated (optional)next-response-escalatedbooleanSet to true if the ticket has been escalated as the result of next response time being breached
Created Atcreated-atstringTimestamp that denotes when the ticket/conversation was created. In UTC format.
Updated Atupdated-atstringTimestamp that denotes when the ticket was last updated. In UTC format.
Attachments (optional)attachmentsarray[object]Ticket attachments (cannot be more than 20MB)
Sentiment Score (optional)sentiment-scoreintegerFreshdesk uses AI to assess the emotional tone and attitude expressed in customer interaction.
Initial Sentiment Score (optional)initial-sentiment-scoreintegerThe initial sentiment score of the ticket
Custom Fields (optional)custom-fieldsobjectCustom fields that the ticket have. Custom fields can be created or modified in Admin -> Ticket Fields
Output Objects in Get Ticket

Attachments

FieldField IDTypeNote
Attachment Content Typecontent-typestringThe type of the file
Attachment NamenamestringThe name of the file
Attachment URLurlstringThe URL to the attachment.

#Create Ticket

Create ticket

InputIDTypeDescription
Task ID (required)taskstringTASK_CREATE_TICKET
Requester IDrequester-idintegerID of the requester. Must be an existing contact. If you fill in this field, you don't need to fill in the email field. Only one of the two fields is required.
EmailemailstringEmail address of the requester. If you fill in the Requester ID above, it will be ignored. Only one of the two fields is required. If no contact exists with this email address in Freshdesk, it will be added as a new contact.
Subject (required)subjectstringSubject of the ticket
Description (required)descriptionstringContent of the ticket. You can use HTML tags in the content.
Source (required)sourcestringSource of the ticket. Eg: Email
Status (required)statusstringStatus of the ticket. Eg: Pending
Priority (required)prioritystringPriority of the ticket. Eg: Medium
Ticket Typeticket-typestringUsed to categorize the ticket. To check the possible types a ticket can have, please go to Admin -> Ticket Fields
Company IDcompany-idintegerID of the company to which this ticket belongs
Product IDproduct-idintegerID of the product to which the ticket is associated. List of products can be found in Admin -> Multiple Products
Group IDgroup-idintegerID of the group to which the ticket has been assigned. List of groups can be found in Admin -> Groups
Responder IDresponder-idintegerID of the agent to whom the ticket has been assigned. List of agents can be found in Admin -> Agents
Tagstagsarray[string]Tags associated with the ticket.
CC Emailscc-emailsarray[string]Email addresses added in the 'cc' field of the incoming ticket email
Parent IDparent-idintegerID of the parent ticket. Need to be filled out if you want to create a child ticket.
Related Ticket IDsrelated-ticket-idsarray[integer]List of related ticket IDs. Need to be filled out if you want to create a tracker ticket.
OutputIDTypeDescription
Ticket IDticket-idintegerThe ID of the ticket
Created Atcreated-atstringTimestamp that denotes when the ticket/conversation was created. In UTC format.

#Reply to Ticket

Reply to a ticket thread.

InputIDTypeDescription
Task ID (required)taskstringTASK_REPLY_TO_TICKET
Body (required)bodystringContent of the reply. Can be in HTML format.
Ticket ID (required)ticket-idintegerThe ID of the ticket
From Emailfrom-emailstringEmail address that is replying to the ticket. You need to have this email address registered in Freshdesk by going to Admin -> Emails. If you leave this field empty, the global support email will be used.
User IDuser-idintegerID of the agent/contact replying to the ticket. If you fill this field using a contact ID, there will be no email sent to the requester.
CC Emailscc-emailsarray[string]Email addresses added in the 'cc' field of the outgoing ticket email.
BCC Emailsbcc-emailsarray[string]Email addresses added in the 'bcc' field of the outgoing ticket email.
OutputIDTypeDescription
Conversation IDconversation-idintegerThe ID of the note or reply that is associated with the ticket
Created Atcreated-atstringTimestamp that denotes when the ticket/conversation was created. In UTC format.

#Create Ticket Note

Create a private/public note on a ticket thread.

InputIDTypeDescription
Task ID (required)taskstringTASK_CREATE_TICKET_NOTE
Ticket ID (required)ticket-idintegerThe ID of the ticket
Body (required)bodystringContent of the note. Can be in HTML format.
Notify Emailsnotify-emailsarray[string]Email addresses of agents/users who need to be notified about this note. The emails need to exist in Freshdesk agent. Agent list can be seen in Admin -> Agents.
User IDuser-idintegerID of the agent/contact who is adding the note.
PrivateprivatebooleanSet to true if the note is private
IncomingincomingbooleanSet to true if a particular note should appear as being created from outside (i.e., not through web portal).
OutputIDTypeDescription
Conversation IDconversation-idintegerThe ID of the note or reply that is associated with the ticket
Created Atcreated-atstringTimestamp that denotes when the ticket/conversation was created. In UTC format.

#Get All Conversations

Get all the conversations in a ticket. (Conversations are replies and notes that are added to a ticket)

InputIDTypeDescription
Task ID (required)taskstringTASK_GET_ALL_CONVERSATIONS
Ticket ID (required)ticket-idintegerTicket ID
OutputIDTypeDescription
Conversationsconversationsarray[object]An array of conversations
Conversations Lengthconversations-lengthintegerNumber of conversations
Output Objects in Get All Conversations

Conversations

FieldField IDTypeNote
BCC Emailsbcc-emailsarrayEmail addresses added in the 'bcc' field of the incoming ticket email
Body Textbody-textstringContent of the conversation
CC Emailscc-emailsarrayEmail addresses added in the 'cc' field of the incoming ticket email
Conversation IDconversation-idintegerThe ID of the note or reply that is associated with the ticket
Created Atcreated-atstringTimestamp that denotes when the ticket/conversation was created. In UTC format.
From Emailfrom-emailstringEmail address that is replying to the ticket or adding the note.
IncomingincomingbooleanSet to true if a particular conversation should appear as being created from outside
IncomingprivatebooleanSet to true if a note is private. Can be set only for notes.
Support Emailsupport-emailstringSupport email address. You can find it in Admin -> Email (under channel).
To Emailsto-emailsarrayEmail addresses of agents/users who need to be notified about this conversation
Incominguser-idintegerID of the agent/contact replying to the ticket.

#Get Contact

Get contact using ID

InputIDTypeDescription
Task ID (required)taskstringTASK_GET_CONTACT
Contact ID (required)contact-idintegerID of the contact
OutputIDTypeDescription
NamenamestringName of the contact
Email (optional)emailstringThe primary email address of the contact
Phone (optional)phonestringTelephone number of the contact
Mobile (optional)mobilestringMobile number of the contact
Description (optional)descriptionstringDescription of the contact
Address (optional)addressstringAddress of the contact
Job Title (optional)job-titlestringJob title of the contact
Tags (optional)tagsarray[string]Tags associated with the contact
Language (optional)languagestringLanguage of the contact
Time Zone (optional)time-zonestringTime zone of the contact
Company ID (optional)company-idintegerID of the primary company to which the contact belongs
Unique External ID (optional)unique-external-idstringUnique external ID of the contact which be assigned by the user(agent)
Twitter ID (optional)twitter-idstringTwitter ID of the contact
View All Tickets (optional)view-all-ticketsbooleanSet to true if the contact can see all the tickets that are associated with the primary company.
Deleted (optional)deletedbooleanSet to true if the contact is deleted
Active (optional)activebooleanSet to true if the contact has been verified
Other Emails (optional)other-emailsarray[string]List of other email addresses of the contact
Other Companies (optional)other-companiesarray[object]List of other companies to which the contact belongs
Other Phone Numbers (optional)other-phone-numbersarray[string]List of other phone numbers of the contact
Created At (optional)created-atstringTimestamp that denotes when the contact was created. In UTC format.
Updated At (optional)updated-atstringTimestamp that denotes when the contact was last updated. In UTC format.
Custom Fields (optional)custom-fieldsobjectCustom fields that the contact have. Custom fields can be created or modified in Admin -> Customer Fields
Output Objects in Get Contact

Other Companies

FieldField IDTypeNote
Company IDcompany-idintegerID of the company
View All Ticketsview-all-ticketsbooleanSet to true if the contact can see all the tickets that are associated with the company.

#Create Contact

Create contact

InputIDTypeDescription
Task ID (required)taskstringTASK_CREATE_CONTACT
Name (required)namestringName of the contact
EmailemailstringThe primary email address of the contact
PhonephonestringTelephone number of the contact
MobilemobilestringMobile number of the contact
DescriptiondescriptionstringDescription of the contact
AddressaddressstringAddress of the contact
Job Titlejob-titlestringJob title of the contact
Tagstagsarray[string]Tags associated with the contact
LanguagelanguagestringLanguage of the contact
Time Zonetime-zonestringTime zone of the contact
Company IDcompany-idintegerID of the primary company to which the contact belongs
Unique External IDunique-external-idstringUnique external ID of the contact which be assigned by the user(agent)
Twitter IDtwitter-idstringTwitter ID of the contact
View All Ticketsview-all-ticketsbooleanUsed to determine if the contact can see all the tickets that are associated with the primary company. Note: this property will be ignored if the Company ID is not provided.
Other Emailsother-emailsarray[string]List of other email addresses of the contact
Other Companiesother-companiesarray[string]List of other companies to which the contact belongs. Each company should be in the format of company-id;view-all-tickets(boolean "true"/"false") Example: 123;true
Other Phone Numbersother-phone-numbersarray[string]List of other phone numbers of the contact
OutputIDTypeDescription
Contact IDcontact-idintegerID of the contact
Created Atcreated-atstringTimestamp that denotes when the contact was created. In UTC format.

#Get Company

Get company using ID

InputIDTypeDescription
Task ID (required)taskstringTASK_GET_COMPANY
Company ID (required)company-idintegerID of the primary company to which the contact belongs
OutputIDTypeDescription
NamenamestringName of the company
Description (optional)descriptionstringDescription of the company
Note (optional)notestringNote about the company
Domains (optional)domainsarray[string]Domains of the company
Health Score (optional)health-scorestringThe strength of your relationship with the company. To look at all the possible values or create custom values, please go to Admin -> Customer Fields. Default values: "At risk", "Doing okay", "Happy"
Account Tier (optional)account-tierstringClassification based on how much value the company brings to your business. To look at all the possible values or create custom values, please go to Admin -> Customer Fields. Default values: "Basic", "Premium", "Enterprise"
Renewal Date (optional)renewal-datestringDate when your contract or relationship with the company is due for renewal
Industry (optional)industrystringThe industry in which the company operates. To look at all the possible values or create custom values, please go to Admin -> Customer Fields.
Created Atcreated-atstringTimestamp that denotes when the company was created. In UTC format.
Updated Atupdated-atstringTimestamp that denotes when the company was last updated. In UTC format.
Custom Fields (optional)custom-fieldsobjectCustom fields that the company have. Custom fields can be created or modified in Admin -> Customer Fields

#Create Company

Create company

InputIDTypeDescription
Task ID (required)taskstringTASK_CREATE_COMPANY
Name (required)namestringName of the company
DescriptiondescriptionstringDescription of the company
NotenotestringNote about the company
Domainsdomainsarray[string]Domains of the company
Health Scorehealth-scorestringThe strength of your relationship with the company. To look at all the possible values or create custom values, please go to Admin -> Customer Fields. Default values: "At risk", "Doing okay", "Happy"
Account Tieraccount-tierstringClassification based on how much value the company brings to your business. To look at all the possible values or create custom values, please go to Admin -> Customer Fields. Default values: "Basic", "Premium", "Enterprise"
Renewal Daterenewal-datestringDate when your contract or relationship with the company is due for renewal. Enter in the format YYYY-MM-DD.
IndustryindustrystringThe industry in which the company operates. To look at all the possible values or create custom values, please go to Admin -> Customer Fields.
OutputIDTypeDescription
Company IDcompany-idintegerID of the company
Created Atcreated-atstringTimestamp that denotes when the company was created. In UTC format.

#Get All

Task to get all the IDs of existing contacts, companies, tickets, products, agents, roles, or skills. Note: products, agents, roles, and skills require admin privileges. Some of these might not work, depending on the plan you are on.

InputIDTypeDescription
Task ID (required)taskstringTASK_GET_ALL
Object Type (required)object-typestringType of object to get IDs for
Length (required)lengthintegerThe maximum number of IDs allowed is 500. The most recent IDs will be retrieved.
OutputIDTypeDescription
IDsidsarray[integer]List of IDs
ID Lengthid-lengthintegerNumber of IDs

#Get Product

Get product using ID. This task will only work if you have admin privileges.

InputIDTypeDescription
Task ID (required)taskstringTASK_GET_PRODUCT
Product ID (required)product-idintegerProduct ID
OutputIDTypeDescription
NamenamestringName of the product
DescriptiondescriptionstringDescription of the product
Primary Emailprimary-emailstringPrimary email of the product
Created Atcreated-atstringTimestamp that denotes when the product was created
Updated Atupdated-atstringTimestamp that denotes when the product was last updated
DefaultdefaultbooleanSet to true if the product is the default product

#Get Agent

Get agent using ID. This task will only work if you have admin privileges. Agents are those in your team who will login to Freshdesk.

InputIDTypeDescription
Task ID (required)taskstringTASK_GET_AGENT
Agent ID (required)agent-idintegerAgent ID
OutputIDTypeDescription
Name (optional)namestringName of the agent
Active (optional)activebooleanSet to true if the agent is verified
EmailemailstringEmail of the agent
Job Title (optional)job-titlestringJob title of the agent
Language (optional)languagestringLanguage of the agent
Mobile (optional)mobilestringMobile number of the agent
Phone (optional)phonestringTelephone number of the agent
Time Zone (optional)time-zonestringTime zone of the agent
TypetypestringType of the agent. Can be "Support Agent", "Field Agent" or "Collaborator"
Ticket Scopeticket-scopestringTicket permission of the agent. Can be "Global Access", "Group Access" or "Restricted Access"
Available (optional)availablebooleanSet to true if the agent is in a group that has enabled "Automatic Ticket Assignment"
Group IDs (optional)group-idsarray[integer]Group IDs of the agent
Role IDs (optional)role-idsarray[integer]Role IDs of the agent
Skill IDs (optional)skill-idsarray[integer]Skill IDs of the agent
OccasionaloccasionalbooleanSet to true if the agent is not working full-time
Signature (optional)signaturestringSignature of the agent in HTML format
Focus Mode (optional)focus-modebooleanSet to true if the agent is in focus mode
Deactivated (optional)deactivatedbooleanSet to true if the agent is deactivated
Created At (optional)created-atstringTimestamp that denotes when the agent was created
Updated At (optional)updated-atstringTimestamp that denotes when the agent was last updated

#Get Role

Get role using ID. This task will only work if you have admin privileges. Roles allow agents/collaborators to have different privileges.

InputIDTypeDescription
Task ID (required)taskstringTASK_GET_ROLE
Role ID (required)role-idintegerRole ID
OutputIDTypeDescription
NamenamestringName of the role
DescriptiondescriptionstringDescription of the role
DefaultdefaultbooleanSet to true if the role is the default role
Agent Typeagent-typestringType of the agent. Can be "Support Agent", "Field Agent" or "Collaborator"
Created Atcreated-atstringTimestamp that denotes when the role was created
Updated Atupdated-atstringTimestamp that denotes when the role was last updated

#Get Group

Get group using ID. This task will only work if you have admin privileges. Agents can be classified into groups such as Customer Support.

InputIDTypeDescription
Task ID (required)taskstringTASK_GET_GROUP
Group ID (required)group-idintegerGroup ID
OutputIDTypeDescription
NamenamestringName of the group
DescriptiondescriptionstringDescription of the group
Agent IDs (optional)agent-idsarray[integer]Agent IDs of the group
Auto Ticket Assignauto-ticket-assignstringThe type of automatic ticket assignment set for the group.
Escalate To (optional)escalate-tointegerThe ID of the user to whom an escalation email is sent if a ticket is unassigned.
Unassigned Duration (optional)unassigned-durationstringThe duration for which a ticket is unassigned before it is escalated.
Group Type (optional)group-typestringGroup type. Can be "support_agent_group" or "field_agent_group"
Agent Availability Status (optional)agent-availability-statusbooleanThe availability status of the agent in the group. Automatically set to true if the group has enabled "Automatic Ticket Assignment".
Created Atcreated-atstringTimestamp that denotes when the group was created
Updated Atupdated-atstringTimestamp that denotes when the group was last updated

#Get Skill

Get skill using ID. This task will only work if you have admin privileges. Agents can be assigned skills, and it is possible for tickets to be automatically assigned to agents based on the skills they have.

InputIDTypeDescription
Task ID (required)taskstringTASK_GET_SKILL
Skill ID (required)skill-idintegerSkill ID
OutputIDTypeDescription
NamenamestringName of the skill
RankrankintegerRank of the skill
Condition Match Typecondition-match-typestringType of condition match. Can be "all" or "any"
ConditionsconditionsarrayConditions for the skill
Created Atcreated-atstringTimestamp that denotes when the skill was created
Updated Atupdated-atstringTimestamp that denotes when the skill was last updated