Zendesk Connector
Documentation
Version: 9
Documentation

Zendesk Connector Examples


The ZappySys API Driver is a user-friendly interface designed to facilitate the seamless integration of various applications with the Zendesk API. With its intuitive design and robust functionality, the ZappySys API Driver simplifies the process of configuring specific API endpoints to efficiently read or write data from Zendesk.

On this page you will find some SQL examples which can be used for API ODBC Driver or Data Gateway API Connector.

Get all Tickets    [Read more...]

Read all tickets from Zendesk

SELECT * FROM Tickets

Get Ticket information by ID(s)    [Read more...]

Read multiple ticket information from Zendesk by ID(s)

SELECT * from get_tickets_by_ids
WITH(ticket_ids='104861,104860')

Get Single Ticket information by ID    [Read more...]

SELECT * from Tickets
WHERE ID=104861

Get all tickets (incremental) modified after ceratin date/time    [Read more...]

Read tickets modified after ceratin date/time. This is incremental data fetch. If you use this endpoint to read data and insert to destination like SSIS Upsert Destination (ZappySys Product) then make sure you do not select delete option in the target. Only choose Update + Insert for Incremental fetch.

SELECT * FROM get_tickets_incr
WITH(
	    start_time='2012-01-31T00:00:00' --modified after exact date / time (yyyy-MM-dd or yyyy-MM-ddTHH:mm:ss)
		
	  --start_time='yesterday' --modified after yesterday
	  --start_time='now-5h' --modified after current time minus 5 hours
	  --start_time='today-60s' --modified after today minus 60 seconds
	  --start_time='weekstart' --modified after weekstart
	  --start_time='monthstart-1d' --modified after month start minus 1 day
	  --start_time='yearstart-1d' --modified after year start minus 1 day
	  --start_time='yearstart+1d' --modified after year start plus 1 day
	  --start_time='yearend+1d' --modified after year end plus 1 day
)

Get all users (incremental) modified after ceratin date/time    [Read more...]

Read users modified after ceratin date/time. This is incremental data fetch. If you use this endpoint to read data and insert to destination like SSIS Upsert Destination (ZappySys Product) then make sure you do not select delete option in the target. Only choose Update + Insert for Incremental fetch.

SELECT * FROM get_users_incr
WITH(
	    start_time='2012-01-31T00:00:00' --modified after exact date / time (yyyy-MM-dd or yyyy-MM-ddTHH:mm:ss)
		
	  --start_time='yesterday' --modified after yesterday
	  --start_time='now-5h' --modified after current time minus 5 hours
	  --start_time='today-60s' --modified after today minus 60 seconds
	  --start_time='weekstart' --modified after weekstart
	  --start_time='monthstart-1d' --modified after month start minus 1 day
	  --start_time='yearstart-1d' --modified after year start minus 1 day
	  --start_time='yearstart+1d' --modified after year start plus 1 day
	  --start_time='yearend+1d' --modified after year end plus 1 day
)

Get all organizations (incremental) modified after ceratin date/time    [Read more...]

Read organizations modified after ceratin date/time. This is incremental data fetch. If you use this endpoint to read data and insert to destination like SSIS Upsert Destination (ZappySys Product) then make sure you do not select delete option in the target. Only choose Update + Insert for Incremental fetch.

SELECT * FROM get_organizations_incr
WITH(
	    start_time='2012-01-31T00:00:00' --modified after exact date / time (yyyy-MM-dd or yyyy-MM-ddTHH:mm:ss)
		
	  --start_time='yesterday' --modified after yesterday
	  --start_time='now-5h' --modified after current time minus 5 hours
	  --start_time='today-60s' --modified after today minus 60 seconds
	  --start_time='weekstart' --modified after weekstart
	  --start_time='monthstart-1d' --modified after month start minus 1 day
	  --start_time='yearstart-1d' --modified after year start minus 1 day
	  --start_time='yearstart+1d' --modified after year start plus 1 day
	  --start_time='yearend+1d' --modified after year end plus 1 day
)

Get all tickets for specific organization    [Read more...]

Read tickets for a specified organization_id (company).

SELECT * FROM get_tickets_by_org
WITH(
	  organization_id='12'
)

Get all tickets for a specific user who requested ticket(s)    [Read more...]

