Zoho Desk
Integration version: 4.0
Configure Zoho Desk integration in Google Security Operations
For detailed instructions on how to configure an integration in Google SecOps, see Configure integrations .
Integration parameters
Use the following parameters to configure the integration:
Parameter Display Name | Type | Default Value | Is Mandatory | Description |
---|---|---|---|---|
API Root
|
String | https://desk.zoho.{region} | Yes | API root of the Zoho Desk instance. |
Client ID
|
String | N/A | Yes | Client ID of the Zoho Desk account. |
Client Secret
|
Password | N/A | Yes | Client Secret of the Zoho Desk account. |
Refresh Token
|
Password | N/A | No | Refresh Token of the Zoho Desk account. You need to run the action "Get Refresh Token" to generate it. |
Verify SSL
|
Checkbox | Checked | Yes | If enabled, verifies that the SSL certificate for the connection to the Zoho Desk server is valid. |
Get API credentials
- Go to the Zoho Desk API console .
- Click Add Clientand select Self Client.
- In the Client Secrettab, copy the value of the "Client ID" and "Client Secret" parameters and paste it into respective fields in the integration configuration window.
- In the Generate Codetab provide the following scopes:
Desk.tickets.READ,Desk.tickets.CREATE,Desk.tickets.UPDATE,Desk.tickets.DELETE,Desk.settings.READ,Desk.basic.READ,Desk.products.READ,Desk.contacts.READ
and add scope description. - To get an authorization code, click Create.
- Go back to Google Security Operations, simulate a case and navigate to the Get Refresh Token action within the Zoho Desk integration.
- To configure the action, enter your authorization code and authorization link.
- Copy the token from the action's JSON result, paste it into the respective field in the integration configuration window and run a test.
Use Cases
Perform triaging action.
Actions
Add Comment To Ticket
Description
Add a comment to a ticket in Zoho Desk.
Parameters
Public
Possible Values:
- Public
- Private
Plain Text
Possible Values:
- Plain Text
- HTML
Run on
This action doesn't run on entities.
Action Results
Script Result
Script Result Name | Value Options | Example |
---|---|---|
is_success
|
True/False | is_success:False |
JSON Result
{
"content"
:
"zsu[@user:11550965]zsu Please fix this ASAP"
,
"commentedTime"
:
"2022-07-01T11:18:43.935Z"
,
"modifiedTime"
:
"2022-07-01T11:18:43.935Z"
,
"contentType"
:
"plainText"
,
"impersonatedUser"
:
null
,
"encodedContent"
:
"zsu[@user:11550965]zsu Please fix this ASAP"
,
"id"
:
"97709000000179081"
,
"commenterId"
:
"97709000000092001"
,
"commenter"
:
{
"id"
:
"97709000000092001"
,
"name"
:
"TIP Labops"
,
"email"
:
"tip.labops@siemplify.co"
,
"photoURL"
:
"https://desk.zoho.eu/api/v1/agents/97709000000092001/photo?orgId=20083004796"
,
"type"
:
"AGENT"
,
"firstName"
:
"TIP"
,
"lastName"
:
"Labops"
,
"roleName"
:
"CEO"
},
"attachments"
:
[],
"isPublic"
:
false
}
Case Wall
Result type | Value / Description | Type |
---|---|---|
Output message*
|
The action should not fail nor stop a playbook execution: If the 200 status code is reported (is_success = true): "Successfully added comment "{text}" to ticket {ticket id}in Zoho Desk." Async Message: "Waiting for a reply..." The action should fail and stop a playbook execution: If a critical error is reported: "Error executing action "Add Comment To Ticket". Reason: {0}''.format(error.Stacktrace) If errors are reported: "Error executing action "Add Comment To Ticket". Reason: {errors/errorMessage} |
General |
Create Ticket
Description
Create a ticket in Zoho Desk.
Parameters
Select One
Possible values:
- Select One
- Agent
- Team
Specify the type of the assignee.
If "Agent" or "Team" is selected, the "Assignee Name" parameter is required.
Select One
Possible Values:
- Select One
- No Priority
- Low
- Medium
- High
Select One
Possible Values:
- Select One
- No Classification
- Question
- Problem
- Feature
- Others
Select One
Possible Values:
- Select One
- Phone
- Web
- Chat
- Forums
Specify the due date for the ticket.
Format: ISO 8601. Example: 2022-07-06T07:05:43Z.
Specify a JSON object containing the custom fields that need to be updated.
Note:You need to provide the API names of the keys.
Run on
This action doesn't run on entities.
Action Results
Script Result
Script Result Name | Value Options | Example |
---|---|---|
is_success
|
True/False | is_success:False |
JSON Result
{
"modifiedTime"
:
"2022-07-01T11:00:33.000Z"
,
"subCategory"
:
null
,
"statusType"
:
"On Hold"
,
"subject"
:
"Here's your first ticket."
,
"dueDate"
:
null
,
"departmentId"
:
"97709000000007061"
,
"channel"
:
"Chat"
,
"onholdTime"
:
"2022-07-01T09:32:14.717Z"
,
"language"
:
"English"
,
"source"
:
{
"appName"
:
null
,
"extId"
:
null
,
"permalink"
:
null
,
"type"
:
"SYSTEM"
,
"appPhotoURL"
:
null
},
"resolution"
:
"Koko"
,
"sharedDepartments"
:
[],
"closedTime"
:
null
,
"approvalCount"
:
"0"
,
"isOverDue"
:
true
,
"isTrashed"
:
false
,
"createdTime"
:
"2022-06-27T17:02:17.000Z"
,
"id"
:
"97709000000160077"
,
"isResponseOverdue"
:
false
,
"customerResponseTime"
:
"2022-06-27T17:02:17.000Z"
,
"productId"
:
null
,
"contactId"
:
"97709000000160029"
,
"threadCount"
:
"1"
,
"secondaryContacts"
:
[],
"priority"
:
null
,
"classification"
:
null
,
"commentCount"
:
"1"
,
"taskCount"
:
"0"
,
"accountId"
:
"97709000000160001"
,
"phone"
:
"1 888 900 9646"
,
"webUrl"
:
"https://desk.zoho.eu/support/siemplify/ShowHomePage.do#Cases/dv/97709000000160077"
,
"isSpam"
:
false
,
"status"
:
"On Hold"
,
"entitySkills"
:
[],
"ticketNumber"
:
"101"
,
"customFields"
:
{},
"isArchived"
:
false
,
"description"
:
"Hello<"
,
"timeEntryCount"
:
"0"
,
"channelRelatedInfo"
:
null
,
"responseDueDate"
:
null
,
"isDeleted"
:
false
,
"modifiedBy"
:
"97709000000092001"
,
"email"
:
"support@zohosupport.com"
,
"layoutDetails"
:
{
"id"
:
"97709000000023011"
,
"layoutName"
:
"Siemplify"
},
"channelCode"
:
null
,
"cf"
:
{},
"slaId"
:
null
,
"layoutId"
:
"97709000000023011"
,
"assigneeId"
:
null
,
"teamId"
:
"97709000000182001"
,
"attachmentCount"
:
"0"
,
"isEscalated"
:
false
,
"category"
:
null
}
Case Wall
Result type | Value / Description | Type |
---|---|---|
Output message*
|
The action should not fail nor stop a playbook execution: If the 200 status code is reported (is_success=true): "Successfully created a ticket with ID {ticket id} in Zoho Desk.". The action should fail and stop a playbook execution: If a fatal error, like wrong credentials, no connection to server, other is reported: "Error executing action "Create Ticket". Reason: {0}''.format(error.Stacktrace) If the agent is not found: "Error executing action "Create Ticket". Reason: agent {agent_name} wasn't found in Zoho Desk. Please check the spelling."' If the team is not found: "Error executing action "Create Ticket". Reason: team {team_name} wasn't found in Zoho Desk. Please check the spelling." If "Agent" or "Team" is selected, but the "Assignee Name" parameter is not provided: "Error executing action "Create Ticket". Reason: "Assignee Name" needs to be provided." If the department is not found: "Error executing action "Create Ticket". Reason: department {department_name} wasn't found in Zoho Desk." If the contact is not found: "Error executing action "Create Ticket". Reason: contact {contact} wasn't found in Zoho Desk. Please check the spelling." If the product is not found: "Error executing action "Create Ticket". Reason: product {product} wasn't found in Zoho Desk. Please check the spelling." |
General |
Get Refresh Token
Description
Get a refresh token for the configuration.
Parameters
Parameter Display Name | Type | Default Value | Is Mandatory | Description |
---|---|---|---|---|
Authorization Link
|
String | https://accounts.zoho.{region} | Yes | Specify the authorization link for the integration. |
Authorization Code
|
Password | N/A | Yes | Specify the authorization code that was generated in the dev console of Zoho. |
Run on
This action doesn't run on entities.
Action Results
Script Result
Script Result Name | Value Options | Example |
---|---|---|
is_success
|
True/False | is_success:False |
JSON Result
{
"refresh_token"
:
"1000.90567b1fc0c54f540e56200ae4388cef.a8f6b313297d558774bee07d60cc6863"
}
Case Wall
Result type | Value/Description | Type |
---|---|---|
Output message*
|
The action should not fail nor stop a playbook execution:
If successful: "Successfully generated refresh token. Copy the value into "Refresh Token" parameter in the integration configuration" T he action should fail and stop a playbook execution: If a fatal error, like wrong credentials, no connection to server, other is reported: "Error executing action "Get Refresh Token". Reason: {0}''.format(error.Stacktrace) If an error in reported: "Error executing action "Get Refresh Token". Reason: {error}'' |
General |
Get Ticket Details
Description
Get detailed information about the ticket from Zoho Desk.
Parameters
Parameter Display Name | Type | Default Value | Is Mandatory | Description |
---|---|---|---|---|
Ticket IDs
|
String | N/A | Yes | Specify a comma-separated list of ids for which you want to return details. |
Create Insight
|
Checkbox | Unchecked | No | If enabled, the action creates an insight containing information about tickets. |
Additional Fields To Return
|
CSV | contacts, products, assignee, departments, contract, isRead, team, skills | No | Specify the additional fields to return. Possible values: contacts, products, assignee, departments, contract, isRead, team, skills. |
Fetch Comments
|
Checkbox | Checked | No | If enabled, the action fetches comments related to the tickets. |
Max Comments To Return
|
Integer | 50 | No | Specify the number of comments to return per ticket. Maximum: 100 |
Run on
This action doesn't run on entities.
Action Results
Script Result
Script Result Name | Value Options | Example |
---|---|---|
is_success
|
True/False | is_success:False |
JSON Result
{
"modifiedTime"
:
"2022-06-27T17:12:35.000Z"
,
"subCategory"
:
null
,
"statusType"
:
"Open"
,
"subject"
:
"tesa"
,
"dueDate"
:
null
,
"departmentId"
:
"97709000000007061"
,
"channel"
:
"Phone"
,
"onholdTime"
:
null
,
"language"
:
null
,
"source"
:
{
"appName"
:
null
,
"extId"
:
null
,
"permalink"
:
null
,
"type"
:
"SYSTEM"
,
"appPhotoURL"
:
null
},
"resolution"
:
null
,
"sharedDepartments"
:
[],
"closedTime"
:
null
,
"approvalCount"
:
"0"
,
"isOverDue"
:
false
,
"isTrashed"
:
false
,
"contact"
:
{
"firstName"
:
null
,
"lastName"
:
"test"
,
"phone"
:
null
,
"mobile"
:
null
,
"id"
:
"97709000000159194"
,
"isSpam"
:
false
,
"type"
:
null
,
"email"
:
"test@test.com"
,
"account"
:
{
"website"
:
null
,
"accountName"
:
"test!@test.com"
,
"id"
:
"97709000000159182"
}
},
"createdTime"
:
"2022-06-27T17:12:35.000Z"
,
"id"
:
"97709000000159224"
,
"isResponseOverdue"
:
false
,
"customerResponseTime"
:
"2022-06-27T17:12:35.000Z"
,
"productId"
:
null
,
"contactId"
:
"97709000000159194"
,
"threadCount"
:
"1"
,
"secondaryContacts"
:
[],
"priority"
:
null
,
"classification"
:
null
,
"commentCount"
:
"0"
,
"taskCount"
:
"0"
,
"accountId"
:
"97709000000159182"
,
"phone"
:
null
,
"webUrl"
:
"https://desk.zoho.eu/support/siemplify/ShowHomePage.do#Cases/dv/97709000000159224"
,
"assignee"
:
{
"photoURL"
:
"https://desk.zoho.eu/api/v1/agents/97709000000092001/photo?orgId=20083004796"
,
"firstName"
:
"TIP"
,
"lastName"
:
"Labops"
,
"id"
:
"97709000000092001"
,
"email"
:
"tip.labops@siemplify.co"
},
"isSpam"
:
false
,
"status"
:
"Open"
,
"entitySkills"
:
[],
"ticketNumber"
:
"102"
,
"sentiment"
:
null
,
"customFields"
:
{},
"isArchived"
:
false
,
"skillsInfo"
:
[],
"isRead"
:
false
,
"description"
:
"<div style=\"font-size: 13px; font-family: Regular, Lato, Arial, Helvetica, sans-serif\"><div>tetsta</div></div>"
,
"timeEntryCount"
:
"0"
,
"channelRelatedInfo"
:
null
,
"responseDueDate"
:
null
,
"isDeleted"
:
false
,
"modifiedBy"
:
"97709000000092001"
,
"department"
:
{
"name"
:
"Siemplify"
,
"id"
:
"97709000000007061"
},
"followerCount"
:
"0"
,
"email"
:
"test@test.com"
,
"layoutDetails"
:
{
"id"
:
"97709000000023011"
,
"layoutName"
:
"Siemplify"
},
"channelCode"
:
null
,
"product"
:
null
,
"isFollowing"
:
false
,
"cf"
:
{},
"slaId"
:
null
,
"team"
:
null
,
"layoutId"
:
"97709000000023011"
,
"assigneeId"
:
"97709000000092001"
,
"createdBy"
:
"97709000000092001"
,
"teamId"
:
null
,
"contractId"
:
null
,
"tagCount"
:
"0"
,
"attachmentCount"
:
"0"
,
"isEscalated"
:
false
,
"category"
:
null
"comments"
:
{
"content"
:
"<div style=\"font-size: 14px; font-family: LatoRegular, Regular, Lato, "Lato 2", Arial, Helvetica, sans-serif\"><div style=\"font-size: 14px; font-family: LatoRegular, Regular, Lato, "Lato 2", Arial, Helvetica, sans-serif\"><ul><li>asdasdasdasd<br /></li></ul></div><div><br /></div></div>"
,
"commentedTime"
:
"2022-06-29T10:21:24.000Z"
,
"modifiedTime"
:
"2022-06-29T10:23:42.000Z"
,
"contentType"
:
"html"
,
"impersonatedUser"
:
null
,
"encodedContent"
:
"<div style="font-size: 14px; font-family: LatoRegular, Regular, Lato, &quot;Lato 2&quot;, Arial, Helvetica, sans-serif"><div style="font-size: 14px; font-family: LatoRegular, Regular, Lato, &quot;Lato 2&quot;, Arial, Helvetica, sans-serif"><ul><li>asdasdasdasd<br /></li></ul></div><div><br /></div></div>"
,
"id"
:
"97709000000172003"
,
"commenterId"
:
"97709000000092001"
,
"commenter"
:
{
"id"
:
"97709000000092001"
,
"name"
:
"TIP Labops"
,
"email"
:
"tip.labops@siemplify.co"
,
"photoURL"
:
"https://desk.zoho.eu/api/v1/agents/97709000000092001/photo?orgId=20083004796"
,
"type"
:
"AGENT"
,
"firstName"
:
"TIP"
,
"lastName"
:
"Labops"
,
"roleName"
:
"CEO"
},
"attachments"
:
[],
"isPublic"
:
false
}
}
Case Wall
The action should not fail nor stop a playbook execution:
If data is available for at least one ID (is_success = true): "Successfully returned details related to the following tickets in Zoho Desk: {ticket ids}".
If data is not available for at least one ID (is_success=true): "Action wasn't able to find details related to the following tickets in Zoho Desk: {ticket ids}".
If data is not available for all IDs (is_success=false): "No tickets were found."
The action should fail and stop a playbook execution:
If a fatal error, like wrong credentials, no connection to server, other is reported: "Error executing action "Get Ticket Details". Reason: {0}''.format(error.Stacktrace)
Table Name:Ticket Details Table Columns:
- Number: ticketNumber
- Status: status Subject: subject
- Created Time: createdTime
- Resolution: resolution
- Email: email
- Contact: {firstName} + {lastName}
Mark Ticket As Spam
Description
Mark ticket as spam in Zoho Desk.
Parameters
Parameter Display Name | Type | Default Value | Is Mandatory | Description |
---|---|---|---|---|
Ticket ID
|
String | N/A | Yes | Specify the ID of the ticket that needs to be marked as spam. |
Mark Contact
|
Checkbox | Checked | No | If enabled, the contact that created the ticket is marked as spammer. |
Run on
This action doesn't run on entities.
Action Results
Script Result
Script Result Name | Value Options | Example |
---|---|---|
is_success
|
True/False | is_success:False |
Case Wall
Result type | Value / Description | Type |
---|---|---|
Output message*
|
The action should not fail nor stop a playbook execution: If the 200 status code is reported (is_success = true): "Successfully marked a ticket as spam in Zoho Desk. The action should fail and stop a playbook execution: If a fatal error, like wrong credentials, no connection to server, other is reported: "Error executing action "Mark Ticket As Spam". Reason: {0}''.format(error.Stacktrace) If errors are reported: "Error executing action "Mark Ticket As Spam". Reason: {errors/errorMessage} |
General |
Ping
Description
Test connectivity to Zoho Desk with parameters provided at the integration configuration page in the Google Security Operations Marketplace tab.
Parameters
N/A
Run on
The action doesn't run on entities, nor has mandatory input parameters.
Action Results
Script Result
Script Result Name | Value Options | Example |
---|---|---|
is_success
|
True/False | is_success:False |
Case Wall
Result Type | Value / Description | Type |
---|---|---|
Output message\*
|
The action should not fail nor stop a playbook execution:
If successful (is_success=true): "Successfully connected to the Zoho Desk server with the provided connection parameters!" The action should fail and stop a playbook execution:
If not successful (is_success= false): "Failed to connect to the Zoho Desk server! Error is {0}".format(exception.stacktrace) |
General |
Update Ticket
Description
Update a ticket in Zoho Desk.
Parameters
Select One
Possible values:
- Select One
- Agent
- Team
Specify the type of the assignee.
If "Agent" or "Team" is selected, the "Assignee Name" parameter is required.
Select One
Possible Values:
- Select One
- No Priority
- Low
- Medium
- High
Select One
Possible Values:
- Select One
- Open
- On Hold
- Escalated
- Closed
Select One
Possible values:
- Select One
- Read
- Unread
Select One
Possible Values:
- Select One
- No Classification
- Question
- Problem
- Feature
- Others
Select One
Possible Values:
- Select One
- Phone
- Web
- Chat
- Forums
Specify the due date for the ticket.
Format: ISO 8601. Example: 2022-07-06T07:05:43Z.
Note:This parameter doesn't have an impact, when the "On Hold" status is set.
Specify a JSON object containing the custom fields that need to be updated.
Note:You need to provide the API names of the keys.
Run on
This action doesn't run on entities.
Action Results
Script Result
Script Result Name | Value Options | Example |
---|---|---|
is_success
|
True/False | is_success:False |
JSON Result
{
"modifiedTime"
:
"2022-07-01T11:00:33.000Z"
,
"subCategory"
:
null
,
"statusType"
:
"On Hold"
,
"subject"
:
"Here's your first ticket."
,
"dueDate"
:
null
,
"departmentId"
:
"97709000000007061"
,
"channel"
:
"Chat"
,
"onholdTime"
:
"2022-07-01T09:32:14.717Z"
,
"language"
:
"English"
,
"source"
:
{
"appName"
:
null
,
"extId"
:
null
,
"permalink"
:
null
,
"type"
:
"SYSTEM"
,
"appPhotoURL"
:
null
},
"resolution"
:
"Koko"
,
"sharedDepartments"
:
[],
"closedTime"
:
null
,
"approvalCount"
:
"0"
,
"isOverDue"
:
true
,
"isTrashed"
:
false
,
"createdTime"
:
"2022-06-27T17:02:17.000Z"
,
"id"
:
"97709000000160077"
,
"isResponseOverdue"
:
false
,
"customerResponseTime"
:
"2022-06-27T17:02:17.000Z"
,
"productId"
:
null
,
"contactId"
:
"97709000000160029"
,
"threadCount"
:
"1"
,
"secondaryContacts"
:
[],
"priority"
:
null
,
"classification"
:
null
,
"commentCount"
:
"1"
,
"taskCount"
:
"0"
,
"accountId"
:
"97709000000160001"
,
"phone"
:
"1 888 900 9646"
,
"webUrl"
:
"https://desk.zoho.eu/support/siemplify/ShowHomePage.do#Cases/dv/97709000000160077"
,
"isSpam"
:
false
,
"status"
:
"On Hold"
,
"entitySkills"
:
[],
"ticketNumber"
:
"101"
,
"customFields"
:
{},
"isArchived"
:
false
,
"description"
:
"Hello<"
,
"timeEntryCount"
:
"0"
,
"channelRelatedInfo"
:
null
,
"responseDueDate"
:
null
,
"isDeleted"
:
false
,
"modifiedBy"
:
"97709000000092001"
,
"email"
:
"support@zohosupport.com"
,
"layoutDetails"
:
{
"id"
:
"97709000000023011"
,
"layoutName"
:
"Siemplify"
},
"channelCode"
:
null
,
"cf"
:
{},
"slaId"
:
null
,
"layoutId"
:
"97709000000023011"
,
"assigneeId"
:
null
,
"teamId"
:
"97709000000182001"
,
"attachmentCount"
:
"0"
,
"isEscalated"
:
false
,
"category"
:
null
}
Case Wall
Result type | Value / Description | Type |
---|---|---|
Output message*
|
The action should not fail nor stop a playbook execution: If the 200 status code is reported (is_success = true): "Successfully updated ticket with ID {ticket id} in Zoho Desk.". The action should fail and stop a playbook execution: If a fatal error, like wrong credentials, no connection to server, other is reported: "Error executing action "Update Ticket". Reason: {0}''.format(error.Stacktrace) If the agent is not found: "Error executing action "Update Ticket". Reason: agent {agent_name} wasn't found in Zoho Desk. Please check the spelling."' If the team is not found: "Error executing action "Update Ticket". Reason: team {team_name} wasn't found in Zoho Desk. Please check the spelling." If the department is not found: "Error executing action "Update Ticket". Reason: department {department} wasn't found in Zoho Desk. Please check the spelling."' If the contact is not found: "Error executing action "Update Ticket". Reason: contact {contact} wasn't found in Zoho Desk. Please check the spelling." If the product is not found: "Error executing action "Update Ticket". Reason: product {product} wasn't found in Zoho Desk. Please check the spelling." If "Agent" or "Team" is selected, but the "Assignee Name" parameter is not provided: "Error executing action "Update Ticket". Reason: "Assignee Name" needs to be provided." |
General |
Need more help? Get answers from Community members and Google SecOps professionals.