In this article you will learn how to integrate Zendesk data to ODBC
without coding in just a few clicks (live / bi-directional connection to Zendesk).
Zendesk Connector can be used to integrate Zendesk REST API in your App / BI Tools. You can read/write data about Tickets, Activity, Users, Organizations and more..
Using Zendesk Connector you will be able to connect, read, and write data from within ODBC. Follow the steps below to see how we would accomplish that.
Driver mentioned in this article is part of ODBC PowerPack which is a collection of high-performance Drivers for various API data source (i.e. REST API, JSON, XML, CSV, Amazon S3 and many more). Using familiar SQL query language you can make live connections and read/write data from API sources or JSON / XML / CSV Files inside SQL Server (T-SQL) or your favorite Reporting (i.e. Power BI, Tableau, Qlik, SSRS, MicroStrategy, Excel, MS Access), ETL Tools (i.e. Informatica, Talend, Pentaho, SSIS). You can also call our drivers from programming languages such as JAVA, C#, Python, PowerShell etc.
If you are new to ODBC and ZappySys ODBC PowerPack then check the following links to get started.
Create ODBC Data Source (DSN) based on ZappySys API Driver
To get data from Zendesk using ODBC we first need to create a DSN (Data Source)
which will access data from Zendesk. We will later be able to read data using ODBC. Perform these steps:
Create a User Data Source (User DSN) based on ZappySys API Driver
ZappySys API Driver
You should create a System DSN (instead of a User DSN) if the client application is launched under a Windows System Account, e.g. as a Windows Service.
If the client application is 32-bit (x86) running with a System DSN, use ODBC Data Sources (32-bit) instead of the 64-bit version.
When the Configuration window appears give your data source a name if you haven't done that already,
then select "Zendesk" from the list of Popular Connectors. If "Zendesk" is not present
in the list, then click "Search Online" and download it. Then set the path to the location where you
downloaded it. Finally, click Continue >> to proceed with configuring the DSN:
ZendeskDSN
Zendesk
Now it's time to configure the Connection Manager. Select Authentication Type,
e.g. Token Authentication. Then select API Base URL (in most cases, the default one is the right one).
More info is available in the Authentication section.
Authenticate using Static Token instead of userid / password ([Token Access] option must be enabled under Admin Console > Channel > API > Settings and then Click [ADD API Token] to generate new token. These settings typically found here https://YOUR-SUB-DOMAIN.zendesk.com/agent/admin/api/settings
[Read more..]
Please refer to below API Reference (External Site) link for Token Authentication [Http]
OAuth App must be created under Admin Console > Channel > API > Settings. These settings typically found here https://YOUR-SUB-DOMAIN.zendesk.com/agent/admin/api/oauth_clients
[Read more..]
Please refer to below API Reference (External Site) link for OAuth Authentication [OAuth]
Authenticate using your userid / password (2FA must be OFF and [Password Access] option must be enabled under Admin Console > Channel > API > Settings. These settings typically found here https://YOUR-SUB-DOMAIN.zendesk.com/agent/admin/api/settings
[Read more..]
Please refer to below API Reference (External Site) link for UserID/Password Authentication (2FA must be OFF) [Http]
Fill in all required parameters and set optional parameters if needed:
ZendeskDSN
Zendesk
UserID/Password Authentication (2FA must be OFF) [Http]
https://[$Domain$].zendesk.com/api/v2
Required Parameters
Domain
Fill in the parameter...
UserName (2FA Must be OFF)
Fill in the parameter...
Password
Fill in the parameter...
Optional Parameters
RetryMode
Fill in the parameter...
RetryStatusCodeList
Fill in the parameter...
RetryCountMax
Fill in the parameter...
RetryMultiplyWaitTime
Fill in the parameter...
Once the data source has been configured, you can preview data. Select the Preview tab and use settings similar to the following to preview data:
Click OK to finish creating the data source.
Create Custom Store Procedure in ZappySys Driver
You can create procedures to encapsulate custom logic and then only pass handful parameters rather than long SQL to execute your API call.
Steps to create Custom Store Procedure in ZappySys Driver. You can insert Placeholders anywhere inside Procedure Body. Read more about placeholders here
Go to Custom Objects Tab and Click on Add button and Select Add Procedure:
Enter the desired Procedure name and click on OK:
Select the created Store Procedure and write the your desired store procedure and Save it and it will create the custom store procedure in the ZappySys Driver:
Here is an example stored procedure for ZappySys Driver. You can insert Placeholders anywhere inside Procedure Body. Read more about placeholders here
CREATE PROCEDURE [usp_get_orders]
@fromdate = '<<yyyy-MM-dd,FUN_TODAY>>'
AS
SELECT * FROM Orders where OrderDate >= '<@fromdate>';
That's it now go to Preview Tab and Execute your Store Procedure using Exec Command. In this example it will extract the orders from the date 1996-01-01:
Exec usp_get_orders '1996-01-01';
Create Custom Virtual Table in ZappySys Driver
ZappySys API Drivers support flexible Query language so you can override Default Properties you configured on Data Source such as URL, Body. This way you don't have to create multiple Data Sources if you like to read data from multiple EndPoints. However not every application support supplying custom SQL to driver so you can only select Table from list returned from driver.
Many applications like MS Access, Informatica Designer wont give you option to specify custom SQL when you import Objects. In such case Virtual Table is very useful. You can create many Virtual Tables on the same Data Source (e.g. If you have 50 URLs with slight variations you can create virtual tables with just URL as Parameter setting.
Go to Custom Objects Tab and Click on Add button and Select Add Table:
Enter the desired Table name and click on OK:
And it will open the New Query Window Click on Cancel to close that window and go to Custom Objects Tab.
Select the created table, Select Text Type AS SQL and write the your desired SQL Query and Save it and it will create the custom table in the ZappySys Driver:
Here is an example SQL query for ZappySys Driver. You can insert Placeholders also. Read more about placeholders here
SELECT
"ShipCountry",
"OrderID",
"CustomerID",
"EmployeeID",
"OrderDate",
"RequiredDate",
"ShippedDate",
"ShipVia",
"Freight",
"ShipName",
"ShipAddress",
"ShipCity",
"ShipRegion",
"ShipPostalCode"
FROM "Orders"
Where "ShipCountry"='USA'
That's it now go to Preview Tab and Execute your custom virtual table query. In this example it will extract the orders for the USA Shipping Country only:
SELECT * FROM "vt__usa_orders_only"
Conclusion
In this article we discussed how to connect to Zendesk in ODBC and integrate data without any coding. Click here to DownloadZendesk Connector for ODBC and try yourself see how easy it is. If you still have any question(s) then ask here or simply click on live chat icon below and ask our expert (see bottom-right corner of this page).
Zendesk Connector support following actions for REST API integration. If some actions are not listed below then you can easily edit Connector file and enhance out of the box functionality.
Read Tickets (All)
Get a list of all tickets in your account
Parameter
Description
Sort By
Sort By field
Option
Value
id
id
assignee
assignee
assignee.name
assignee.name
created_at
created_at
group
group
locale
locale
requester
requester
requester.name
requester.name
status
status
subject
subject
updated_at
updated_at
Sort Order
Sort order
Option
Value
desc
desc
asc
asc
Extra Columns to Include
Option
Value
Default
comment_count
comment_count
External ID for Ticket
Read Tickets (Incremental)
Get a list of tickets changed after specified date/time
Parameter
Description
Start Time (e.g. yyyy-MM-dd -OR- yyyy-MM-ddTHH:mm:ss)
Start DateTime for data fetch. Tickets modified after this date/time is fetched. You can enter date in yyyy-MM-dd or yyyy-MM-ddTHH:mm:ss format. You can also use functions to get date. Supported functions now|today|yesterday|weekstart|weekend|monthstart|monthend|yearstart|yearend and supported intervals for add/subtract are ms|s|sec|min|h|hour|y|year|d|day|m|month|y|year. Example monthstart-3d (subtract 3days from month start)
Option
Value
today
today
yesterday
yesterday
monthstart
monthstart
monthend
monthend
yearstart
yearstart
yearend
yearend
weekstart
weekstart
weekend
weekend
yearstart-1y
yearstart-1y
yearend-1y
yearend-1y
monthstart-1d
monthstart-1d
monthend+1d
monthend+1d
2022-01-31
2022-01-31
2022-01-31 23:59:59
2022-01-31 23:59:59
Read Ticket(s) by ID
Get a list of all tickets in your account
Parameter
Description
Ticket ID(S) - Use Comma for multiple (e.g. 111,222)
Read User(s) by ID
Get a list of users in your account for specific id(s)
Parameter
Description
User ID(S) - Use Comma for multiple (e.g. 111,222)
Read Organization(s) by ID
Get a list of organizations in your account for specific id(s)
Parameter
Description
Organization ID(S) - Use Comma for multiple (e.g. 111,222)
Read Tickets for Organization
Get all tickets for specified organization_id
Parameter
Description
Organization ID
Read Tickets for User (Requested)
Get all requested tickets for specified user_id
Parameter
Description
User ID
Read Tickets for User (CCed)
Get all CCed tickets for specified user_id
Parameter
Description
User ID
Read Tickets for User (Assigned)
Get all assigned tickets for specified user_id
Parameter
Description
User ID
Read Tickets (Recent)
Get all recent tickets
Read Tickets Count (All)
Returns an approximate count of tickets in the account. If the count exceeds 100,000, it is updated every 24 hours. The count[refreshed_at] property is a timestamp that indicates when the count was last updated. Note: When the count exceeds 100,000, count[refreshed_at] may occasionally be null. This indicates that the count is being updated in the background, and count[value] is limited to 100,000 until the update is complete.
Read Tickets Count (for Organization)
Returns an approximate count of tickets for specified organization_id. If the count exceeds 100,000, it is updated every 24 hours. The count[refreshed_at] property is a timestamp that indicates when the count was last updated. Note: When the count exceeds 100,000, count[refreshed_at] may occasionally be null. This indicates that the count is being updated in the background, and count[value] is limited to 100,000 until the update is complete.
Parameter
Description
Organization ID
Read Ticket Metrics
Returns a list of tickets with their metrics..
Read Ticket Fields
Returns a list of all system and custom ticket fields in your account. For accounts without access to multiple ticket forms, positions can be changed using the Update Ticket Field endpoint or the Ticket Forms page in Zendesk Support (Admin > Manage > Ticket Forms). The Ticket Forms page shows the fields for the account. The order of the fields is used in the different products to show the field values in the tickets.
Parameter
Description
Read Ticket Forms
Returns a list of all ticket forms for your account if accessed as an admin or agent. End users only see ticket forms that have end_user_visible set to true.
Read Ticket Comments
Returns comments for specified ticket ID.
Parameter
Description
Ticket ID
Sort Order
Sort order
Option
Value
desc
desc
asc
asc
Include inline images
Default is false. When true, inline images are also listed as attachments in the response
Option
Value
false
false
true
true
Read Ticket Attachments
Returns attachments for the specified Ticket ID.
Parameter
Description
Ticket ID
Sort Order
Sort order
Option
Value
desc
desc
asc
asc
Include inline images
Default is false. When true, inline images are also listed as attachments in the response
Option
Value
false
false
true
true
Read Ticket ActivityStream
Lists ticket activities in the last 30 days affecting the agent making the request. The Ticket Activities API returns ticket activities by other people affecting the agent making the API request. Ticket activities include assigning a ticket to the agent, increasing the priority of a ticket assigned to the agent, or adding a comment to a ticket assigned to the agent. A possible use case for the API is building a personalized notification service for agents.
Parameter
Description
Since (ISO e.g. 2013-04-03T16:02:46Z)
return the activities since a specific date. The since parameter takes a UTC time in the ISO 8601 format. Example: '2013-04-03T16:02:46Z'.
Read Ticket ActivityStream Details
Lists ticket activity details.
Parameter
Description
activity_id
Search Records
Search for ticket, user, organization, or group for specified search criteria. Returns max 1000 records based on search criteria (i.e. query) you specify
Parameter
Description
Search Criteria
The search query based on this syntax https://support.zendesk.com/hc/en-us/articles/203663226
Option
Value
Example: Search by Ticket ID
112233
Example: Search by Ticket Status
status<solved
Example: Search by Some Text
SomeText
Example: Search By Status
SomeText
Example: Search by Type and Status
type:ticket status:open
Example: Search by Type and Name
type:user "Jane Doe"
Example: Search by Type and CreationDate
type:organization created< 2015-05-01
Example: Search organizations updated after some date
type:organization updated > 2015-05-01
Example: Search users updated after some date
type:user updated > 2015-05-01
Example: Search By Type and Tag
type:ticket tags:red tags:blue
Sort By
Option
Value
updated_at
updated_at
created_at
created_at
priority
priority
status
status
ticket_type
ticket_type
Sort Order
Option
Value
desc
desc
asc
asc
Extra Columns to Include
You can list email CCs by side-loading users.
Option
Value
Default
users
users
Read Organization Count
Get organizations count.
Read Organization Fields
Returns a list of custom Organization Fields in your account. Fields are returned in the order that you specify in your Organization Fields configuration in Zendesk Support. Clients should cache this resource for the duration of their API usage and map the key for each Organization Field to the values returned under the organization_fields attribute on the Organization resource.
Read Tags
Lists the 500 most popular tags in the last 60 days, in decreasing popularity. You must enable the tagging of users and organizations in Zendesk Support for the API calls to work. Select Manage > Settings > Customers, and enable the option.
Read Groups
Get information about groups.
Read User Fields
Returns a list of custom User Fields in your account. Fields are returned in the order that you specify in your User Fields configuration in Zendesk Support. Clients should cache this resource for the duration of their API usage and map the key for each User Field to the values returned under the user_fields attribute on the User resource.
Read Current User Info
Get information for current profile based on credentials you have used.
Read Brands
Get information about brands.
Read Views
Get information about views.
Read Macros
Get information about macros.
Read Sessions
Get information about Sessions.
Read User Sessions
Get information about user sessions.
Parameter
Description
user_id
Read Requests
Returns a list of requests.
Parameter
Description
Sort By
Sort By field
Option
Value
updated_at
updated_at
created_at
created_at
Sort Order
Sort order
Option
Value
desc
desc
asc
asc
Status
Sort order
Option
Value
new
new
open
open
pending
pending
solved
solved
closed
closed
Read Requests Search
Returns a requests using search criteria.
Parameter
Description
Sort By
Sort By field
Option
Value
updated_at
updated_at
created_at
created_at
Sort Order
Sort order
Option
Value
desc
desc
asc
asc
Search Criteria
The search query based on this syntax https://support.zendesk.com/hc/en-us/articles/203663226
Option
Value
Example: Search by Ticket ID
112233
Example: Search by Ticket Status
status<solved
Example: Search by Some Text
SomeText
Example: Search By Status
SomeText
Example: Search by Type and Status
type:ticket status:open
Example: Search by Type and Name
type:user "Jane Doe"
Example: Search by Type and CreationDate
type:organization created< 2015-05-01
Example: Search organizations updated after some date
type:organization updated > 2015-05-01
Example: Search users updated after some date
type:user updated > 2015-05-01
Example: Search By Type and Tag
type:ticket tags:red tags:blue
Status
Sort order
Option
Value
new
new
open
open
pending
pending
solved
solved
closed
closed
organization_id
cc_id
Read Attachment
Read attachment information
Parameter
Description
Attachment ID
Delete Attachment
Delete attachment
Parameter
Description
Attachment ID
Upload Attachment (Single file)
Upload files to Zendesk which can be used as attachment later.
Parameter
Description
File Name
File name for display purpose
File Path (Local)
Token for exising Upload Session
Blank if creating a new upload
Delete Upload Session
Delete upload session and all its attachments.
Parameter
Description
Token for exising upload
Create Ticket (Single)
Creates one ticket at a time and wait until its created. Use BULK Table instead of this one to create multiple tickets.
Create Tickets (Bulk)
Create tickets in bulk (job is queued) and wait until done. This is faster than one request at a time
Delete Tickets (Bulk)
Delete multiple tickets in a single request. This is faster than row by row operation.
Parameter
Description
Ticket ID(S) - Use Comma for multiple (e.g. 111,222)
Update Tickets (Bulk)
Update tickets in bulk (job is queued) and wait until done. This is faster than one request at a time
Update Ticket (Single)
Update single ticket. Use bulk operation if you pfrefer to update multiple tickets. If you like to set additional_tags or remove_tags then use BULK Table (Tickets)
Parameter
Description
Ticket ID to Update
Delete Ticket
Delete ticket by id.
Parameter
Description
Ticket ID for Delete
Read Users (All)
Get a list of all users in your account
Parameter
Description
Role
Option
Value
agent
agent
admin
admin
end-user
end-user
permission_set
External ID for Ticket
Read Organizations (All)
Get a list of all organizations in your account
Generic Request
This is generic endpoint. Use this endpoint when some actions are not implemented by connector. Just enter partial URL (Required), Body, Method, Header etc. Most parameters are optional except URL.
Parameter
Description
Url
API URL goes here. You can enter full URL or Partial URL relative to Base URL. If it is full URL then domain name must be part of ServiceURL or part of TrustedDomains
Body
Request Body content goes here
IsMultiPart
Check this option if you want to upload file(s) (i.e. POST RAW file data) or send data using Multi-Part encoding method (i.e. Content-Type: multipart/form-data). Multi-Part request allows you to mix key/value and upload files in same request. On the other hand raw upload allows only single file upload (without any key/value)
==== Raw Upload (Content-Type: application/octet-stream) =====
To upload single file in raw mode check this option and specify full file path starting with @ sign in the Body (e.g. @c:\data\myfile.zip )
==== Form-Data / Multipart Upload (Content-Type: multipart/form-data) =====
To treat your Request data as multi part fields you must specify key/value pairs separated by new lines into RequestData field (i.e. Body). Each key value pair is entered on new-line and key/value are separated using equal sign (=). Preceding and trailing spaces are ignored also blank lines are ignored.
If field value has some any special character(s) then use escape sequence (e.g. For NewLine: \r\n, For Tab: \t, For at (@): \@). When value of any field starts with at sign (@) its automatically treated as File you want to upload. By default file content type is determined based on extension however you can supply content type manually for any field using this way [ YourFileFieldName.Content-Type=some-content-type ]. By default File Upload Field always includes Content-Type in the request (non file fields do not have content-type by default unless you supply manually). For some reason if you dont want to use Content-Type header in your request then supply blank Content-Type to exclude this header altogather [e.g. SomeFieldName.Content-Type= ]. In below example we have supplied Content-Type for file2 and SomeField1, all other fields are using default content-type.
See below Example of uploading multiple files along with additional fields.
file1=@c:\data\Myfile1.txt
file2=@c:\data\Myfile2.json
file2.Content-Type=application/json
SomeField1=aaaaaaa
SomeField1.Content-Type=text/plain
SomeField2=12345
SomeFieldWithNewLineAndTab=This is line1\r\nThis is line2\r\nThis is \ttab \ttab \ttab
SomeFieldStartingWithAtSign=\@MyTwitterHandle
Filter
Enter filter to extract array from response. Example: $.rows[*] --OR-- $.customers[*].orders[*]. Check your response document and find out hierarchy you like to extract
Headers
Headers for Request. To enter multiple headers use double pipe or new line after each {header-name}:{value} pair