Programmers reference for Zendesk Reader
In TQL, specify the reader by its fully qualified name. To use this reader, set Global.ZendeskReader when creating a source, then configure its properties as needed.
Zendesk Reader properties
Property | Type | Default value | Notes |
|---|---|---|---|
Access token | Password | Provide an externally generated OAuth token. Only used when the Auth Flow property toggle is on. | |
Auth Flow | Toggle | enabled | When the toggle is on, authentication uses an access token. |
Connection profile name | Dropdown | When | |
Connection retries | Text Box | 3 | Specifies the maximum number of connection attempts. |
Connection timeout | Text Box | 30s | Specifies a socket connection timeout in seconds. Cannot exceed 300 seconds. |
Connection URL | Text Box | URL of the Zendesk endpoint. | |
Excluded objects | Text Box | A list of objects excluded from read operations. Typically used to create a list of exceptions when the Objects property includes wildcards. Must be entirely in lowercase. | |
Fetch size | Integer | 100 | The size of each batch to fetch. Maximum is 100. Applies to reads that use the standard Zendesk API, such as Initial load. For reads that use the Zendesk incremental export API, see Fetch size for incremental. |
Fetch size for incremental | Integer | 100 | The number of tickets to fetch in each poll when the reader uses the Zendesk incremental export API in Incremental load or Automated mode. Each poll reads the tickets in the batch and their ticket comments, then sends the events downstream. A lower value makes events visible downstream sooner because each batch completes faster. A higher value reduces the number of API calls but delays the first events of each poll until the entire batch has been read. |
Include archived tickets | Toggle | disabled | When enabled, Initial load reads the Zendesk automatically archives tickets 120 days after they are closed, and the standard API does not return archived tickets. Enable this property when the target must contain the complete ticket history. Applies only to the |
MaxConnections | Text Box | 40 | Maximum number of connections for the HTTP client pool. |
Migrate schema | Toggle | disabled | When enabled, propagates object schema from the source to the target. |
Mode | Dropdown
| Initial load | Controls the basic behavior of the adapter. Use For the |
Objects | Text Box | A semicolon-delimited ( Values must be entirely in lowercase. Supports the Do not modify this property when recovery is enabled for the application. | |
Polling interval | Text Box | 120s | Specify an integer followed by a unit: days ( |
Start Timestamp | Text Box | Specifies a time from which the adapter begins sync operations. Timestamps use UTC in the ISO 8601 format, for example | |
Thread pool count | Integer | 0 | Specifies the number of execution threads to use. Best performance typically uses one thread per object being synced. Ensure the connection pool size is greater than or equal to the number of execution threads to avoid halts during large ingestions. The |
Use connection profile | Toggle | false | When enabled, uses a saved connection profile rather than individual properties. |
Username | Text Box | The email ID of a Zendesk user account. |
Zendesk Reader supported objects
Zendesk Reader supports the following objects. Custom objects are not supported.
Dependency note: some secondary objects depend on related primary objects. For example, comments- or metrics-oriented objects may require that the corresponding primary ticket or user objects are also selected. If a secondary object is selected without its primary, reads may return empty results.
Object name | Supported modes | Checkpoint field | Supported operations | Scope | Notes |
|---|---|---|---|---|---|
| Initial Load | updated_at | Insert | read | |
| Initial Load | updated_at | Insert | read | |
| Initial Load | created_at | Insert | read | |
| Initial Load | None | Insert | read | |
| Initial Load | created_at | Insert | read | |
| Initial Load | updated_at | Insert | read | |
| Initial Load | updated_at | Insert | read | |
| Initial Load | updated_at | Insert | read | |
| deleted_at | read | |||
| Initial Load | updated_at | Insert | read | |
| Initial Load | updated_at | Insert | read | |
| Initial Load | updated_at | Insert / Update | read | |
| Initial Load | updated_at | Insert | read | |
| Initial Load | updated_at | Insert | read | |
| Initial Load | updated_at | Insert | read | |
| Initial Load | updated_at | Insert | read | |
| Initial Load | updated_at | Insert | read | |
| Initial Load | created_at | Insert | read | |
| All | updated_at | Insert / Update | read | |
| Initial Load | updated_at | Insert | read | |
| Initial Load | updated_at | Insert | read | |
| Initial Load | updated_at | Insert | read | |
| Initial Load | updated_at | Insert | read | |
| Initial Load | updated_at | Insert | read | |
| Initial Load | updated_at | Insert | read | Reading these objects requires you to change some Zendesk settings. See Zendesk help > Support > Using Support ticketing system > Measuring success > Working with satisfaction reasons. |
| Initial Load | None | Insert | read | |
| Initial Load | read | |||
| Initial Load | updated_at | Insert | read | |
| Initial Load | updated_at | Insert | read | |
| Initial Load | None | Insert | read | |
| Initial Load | None | Insert | read | |
| Initial Load | created_at | Insert | read | |
| Initial Load | created_at | Insert | read | |
| Initial Load | created_at | Insert | read | |
| All | updated_at | Insert / Update | read | Requires the |
| Incremental | time | Insert | read | |
| Initial Load | updated_at | Insert | read | |
| Initial Load | updated_at | Insert | read | |
| Incremental | time | Insert | read | |
| Initial Load | updated_at | Insert | read | |
| All | updated_at | Insert / Update | read | By default, Initial load returns only active tickets. Enable Include archived tickets to also return archived tickets. See API usage by mode for tickets and ticket comments. |
| Initial Load | updated_at | Insert | read | |
| Initial Load | updated_at | Insert | read | |
| All | updated_at | Insert / Update | read | |
| Initial Load | None | Insert | read |
API usage by mode for tickets and ticket comments
Zendesk Reader uses different Zendesk APIs to read the tickets and ticket_comments objects depending on the selected mode, and in Automated mode it switches APIs when the initial load completes. The API in use determines which tickets are returned, how comments are captured, and where duplicate events can occur, so use the following table to choose the mode and properties that match the data you need at the target.
Mode | tickets | ticket_comments |
|---|---|---|
Initial load | Reads a full snapshot of active tickets from the standard tickets API, paging with a cursor until every ticket has been read. When Include archived tickets is enabled, reads from the Zendesk incremental export API instead, which returns all tickets in the instance, including archived tickets. | For each ticket read, calls the per-ticket comments API to retrieve every comment on that ticket. Comments are read for the same set of tickets that the tickets read returns, so enabling Include archived tickets also retrieves the comments of archived tickets. |
Incremental load | Reads from the Zendesk incremental export API starting at Start Timestamp. Returns only tickets that changed since that point, as full ticket records. Each poll reads up to Fetch size for incremental tickets. | Reads from the Zendesk ticket events incremental export starting at Start Timestamp. Only new comments and comment redactions are extracted from the ticket event stream. Existing comments on a ticket are not re-read when the ticket changes. |
Automated | Performs the initial load using the standard tickets API (or the incremental export API when Include archived tickets is enabled), then switches to the Zendesk incremental export API to read changed tickets continuously. | Performs the initial load using the per-ticket comments API, then switches to the Zendesk ticket events incremental export to read new comments and redactions continuously. |
Because Automated mode uses different APIs before and after the switch, tickets and comments that change while the initial load is running can be read twice: once by the initial load and again from the incremental export after the switch. Configure the target to tolerate these duplicates by using merge semantics or by configuring Striim to ignore RECORD_ALREADY_EXISTS errors. See Duplicate events in incremental ticket-event exports.
In Incremental load and Automated mode, a redacted comment is delivered as an update operation. When the target is configured for append mode, the original comment and the redaction are written as separate rows, so the number of comment rows at the target can exceed the comment count reported by Zendesk. Use merge mode at the target to keep a single row per comment.
Datatype support
Striim type | Example Zendesk data | Notes |
|---|---|---|
String | Names, emails, IDs represented as strings, JSON text | Default mapping for textual fields and JSON blobs not expanded into columns. |
Long | Integer identifiers, counters | Whole-number fields. |
Double | Durations, numeric metrics | Floating-point fields. |
boolean | Flags such as | True/false fields. |
String |
| Zendesk Reader emits timestamp values as ISO 8601 UTC strings, not as |
java.lang.Object | Nested structures, arrays | Used when a field is heterogeneous or complex; may be serialized as JSON. |
Duplicate events in incremental ticket-event exports
ZendeskReader uses Zendesk's time-based ticket_events incremental export endpoint for Incremental Load and Automated Load. Because Zendesk uses the previous page's end_time as the start_time for the next page or poll, events at that boundary can be returned more than once. This behavior prevents events with the same timestamp from being skipped.
Configure the downstream target to handle duplicate records by using merge semantics or by configuring Striim to handle RECORD_ALREADY_EXISTS errors. For Zendesk ticket events, use id and created_at to identify duplicates.
For more information, see Zendesk's Incremental Exports API documentation.