Zendesk plugins
- Bhooshan Mogal
- Rostyslav Morozov
Introduction
The Zendesk plugins can be used to read one or more Zendesk objects from your Zendesk account. This can allow you to get deeper insights into your customer success by enriching Zendesk data with other data sources.
Use case(s)
User Storie(s)
- As a pipeline developer, I would like to fetch a single object from Zendesk, so that I can get deeper insights into my customer success stories.
- As a pipeline developer, I would like to fetch multiple objects from Zendesk, so that I do not have to create multiple source nodes merely to replicate all objects to a destination.
- As a pipeline developer, I would like to fetch all objects apart from a blacklist from Zendesk, so that I can skip a few objects, but don't have to specify all the remaining ones explicitly.
Plugin Type
- Batch Source
- Batch Sink
- Real-time Source
- Real-time Sink
- Action
- Post-Run Action
- Aggregate
- Join
- Spark Model
- Spark Compute
Configurables
This integration should be built using two plugins:
Zendesk single object
Used when you want to pull only a single object from Zendesk
Section | User Facing Name | Type | Description | Optional | Constraints |
---|---|---|---|---|---|
Basic | Admin Email | text | Zendesk's admin email. | No | Should validate email. |
API Token | text | Zendesk's API token. Can be obtained from the Zendesk Support Admin interface. Check out Zendesk's documentation for API Token generation. | No | ||
Subdomains | csv | List of Zendesk's Subdomains to read object from. | No | Can have multiple values. | |
Object to Pull | select | Select an object to pull from Zendesk: Comments, Groups, Organizations, Satisfaction Ratings, Tags, Ticket Fields, Ticket Metrics, Ticket Metrics Events, Tickets, Users. | No | Defaults to all. | |
Start Date | textbox | (required by some Zendesk's API Endpoints) The date in format YYYY-MM-DDThh:mm:ssZ, starting from which the data is requested. | No | Depends on list of the selected objects. |
Zendesk multi-object
Used when you want to pull multiple objects from Zendesk
Section | User Facing Name | Type | Description | Optional | Constraints |
---|---|---|---|---|---|
Basic | Admin Email | text | Zendesk's admin email. | No | Should validate email. |
API Token | text | Zendesk's API token. Can be obtained from the Zendesk Support Admin interface. Check out Zendesk's documentation for API Token generation. | No | ||
Subdomains | csv | List of Zendesk's Subdomains to read objects from. | No | Can have multiple values. | |
Objects to Pull | multi-select | Select a list of objects to pull from Zendesk: Comments, Groups, Organizations, Satisfaction Ratings, Tags, Ticket Fields, Ticket Metrics, Ticket Metrics Events, Tickets, Users | Yes | Defaults to all. | |
Objects to Skip | multi-select | Select a list of objects to skip from Zendesk. All other objects will be pulled. | Yes | Only used when Objects to pull is not specified | |
Start Date | textbox | (required by some Zendesk's API Endpoints) The date in format YYYY-MM-DDThh:mm:ssZ, starting from which the data is requested. | No | Depends on list of the selected objects. |
The plugin should output one record per row in Zendesk, with an additional field specifying the object where the record came from. Refer to the Salesforce multi-objects plugin for examples
Design / Implementation Tips
- v2 is current version of supported Zendesk's API.
- Zendesk API has support of Incremental Exports. The API lets export data from specified start_time till end_time.
- Plugin will be implemented using Zendesk Java Client by Cloudbees.
- Authentication will be performed using Admin Email and API Token.
- Output schema will be automatically generated from selected fields.
References
Object Reference
Object Description
Field Name | Type | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Comments | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
Article Comments | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
url | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
body | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
author_id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
source_id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
source_type | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
locale | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
html_url | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
created_at | datetime | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
updated_at | datetime | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
vote_sum | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
vote_count | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Post Comments | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
url | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
body | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
author_id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
post_id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
official | boolean | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
html_url | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
created_at | datetime | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
updated_at | datetime | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
vote_sum | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
vote_count | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ticket Comments | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
type | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
body | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
html_body | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
plain_body | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
public | boolean | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
author_id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
attachments | list[attachment]
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
via | via_object
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
metadata | metadata_object
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
created_at | datetime | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Requests Comments | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
type | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
request_id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
body | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
html_body | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
plain_body | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
public | boolean | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
author_id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
attachments | list[attachment]
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
created_at | datetime | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Groups | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
url | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
name | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
description | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
deleted | boolean | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
created_at | datetime | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
updated_at | datetime | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Organizations | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
url | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
external_id | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
name | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
created_at | datetime | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
updated_at | datetime | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
domain_names | list[string] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
details | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
notes | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
group_id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
shared_tickets | boolean | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
shared_comments | boolean | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
tags | list[string] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
organization_fields | map[string,object] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Satisfaction Ratings | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
url | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
assignee_id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
group_id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
requester_id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
ticket_id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
score | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
created_at | datetime | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
updated_at | datetime | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
comment | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
reason | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
reason_code | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Tags | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
name | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
count | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ticket Fields | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
url | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
type | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
title | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
raw_title | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
description | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
raw_description | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
position | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
active | boolean | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
required | boolean | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
collapsed_for_agents | boolean | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
regexp_for_validation | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
title_in_portal | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
raw_title_in_portal | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
visible_in_portal | boolean | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
editable_in_portal | boolean | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
required_in_portal | boolean | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
tag | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
created_at | datetime | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
updated_at | datetime | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
system_field_options | list[field_object]
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
custom_field_options | list[field_object]
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
sub_type_id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
removable | boolean | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
agent_description | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ticket Metrics | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
ticket_id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
url | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
group_stations | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
assignee_stations | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
reopens | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
replies | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
assignee_updated_at | datetime | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
requester_updated_at | datetime | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
status_updated_at | datetime | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
initially_assigned_at | datetime | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
assigned_at | datetime | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
solved_at | datetime | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
latest_comment_added_at | datetime | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
first_resolution_time_in_minutes | time_in_minutes_object
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
reply_time_in_minutes | time_in_minutes_object
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
full_resolution_time_in_minutes | time_in_minutes_object
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
agent_wait_time_in_minutes | time_in_minutes_object
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
requester_wait_time_in_minutes | time_in_minutes_object
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
created_at | datetime | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
updated_at | datetime | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ticket Metrics Events | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
ticket_id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
metric | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
instance_id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
type | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
time | datetime | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
sla | sla_object
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
status | status_object
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
deleted | boolean | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Tickets | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
url | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
external_id | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
type | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
subject | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
raw_subject | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
description | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
priority | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
status | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
recipient | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
requester_id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
submitter_id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
assignee_id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
organization_id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
group_id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
collaborator_ids | list[number] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
collaborators | list[collaborators_object]
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
email_cc_ids | list[number] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
follower_ids | list[number] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
forum_topic_id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
problem_id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
has_incidents | boolean | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
due_at | datetime | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
tags | list[string] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
via | via_object
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
custom_fields | list[custom_fields_object]
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
satisfaction_rating | satisfaction_rating_object
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
sharing_agreement_ids | list[number] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
followup_ids | list[number] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
via_followup_source_id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
macro_ids | list[number] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
ticket_form_id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
brand_id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
allow_channelback | boolean | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
allow_attachments | boolean | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
is_public | boolean | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
created_at | datetime | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
updated_at | datetime | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Users | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
string | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
name | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
active | boolean | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
alias | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
chat_only | boolean | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
created_at | datetime | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
custom_role_id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
role_type | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
details | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
external_id | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
last_login_at | datetime | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
locale | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
locale_id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
moderator | boolean | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
notes | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
only_private_comments | boolean | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
organization_id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
default_group_id | number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
phone | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
shared_phone_number | boolean | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
photo | attachment
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
restricted_agent | boolean | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
role | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
shared | boolean | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
shared_agent | boolean | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
signature | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
suspended | boolean | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
tags | list[string] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
ticket_restriction | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
time_zone | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
two_factor_auth_enabled | boolean | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
updated_at | datetime | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
url | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
user_fields | map[string,object] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
verified | boolean | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
report_csv | boolean |
Design
Approach(s)
Properties
Security
Limitation(s)
Future Work
- Some future work – HYDRATOR-99999
- Another future work – HYDRATOR-99999
Test Case(s)
- Test case #1
- Test case #2
Sample Pipeline
Please attach one or more sample pipeline(s) and associated data.
Pipeline #1
Pipeline #2
Table of Contents
Checklist
- User stories documented
- User stories reviewed
- Design documented
- Design reviewed
- Feature merged
- Examples and guides
- Integration tests
- Documentation for feature
- Short video demonstrating the feature