Read tickets for a specified user_id who is listed as requested by.

SELECT * FROM get_tickets_for_user_requested
WITH(
	  user_id='123'
)

Get all tickets for a specific user who is CCed on ticket(s)    [Read more...]

Read tickets for a specified user_id who is listed as CC.

SELECT * FROM get_tickets_for_user_cced
WITH(
	  user_id='123'
)

Get all tickets for a specific user who is assigned to ticket(s)    [Read more...]

Read tickets for a specified user_id who is assigned to ticket(s).

SELECT * FROM get_tickets_for_user_assigned
WITH(
	  user_id='123'
)

Get total tickets count    [Read more...]

SELECT * FROM get_tickets_count

Get total tickets count for a specific organization    [Read more...]

SELECT * FROM get_tickets_count_org
WITH(
	  organization_id='123'
)

Get all attachment urls for a specific ticket    [Read more...]

SELECT * FROM get_ticket_attachments
WITH(
	  ticket_id='104351'
)

Get User(s)    [Read more...]

SELECT * FROM Users --Where Id=1234

Get multiple users by ID(s)    [Read more...]

Read multiple user information from Zendesk by ID(s)

SELECT * from get_users_by_ids
WITH(user_ids='1111,2222,3333')

Get Organization(s)    [Read more...]

SELECT * FROM Organizations --Where Id=1234

Get multiple organizations by ID(s)    [Read more...]

Read multiple organization information from Zendesk by ID(s)

SELECT * from get_organizations_by_ids
WITH(organization_ids='1111,2222,3333')

Create a new ticket    [Read more...]

Use Tickets_Bulk instead of Tickets table if you like to multiple tickets at once. Tickets_Bulk table supports BULK operation (using SOURCE clause).

INSERT INTO Tickets(
	subject
	,status
	,assignee_id
	,comment_body_html --(for html body)
	--,comment_body (for plain text)
	,comment_public
	,tags
	,custom_fields)
VALUES(
  'Test Ticket Subject - From email'
, 'new' --new, solved, closed
, 18590685428 --assign to agent id
, 'This is <b>html body</b>' --markup also supported
, 1 --1=public, 0=private 
, '["tag1","tag2"]' 
  --below json can be obtained using select custom_fields from tickets where id=1234
, '[
  {
    "id": 56608448,
    "value": "1122"
  },
  {
    "id": 57385967,
    "value": "ORD-12345"
  }
]'
)

Create a new ticket (behalf of user)    [Read more...]

This example creates ticket behalf of user (i.e. requester_email and requester_name) and if user is missing then creates a new user for supplied username and email. Use Tickets_Bulk instead of Tickets table if you like to multiple tickets at once. Tickets_Bulk table supports BULK operation (using SOURCE clause).

INSERT INTO Tickets(
	subject
	,status
	,requester_email
	,requester_name
	,assignee_id 
	--,group_id --or assign to group
	,comment_body_html --(for html body)
	--,comment_body (for plain text)
	,comment_public
	,tags
	,custom_fields)
VALUES(
  'Test Ticket Subject - From email'
, 'new' --new, solved, closed
, 'fromsomeuser@abc.com' --from email
, 'Bob Smith' --submitter name needed if its new user
, 18590685428 --assign to agent id
--,123435454 --or use group id if not assignee 
, 'This is <b>html body</b>' --markup also supported
--, 'This is plain text'
, 1 --1=public, 0=private 
, '["tag1","tag2"]' 
  --below json can be obtained using select custom_fields from tickets where id=1234
, '[
  {
    "id": 56608448,
    "value": "1122"
  },
  {
    "id": 57385967,
    "value": "ORD-12345"
  }
]'
)

BULK Create tickets (BULK read / write from external source)    [Read more...]

This examples shows how to use SOURCE clause to read data from MS SQL Server (or other external system) and send data to Zendesk using Bulk API

INSERT INTO Tickets_BULK 
SOURCE(
  'MSSQL' --ODBC or OLEDB
  ,'Data Source=localhost;Initial Catalog=Test;Integrated Security=true'
  ,'select ''Test Subject#1'' as subject,''new'' as status,''this is description#1'' as comment_body from Projects'
)

Delete a ticket by Id    [Read more...]

DELETE FROM Tickets WHERE Id=111

