0
# Data Streams
1
2
Available data streams for extracting different types of Zendesk Chat data with their synchronization modes and API endpoints.
3
4
## Capabilities
5
6
### Stream Discovery
7
8
Stream metadata is available through the Airbyte discover command which returns a catalog of available streams.
9
10
```bash { .api }
11
# Discover all streams and their schemas
12
docker run -v $(pwd):/config airbyte/source-zendesk-chat:1.2.16 discover \
13
--config /config/config.json
14
15
# The discover command outputs an AirbyteCatalog with stream metadata:
16
# - Stream names and namespaces
17
# - JSON schemas for each stream
18
# - Supported sync modes (full_refresh, incremental)
19
# - Primary keys and cursor fields for incremental streams
20
```
21
22
### Full Refresh Streams
23
24
Streams that extract complete datasets on each synchronization run, as defined in the manifest.
25
26
```yaml { .api }
27
# Full refresh only streams (from manifest.yaml)
28
accounts:
29
endpoint: "account"
30
http_method: "GET"
31
primary_key: ["account_key"]
32
sync_modes: ["full_refresh"]
33
description: "Account information and settings"
34
35
departments:
36
endpoint: "departments"
37
http_method: "GET"
38
primary_key: ["id"]
39
sync_modes: ["full_refresh"]
40
description: "Chat departments configuration"
41
42
goals:
43
endpoint: "goals"
44
http_method: "GET"
45
primary_key: ["id"]
46
sync_modes: ["full_refresh"]
47
description: "Chat goals and targets configuration"
48
49
roles:
50
endpoint: "roles"
51
http_method: "GET"
52
primary_key: ["id"]
53
sync_modes: ["full_refresh"]
54
description: "User roles and permissions"
55
56
routing_settings:
57
endpoint: "routing_settings/account"
58
http_method: "GET"
59
sync_modes: ["full_refresh"]
60
description: "Chat routing configuration settings"
61
62
shortcuts:
63
endpoint: "shortcuts"
64
http_method: "GET"
65
primary_key: ["id"]
66
sync_modes: ["full_refresh"]
67
description: "Predefined chat shortcuts and responses"
68
69
skills:
70
endpoint: "skills"
71
http_method: "GET"
72
primary_key: ["id"]
73
sync_modes: ["full_refresh"]
74
description: "Agent skills configuration"
75
76
triggers:
77
endpoint: "triggers"
78
http_method: "GET"
79
primary_key: ["id"]
80
sync_modes: ["full_refresh"]
81
description: "Automated chat triggers and rules"
82
```
83
84
### Incremental Streams
85
86
Streams that support incremental synchronization using cursor fields for efficient data updates.
87
88
```yaml { .api }
89
# Incremental streams (from manifest.yaml)
90
agents:
91
endpoint: "agents"
92
http_method: "GET"
93
primary_key: ["id"]
94
sync_modes: ["full_refresh", "incremental"]
95
cursor_field: "id"
96
pagination: "cursor_based"
97
description: "List of chat agents with incremental sync support"
98
99
agent_timeline:
100
endpoint: "incremental/agent_timeline"
101
http_method: "GET"
102
primary_key: ["id"]
103
sync_modes: ["full_refresh", "incremental"]
104
cursor_field: "start_time"
105
description: "Timeline events for agents with time-based incremental sync"
106
107
bans:
108
endpoint: "bans"
109
http_method: "GET"
110
primary_key: ["id"]
111
sync_modes: ["full_refresh", "incremental"]
112
cursor_field: "id"
113
custom_extractor: "ZendeskChatBansRecordExtractor"
114
description: "Banned visitors and IP addresses with custom record extraction"
115
116
chats:
117
endpoint: "incremental/chats"
118
http_method: "GET"
119
primary_key: ["id"]
120
sync_modes: ["full_refresh", "incremental"]
121
cursor_field: "update_timestamp"
122
description: "Chat conversations and message data"
123
```
124
125
### Stream Synchronization
126
127
Execute stream synchronization using the Airbyte read command with catalog configuration.
128
129
```bash { .api }
130
# Synchronize specific streams by configuring catalog.json
131
# Create configured catalog with selected streams and sync modes
132
cat > catalog.json << EOF
133
{
134
"streams": [
135
{
136
"stream": {
137
"name": "agents",
138
"json_schema": {...},
139
"supported_sync_modes": ["full_refresh", "incremental"]
140
},
141
"sync_mode": "incremental",
142
"cursor_field": ["id"],
143
"destination_sync_mode": "append"
144
}
145
]
146
}
147
EOF
148
149
# Run sync with configured catalog
150
docker run -v $(pwd):/config airbyte/source-zendesk-chat:1.2.16 read \
151
--config /config/config.json \
152
--catalog /config/catalog.json \
153
--state /config/state.json
154
```
155
156
### Pagination Configuration
157
158
Pagination is configured in the manifest and handled automatically by the connector.
159
160
```yaml { .api }
161
# Pagination configuration examples from manifest
162
cursor_pagination:
163
type: "CursorPagination"
164
cursor_value: "{{ last_record['id'] + 1 }}"
165
page_size: 100
166
stop_condition: "{{ not last_record }}"
167
page_token_option:
168
type: "RequestOption"
169
inject_into: "request_parameter"
170
field_name: "since_id"
171
172
datetime_pagination:
173
type: "CursorPagination"
174
cursor_value: "{{ response.get('end_time', {}) }}"
175
page_size: 1000
176
stop_condition: "{{ last_page_size < 1_000 }}"
177
```
178
179
### Usage Examples
180
181
```bash
182
# Discover streams to see available sync modes
183
docker run -v $(pwd):/config airbyte/source-zendesk-chat:1.2.16 discover \
184
--config /config/config.json
185
186
# Full refresh sync of departments stream
187
echo '{
188
"streams": [{
189
"stream": {"name": "departments", "json_schema": {}, "supported_sync_modes": ["full_refresh"]},
190
"sync_mode": "full_refresh",
191
"destination_sync_mode": "overwrite"
192
}]
193
}' > catalog.json
194
195
docker run -v $(pwd):/config airbyte/source-zendesk-chat:1.2.16 read \
196
--config /config/config.json \
197
--catalog /config/catalog.json
198
199
# Incremental sync of agents stream
200
echo '{
201
"streams": [{
202
"stream": {"name": "agents", "json_schema": {}, "supported_sync_modes": ["full_refresh", "incremental"]},
203
"sync_mode": "incremental",
204
"cursor_field": ["id"],
205
"destination_sync_mode": "append"
206
}]
207
}' > catalog.json
208
209
docker run -v $(pwd):/config airbyte/source-zendesk-chat:1.2.16 read \
210
--config /config/config.json \
211
--catalog /config/catalog.json
212
```
213
214
## Types
215
216
```json { .api }
217
{
218
"AirbyteStream": {
219
"type": "object",
220
"properties": {
221
"name": {"type": "string"},
222
"json_schema": {"type": "object"},
223
"supported_sync_modes": {
224
"type": "array",
225
"items": {"enum": ["full_refresh", "incremental"]}
226
},
227
"source_defined_cursor": {"type": "boolean"},
228
"default_cursor_field": {"type": "array", "items": {"type": "string"}},
229
"source_defined_primary_key": {"type": "array"}
230
}
231
},
232
"ConfiguredAirbyteStream": {
233
"type": "object",
234
"properties": {
235
"stream": {"$ref": "#/AirbyteStream"},
236
"sync_mode": {"enum": ["full_refresh", "incremental"]},
237
"cursor_field": {"type": "array", "items": {"type": "string"}},
238
"destination_sync_mode": {"enum": ["overwrite", "append", "append_dedup"]}
239
}
240
},
241
"SyncMode": {"enum": ["full_refresh", "incremental"]},
242
"DestinationSyncMode": {"enum": ["overwrite", "append", "append_dedup"]},
243
"AirbyteRecord": {
244
"type": "object",
245
"properties": {
246
"stream": {"type": "string"},
247
"data": {"type": "object"},
248
"emitted_at": {"type": "integer"}
249
}
250
}
251
}
252
```