@webzaytsev/support-sdk 0.1.1 → 0.1.3

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.
@@ -0,0 +1,356 @@
1
+ type ClientOptions = {
2
+ baseUrl: string;
3
+ };
4
+ type WebProfileDto = {
5
+ /**
6
+ * Display name (≤120 chars)
7
+ */
8
+ name: string;
9
+ /**
10
+ * User email
11
+ */
12
+ email?: string;
13
+ /**
14
+ * URL to user profile in admin panel
15
+ */
16
+ profileUrl?: string;
17
+ /**
18
+ * Key-value pairs (≤32 keys, key ≤64, value ≤512). Read by plugins (e.g. Remnawave reads userId).
19
+ */
20
+ extra?: {
21
+ [key: string]: string;
22
+ };
23
+ };
24
+ type IssueTokenDto = {
25
+ /**
26
+ * External user ID from your backend database
27
+ */
28
+ userId: string;
29
+ /**
30
+ * User profile snapshot passed from your backend
31
+ */
32
+ userProfile: WebProfileDto;
33
+ /**
34
+ * JWT TTL in seconds (max 3600, default 900)
35
+ */
36
+ ttlSec?: number;
37
+ };
38
+ type IssueTokenResponseDto = {
39
+ /**
40
+ * Short-lived JWT for widget authentication
41
+ */
42
+ token: string;
43
+ /**
44
+ * ISO timestamp when the token expires
45
+ */
46
+ expiresAt: string;
47
+ };
48
+ type WebSseEventDataDto = {
49
+ /**
50
+ * Message ID (for 'message' events)
51
+ */
52
+ messageId?: number;
53
+ /**
54
+ * Message text
55
+ */
56
+ text?: string;
57
+ /**
58
+ * Attachment upload IDs
59
+ */
60
+ attachmentIds?: Array<string>;
61
+ /**
62
+ * Message ID that triggered escalation ('escalation_ack' event)
63
+ */
64
+ escalatableMessageId?: number;
65
+ /**
66
+ * Escalation source
67
+ */
68
+ source?: string;
69
+ /**
70
+ * ISO timestamp of the event
71
+ */
72
+ createdAt?: string;
73
+ /**
74
+ * Human-readable message for system events
75
+ */
76
+ message?: string;
77
+ };
78
+ type WebSseEventDto = {
79
+ /**
80
+ * Event type
81
+ */
82
+ type: 'message' | 'resolved' | 'closed' | 'escalation_ack' | 'reopened' | 'heartbeat';
83
+ /**
84
+ * Ticket ID this event belongs to
85
+ */
86
+ ticketId: number;
87
+ /**
88
+ * Event payload (absent for heartbeat)
89
+ */
90
+ data?: WebSseEventDataDto;
91
+ };
92
+ type SendMessageDto = {
93
+ /**
94
+ * Message text
95
+ */
96
+ text: string;
97
+ /**
98
+ * Upload IDs returned by POST /web/uploads
99
+ */
100
+ attachmentIds?: Array<string>;
101
+ };
102
+ type SendMessageResponseDto = {
103
+ /**
104
+ * Ticket ID (created or existing)
105
+ */
106
+ ticketId: number;
107
+ /**
108
+ * ID of the recorded message
109
+ */
110
+ messageId: number;
111
+ /**
112
+ * ISO timestamp when the message was created
113
+ */
114
+ createdAt: string;
115
+ };
116
+ type TicketInfoDto = {
117
+ /**
118
+ * Ticket ID
119
+ */
120
+ id: number;
121
+ /**
122
+ * Ticket status
123
+ */
124
+ status: 'open' | 'closed';
125
+ /**
126
+ * ISO timestamp when ticket was created
127
+ */
128
+ createdAt: string;
129
+ /**
130
+ * ISO timestamp of last update
131
+ */
132
+ updatedAt: string;
133
+ };
134
+ type MessageDto = {
135
+ /**
136
+ * Message ID
137
+ */
138
+ id: number;
139
+ /**
140
+ * Message author role
141
+ */
142
+ role: 'user' | 'moderator' | 'bot' | 'system';
143
+ /**
144
+ * Text content of the message
145
+ */
146
+ content: {
147
+ [key: string]: unknown;
148
+ } | null;
149
+ /**
150
+ * Upload IDs of attached images
151
+ */
152
+ webAttachmentIds: Array<string> | null;
153
+ /**
154
+ * ISO timestamp when the message was created
155
+ */
156
+ createdAt: string;
157
+ };
158
+ type CurrentTicketResponseDto = {
159
+ /**
160
+ * Current open ticket, null if none
161
+ */
162
+ ticket: TicketInfoDto | null;
163
+ /**
164
+ * Messages in chronological order (oldest first, max 50)
165
+ */
166
+ messages: Array<MessageDto>;
167
+ };
168
+ type MessagesResponseDto = {
169
+ /**
170
+ * Messages in chronological order (oldest first)
171
+ */
172
+ messages: Array<MessageDto>;
173
+ /**
174
+ * Pass as ?since= in the next poll request. Null when no messages returned.
175
+ */
176
+ nextCursor: {
177
+ [key: string]: unknown;
178
+ } | null;
179
+ };
180
+ type UploadResponseDto = {
181
+ /**
182
+ * Upload ID to use in attachmentIds when sending a message
183
+ */
184
+ uploadId: string;
185
+ /**
186
+ * MIME type of the uploaded file
187
+ */
188
+ mimeType: string;
189
+ /**
190
+ * File size in bytes
191
+ */
192
+ sizeBytes: number;
193
+ };
194
+ type WebAuthControllerIssueTokenData = {
195
+ body: IssueTokenDto;
196
+ path?: never;
197
+ query?: never;
198
+ url: '/web/auth/token';
199
+ };
200
+ type WebAuthControllerIssueTokenResponses = {
201
+ /**
202
+ * Short-lived JWT issued
203
+ */
204
+ 200: IssueTokenResponseDto;
205
+ };
206
+ type WebAuthControllerIssueTokenResponse = WebAuthControllerIssueTokenResponses[keyof WebAuthControllerIssueTokenResponses];
207
+ type WebTicketsControllerSendMessageData = {
208
+ body: SendMessageDto;
209
+ path?: never;
210
+ query?: never;
211
+ url: '/web/messages';
212
+ };
213
+ type WebTicketsControllerSendMessageResponses = {
214
+ /**
215
+ * Message recorded
216
+ */
217
+ 200: SendMessageResponseDto;
218
+ };
219
+ type WebTicketsControllerSendMessageResponse = WebTicketsControllerSendMessageResponses[keyof WebTicketsControllerSendMessageResponses];
220
+ type WebTicketsControllerGetCurrentTicketData = {
221
+ body?: never;
222
+ path?: never;
223
+ query?: never;
224
+ url: '/web/tickets/current';
225
+ };
226
+ type WebTicketsControllerGetCurrentTicketResponses = {
227
+ /**
228
+ * Current ticket state
229
+ */
230
+ 200: CurrentTicketResponseDto;
231
+ };
232
+ type WebTicketsControllerGetCurrentTicketResponse = WebTicketsControllerGetCurrentTicketResponses[keyof WebTicketsControllerGetCurrentTicketResponses];
233
+ type WebTicketsControllerGetMessagesData = {
234
+ body?: never;
235
+ path: {
236
+ /**
237
+ * Ticket ID
238
+ */
239
+ id: number;
240
+ };
241
+ query?: {
242
+ /**
243
+ * ISO timestamp cursor from previous response nextCursor
244
+ */
245
+ since?: string;
246
+ /**
247
+ * Max messages to return (1–100, default 50)
248
+ */
249
+ limit?: string;
250
+ };
251
+ url: '/web/tickets/{id}/messages';
252
+ };
253
+ type WebTicketsControllerGetMessagesResponses = {
254
+ /**
255
+ * Messages since cursor
256
+ */
257
+ 200: MessagesResponseDto;
258
+ };
259
+ type WebTicketsControllerGetMessagesResponse = WebTicketsControllerGetMessagesResponses[keyof WebTicketsControllerGetMessagesResponses];
260
+ type WebTicketsControllerSseStreamData = {
261
+ body?: never;
262
+ path: {
263
+ /**
264
+ * Ticket ID
265
+ */
266
+ id: number;
267
+ };
268
+ query?: {
269
+ /**
270
+ * JWT token (alternative to Authorization header, required for native EventSource)
271
+ */
272
+ access_token?: unknown;
273
+ };
274
+ url: '/web/tickets/{id}/stream';
275
+ };
276
+ type WebTicketsControllerSseStreamResponses = {
277
+ /**
278
+ * Server-Sent Events stream
279
+ */
280
+ 200: WebSseEventDto;
281
+ };
282
+ type WebTicketsControllerSseStreamResponse = WebTicketsControllerSseStreamResponses[keyof WebTicketsControllerSseStreamResponses];
283
+ type WebTicketsControllerEscalateData = {
284
+ body?: never;
285
+ path: {
286
+ /**
287
+ * Ticket ID
288
+ */
289
+ id: number;
290
+ };
291
+ query?: never;
292
+ url: '/web/tickets/{id}/escalate';
293
+ };
294
+ type WebTicketsControllerEscalateResponses = {
295
+ /**
296
+ * Escalation request submitted
297
+ */
298
+ 204: void;
299
+ };
300
+ type WebTicketsControllerEscalateResponse = WebTicketsControllerEscalateResponses[keyof WebTicketsControllerEscalateResponses];
301
+ type WebTicketsControllerResolveByUserData = {
302
+ body?: never;
303
+ path: {
304
+ /**
305
+ * Ticket ID
306
+ */
307
+ id: number;
308
+ };
309
+ query?: never;
310
+ url: '/web/tickets/{id}/resolve';
311
+ };
312
+ type WebTicketsControllerResolveByUserResponses = {
313
+ /**
314
+ * Ticket resolved
315
+ */
316
+ 204: void;
317
+ };
318
+ type WebTicketsControllerResolveByUserResponse = WebTicketsControllerResolveByUserResponses[keyof WebTicketsControllerResolveByUserResponses];
319
+ type WebUploadsControllerUploadData = {
320
+ body: {
321
+ /**
322
+ * Image file (jpeg/png/webp, max 10 MB)
323
+ */
324
+ file: Blob | File;
325
+ };
326
+ path?: never;
327
+ query?: never;
328
+ url: '/web/uploads';
329
+ };
330
+ type WebUploadsControllerUploadResponses = {
331
+ /**
332
+ * File uploaded successfully
333
+ */
334
+ 200: UploadResponseDto;
335
+ };
336
+ type WebUploadsControllerUploadResponse = WebUploadsControllerUploadResponses[keyof WebUploadsControllerUploadResponses];
337
+ type WebUploadsControllerGetUploadData = {
338
+ body?: never;
339
+ path: {
340
+ /**
341
+ * Upload ID returned by POST /web/uploads
342
+ */
343
+ id: string;
344
+ };
345
+ query?: never;
346
+ url: '/web/uploads/{id}';
347
+ };
348
+ type WebUploadsControllerGetUploadResponses = {
349
+ /**
350
+ * Image file stream
351
+ */
352
+ 200: Blob | File;
353
+ };
354
+ type WebUploadsControllerGetUploadResponse = WebUploadsControllerGetUploadResponses[keyof WebUploadsControllerGetUploadResponses];
355
+
356
+ export type { WebTicketsControllerSseStreamResponses as A, WebUploadsControllerGetUploadData as B, ClientOptions as C, WebUploadsControllerGetUploadResponse as D, WebUploadsControllerGetUploadResponses as E, WebUploadsControllerUploadData as F, WebUploadsControllerUploadResponse as G, WebUploadsControllerUploadResponses as H, IssueTokenDto as I, MessageDto as M, SendMessageDto as S, TicketInfoDto as T, UploadResponseDto as U, WebAuthControllerIssueTokenData as W, CurrentTicketResponseDto as a, IssueTokenResponseDto as b, MessagesResponseDto as c, SendMessageResponseDto as d, WebAuthControllerIssueTokenResponse as e, WebAuthControllerIssueTokenResponses as f, WebProfileDto as g, WebSseEventDataDto as h, WebSseEventDto as i, WebTicketsControllerEscalateData as j, WebTicketsControllerEscalateResponse as k, WebTicketsControllerEscalateResponses as l, WebTicketsControllerGetCurrentTicketData as m, WebTicketsControllerGetCurrentTicketResponse as n, WebTicketsControllerGetCurrentTicketResponses as o, WebTicketsControllerGetMessagesData as p, WebTicketsControllerGetMessagesResponse as q, WebTicketsControllerGetMessagesResponses as r, WebTicketsControllerResolveByUserData as s, WebTicketsControllerResolveByUserResponse as t, WebTicketsControllerResolveByUserResponses as u, WebTicketsControllerSendMessageData as v, WebTicketsControllerSendMessageResponse as w, WebTicketsControllerSendMessageResponses as x, WebTicketsControllerSseStreamData as y, WebTicketsControllerSseStreamResponse as z };