Delete multiple by tickets by Id list - BULK (comma seperated - max 100 ids)    [Read more...]

DELETE FROM Tickets_Bulk WHERE [$$ticket_ids]='111,222,333'

Update ticket by Id    [Read more...]

Update Tickets 
SET subject='Test ticket subject'
  , tags='["tag1","tag2"]' 
  --, additional_tags ='["tag1","tag2"]' --tags you like to remove
  --, remove tags='["tag1","tag2"]'
  , status='pending' --new, solved, closed
  --below json can be obtained using select custom_fields from tickets where id=1234
  , custom_fields='[
  {
    "id": 10000,
    "value": "some value for prop1"
  },
  {
    "id": 10001,
    "value": "some value for prop2"
  }
]'
Where Id = 1234

Update exising ticket with private comment    [Read more...]

Update Tickets 
SET comment_body='Closing this ticket'
  , comment_public = 0 --or 1
  , status='solved' --pending, new, closed
  --, comment_body_html='Closing <b>this</b> ticket'
  --, comment_author_id=123545   
Where Id = 1234

Update exising ticket with HTML body    [Read more...]

Update Tickets 
SET comment_body_html='Closing <b>this</b> ticket'
  , status='solved' --pending, new, closed
  --, comment_author_id=123545   
  --, comment_public = 0 --or 1  
Where Id = 1234

Update ticket with Add or remove tags    [Read more...]

Update ticket with Add new tags or remove tags. Adding / removing tags available via special field names only in BULK mode so you must use Tickets_BULK table.

Update Tickets_Bulk 
SET subject='New subject'
  , additional_tags ='["new-tag1","new-tag2"]' --//add some tags
  --, remove_tags='["old-tag1","old-tag2"]' --//removes some tags
  --, tags='["tag1","tag2"]' --//overwrite all tags
  , status='pending' --new, solved, closed
Where Id = 1234

Update multiple tickets - (BULK read / write from external source)    [Read more...]

This examples shows how to perform bulk update using SOURCE clause. It reads data from external system (in this example MS SQL Server) and sends data to Zendesk using Bulk API

UPDATE Tickets_BULK 
SOURCE(
  'MSSQL' --ODBC or OLEDB
  ,'Data Source=localhost;Initial Catalog=Test;Integrated Security=true'
  ,'select 104897 as Id, ''Test Subject#1-updated-bulk-demo'' as subject,''new'' as status
    UNION 
    select 104898 as Id, ''Test Subject#2-updated-bulk-demo'' as subject,''new'' as status'
)

Delete multiple tickets - (BULK read / write from external source)    [Read more...]

This examples shows how to perform bulk delete using SOURCE clause. It reads data from external system (in this example MS SQL Server) and sends data to Zendesk using Bulk API

DELETE FROM Tickets_BULK 
SOURCE(
  'MSSQL' --ODBC or OLEDB
  ,'Data Source=localhost;Initial Catalog=Test;Integrated Security=true'
  ,'select 104897 as Id 
    UNION 
    select 104898 as Id'
)

Create a new ticket using Raw JSON Body approach    [Read more...]

INSERT INTO Tickets(_rawdoc_) 
VALUES(
  '{
      "subject": "Test ticket #1",    
      "comment": {
        "body": "Test ticket #1"
      },
      "priority": "urgent"
    }'
)

Update an existing ticket using Raw JSON Body approach    [Read more...]

UPDATE Tickets
SET _rawdoc_ =
  '{
      "subject": "Test ticket #1",    
      "comment": {
        "body": "Test ticket #1"
      },
      "priority": "urgent"
    }'
WHERE Id=1234

Create multiple ticket(s) using a RAW JSON body (single or multiple)    [Read more...]

INSERT INTO Tickets_Bulk(_rawdoc_) 
VALUES(
  '[
    {
      "subject": "Test ticket #1",    
      "comment": {
        "body": "Test ticket #1"
      },
      "priority": "urgent"
    },
    {
      "subject": "Test ticket #2",    
      "comment": {
        "body": "This is a comment for #2"
      },
      "priority": "normal"
    }
  ]'
)

Create User    [Read more...]

Create a new user for specified email id and other information. If user with same email exists then call fails.

