@rawdash/connector-zendesk 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +145 -0
- package/dist/index.d.ts +609 -0
- package/dist/index.js +696 -0
- package/dist/index.js.map +1 -0
- package/package.json +43 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,609 @@
|
|
|
1
|
+
import { BaseConnector, ConnectorContext, SyncOptions, StorageHandle, SyncResult, ConnectorDoc } from '@rawdash/core';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
|
|
4
|
+
declare const configFields: z.ZodObject<{
|
|
5
|
+
subdomain: z.ZodString;
|
|
6
|
+
email: z.ZodString;
|
|
7
|
+
apiToken: z.ZodObject<{
|
|
8
|
+
$secret: z.ZodString;
|
|
9
|
+
}, z.core.$strip>;
|
|
10
|
+
resources: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
11
|
+
users: "users";
|
|
12
|
+
groups: "groups";
|
|
13
|
+
tickets: "tickets";
|
|
14
|
+
ticket_events: "ticket_events";
|
|
15
|
+
satisfaction_ratings: "satisfaction_ratings";
|
|
16
|
+
}>>>;
|
|
17
|
+
}, z.core.$strip>;
|
|
18
|
+
declare const doc: ConnectorDoc;
|
|
19
|
+
interface ZendeskSettings {
|
|
20
|
+
subdomain: string;
|
|
21
|
+
resources?: readonly ZendeskResource[];
|
|
22
|
+
}
|
|
23
|
+
declare const zendeskCredentials: {
|
|
24
|
+
email: {
|
|
25
|
+
description: string;
|
|
26
|
+
auth: "required";
|
|
27
|
+
};
|
|
28
|
+
apiToken: {
|
|
29
|
+
description: string;
|
|
30
|
+
auth: "required";
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
type ZendeskCredentials = typeof zendeskCredentials;
|
|
34
|
+
declare const PHASE_ORDER: readonly ["users", "groups", "tickets", "ticket_events", "satisfaction_ratings"];
|
|
35
|
+
type ZendeskPhase = (typeof PHASE_ORDER)[number];
|
|
36
|
+
type ZendeskResource = ZendeskPhase;
|
|
37
|
+
declare const zendeskResources: {
|
|
38
|
+
readonly zendesk_user: {
|
|
39
|
+
readonly shape: "entity";
|
|
40
|
+
readonly description: "Zendesk users (agents, admins, and end-users) with role and activity flags.";
|
|
41
|
+
readonly endpoint: "GET /api/v2/users.json";
|
|
42
|
+
readonly fields: [{
|
|
43
|
+
readonly name: "name";
|
|
44
|
+
readonly description: "User display name.";
|
|
45
|
+
}, {
|
|
46
|
+
readonly name: "email";
|
|
47
|
+
readonly description: "User email address.";
|
|
48
|
+
}, {
|
|
49
|
+
readonly name: "role";
|
|
50
|
+
readonly description: "User role (end-user, agent, or admin).";
|
|
51
|
+
}, {
|
|
52
|
+
readonly name: "active";
|
|
53
|
+
readonly description: "Whether the user is active.";
|
|
54
|
+
}, {
|
|
55
|
+
readonly name: "suspended";
|
|
56
|
+
readonly description: "Whether the user is suspended.";
|
|
57
|
+
}, {
|
|
58
|
+
readonly name: "defaultGroupId";
|
|
59
|
+
readonly description: "Default group the user belongs to (agents only).";
|
|
60
|
+
}, {
|
|
61
|
+
readonly name: "createdAt";
|
|
62
|
+
readonly description: "When the user was created (Unix ms).";
|
|
63
|
+
}];
|
|
64
|
+
readonly responses: {
|
|
65
|
+
readonly users: z.ZodArray<z.ZodObject<{
|
|
66
|
+
id: z.ZodNumber;
|
|
67
|
+
name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
68
|
+
email: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
69
|
+
role: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
70
|
+
active: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
71
|
+
suspended: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
72
|
+
default_group_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
73
|
+
created_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
74
|
+
updated_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
75
|
+
}, z.core.$strip>>;
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
readonly zendesk_group: {
|
|
79
|
+
readonly shape: "entity";
|
|
80
|
+
readonly description: "Agent groups used to route tickets.";
|
|
81
|
+
readonly endpoint: "GET /api/v2/groups.json";
|
|
82
|
+
readonly fields: [{
|
|
83
|
+
readonly name: "name";
|
|
84
|
+
readonly description: "Group name.";
|
|
85
|
+
}, {
|
|
86
|
+
readonly name: "isDefault";
|
|
87
|
+
readonly description: "Whether this is the account default group.";
|
|
88
|
+
}, {
|
|
89
|
+
readonly name: "deleted";
|
|
90
|
+
readonly description: "Whether the group is soft-deleted.";
|
|
91
|
+
}, {
|
|
92
|
+
readonly name: "createdAt";
|
|
93
|
+
readonly description: "When the group was created (Unix ms).";
|
|
94
|
+
}];
|
|
95
|
+
readonly responses: {
|
|
96
|
+
readonly groups: z.ZodArray<z.ZodObject<{
|
|
97
|
+
id: z.ZodNumber;
|
|
98
|
+
name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
99
|
+
default: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
100
|
+
deleted: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
101
|
+
created_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
102
|
+
updated_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
103
|
+
}, z.core.$strip>>;
|
|
104
|
+
};
|
|
105
|
+
};
|
|
106
|
+
readonly zendesk_ticket: {
|
|
107
|
+
readonly shape: "entity";
|
|
108
|
+
readonly description: "Tickets with status, priority, assignment, channel, and tags.";
|
|
109
|
+
readonly endpoint: "GET /api/v2/incremental/tickets/cursor.json";
|
|
110
|
+
readonly fields: [{
|
|
111
|
+
readonly name: "subject";
|
|
112
|
+
readonly description: "Ticket subject line.";
|
|
113
|
+
}, {
|
|
114
|
+
readonly name: "status";
|
|
115
|
+
readonly description: "Ticket status (new, open, pending, hold, solved, closed).";
|
|
116
|
+
}, {
|
|
117
|
+
readonly name: "priority";
|
|
118
|
+
readonly description: "Ticket priority (low, normal, high, urgent).";
|
|
119
|
+
}, {
|
|
120
|
+
readonly name: "type";
|
|
121
|
+
readonly description: "Ticket type (question, incident, etc.).";
|
|
122
|
+
}, {
|
|
123
|
+
readonly name: "channel";
|
|
124
|
+
readonly description: "Channel the ticket was created from (email, web, etc.).";
|
|
125
|
+
}, {
|
|
126
|
+
readonly name: "assigneeId";
|
|
127
|
+
readonly description: "Assigned agent id (null if unassigned).";
|
|
128
|
+
}, {
|
|
129
|
+
readonly name: "requesterId";
|
|
130
|
+
readonly description: "Requester (end-user) id.";
|
|
131
|
+
}, {
|
|
132
|
+
readonly name: "groupId";
|
|
133
|
+
readonly description: "Group the ticket is routed to (null if unrouted).";
|
|
134
|
+
}, {
|
|
135
|
+
readonly name: "organizationId";
|
|
136
|
+
readonly description: "Organization id (null if none).";
|
|
137
|
+
}, {
|
|
138
|
+
readonly name: "tags";
|
|
139
|
+
readonly description: "Flat list of tags applied to the ticket.";
|
|
140
|
+
}, {
|
|
141
|
+
readonly name: "satisfactionScore";
|
|
142
|
+
readonly description: "Per-ticket CSAT score from the satisfaction_rating block (offered, good, bad, unoffered).";
|
|
143
|
+
}, {
|
|
144
|
+
readonly name: "createdAt";
|
|
145
|
+
readonly description: "When the ticket was created (Unix ms).";
|
|
146
|
+
}];
|
|
147
|
+
readonly responses: {
|
|
148
|
+
readonly tickets: z.ZodArray<z.ZodObject<{
|
|
149
|
+
id: z.ZodNumber;
|
|
150
|
+
subject: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
151
|
+
status: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
152
|
+
priority: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
153
|
+
type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
154
|
+
channel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
155
|
+
assignee_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
156
|
+
requester_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
157
|
+
submitter_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
158
|
+
group_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
159
|
+
organization_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
160
|
+
tags: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
|
|
161
|
+
via: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
162
|
+
channel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
163
|
+
}, z.core.$strip>>>;
|
|
164
|
+
satisfaction_rating: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
165
|
+
score: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
166
|
+
}, z.core.$strip>>>;
|
|
167
|
+
created_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
168
|
+
updated_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
169
|
+
}, z.core.$strip>>;
|
|
170
|
+
};
|
|
171
|
+
};
|
|
172
|
+
readonly zendesk_ticket_state_change: {
|
|
173
|
+
readonly shape: "event";
|
|
174
|
+
readonly description: "Ticket state-change events (created / solved) derived from each ticket.";
|
|
175
|
+
readonly endpoint: "GET /api/v2/incremental/tickets/cursor.json";
|
|
176
|
+
readonly notes: "Derived from each ticket’s timestamps; the scope is cleared and rewritten on every sync.";
|
|
177
|
+
readonly fields: [{
|
|
178
|
+
readonly name: "ticketId";
|
|
179
|
+
readonly description: "The ticket the event belongs to.";
|
|
180
|
+
}, {
|
|
181
|
+
readonly name: "transition";
|
|
182
|
+
readonly description: "created or solved.";
|
|
183
|
+
}, {
|
|
184
|
+
readonly name: "status";
|
|
185
|
+
readonly description: "Ticket status at sync time.";
|
|
186
|
+
}, {
|
|
187
|
+
readonly name: "priority";
|
|
188
|
+
readonly description: "Ticket priority at sync time.";
|
|
189
|
+
}, {
|
|
190
|
+
readonly name: "assigneeId";
|
|
191
|
+
readonly description: "Assigned agent id at sync time (null if unassigned).";
|
|
192
|
+
}, {
|
|
193
|
+
readonly name: "groupId";
|
|
194
|
+
readonly description: "Group id at sync time (null if unrouted).";
|
|
195
|
+
}, {
|
|
196
|
+
readonly name: "channel";
|
|
197
|
+
readonly description: "Channel the ticket was created from.";
|
|
198
|
+
}];
|
|
199
|
+
readonly responses: {
|
|
200
|
+
readonly ticket_events: z.ZodArray<z.ZodObject<{
|
|
201
|
+
id: z.ZodNumber;
|
|
202
|
+
subject: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
203
|
+
status: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
204
|
+
priority: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
205
|
+
type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
206
|
+
channel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
207
|
+
assignee_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
208
|
+
requester_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
209
|
+
submitter_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
210
|
+
group_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
211
|
+
organization_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
212
|
+
tags: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
|
|
213
|
+
via: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
214
|
+
channel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
215
|
+
}, z.core.$strip>>>;
|
|
216
|
+
satisfaction_rating: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
217
|
+
score: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
218
|
+
}, z.core.$strip>>>;
|
|
219
|
+
created_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
220
|
+
updated_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
221
|
+
}, z.core.$strip>>;
|
|
222
|
+
};
|
|
223
|
+
};
|
|
224
|
+
readonly zendesk_satisfaction_rating: {
|
|
225
|
+
readonly shape: "entity";
|
|
226
|
+
readonly description: "Per-ticket customer satisfaction (CSAT) ratings with score and free-text comment.";
|
|
227
|
+
readonly endpoint: "GET /api/v2/satisfaction_ratings.json";
|
|
228
|
+
readonly fields: [{
|
|
229
|
+
readonly name: "score";
|
|
230
|
+
readonly description: "Rating score (good, bad, offered).";
|
|
231
|
+
}, {
|
|
232
|
+
readonly name: "ticketId";
|
|
233
|
+
readonly description: "The ticket the rating is for.";
|
|
234
|
+
}, {
|
|
235
|
+
readonly name: "assigneeId";
|
|
236
|
+
readonly description: "Agent assigned at the time of rating.";
|
|
237
|
+
}, {
|
|
238
|
+
readonly name: "requesterId";
|
|
239
|
+
readonly description: "Requester (end-user) id.";
|
|
240
|
+
}, {
|
|
241
|
+
readonly name: "groupId";
|
|
242
|
+
readonly description: "Group id at the time of rating.";
|
|
243
|
+
}, {
|
|
244
|
+
readonly name: "hasComment";
|
|
245
|
+
readonly description: "Whether a free-text comment is set.";
|
|
246
|
+
}, {
|
|
247
|
+
readonly name: "createdAt";
|
|
248
|
+
readonly description: "When the rating was submitted (Unix ms).";
|
|
249
|
+
}];
|
|
250
|
+
readonly responses: {
|
|
251
|
+
readonly satisfaction_ratings: z.ZodArray<z.ZodObject<{
|
|
252
|
+
id: z.ZodNumber;
|
|
253
|
+
score: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
254
|
+
ticket_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
255
|
+
assignee_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
256
|
+
requester_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
257
|
+
group_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
258
|
+
comment: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
259
|
+
created_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
260
|
+
updated_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
261
|
+
}, z.core.$strip>>;
|
|
262
|
+
};
|
|
263
|
+
};
|
|
264
|
+
};
|
|
265
|
+
declare const id = "zendesk";
|
|
266
|
+
declare class ZendeskConnector extends BaseConnector<ZendeskSettings, ZendeskCredentials> {
|
|
267
|
+
static readonly id = "zendesk";
|
|
268
|
+
static readonly resources: {
|
|
269
|
+
readonly zendesk_user: {
|
|
270
|
+
readonly shape: "entity";
|
|
271
|
+
readonly description: "Zendesk users (agents, admins, and end-users) with role and activity flags.";
|
|
272
|
+
readonly endpoint: "GET /api/v2/users.json";
|
|
273
|
+
readonly fields: [{
|
|
274
|
+
readonly name: "name";
|
|
275
|
+
readonly description: "User display name.";
|
|
276
|
+
}, {
|
|
277
|
+
readonly name: "email";
|
|
278
|
+
readonly description: "User email address.";
|
|
279
|
+
}, {
|
|
280
|
+
readonly name: "role";
|
|
281
|
+
readonly description: "User role (end-user, agent, or admin).";
|
|
282
|
+
}, {
|
|
283
|
+
readonly name: "active";
|
|
284
|
+
readonly description: "Whether the user is active.";
|
|
285
|
+
}, {
|
|
286
|
+
readonly name: "suspended";
|
|
287
|
+
readonly description: "Whether the user is suspended.";
|
|
288
|
+
}, {
|
|
289
|
+
readonly name: "defaultGroupId";
|
|
290
|
+
readonly description: "Default group the user belongs to (agents only).";
|
|
291
|
+
}, {
|
|
292
|
+
readonly name: "createdAt";
|
|
293
|
+
readonly description: "When the user was created (Unix ms).";
|
|
294
|
+
}];
|
|
295
|
+
readonly responses: {
|
|
296
|
+
readonly users: z.ZodArray<z.ZodObject<{
|
|
297
|
+
id: z.ZodNumber;
|
|
298
|
+
name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
299
|
+
email: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
300
|
+
role: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
301
|
+
active: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
302
|
+
suspended: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
303
|
+
default_group_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
304
|
+
created_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
305
|
+
updated_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
306
|
+
}, z.core.$strip>>;
|
|
307
|
+
};
|
|
308
|
+
};
|
|
309
|
+
readonly zendesk_group: {
|
|
310
|
+
readonly shape: "entity";
|
|
311
|
+
readonly description: "Agent groups used to route tickets.";
|
|
312
|
+
readonly endpoint: "GET /api/v2/groups.json";
|
|
313
|
+
readonly fields: [{
|
|
314
|
+
readonly name: "name";
|
|
315
|
+
readonly description: "Group name.";
|
|
316
|
+
}, {
|
|
317
|
+
readonly name: "isDefault";
|
|
318
|
+
readonly description: "Whether this is the account default group.";
|
|
319
|
+
}, {
|
|
320
|
+
readonly name: "deleted";
|
|
321
|
+
readonly description: "Whether the group is soft-deleted.";
|
|
322
|
+
}, {
|
|
323
|
+
readonly name: "createdAt";
|
|
324
|
+
readonly description: "When the group was created (Unix ms).";
|
|
325
|
+
}];
|
|
326
|
+
readonly responses: {
|
|
327
|
+
readonly groups: z.ZodArray<z.ZodObject<{
|
|
328
|
+
id: z.ZodNumber;
|
|
329
|
+
name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
330
|
+
default: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
331
|
+
deleted: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
332
|
+
created_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
333
|
+
updated_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
334
|
+
}, z.core.$strip>>;
|
|
335
|
+
};
|
|
336
|
+
};
|
|
337
|
+
readonly zendesk_ticket: {
|
|
338
|
+
readonly shape: "entity";
|
|
339
|
+
readonly description: "Tickets with status, priority, assignment, channel, and tags.";
|
|
340
|
+
readonly endpoint: "GET /api/v2/incremental/tickets/cursor.json";
|
|
341
|
+
readonly fields: [{
|
|
342
|
+
readonly name: "subject";
|
|
343
|
+
readonly description: "Ticket subject line.";
|
|
344
|
+
}, {
|
|
345
|
+
readonly name: "status";
|
|
346
|
+
readonly description: "Ticket status (new, open, pending, hold, solved, closed).";
|
|
347
|
+
}, {
|
|
348
|
+
readonly name: "priority";
|
|
349
|
+
readonly description: "Ticket priority (low, normal, high, urgent).";
|
|
350
|
+
}, {
|
|
351
|
+
readonly name: "type";
|
|
352
|
+
readonly description: "Ticket type (question, incident, etc.).";
|
|
353
|
+
}, {
|
|
354
|
+
readonly name: "channel";
|
|
355
|
+
readonly description: "Channel the ticket was created from (email, web, etc.).";
|
|
356
|
+
}, {
|
|
357
|
+
readonly name: "assigneeId";
|
|
358
|
+
readonly description: "Assigned agent id (null if unassigned).";
|
|
359
|
+
}, {
|
|
360
|
+
readonly name: "requesterId";
|
|
361
|
+
readonly description: "Requester (end-user) id.";
|
|
362
|
+
}, {
|
|
363
|
+
readonly name: "groupId";
|
|
364
|
+
readonly description: "Group the ticket is routed to (null if unrouted).";
|
|
365
|
+
}, {
|
|
366
|
+
readonly name: "organizationId";
|
|
367
|
+
readonly description: "Organization id (null if none).";
|
|
368
|
+
}, {
|
|
369
|
+
readonly name: "tags";
|
|
370
|
+
readonly description: "Flat list of tags applied to the ticket.";
|
|
371
|
+
}, {
|
|
372
|
+
readonly name: "satisfactionScore";
|
|
373
|
+
readonly description: "Per-ticket CSAT score from the satisfaction_rating block (offered, good, bad, unoffered).";
|
|
374
|
+
}, {
|
|
375
|
+
readonly name: "createdAt";
|
|
376
|
+
readonly description: "When the ticket was created (Unix ms).";
|
|
377
|
+
}];
|
|
378
|
+
readonly responses: {
|
|
379
|
+
readonly tickets: z.ZodArray<z.ZodObject<{
|
|
380
|
+
id: z.ZodNumber;
|
|
381
|
+
subject: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
382
|
+
status: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
383
|
+
priority: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
384
|
+
type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
385
|
+
channel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
386
|
+
assignee_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
387
|
+
requester_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
388
|
+
submitter_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
389
|
+
group_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
390
|
+
organization_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
391
|
+
tags: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
|
|
392
|
+
via: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
393
|
+
channel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
394
|
+
}, z.core.$strip>>>;
|
|
395
|
+
satisfaction_rating: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
396
|
+
score: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
397
|
+
}, z.core.$strip>>>;
|
|
398
|
+
created_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
399
|
+
updated_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
400
|
+
}, z.core.$strip>>;
|
|
401
|
+
};
|
|
402
|
+
};
|
|
403
|
+
readonly zendesk_ticket_state_change: {
|
|
404
|
+
readonly shape: "event";
|
|
405
|
+
readonly description: "Ticket state-change events (created / solved) derived from each ticket.";
|
|
406
|
+
readonly endpoint: "GET /api/v2/incremental/tickets/cursor.json";
|
|
407
|
+
readonly notes: "Derived from each ticket’s timestamps; the scope is cleared and rewritten on every sync.";
|
|
408
|
+
readonly fields: [{
|
|
409
|
+
readonly name: "ticketId";
|
|
410
|
+
readonly description: "The ticket the event belongs to.";
|
|
411
|
+
}, {
|
|
412
|
+
readonly name: "transition";
|
|
413
|
+
readonly description: "created or solved.";
|
|
414
|
+
}, {
|
|
415
|
+
readonly name: "status";
|
|
416
|
+
readonly description: "Ticket status at sync time.";
|
|
417
|
+
}, {
|
|
418
|
+
readonly name: "priority";
|
|
419
|
+
readonly description: "Ticket priority at sync time.";
|
|
420
|
+
}, {
|
|
421
|
+
readonly name: "assigneeId";
|
|
422
|
+
readonly description: "Assigned agent id at sync time (null if unassigned).";
|
|
423
|
+
}, {
|
|
424
|
+
readonly name: "groupId";
|
|
425
|
+
readonly description: "Group id at sync time (null if unrouted).";
|
|
426
|
+
}, {
|
|
427
|
+
readonly name: "channel";
|
|
428
|
+
readonly description: "Channel the ticket was created from.";
|
|
429
|
+
}];
|
|
430
|
+
readonly responses: {
|
|
431
|
+
readonly ticket_events: z.ZodArray<z.ZodObject<{
|
|
432
|
+
id: z.ZodNumber;
|
|
433
|
+
subject: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
434
|
+
status: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
435
|
+
priority: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
436
|
+
type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
437
|
+
channel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
438
|
+
assignee_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
439
|
+
requester_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
440
|
+
submitter_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
441
|
+
group_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
442
|
+
organization_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
443
|
+
tags: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
|
|
444
|
+
via: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
445
|
+
channel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
446
|
+
}, z.core.$strip>>>;
|
|
447
|
+
satisfaction_rating: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
448
|
+
score: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
449
|
+
}, z.core.$strip>>>;
|
|
450
|
+
created_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
451
|
+
updated_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
452
|
+
}, z.core.$strip>>;
|
|
453
|
+
};
|
|
454
|
+
};
|
|
455
|
+
readonly zendesk_satisfaction_rating: {
|
|
456
|
+
readonly shape: "entity";
|
|
457
|
+
readonly description: "Per-ticket customer satisfaction (CSAT) ratings with score and free-text comment.";
|
|
458
|
+
readonly endpoint: "GET /api/v2/satisfaction_ratings.json";
|
|
459
|
+
readonly fields: [{
|
|
460
|
+
readonly name: "score";
|
|
461
|
+
readonly description: "Rating score (good, bad, offered).";
|
|
462
|
+
}, {
|
|
463
|
+
readonly name: "ticketId";
|
|
464
|
+
readonly description: "The ticket the rating is for.";
|
|
465
|
+
}, {
|
|
466
|
+
readonly name: "assigneeId";
|
|
467
|
+
readonly description: "Agent assigned at the time of rating.";
|
|
468
|
+
}, {
|
|
469
|
+
readonly name: "requesterId";
|
|
470
|
+
readonly description: "Requester (end-user) id.";
|
|
471
|
+
}, {
|
|
472
|
+
readonly name: "groupId";
|
|
473
|
+
readonly description: "Group id at the time of rating.";
|
|
474
|
+
}, {
|
|
475
|
+
readonly name: "hasComment";
|
|
476
|
+
readonly description: "Whether a free-text comment is set.";
|
|
477
|
+
}, {
|
|
478
|
+
readonly name: "createdAt";
|
|
479
|
+
readonly description: "When the rating was submitted (Unix ms).";
|
|
480
|
+
}];
|
|
481
|
+
readonly responses: {
|
|
482
|
+
readonly satisfaction_ratings: z.ZodArray<z.ZodObject<{
|
|
483
|
+
id: z.ZodNumber;
|
|
484
|
+
score: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
485
|
+
ticket_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
486
|
+
assignee_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
487
|
+
requester_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
488
|
+
group_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
489
|
+
comment: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
490
|
+
created_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
491
|
+
updated_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
492
|
+
}, z.core.$strip>>;
|
|
493
|
+
};
|
|
494
|
+
};
|
|
495
|
+
};
|
|
496
|
+
static readonly schemas: {
|
|
497
|
+
readonly users: z.ZodArray<z.ZodObject<{
|
|
498
|
+
id: z.ZodNumber;
|
|
499
|
+
name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
500
|
+
email: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
501
|
+
role: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
502
|
+
active: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
503
|
+
suspended: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
504
|
+
default_group_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
505
|
+
created_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
506
|
+
updated_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
507
|
+
}, z.core.$strip>>;
|
|
508
|
+
} & {
|
|
509
|
+
readonly groups: z.ZodArray<z.ZodObject<{
|
|
510
|
+
id: z.ZodNumber;
|
|
511
|
+
name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
512
|
+
default: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
513
|
+
deleted: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
514
|
+
created_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
515
|
+
updated_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
516
|
+
}, z.core.$strip>>;
|
|
517
|
+
} & {
|
|
518
|
+
readonly tickets: z.ZodArray<z.ZodObject<{
|
|
519
|
+
id: z.ZodNumber;
|
|
520
|
+
subject: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
521
|
+
status: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
522
|
+
priority: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
523
|
+
type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
524
|
+
channel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
525
|
+
assignee_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
526
|
+
requester_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
527
|
+
submitter_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
528
|
+
group_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
529
|
+
organization_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
530
|
+
tags: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
|
|
531
|
+
via: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
532
|
+
channel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
533
|
+
}, z.core.$strip>>>;
|
|
534
|
+
satisfaction_rating: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
535
|
+
score: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
536
|
+
}, z.core.$strip>>>;
|
|
537
|
+
created_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
538
|
+
updated_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
539
|
+
}, z.core.$strip>>;
|
|
540
|
+
} & {
|
|
541
|
+
readonly ticket_events: z.ZodArray<z.ZodObject<{
|
|
542
|
+
id: z.ZodNumber;
|
|
543
|
+
subject: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
544
|
+
status: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
545
|
+
priority: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
546
|
+
type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
547
|
+
channel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
548
|
+
assignee_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
549
|
+
requester_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
550
|
+
submitter_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
551
|
+
group_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
552
|
+
organization_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
553
|
+
tags: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
|
|
554
|
+
via: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
555
|
+
channel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
556
|
+
}, z.core.$strip>>>;
|
|
557
|
+
satisfaction_rating: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
558
|
+
score: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
559
|
+
}, z.core.$strip>>>;
|
|
560
|
+
created_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
561
|
+
updated_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
562
|
+
}, z.core.$strip>>;
|
|
563
|
+
} & {
|
|
564
|
+
readonly satisfaction_ratings: z.ZodArray<z.ZodObject<{
|
|
565
|
+
id: z.ZodNumber;
|
|
566
|
+
score: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
567
|
+
ticket_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
568
|
+
assignee_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
569
|
+
requester_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
570
|
+
group_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
571
|
+
comment: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
572
|
+
created_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
573
|
+
updated_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
574
|
+
}, z.core.$strip>>;
|
|
575
|
+
} & Readonly<Record<string, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>>;
|
|
576
|
+
static create(input: unknown, ctx?: ConnectorContext): ZendeskConnector;
|
|
577
|
+
readonly id = "zendesk";
|
|
578
|
+
readonly credentials: {
|
|
579
|
+
email: {
|
|
580
|
+
description: string;
|
|
581
|
+
auth: "required";
|
|
582
|
+
};
|
|
583
|
+
apiToken: {
|
|
584
|
+
description: string;
|
|
585
|
+
auth: "required";
|
|
586
|
+
};
|
|
587
|
+
};
|
|
588
|
+
private get baseUrl();
|
|
589
|
+
private buildHeaders;
|
|
590
|
+
private apiGet;
|
|
591
|
+
private buildUserListUrl;
|
|
592
|
+
private fetchUsers;
|
|
593
|
+
private writeUsers;
|
|
594
|
+
private buildGroupListUrl;
|
|
595
|
+
private fetchGroups;
|
|
596
|
+
private writeGroups;
|
|
597
|
+
private buildIncrementalTicketsUrl;
|
|
598
|
+
private fetchTickets;
|
|
599
|
+
private writeTickets;
|
|
600
|
+
private writeTicketEvents;
|
|
601
|
+
private buildSatisfactionRatingsUrl;
|
|
602
|
+
private fetchSatisfactionRatings;
|
|
603
|
+
private writeSatisfactionRatings;
|
|
604
|
+
private clearScopeOnFirstPage;
|
|
605
|
+
private writePhase;
|
|
606
|
+
sync(options: SyncOptions, storage: StorageHandle, signal?: AbortSignal): Promise<SyncResult>;
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
export { ZendeskConnector, type ZendeskResource, type ZendeskSettings, configFields, ZendeskConnector as default, doc, id, zendeskResources as resources };
|