@wokuapp/sdk 0.3.0 → 0.4.0
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 +91 -0
- package/dist/index.cjs +18 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +451 -8
- package/dist/index.d.ts +451 -8
- package/dist/index.js +18 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -158,6 +158,99 @@ interface components {
|
|
|
158
158
|
clientEmail?: string;
|
|
159
159
|
clientPhone?: string;
|
|
160
160
|
};
|
|
161
|
+
FollowUpOriginDto: {
|
|
162
|
+
/** @enum {string} */
|
|
163
|
+
tool: "woku" | "nps" | "csat" | "ces";
|
|
164
|
+
refId: string;
|
|
165
|
+
instrumentId?: string;
|
|
166
|
+
};
|
|
167
|
+
FollowUpAttachmentDto: {
|
|
168
|
+
/** @description Stable number of the file in the conversation (survey prelude included). */
|
|
169
|
+
index: number;
|
|
170
|
+
/** @description Display label in the conversation language, e.g. "Archivo 2" or "File 2". Summaries cite files by this label. */
|
|
171
|
+
label: string;
|
|
172
|
+
/** @enum {string} */
|
|
173
|
+
kind: "image" | "audio" | "document" | "unsupported";
|
|
174
|
+
/** @description Private original file (evidence). Absent while pending or when nothing was stored (location, contacts, over the limits). */
|
|
175
|
+
fileId?: string;
|
|
176
|
+
/** @description Converted copy the model read, when there was a conversion. */
|
|
177
|
+
readableFileId?: string;
|
|
178
|
+
filename: string;
|
|
179
|
+
mimeType: string;
|
|
180
|
+
/** @enum {string} */
|
|
181
|
+
status: "pending" | "ready" | "failed" | "unsupported";
|
|
182
|
+
/** @description Transcript (audio) or description (image, document) generated from the file. Untrusted customer content. */
|
|
183
|
+
text?: string;
|
|
184
|
+
/** @description Stable reason code when failed or unsupported (e.g. video, location, message_limit, conversation_limit, read_failed). */
|
|
185
|
+
failureReason?: string;
|
|
186
|
+
/** @description Admin page that opens this file after login and a company check (signed, short-lived download). Never a storage URL. */
|
|
187
|
+
adminUrl?: string;
|
|
188
|
+
};
|
|
189
|
+
FollowUpMessageDto: {
|
|
190
|
+
/** @enum {string} */
|
|
191
|
+
role: "agent" | "client";
|
|
192
|
+
/** @description Message text. May be empty when the message only has files. */
|
|
193
|
+
content: string;
|
|
194
|
+
/** Format: date-time */
|
|
195
|
+
timestamp: string;
|
|
196
|
+
/**
|
|
197
|
+
* @description survey: the prelude, what the customer said in the survey before the follow-up. On the survey_thread line it is the WhatsApp survey exchange; on every other line (follow_up_number, email) it is the original comment as a client message. follow_up: the follow-up itself. Every line may start with the prelude, so messages[0] can be a client message; filter phase === 'follow_up' to read only the follow-up.
|
|
198
|
+
* @enum {string}
|
|
199
|
+
*/
|
|
200
|
+
phase: "survey" | "follow_up";
|
|
201
|
+
responseType?: string;
|
|
202
|
+
selectedOption?: string;
|
|
203
|
+
/** @description Files the customer sent with this message. */
|
|
204
|
+
attachments?: components["schemas"]["FollowUpAttachmentDto"][];
|
|
205
|
+
};
|
|
206
|
+
FollowUpCitationDto: {
|
|
207
|
+
index: number;
|
|
208
|
+
/** @description Label of the cited file, e.g. "Archivo 2". */
|
|
209
|
+
label: string;
|
|
210
|
+
fileId?: string;
|
|
211
|
+
/** @description What the file supports in the summary. */
|
|
212
|
+
supports: string;
|
|
213
|
+
/** @description Admin page that opens this file after login and a company check (signed, short-lived download). Never a storage URL. */
|
|
214
|
+
adminUrl?: string;
|
|
215
|
+
};
|
|
216
|
+
FollowUpConversationDto: {
|
|
217
|
+
_id: string;
|
|
218
|
+
companyId: string;
|
|
219
|
+
origin: components["schemas"]["FollowUpOriginDto"];
|
|
220
|
+
wokuId?: string;
|
|
221
|
+
reviewId?: string;
|
|
222
|
+
/** @enum {string} */
|
|
223
|
+
reviewType: "textnote" | "voicemail";
|
|
224
|
+
originalReview: string;
|
|
225
|
+
originalQualification?: number;
|
|
226
|
+
/** @enum {string} */
|
|
227
|
+
state: "pending" | "initial_sent" | "awaiting_detail" | "closing" | "completed" | "timed_out" | "cancelled";
|
|
228
|
+
/** @enum {string} */
|
|
229
|
+
channel: "email" | "whatsapp";
|
|
230
|
+
/**
|
|
231
|
+
* @description WhatsApp line. survey_thread: the agent continues the survey conversation on the survey number. follow_up_number: the agent writes from the dedicated follow-up number. Absent for email.
|
|
232
|
+
* @enum {string}
|
|
233
|
+
*/
|
|
234
|
+
line?: "survey_thread" | "follow_up_number";
|
|
235
|
+
/** @description Stable reason code for exclusion, failure or uncertain delivery. Provider error details are never exposed. */
|
|
236
|
+
reason?: string;
|
|
237
|
+
/** @description Messages in order: the survey prelude (phase survey) first, then the follow-up (phase follow_up). Filter phase === 'follow_up' for the follow-up messages only. */
|
|
238
|
+
messages: components["schemas"]["FollowUpMessageDto"][];
|
|
239
|
+
executiveSummary?: string;
|
|
240
|
+
actionItems?: string[];
|
|
241
|
+
sentiment?: string;
|
|
242
|
+
topics?: string[];
|
|
243
|
+
/** @description Files the summary cites; the summary text mentions them as "(Archivo N)". */
|
|
244
|
+
summaryCitations?: components["schemas"]["FollowUpCitationDto"][];
|
|
245
|
+
summaryVersion: number;
|
|
246
|
+
/** Format: date-time */
|
|
247
|
+
createdAt?: string;
|
|
248
|
+
/** Format: date-time */
|
|
249
|
+
updatedAt?: string;
|
|
250
|
+
};
|
|
251
|
+
FollowUpEnvelopeDto: {
|
|
252
|
+
data: components["schemas"]["FollowUpConversationDto"];
|
|
253
|
+
};
|
|
161
254
|
CreateExternalTrackerDefinitionDTO: {
|
|
162
255
|
/**
|
|
163
256
|
* @description Tracker name. Identifies the tracker within the company catalog. Unique per company.
|
|
@@ -229,6 +322,33 @@ interface components {
|
|
|
229
322
|
*/
|
|
230
323
|
value: string;
|
|
231
324
|
};
|
|
325
|
+
CustomTicketDestinationUpdateDto: {
|
|
326
|
+
/**
|
|
327
|
+
* @description upsert explicitly reuses the creation URL/method with a stable externalId. remote-id updates the previously created remote resource.
|
|
328
|
+
* @enum {string}
|
|
329
|
+
*/
|
|
330
|
+
mode: "upsert" | "remote-id";
|
|
331
|
+
/** @description remote-id only: same-origin URL containing {{remoteId}}; credentials and fragments are forbidden. */
|
|
332
|
+
url?: string;
|
|
333
|
+
/**
|
|
334
|
+
* @description remote-id only.
|
|
335
|
+
* @default PATCH
|
|
336
|
+
* @enum {string}
|
|
337
|
+
*/
|
|
338
|
+
method: "PUT" | "PATCH";
|
|
339
|
+
/** @description Dot-separated path to the ID in the creation response, required for remote-id. Prototype keys are forbidden. */
|
|
340
|
+
responseIdPath?: string;
|
|
341
|
+
};
|
|
342
|
+
CustomTicketDestinationConfigDto: {
|
|
343
|
+
/** Format: uri */
|
|
344
|
+
url: string;
|
|
345
|
+
/** @enum {string} */
|
|
346
|
+
method?: "POST" | "PUT";
|
|
347
|
+
headers?: {
|
|
348
|
+
[key: string]: string;
|
|
349
|
+
};
|
|
350
|
+
update?: components["schemas"]["CustomTicketDestinationUpdateDto"];
|
|
351
|
+
};
|
|
232
352
|
TicketRoutingConditionDto: {
|
|
233
353
|
/** @enum {string} */
|
|
234
354
|
relationToPrevious?: "AND" | "OR";
|
|
@@ -251,10 +371,12 @@ interface components {
|
|
|
251
371
|
V1CreateTicketDestinationDto: {
|
|
252
372
|
/** @example Zendesk Soporte Chile */
|
|
253
373
|
name: string;
|
|
254
|
-
/** @description
|
|
374
|
+
/** @description Kind-specific destination configuration. Custom update is optional and explicit; omission never causes a second create. */
|
|
255
375
|
config: {
|
|
256
376
|
[key: string]: unknown;
|
|
257
|
-
}
|
|
377
|
+
} & (components["schemas"]["CustomTicketDestinationConfigDto"] | {
|
|
378
|
+
[key: string]: unknown;
|
|
379
|
+
});
|
|
258
380
|
/** @description Provider credentials (write-only, encrypted). */
|
|
259
381
|
credentials: {
|
|
260
382
|
[key: string]: string;
|
|
@@ -268,9 +390,12 @@ interface components {
|
|
|
268
390
|
};
|
|
269
391
|
V1UpdateTicketDestinationDto: {
|
|
270
392
|
name?: string;
|
|
393
|
+
/** @description Kind-specific configuration including explicit custom update capability. */
|
|
271
394
|
config?: {
|
|
272
395
|
[key: string]: unknown;
|
|
273
|
-
}
|
|
396
|
+
} & (components["schemas"]["CustomTicketDestinationConfigDto"] | {
|
|
397
|
+
[key: string]: unknown;
|
|
398
|
+
});
|
|
274
399
|
/** @description Present = credential rotation. */
|
|
275
400
|
credentials?: {
|
|
276
401
|
[key: string]: string;
|
|
@@ -407,6 +532,16 @@ interface components {
|
|
|
407
532
|
folderId: string | null;
|
|
408
533
|
};
|
|
409
534
|
V1CreateTextnoteBodyDto: {
|
|
535
|
+
/**
|
|
536
|
+
* @description Collection provenance. Omitted historical inputs remain unknown and cannot start follow-up.
|
|
537
|
+
* @enum {string}
|
|
538
|
+
*/
|
|
539
|
+
collectionKind?: "standalone" | "flow";
|
|
540
|
+
/**
|
|
541
|
+
* Format: ObjectId
|
|
542
|
+
* @description Required for flow captures; validated against the company and instrument.
|
|
543
|
+
*/
|
|
544
|
+
flowId?: string;
|
|
410
545
|
/** @description Opaque invitation or prepared journey-entry response token. Consumed after saving feedback; never stored on the review. */
|
|
411
546
|
dispatchToken?: string;
|
|
412
547
|
/**
|
|
@@ -429,6 +564,16 @@ interface components {
|
|
|
429
564
|
responseChannel?: string;
|
|
430
565
|
};
|
|
431
566
|
V1CreateVoicemailBodyDto: {
|
|
567
|
+
/**
|
|
568
|
+
* @description Collection provenance. Omitted historical inputs remain unknown and cannot start follow-up.
|
|
569
|
+
* @enum {string}
|
|
570
|
+
*/
|
|
571
|
+
collectionKind?: "standalone" | "flow";
|
|
572
|
+
/**
|
|
573
|
+
* Format: ObjectId
|
|
574
|
+
* @description Required for flow captures; validated against the company and instrument.
|
|
575
|
+
*/
|
|
576
|
+
flowId?: string;
|
|
432
577
|
/** @description Opaque invitation or prepared journey-entry response token. Consumed after saving feedback; never stored on the review. */
|
|
433
578
|
dispatchToken?: string;
|
|
434
579
|
/**
|
|
@@ -488,6 +633,16 @@ interface components {
|
|
|
488
633
|
revoked: boolean;
|
|
489
634
|
};
|
|
490
635
|
V1CreateNpsBodyDto: {
|
|
636
|
+
/**
|
|
637
|
+
* @description Collection provenance. Omitted historical inputs remain unknown and cannot start follow-up.
|
|
638
|
+
* @enum {string}
|
|
639
|
+
*/
|
|
640
|
+
collectionKind?: "standalone" | "flow";
|
|
641
|
+
/**
|
|
642
|
+
* Format: ObjectId
|
|
643
|
+
* @description Required for flow captures; validated against the company and instrument.
|
|
644
|
+
*/
|
|
645
|
+
flowId?: string;
|
|
491
646
|
/**
|
|
492
647
|
* @description NPS score 0-10 (0-6 detractor, 7-8 passive, 9-10 promoter)
|
|
493
648
|
* @example 9
|
|
@@ -526,6 +681,16 @@ interface components {
|
|
|
526
681
|
description: string;
|
|
527
682
|
};
|
|
528
683
|
V1CreateCsatBodyDto: {
|
|
684
|
+
/**
|
|
685
|
+
* @description Collection provenance. Omitted historical inputs remain unknown and cannot start follow-up.
|
|
686
|
+
* @enum {string}
|
|
687
|
+
*/
|
|
688
|
+
collectionKind?: "standalone" | "flow";
|
|
689
|
+
/**
|
|
690
|
+
* Format: ObjectId
|
|
691
|
+
* @description Required for flow captures; validated against the company and instrument.
|
|
692
|
+
*/
|
|
693
|
+
flowId?: string;
|
|
529
694
|
/**
|
|
530
695
|
* @description CSAT satisfaction score 1-5
|
|
531
696
|
* @example 4
|
|
@@ -559,6 +724,16 @@ interface components {
|
|
|
559
724
|
description: string;
|
|
560
725
|
};
|
|
561
726
|
V1CreateCesBodyDto: {
|
|
727
|
+
/**
|
|
728
|
+
* @description Collection provenance. Omitted historical inputs remain unknown and cannot start follow-up.
|
|
729
|
+
* @enum {string}
|
|
730
|
+
*/
|
|
731
|
+
collectionKind?: "standalone" | "flow";
|
|
732
|
+
/**
|
|
733
|
+
* Format: ObjectId
|
|
734
|
+
* @description Required for flow captures; validated against the company and instrument.
|
|
735
|
+
*/
|
|
736
|
+
flowId?: string;
|
|
562
737
|
/**
|
|
563
738
|
* @description CES effort score 1-5
|
|
564
739
|
* @example 4
|
|
@@ -608,6 +783,16 @@ interface components {
|
|
|
608
783
|
externalId?: string;
|
|
609
784
|
};
|
|
610
785
|
V1CaptureBodyDto: {
|
|
786
|
+
/**
|
|
787
|
+
* @description Collection provenance. Omitted historical inputs remain unknown and cannot start follow-up.
|
|
788
|
+
* @enum {string}
|
|
789
|
+
*/
|
|
790
|
+
collectionKind?: "standalone" | "flow";
|
|
791
|
+
/**
|
|
792
|
+
* Format: ObjectId
|
|
793
|
+
* @description Required for flow captures; validated against the company and instrument.
|
|
794
|
+
*/
|
|
795
|
+
flowId?: string;
|
|
611
796
|
/** @description Opaque invitation or prepared journey-entry response token. Consumed after saving feedback; never stored on the review. */
|
|
612
797
|
dispatchToken?: string;
|
|
613
798
|
/** @description Client-generated idempotency id */
|
|
@@ -1002,6 +1187,96 @@ interface components {
|
|
|
1002
1187
|
defaultLocale?: "es" | "en";
|
|
1003
1188
|
localizedContent?: components["schemas"]["CesToolLocalizedContentBodyDTO"][];
|
|
1004
1189
|
};
|
|
1190
|
+
PublicTicketOriginDto: {
|
|
1191
|
+
/** @enum {string} */
|
|
1192
|
+
tool: "woku" | "nps" | "form" | "csat" | "ces";
|
|
1193
|
+
refId: string;
|
|
1194
|
+
instrumentId?: string;
|
|
1195
|
+
instrumentName?: string;
|
|
1196
|
+
trackers?: {
|
|
1197
|
+
trackerId?: string;
|
|
1198
|
+
name?: string;
|
|
1199
|
+
value?: string;
|
|
1200
|
+
}[];
|
|
1201
|
+
};
|
|
1202
|
+
TicketFollowUpDto: {
|
|
1203
|
+
conversationId?: string;
|
|
1204
|
+
/** @enum {string} */
|
|
1205
|
+
state: "not_applicable" | "pending" | "initial_sent" | "awaiting_detail" | "closing" | "completed" | "timed_out" | "cancelled";
|
|
1206
|
+
reason?: string;
|
|
1207
|
+
availableSummaryVersion?: number;
|
|
1208
|
+
/**
|
|
1209
|
+
* @description Current result of applying follow-up evidence to the ticket.
|
|
1210
|
+
* @enum {string}
|
|
1211
|
+
*/
|
|
1212
|
+
enrichmentState?: "processing" | "applied" | "failed" | "skipped";
|
|
1213
|
+
/** @description Machine-readable reason for the enrichment result, without provider details or credentials. */
|
|
1214
|
+
enrichmentReason?: string;
|
|
1215
|
+
/** @description Last summary version successfully applied to this ticket. Conversation completion alone does not imply enrichment. */
|
|
1216
|
+
appliedSummaryVersion?: number;
|
|
1217
|
+
/** Format: date-time */
|
|
1218
|
+
enrichedAt?: string;
|
|
1219
|
+
};
|
|
1220
|
+
PublicTicketDto: {
|
|
1221
|
+
_id: string;
|
|
1222
|
+
code?: string;
|
|
1223
|
+
title: string;
|
|
1224
|
+
/** @enum {string} */
|
|
1225
|
+
severity: "high" | "medium" | "low";
|
|
1226
|
+
destinationId?: string;
|
|
1227
|
+
origin: components["schemas"]["PublicTicketOriginDto"];
|
|
1228
|
+
/**
|
|
1229
|
+
* @description Monotonic version of generated ticket content.
|
|
1230
|
+
* @default 1
|
|
1231
|
+
*/
|
|
1232
|
+
contentVersion: number;
|
|
1233
|
+
followUp?: components["schemas"]["TicketFollowUpDto"];
|
|
1234
|
+
score?: {
|
|
1235
|
+
value?: number;
|
|
1236
|
+
max?: number;
|
|
1237
|
+
kind?: string;
|
|
1238
|
+
display?: string;
|
|
1239
|
+
};
|
|
1240
|
+
aiSummary?: string;
|
|
1241
|
+
aiCategory?: string;
|
|
1242
|
+
caseDescription?: string;
|
|
1243
|
+
historyHighlights?: string[];
|
|
1244
|
+
whatCustomerWants?: string;
|
|
1245
|
+
suggestedResolution?: string;
|
|
1246
|
+
language?: string;
|
|
1247
|
+
churnRisk?: string;
|
|
1248
|
+
criteria?: string[];
|
|
1249
|
+
historySnapshot?: {
|
|
1250
|
+
[key: string]: unknown;
|
|
1251
|
+
};
|
|
1252
|
+
sentiment?: string;
|
|
1253
|
+
generatedByAI?: boolean;
|
|
1254
|
+
customerComment?: {
|
|
1255
|
+
text?: string;
|
|
1256
|
+
isAudio?: boolean;
|
|
1257
|
+
audioUrl?: string;
|
|
1258
|
+
transcription?: string;
|
|
1259
|
+
};
|
|
1260
|
+
client?: {
|
|
1261
|
+
clientId?: string;
|
|
1262
|
+
name?: string;
|
|
1263
|
+
email?: string;
|
|
1264
|
+
phone?: string;
|
|
1265
|
+
};
|
|
1266
|
+
timeline?: {
|
|
1267
|
+
[key: string]: unknown;
|
|
1268
|
+
}[];
|
|
1269
|
+
/** Format: date-time */
|
|
1270
|
+
createdAt?: string;
|
|
1271
|
+
/** Format: date-time */
|
|
1272
|
+
updatedAt?: string;
|
|
1273
|
+
};
|
|
1274
|
+
PublicTicketsPageDto: {
|
|
1275
|
+
data: components["schemas"]["PublicTicketDto"][];
|
|
1276
|
+
total: number;
|
|
1277
|
+
page: number;
|
|
1278
|
+
limit: number;
|
|
1279
|
+
};
|
|
1005
1280
|
UpdateTicketBodyDTO: {
|
|
1006
1281
|
title?: string;
|
|
1007
1282
|
/** @enum {string} */
|
|
@@ -1519,6 +1794,34 @@ interface components {
|
|
|
1519
1794
|
pathItems: never;
|
|
1520
1795
|
}
|
|
1521
1796
|
interface operations {
|
|
1797
|
+
V1FollowUpsController_get: {
|
|
1798
|
+
parameters: {
|
|
1799
|
+
query?: never;
|
|
1800
|
+
header?: never;
|
|
1801
|
+
path: {
|
|
1802
|
+
id: string;
|
|
1803
|
+
};
|
|
1804
|
+
cookie?: never;
|
|
1805
|
+
};
|
|
1806
|
+
requestBody?: never;
|
|
1807
|
+
responses: {
|
|
1808
|
+
200: {
|
|
1809
|
+
headers: {
|
|
1810
|
+
[name: string]: unknown;
|
|
1811
|
+
};
|
|
1812
|
+
content: {
|
|
1813
|
+
"application/json": components["schemas"]["FollowUpEnvelopeDto"];
|
|
1814
|
+
};
|
|
1815
|
+
};
|
|
1816
|
+
/** @description Follow-up not found in this company */
|
|
1817
|
+
404: {
|
|
1818
|
+
headers: {
|
|
1819
|
+
[name: string]: unknown;
|
|
1820
|
+
};
|
|
1821
|
+
content?: never;
|
|
1822
|
+
};
|
|
1823
|
+
};
|
|
1824
|
+
};
|
|
1522
1825
|
V1Controller_health: {
|
|
1523
1826
|
parameters: {
|
|
1524
1827
|
query?: never;
|
|
@@ -4875,7 +5178,9 @@ interface operations {
|
|
|
4875
5178
|
headers: {
|
|
4876
5179
|
[name: string]: unknown;
|
|
4877
5180
|
};
|
|
4878
|
-
content
|
|
5181
|
+
content: {
|
|
5182
|
+
"application/json": components["schemas"]["PublicTicketsPageDto"];
|
|
5183
|
+
};
|
|
4879
5184
|
};
|
|
4880
5185
|
/** @description Validation error */
|
|
4881
5186
|
400: {
|
|
@@ -4929,7 +5234,9 @@ interface operations {
|
|
|
4929
5234
|
headers: {
|
|
4930
5235
|
[name: string]: unknown;
|
|
4931
5236
|
};
|
|
4932
|
-
content
|
|
5237
|
+
content: {
|
|
5238
|
+
"application/json": components["schemas"]["PublicTicketDto"];
|
|
5239
|
+
};
|
|
4933
5240
|
};
|
|
4934
5241
|
/** @description Ticket not found */
|
|
4935
5242
|
404: {
|
|
@@ -4960,7 +5267,9 @@ interface operations {
|
|
|
4960
5267
|
headers: {
|
|
4961
5268
|
[name: string]: unknown;
|
|
4962
5269
|
};
|
|
4963
|
-
content
|
|
5270
|
+
content: {
|
|
5271
|
+
"application/json": components["schemas"]["PublicTicketDto"];
|
|
5272
|
+
};
|
|
4964
5273
|
};
|
|
4965
5274
|
/** @description Validation error */
|
|
4966
5275
|
400: {
|
|
@@ -5937,6 +6246,22 @@ type ShareWokuParams = Schemas['V1ShareWokuBodyDto'];
|
|
|
5937
6246
|
type UpdateTicketParams = Schemas['UpdateTicketBodyDTO'];
|
|
5938
6247
|
type CreateTicketDestinationParams = Schemas['V1CreateTicketDestinationDto'];
|
|
5939
6248
|
type UpdateTicketDestinationParams = Schemas['V1UpdateTicketDestinationDto'];
|
|
6249
|
+
/** Explicit receiver contract for updating the original custom support case. */
|
|
6250
|
+
type CustomTicketUpdateConfig = {
|
|
6251
|
+
mode: 'upsert';
|
|
6252
|
+
responseIdPath?: string;
|
|
6253
|
+
} | {
|
|
6254
|
+
mode: 'remote-id';
|
|
6255
|
+
url: string;
|
|
6256
|
+
method?: 'PUT' | 'PATCH';
|
|
6257
|
+
responseIdPath: string;
|
|
6258
|
+
};
|
|
6259
|
+
type CustomTicketDestinationConfig = {
|
|
6260
|
+
url: string;
|
|
6261
|
+
method?: 'POST' | 'PUT';
|
|
6262
|
+
headers?: Record<string, string>;
|
|
6263
|
+
update?: CustomTicketUpdateConfig;
|
|
6264
|
+
};
|
|
5940
6265
|
type CreateActionPlanGroupParams = Schemas['CreateActionPlanGroupDto'];
|
|
5941
6266
|
type UpdateActionPlanGroupParams = Schemas['UpdateActionPlanGroupDto'];
|
|
5942
6267
|
type CreateActionPlanTaskParams = Schemas['CreateActionPlanTaskDto'];
|
|
@@ -6037,6 +6362,114 @@ interface InvitationsResult {
|
|
|
6037
6362
|
}>;
|
|
6038
6363
|
[key: string]: unknown;
|
|
6039
6364
|
}
|
|
6365
|
+
type FollowUpState = 'pending' | 'initial_sent' | 'awaiting_detail' | 'closing' | 'completed' | 'timed_out' | 'cancelled';
|
|
6366
|
+
interface FollowUpOrigin {
|
|
6367
|
+
tool: 'woku' | 'nps' | 'csat' | 'ces';
|
|
6368
|
+
refId: string;
|
|
6369
|
+
instrumentId?: string;
|
|
6370
|
+
}
|
|
6371
|
+
/** Lightweight evidence state. Completion alone does not mean evidence was applied. */
|
|
6372
|
+
interface FollowUp {
|
|
6373
|
+
conversationId?: string;
|
|
6374
|
+
state: FollowUpState | 'not_applicable';
|
|
6375
|
+
reason?: string;
|
|
6376
|
+
availableSummaryVersion?: number;
|
|
6377
|
+
appliedSummaryVersion?: number;
|
|
6378
|
+
enrichedAt?: string;
|
|
6379
|
+
/** Ticket processing status; conversation completion does not imply application. */
|
|
6380
|
+
enrichmentState?: 'processing' | 'applied' | 'failed' | 'skipped';
|
|
6381
|
+
enrichmentReason?: string;
|
|
6382
|
+
}
|
|
6383
|
+
/**
|
|
6384
|
+
* WhatsApp line of a follow-up. `survey_thread`: the agent continued the
|
|
6385
|
+
* survey conversation on the survey number. `follow_up_number`: it wrote from
|
|
6386
|
+
* the dedicated follow-up number. Absent for email.
|
|
6387
|
+
*/
|
|
6388
|
+
type FollowUpLine = 'survey_thread' | 'follow_up_number';
|
|
6389
|
+
/**
|
|
6390
|
+
* `survey`: the survey exchange that preceded the follow-up (prelude).
|
|
6391
|
+
* `follow_up`: the follow-up itself.
|
|
6392
|
+
*/
|
|
6393
|
+
type FollowUpMessagePhase = 'survey' | 'follow_up';
|
|
6394
|
+
/**
|
|
6395
|
+
* A file the customer sent. `adminUrl` opens it in the woku admin after login
|
|
6396
|
+
* and a company check; the file itself and storage URLs are never returned.
|
|
6397
|
+
*/
|
|
6398
|
+
interface FollowUpAttachment {
|
|
6399
|
+
/** Stable number of the file in the conversation (prelude included). */
|
|
6400
|
+
index: number;
|
|
6401
|
+
/** Label in the conversation language, e.g. "Archivo 2" or "File 2". */
|
|
6402
|
+
label: string;
|
|
6403
|
+
kind: 'image' | 'audio' | 'document' | 'unsupported';
|
|
6404
|
+
/** Private original file. Absent while pending or when nothing was stored. */
|
|
6405
|
+
fileId?: string;
|
|
6406
|
+
/** Converted copy the model read, when there was a conversion. */
|
|
6407
|
+
readableFileId?: string;
|
|
6408
|
+
filename: string;
|
|
6409
|
+
mimeType: string;
|
|
6410
|
+
status: 'pending' | 'ready' | 'failed' | 'unsupported';
|
|
6411
|
+
/** Transcript (audio) or description (image, document). Untrusted customer content. */
|
|
6412
|
+
text?: string;
|
|
6413
|
+
/** Stable reason code when failed or unsupported (e.g. `video`, `read_failed`). */
|
|
6414
|
+
failureReason?: string;
|
|
6415
|
+
adminUrl?: string;
|
|
6416
|
+
}
|
|
6417
|
+
/** A file the executive summary cites as "(Archivo N)". */
|
|
6418
|
+
interface FollowUpCitation {
|
|
6419
|
+
index: number;
|
|
6420
|
+
label: string;
|
|
6421
|
+
fileId?: string;
|
|
6422
|
+
/** What the file supports in the summary. */
|
|
6423
|
+
supports: string;
|
|
6424
|
+
adminUrl?: string;
|
|
6425
|
+
}
|
|
6426
|
+
interface FollowUpMessage {
|
|
6427
|
+
role: 'agent' | 'client';
|
|
6428
|
+
/** May be empty when the message only has files. */
|
|
6429
|
+
content: string;
|
|
6430
|
+
timestamp: string;
|
|
6431
|
+
phase: FollowUpMessagePhase;
|
|
6432
|
+
responseType?: string;
|
|
6433
|
+
selectedOption?: string;
|
|
6434
|
+
attachments?: FollowUpAttachment[];
|
|
6435
|
+
}
|
|
6436
|
+
/** Authorized conversation detail, without response tokens or transport credentials. */
|
|
6437
|
+
interface FollowUpConversation {
|
|
6438
|
+
_id: string;
|
|
6439
|
+
companyId: string;
|
|
6440
|
+
origin: FollowUpOrigin;
|
|
6441
|
+
wokuId?: string;
|
|
6442
|
+
reviewId?: string;
|
|
6443
|
+
reviewType: 'textnote' | 'voicemail';
|
|
6444
|
+
originalReview: string;
|
|
6445
|
+
originalQualification?: number;
|
|
6446
|
+
state: FollowUpState;
|
|
6447
|
+
channel: Channel;
|
|
6448
|
+
line?: FollowUpLine;
|
|
6449
|
+
reason?: string;
|
|
6450
|
+
messages: FollowUpMessage[];
|
|
6451
|
+
executiveSummary?: string;
|
|
6452
|
+
actionItems?: string[];
|
|
6453
|
+
sentiment?: string;
|
|
6454
|
+
topics?: string[];
|
|
6455
|
+
summaryCitations?: FollowUpCitation[];
|
|
6456
|
+
summaryVersion?: number;
|
|
6457
|
+
createdAt?: string;
|
|
6458
|
+
updatedAt?: string;
|
|
6459
|
+
}
|
|
6460
|
+
interface TicketOriginTracker {
|
|
6461
|
+
trackerId?: string;
|
|
6462
|
+
name?: string;
|
|
6463
|
+
value: string;
|
|
6464
|
+
}
|
|
6465
|
+
interface TicketOrigin {
|
|
6466
|
+
tool: FollowUpOrigin['tool'] | 'form';
|
|
6467
|
+
refId: string;
|
|
6468
|
+
instrumentId?: string;
|
|
6469
|
+
instrumentName?: string;
|
|
6470
|
+
trackers?: TicketOriginTracker[];
|
|
6471
|
+
[key: string]: unknown;
|
|
6472
|
+
}
|
|
6040
6473
|
/** Support ticket (curated allow-list). */
|
|
6041
6474
|
interface Ticket {
|
|
6042
6475
|
_id: string;
|
|
@@ -6044,7 +6477,9 @@ interface Ticket {
|
|
|
6044
6477
|
title: string;
|
|
6045
6478
|
severity: Severity;
|
|
6046
6479
|
destinationId?: string;
|
|
6047
|
-
origin?:
|
|
6480
|
+
origin?: TicketOrigin;
|
|
6481
|
+
followUp?: FollowUp;
|
|
6482
|
+
contentVersion?: number;
|
|
6048
6483
|
score?: WokuRecord;
|
|
6049
6484
|
aiSummary?: string;
|
|
6050
6485
|
aiCategory?: string;
|
|
@@ -6131,6 +6566,13 @@ interface ApiKeyResult {
|
|
|
6131
6566
|
[key: string]: unknown;
|
|
6132
6567
|
}
|
|
6133
6568
|
|
|
6569
|
+
/** Read authorized follow-up conversations with a company management secret. */
|
|
6570
|
+
declare class FollowUps {
|
|
6571
|
+
private readonly client;
|
|
6572
|
+
constructor(client: WokuClient);
|
|
6573
|
+
get(id: string, opts?: RequestOptions): Promise<FollowUpConversation>;
|
|
6574
|
+
}
|
|
6575
|
+
|
|
6134
6576
|
/** A VoC entity type that can carry tracker values. */
|
|
6135
6577
|
type TrackerEntityType = 'nps' | 'csat' | 'ces' | 'form' | 'flow';
|
|
6136
6578
|
interface ListTrackersParams {
|
|
@@ -6581,6 +7023,7 @@ declare class Woku {
|
|
|
6581
7023
|
readonly actionPlans: ActionPlans;
|
|
6582
7024
|
readonly actionPlanGroups: ActionPlanGroups;
|
|
6583
7025
|
readonly tickets: Tickets;
|
|
7026
|
+
readonly followUps: FollowUps;
|
|
6584
7027
|
readonly ticketDestinations: TicketDestinations;
|
|
6585
7028
|
readonly dispatches: Dispatches;
|
|
6586
7029
|
readonly reports: Reports;
|
|
@@ -6687,4 +7130,4 @@ declare class InternalServerError extends WokuAPIError {
|
|
|
6687
7130
|
constructor(...args: ConstructorParameters<typeof WokuAPIError>);
|
|
6688
7131
|
}
|
|
6689
7132
|
|
|
6690
|
-
export { type ApiKeyResult, type AssignTrackerByNameParams, AuthenticationError, BadRequestError, type CesTool, type Channel, ConflictError, type CreateActionPlanGroupParams, type CreateActionPlanTaskParams, type CreateCesToolParams, type CreateCsatToolParams, type CreateNpsToolParams, type CreateTicketDestinationParams, type CreateTrackerParams, type CreateWokuParams, type CreatedJourney, type CsatTool, type DeletedResult, type Dispatch, type DispatchStats, type EnrollInput, type EntitiesByTrackers, type FeedbackType, type FetchLike, InternalServerError, type InvitationsResult, type Journey, type JourneyConnection, type JourneyEnrollment, type JourneyEnrollmentPage, type JourneyEntryInfo, type JourneyEventInput, type JourneyInput, type JourneyMoment, type JourneyMomentPreview, type JourneyMomentTrigger, type JourneyRecipients, type JourneySendWindow, type JourneyStartMode, type JourneyWebhook, Journeys, type ListJourneyEnrollmentsParams, type Locale, Media, type MediaUploadParams, type MediaUploadResult, type MoveWokuParams, NotFoundError, type NpsTool, Page, type PageResponse, PayloadTooLargeError, PermissionDeniedError, type PostPlanReplyParams, type PrepareJourneyEntryInput, type PreparedJourneyEntry, RateLimitError, type ReorderActionPlanTasksParams, type RequestOptions, type Schemas, type SearchEntitiesByTrackersParams, type SendCesInvitationsParams, type SendCsatInvitationsParams, type SendInvitationsParams, type SendNpsInvitationsParams, type Severity, type ShareWokuParams, type TestConnectionResult, type Ticket, type TicketStats, type Tracker, UnprocessableEntityError, type UpdateActionPlanGroupParams, type UpdateActionPlanTaskParams, type UpdateCesToolParams, type UpdateCsatToolParams, type UpdateNpsToolParams, type UpdateTicketDestinationParams, type UpdateTicketParams, type UpdateTrackerParams, type UpdateWokuParams, type UpdateWokuSettingsParams, Woku, WokuAPIError, WokuClient, type WokuClientOptions, WokuConnectionError, WokuError, type WokuErrorBody, type WokuRecord, type WokuResource, WokuTimeoutError };
|
|
7133
|
+
export { type ApiKeyResult, type AssignTrackerByNameParams, AuthenticationError, BadRequestError, type CesTool, type Channel, ConflictError, type CreateActionPlanGroupParams, type CreateActionPlanTaskParams, type CreateCesToolParams, type CreateCsatToolParams, type CreateNpsToolParams, type CreateTicketDestinationParams, type CreateTrackerParams, type CreateWokuParams, type CreatedJourney, type CsatTool, type CustomTicketDestinationConfig, type CustomTicketUpdateConfig, type DeletedResult, type Dispatch, type DispatchStats, type EnrollInput, type EntitiesByTrackers, type FeedbackType, type FetchLike, type FollowUp, type FollowUpAttachment, type FollowUpCitation, type FollowUpConversation, type FollowUpLine, type FollowUpMessage, type FollowUpMessagePhase, type FollowUpOrigin, type FollowUpState, FollowUps, InternalServerError, type InvitationsResult, type Journey, type JourneyConnection, type JourneyEnrollment, type JourneyEnrollmentPage, type JourneyEntryInfo, type JourneyEventInput, type JourneyInput, type JourneyMoment, type JourneyMomentPreview, type JourneyMomentTrigger, type JourneyRecipients, type JourneySendWindow, type JourneyStartMode, type JourneyWebhook, Journeys, type ListJourneyEnrollmentsParams, type Locale, Media, type MediaUploadParams, type MediaUploadResult, type MoveWokuParams, NotFoundError, type NpsTool, Page, type PageResponse, PayloadTooLargeError, PermissionDeniedError, type PostPlanReplyParams, type PrepareJourneyEntryInput, type PreparedJourneyEntry, RateLimitError, type ReorderActionPlanTasksParams, type RequestOptions, type Schemas, type SearchEntitiesByTrackersParams, type SendCesInvitationsParams, type SendCsatInvitationsParams, type SendInvitationsParams, type SendNpsInvitationsParams, type Severity, type ShareWokuParams, type TestConnectionResult, type Ticket, type TicketOrigin, type TicketOriginTracker, type TicketStats, type Tracker, UnprocessableEntityError, type UpdateActionPlanGroupParams, type UpdateActionPlanTaskParams, type UpdateCesToolParams, type UpdateCsatToolParams, type UpdateNpsToolParams, type UpdateTicketDestinationParams, type UpdateTicketParams, type UpdateTrackerParams, type UpdateWokuParams, type UpdateWokuSettingsParams, Woku, WokuAPIError, WokuClient, type WokuClientOptions, WokuConnectionError, WokuError, type WokuErrorBody, type WokuRecord, type WokuResource, WokuTimeoutError };
|
package/dist/index.js
CHANGED
|
@@ -20,8 +20,23 @@ var Media = class {
|
|
|
20
20
|
}
|
|
21
21
|
};
|
|
22
22
|
|
|
23
|
+
// src/resources/follow-ups.ts
|
|
24
|
+
var FollowUps = class {
|
|
25
|
+
constructor(client) {
|
|
26
|
+
this.client = client;
|
|
27
|
+
}
|
|
28
|
+
async get(id, opts) {
|
|
29
|
+
const result = await this.client.request(
|
|
30
|
+
"get",
|
|
31
|
+
`/v1/follow-ups/${encodeURIComponent(id)}`,
|
|
32
|
+
opts
|
|
33
|
+
);
|
|
34
|
+
return result.data;
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
|
|
23
38
|
// package.json
|
|
24
|
-
var version = "0.
|
|
39
|
+
var version = "0.4.0";
|
|
25
40
|
|
|
26
41
|
// src/core/errors.ts
|
|
27
42
|
var WokuError = class extends Error {
|
|
@@ -1525,6 +1540,7 @@ var Woku = class {
|
|
|
1525
1540
|
this.actionPlans = new ActionPlans(this.client);
|
|
1526
1541
|
this.actionPlanGroups = new ActionPlanGroups(this.client);
|
|
1527
1542
|
this.tickets = new Tickets(this.client);
|
|
1543
|
+
this.followUps = new FollowUps(this.client);
|
|
1528
1544
|
this.ticketDestinations = new TicketDestinations(this.client);
|
|
1529
1545
|
this.dispatches = new Dispatches(this.client);
|
|
1530
1546
|
this.reports = new Reports(this.client);
|
|
@@ -1534,6 +1550,6 @@ var Woku = class {
|
|
|
1534
1550
|
}
|
|
1535
1551
|
};
|
|
1536
1552
|
|
|
1537
|
-
export { AuthenticationError, BadRequestError, ConflictError, InternalServerError, Journeys, Media, NotFoundError, Page, PayloadTooLargeError, PermissionDeniedError, RateLimitError, UnprocessableEntityError, Woku, WokuAPIError, WokuClient, WokuConnectionError, WokuError, WokuTimeoutError };
|
|
1553
|
+
export { AuthenticationError, BadRequestError, ConflictError, FollowUps, InternalServerError, Journeys, Media, NotFoundError, Page, PayloadTooLargeError, PermissionDeniedError, RateLimitError, UnprocessableEntityError, Woku, WokuAPIError, WokuClient, WokuConnectionError, WokuError, WokuTimeoutError };
|
|
1538
1554
|
//# sourceMappingURL=index.js.map
|
|
1539
1555
|
//# sourceMappingURL=index.js.map
|