INSERT INTO Users
(
 name
,email
,organization_id
,phone
,default_group_id
,locale
,moderator
,skip_verify_email
,only_private_comments
,signature
,tags
,time_zone
,role
,external_id
,alias
,details
,notes
,remote_photo_url
,user_fields
)
VALUES(
   'Bob Walton'
  ,'bob@abc.com'
  ,5397098432795
  ,'111-222-3333'
  ,114094762733
  ,'en-US'
  ,'false'
  ,'true' --true=do not send verify account email
  ,1 --user can put only private comments
  ,'Best regards, Support Team' --Only agents and admins can have signatures
  ,'["paid","trial","solved"]' 
  ,'America/New_York'
  ,'end-user' --agent or admin 
  ,'zcrm_1558554000052161270'
  ,'some alias'
  ,'some details'
  ,'some notes'
  ,'https://zappysys.com/wp-content/uploads/2021/10/Slider-API-Hub-1.png' --this does not work in INSERT (works only in UPDATE/UPSERT for now)
  ,'{"birthdate": "1981-01-23", "gender": "M"}'
)

Update User    [Read more...]

UPDATE Users
SET name='Sam Walton'
  ,email='sam@abc.com'
  ,organization_id=5397098432795
  ,phone='111-222-3333'
  ,default_group_id=114094762733
  ,locale='en-US'
  ,skip_verify_email='true' --do not send verify account email
  ,moderator='false'
  ,only_private_comments=1 --user can put only private comments
  ,signature='Best regards, Support Team' --Only agents and admins can have signatures
  ,tags='["paid","trial","solved"]' 
  ,time_zone='America/New_York'
  ,role='end-user'
  ,external_id='zcrm_1558554000052161269'
  ,alias='some alias'
  ,details='some details'
  ,notes='some notes'
  ,remote_photo_url='https://zappysys.com/wp-content/uploads/2021/10/Slider-API-Hub-1.png'
  ,user_fields='{"birthdate": "1981-01-23", "gender": "M"}'
Where id=21811221397915

Upsert User (Create or Update)    [Read more...]

Creates a user if the user does not already exist, or updates an existing user identified by e-mail address or external ID.

INSERT INTO Users
(
 name
,email
,organization_id
,phone
,default_group_id
,locale
,moderator
,skip_verify_email
,only_private_comments
,signature
,tags
,time_zone
,role
,external_id
,alias
,details
,notes
,remote_photo_url
,user_fields
)
VALUES(
   'Bob Walton'
  ,'bob@abc.com'
  ,5397098432795
  ,'111-222-3333'
  ,114094762733
  ,'en-US'
  ,'false'
  ,'true' --true=do not send verify account email
  ,1 --user can put only private comments
  ,'Best regards, Support Team' --Only agents and admins can have signatures
  ,'["paid","trial","solved"]' 
  ,'America/New_York'
  ,'end-user' --agent or admin 
  ,'zcrm_1558554000052161270'
  ,'some alias'
  ,'some details'
  ,'some notes'
  ,'https://zappysys.com/wp-content/uploads/2021/10/Slider-API-Hub-1.png' --this does not work in INSERT (works only in UPDATE/UPSERT for now)
  ,'{"birthdate": "1981-01-23", "gender": "M"}'
)

Delete User    [Read more...]

DELETE FROM Users Where id=21855694556443 --it doesnt delete user from system but only changes active flag

Search for user with email id    [Read more...]

SELECT *
FROM get_search
WITH(
	  query='type:user email:bob@abc.com'
)

Create Organization    [Read more...]

Create a new organization for specified email id and other information. If organization with same email exists then call fails.

INSERT INTO Organizations
(
	 name
	,external_id
	,group_id 
	,tags
	,details
	,notes
	,organization_fields
	,domain_names
	,shared_tickets
	,shared_comments
)
VALUES(
	'Abc Inc'
	,'zcrm_1558554000052161270'  --external_id
	,114094762733  
	,'["paid","trial","solved"]' 
	,'some details'
	,'some notes'
	,'{"startdate": "1981-01-23", "revenue": 12000000.50, "somenumber": 1235678}'
	,'["aaa.com", "bbb.com"]'
	,'false'
	,'false'
)

Update Organization    [Read more...]

