Zoho Desk
This document provides guidance on how to integrate Zoho Desk with Google SecOps.
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.READand 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.