UPDATE Organizations
SET  name='Abc Inc'
	,external_id='zcrm_1558554000052161270'
	,group_id=114094762733 
	,tags='["paid","trial","solved"]'
	,details='some details'
	,notes='some notes'
	,organization_fields='{"startdate": "1981-01-23", "revenue": 12000000.50, "somenumber": 1235678}'
	,domain_names='["aaa.com", "bbb.com"]'
	,shared_tickets='false'
	,shared_comments='false'
Where id=21863188631451

Upsert Organization (Create or Update)    [Read more...]

Creates an organization if the organization does not already exist, or updates an existing organization identified by e-mail address or external ID.

UPSERT INTO Organizations
(
	 name
	--id or external_id can be supplied for UPSERT
	,id 
	--or--
	,external_id
	 
	,group_id 
	,tags
	,details
	,notes
	,organization_fields
	,domain_names
	,shared_tickets
	,shared_comments
)
VALUES(
	'Abc Inc'
	,1234567 --id
	--or--
	,'zcrm_1558554000052161270'  --external_id
	
	,114094762733  
	,'["paid","trial","solved"]' 
	,'some details'
	,'some notes'
	,'{"startdate": "1981-01-23", "revenue": 12000000.50, "somenumber": 1235678}'
	,'["aaa.com", "bbb.com"]'
	,'false'
	,'false'
)

Delete Organization    [Read more...]

DELETE FROM Organizations Where id=21855694556443

Search records using query expression (tickets, organization, users)    [Read more...]

SELECT *
FROM get_search --limited to 1000 rows max
--OR
--FROM get_search_export --returns more than 1000 rows but no sorting or extra column allowed
WITH(
       filtertype='', --can be ticket, organization, user, group. If you set here then no need to put in query (e.g. query='type:ticket ...'). This option is ignored for get_search_Export.
	  ,sort_by='updated_at' --created_at, status, priority, ticket_type. This option is ignored for get_search_Export.
	  ,sort_order='asc'  --desc (not valid for get_search_export). This option is ignored for get_search_Export.

    --read this for more information 
	--https://support.zendesk.com/hc/en-us/articles/4408883318554-Searching-users-groups-and-organizations
	--https://support.zendesk.com/hc/en-us/articles/4408886879258-Zendesk-Support-search-reference#topic_crj_yev_uc
	--https://support.zendesk.com/hc/en-us/articles/4408882086298-Searching-tickets
	
      ,query='type:ticket subject:"Upsert Destination"'   --search tickets where subject contains phrase "Upsert Destination" (special characters like comma / dash etc ignored in match)
	--,query='type:ticket 519872'   --search ticket with id 519872
	--,query='type:ticket tags:solved,odbc_powerpack updated>1months' --search tickets where two tags set solved,odbc_powerpack and updated in last one month
	--,query='type:ticket -tags:odbc_powerpack updated>1months' --search tickets where where tags not like odbc_powerpack and updated in last one month
	--,query='type:ticket status<solved created>1months' --search tickets with status not solved and created in last one month
	--,query='type:ticket created:2014-08-01' --search tickets created on 2014-08-01 (UTC)
	--,query='type:ticket created>2014-08-01T10:30:00Z created<2014-08-01T12:00:00Z' --search tickets created between two datetime (UTC time)
	--,query='type:ticket requester:amy@mondocam.com' --search tickets where requester is amy@mondocam.com
	--,query='type:ticket description:defective' --search tickets where decription contains word "defective"
	--,query='type:ticket description:"product is defective"' --search tickets where decription contains phrase  "product is defective"
	--,query='type:ticket priority>low' --search tickets where priority greater than low (e.g. medium or high)"
	
	--,query='ZappySys' --phrase match (no type): anywhere in ticket / organization / user contains ZappySys word - If filtertype parameter supplied then only those type included
	--,query='ZappySys*' --phrase match (no type): wildcard usage
	--,query='type:user "ZappySys"' --search users with term "ZappySys" anywhere in text properties
    --,query='type:user email:"@zappysys"' --search users with term "@ZappySys.com" in email field
	--,query='type:user name:"zappysys"' --search users with term "ZappySys" in name field
	--,query='type:user details:"zappysys"' --search users with term "ZappySys" in details field
    --,query='type:organization "ZappySys LLC"' --phrase match: organization name contains ZappySys LLC
)

Bulk Import Mode for Users or Organizations    [Read more...]

This example shows how to upsert in bulk mode from external data and import into Zendesk. We used Microsoft SQL Server as source system in below example with static value query (just one row) but it can be any number of rows.

UPSERT INTO Organizations
SOURCE('MSSQL' --ODBC
, 'Data Source=localhost;Initial Catalog=test;Integrated Security=true'

--For bulk input, map columns in External Query (Must use alias column name to match INSERT command Input Column names - see help file)
--If parameter value not same for all input rows then you can prefix some column with $$ to map as parameter (i.e. $$MyParam1)
--'ODBC', 'Driver={ZappySys CSV Driver};DataPath=C:\AccountsToInsert.csv'
--'ODBC', 'DSN=MyDSN'
--'OLEDB', 'Provider=SQLNCLI11;Server=localhost,1433;Database=tempdb;Trusted_Connection=yes;'

, 'select
      21863188631451 as id
    , ''Abc Inc'' as name
	,''zcrm_1558554000052161270'' as external_id
	,114094762733  as group_id
	,''["paid","trial","solved"]'' as tags
	,''some details'' as details
	,''some notes'' as notes
	,''{"startdate": "1981-01-23", "revenue": 12000000.50, "somenumber": 1235678}'' as organization_fields
	,''["aaa.com", "bbb.com"]'' domain_names
	,''false'' as shared_tickets
	,''false'' as shared_comments
')

Getting Started with Examples

ZappySys API Driver is a powerful software solution designed to facilitate the extraction and integration of data from a wide range of sources through APIs. Its intuitive design and extensive feature set make it an essential asset for any organization dealing with complex data integration tasks.

To get started with examples using ZappySys API Driver, please click on the following applications:

SQL Server Connect Zendesk in SQL Server
Power BI Connect Zendesk in Power BI
SSRS Connect Zendesk in SSRS
Informatica Connect Zendesk in Informatica
MS Access Connect Zendesk in MS Access
MS Excel Connect Zendesk in MS Excel
SSAS Connect Zendesk in SSAS
C# Connect Zendesk in C#
Python Connect Zendesk in Python
JAVA Connect Zendesk in JAVA
Tableau Connect Zendesk in Tableau
SAP Crystal Reports Connect Zendesk in SAP Crystal Reports
Azure Data Factory (Pipeline) Connect Zendesk in Azure Data Factory (Pipeline)
Talend Studio Connect Zendesk in Talend Studio
UiPath Connect Zendesk in UiPath
PowerShell Connect Zendesk in PowerShell
ODBC Connect Zendesk in ODBC

Key features of the ZappySys API Driver include:

The API ODBC driver facilitates the reading and writing of data from numerous popular online services (refer to the complete list here) using familiar SQL language without learning complexity of REST API calls. The driver allows querying nested structure and output as a flat table. You can also create your own ODBC / Data Gateway API connector file and use it with this driver.

  1. Intuitive Configuration: The interface is designed to be user-friendly, enabling users to easily set up the specific API endpoints within Zendesk without requiring extensive technical expertise or programming knowledge.

  2. Customizable Endpoint Setup: Users can conveniently configure the API endpoint settings, including the HTTP request method, endpoint URL, and any necessary parameters, to precisely target the desired data within Zendesk.

  3. Data Manipulation Capabilities: The ZappySys API Driver allows for seamless data retrieval and writing, enabling users to fetch data from Zendesk and perform various data manipulation operations as needed, all through an intuitive and straightforward interface.

  4. Secure Authentication Integration: The driver provides secure authentication integration, allowing users to securely connect to the Zendesk API by inputting the necessary authentication credentials, such as API tokens or other authentication keys.

  5. Error Handling Support: The interface is equipped with comprehensive error handling support, ensuring that any errors or exceptions encountered during the data retrieval or writing process are efficiently managed and appropriately communicated to users for prompt resolution.

  6. Data Visualization and Reporting: The ZappySys API Driver facilitates the seamless processing and presentation of the retrieved data from Zendesk, enabling users to generate comprehensive reports and visualizations for further analysis and decision-making purposes.

Overall, the ZappySys API Driver serves as a powerful tool for streamlining the integration of applications with Zendesk, providing users with a convenient and efficient way to access and manage data, all through a user-friendly and intuitive interface.