@raconte/node-sdk 0.1.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.
Files changed (40) hide show
  1. package/README.md +64 -0
  2. package/dist/client.d.ts +23 -0
  3. package/dist/client.js +23 -0
  4. package/dist/generated/client/client.gen.d.ts +2 -0
  5. package/dist/generated/client/client.gen.js +229 -0
  6. package/dist/generated/client/index.d.ts +8 -0
  7. package/dist/generated/client/index.js +6 -0
  8. package/dist/generated/client/types.gen.d.ts +117 -0
  9. package/dist/generated/client/types.gen.js +2 -0
  10. package/dist/generated/client/utils.gen.d.ts +33 -0
  11. package/dist/generated/client/utils.gen.js +231 -0
  12. package/dist/generated/client.gen.d.ts +12 -0
  13. package/dist/generated/client.gen.js +3 -0
  14. package/dist/generated/core/auth.gen.d.ts +18 -0
  15. package/dist/generated/core/auth.gen.js +14 -0
  16. package/dist/generated/core/bodySerializer.gen.d.ts +25 -0
  17. package/dist/generated/core/bodySerializer.gen.js +57 -0
  18. package/dist/generated/core/params.gen.d.ts +43 -0
  19. package/dist/generated/core/params.gen.js +100 -0
  20. package/dist/generated/core/pathSerializer.gen.d.ts +33 -0
  21. package/dist/generated/core/pathSerializer.gen.js +114 -0
  22. package/dist/generated/core/queryKeySerializer.gen.d.ts +18 -0
  23. package/dist/generated/core/queryKeySerializer.gen.js +99 -0
  24. package/dist/generated/core/serverSentEvents.gen.d.ts +71 -0
  25. package/dist/generated/core/serverSentEvents.gen.js +137 -0
  26. package/dist/generated/core/types.gen.d.ts +78 -0
  27. package/dist/generated/core/types.gen.js +2 -0
  28. package/dist/generated/core/utils.gen.d.ts +19 -0
  29. package/dist/generated/core/utils.gen.js +87 -0
  30. package/dist/generated/index.d.ts +2 -0
  31. package/dist/generated/index.js +3 -0
  32. package/dist/generated/sdk.gen.d.ts +38 -0
  33. package/dist/generated/sdk.gen.js +133 -0
  34. package/dist/generated/types.gen.d.ts +705 -0
  35. package/dist/generated/types.gen.js +12 -0
  36. package/dist/generated/zod.gen.d.ts +1294 -0
  37. package/dist/generated/zod.gen.js +589 -0
  38. package/dist/index.d.ts +13 -0
  39. package/dist/index.js +11 -0
  40. package/package.json +55 -0
@@ -0,0 +1,705 @@
1
+ export type ClientOptions = {
2
+ baseUrl: "https://api.raconte.ai" | (string & {});
3
+ };
4
+ /**
5
+ * VoiceTestAudioUrlSchema
6
+ *
7
+ * Short-lived presigned URL for the voice preview audio. Generated on first request if missing.
8
+ */
9
+ export type VoiceTestAudioUrlSchema = {
10
+ url: string;
11
+ expiresAt: string;
12
+ mimeType: string;
13
+ };
14
+ /**
15
+ * VoiceListSchema
16
+ *
17
+ * List of voices matching the requested language filter.
18
+ */
19
+ export type VoiceListSchema = Array<VoiceSchema>;
20
+ /**
21
+ * VoiceSchema
22
+ *
23
+ * A voice available for interview narration. Provider-specific identifiers are not exposed publicly.
24
+ */
25
+ export type VoiceSchema = {
26
+ id: string;
27
+ name: string;
28
+ language: string;
29
+ gender: "M" | "F";
30
+ provider: "gradium" | "elevenlabs";
31
+ };
32
+ /**
33
+ * InterviewMessageAudioUrlSchema
34
+ *
35
+ * Short-lived presigned URL for the audio attached to an interview message.
36
+ */
37
+ export type InterviewMessageAudioUrlSchema = {
38
+ url: string;
39
+ expiresAt: string;
40
+ mimeType: string;
41
+ };
42
+ /**
43
+ * InterviewLogListSchema
44
+ *
45
+ * Chronological history of events on an interview, most recent first.
46
+ */
47
+ export type InterviewLogListSchema = Array<InterviewLogSchema>;
48
+ /**
49
+ * InterviewLogSchema
50
+ *
51
+ * Schema for a single interview log entry. target is the email or phone for send events, null for status transitions. invitationId points to the specific invitation that the event concerns; null for legacy rows that predate the invitation split.
52
+ */
53
+ export type InterviewLogSchema = {
54
+ id: string;
55
+ /**
56
+ * InterviewLogType
57
+ *
58
+ * Type of an interview log event. archived/restored are interview-level transitions (no invitationId); the others are invitation-scoped.
59
+ */
60
+ type: "email_sent" | "sms_sent" | "started" | "completed" | "cancelled" | "reactivated" | "archived" | "restored";
61
+ target: string | null;
62
+ invitationId: string | null;
63
+ createdAt: string;
64
+ };
65
+ /**
66
+ * InterviewInvitationSchema
67
+ *
68
+ * Full interview invitation payload including transcript messages. summary and per-message sentiments are populated asynchronously once the invitation reaches the completed state.
69
+ */
70
+ export type InterviewInvitationSchema = {
71
+ id: string;
72
+ interviewId: string;
73
+ slug: string;
74
+ status: InterviewInvitationStatus;
75
+ name: string | null;
76
+ recipientEmail: string | null;
77
+ recipientPhone: string | null;
78
+ summary: string | null;
79
+ archivedAt: string | null;
80
+ createdAt: string;
81
+ updatedAt: string;
82
+ messages?: Array<InterviewMessageSchema>;
83
+ };
84
+ /**
85
+ * InterviewMessageSchema
86
+ *
87
+ * Schema for an interview message. audioAssetId is null when no audio was recorded for that message (legacy messages, deleted audio, etc.). audioPeaks is a base64-encoded uint8 waveform summary of the attached audio (128 amplitude bins, 0-255), null when no audio is attached or when peaks have not been computed yet for a legacy asset. sentiment is populated only on user-role messages once async insights generation has completed.
88
+ */
89
+ export type InterviewMessageSchema = {
90
+ id: string;
91
+ role: "user" | "assistant" | "system";
92
+ content: string;
93
+ audioAssetId: string | null;
94
+ audioDurationMs: number | null;
95
+ audioPeaks: string | null;
96
+ sentiment: "positive" | "neutral" | "negative" | null;
97
+ createdAt: string;
98
+ };
99
+ /**
100
+ * InterviewInvitationStatus
101
+ *
102
+ * Lifecycle state of an invitation (the unit that gets sent and produces a transcript).
103
+ */
104
+ export declare const InterviewInvitationStatus: {
105
+ readonly READY: "ready";
106
+ readonly IN_PROGRESS: "in_progress";
107
+ readonly COMPLETED: "completed";
108
+ readonly CANCELLED: "cancelled";
109
+ };
110
+ /**
111
+ * InterviewInvitationStatus
112
+ *
113
+ * Lifecycle state of an invitation (the unit that gets sent and produces a transcript).
114
+ */
115
+ export type InterviewInvitationStatus = (typeof InterviewInvitationStatus)[keyof typeof InterviewInvitationStatus];
116
+ /**
117
+ * InterviewInvitationListSchema
118
+ *
119
+ * List of interview invitations belonging to an interview.
120
+ */
121
+ export type InterviewInvitationListSchema = Array<InterviewInvitationSchema>;
122
+ /**
123
+ * RestoreInterviewResponse
124
+ *
125
+ * Response for restoring an archived interview
126
+ */
127
+ export type RestoreInterviewResponse = {
128
+ success: boolean;
129
+ };
130
+ /**
131
+ * ArchiveInterviewResponse
132
+ *
133
+ * Response for archiving an interview
134
+ */
135
+ export type ArchiveInterviewResponse = {
136
+ success: boolean;
137
+ };
138
+ /**
139
+ * InterviewSchema
140
+ *
141
+ * Schema for an interview definition. invitations is the list of recipients this interview has been (or will be) sent to. When invitationsCount == 1, the interview is in "single" mode; when > 1, it is a bulk send.
142
+ */
143
+ export type InterviewSchema = {
144
+ id: string;
145
+ title: string | null;
146
+ prompt: string;
147
+ intro: string | null;
148
+ firstMessage: string | null;
149
+ locale: string | null;
150
+ voiceId: string;
151
+ maxMinutes: number;
152
+ maxResponses: number;
153
+ disableOrgSystemPrompt: boolean;
154
+ createdAt: string;
155
+ updatedAt: string;
156
+ archivedAt: string | null;
157
+ invitationsCount: number;
158
+ invitationsByStatus: InterviewStatusCounts;
159
+ invitationsArchivedCount: number;
160
+ invitations: Array<InterviewInvitationSummarySchema>;
161
+ };
162
+ /**
163
+ * InterviewInvitationSummarySchema
164
+ *
165
+ * Lightweight invitation row used in lists. summaryAvailable is true once async insights have produced a summary for this invitation. hasMessages is true as soon as the invitation has at least one transcript message persisted.
166
+ */
167
+ export type InterviewInvitationSummarySchema = {
168
+ id: string;
169
+ slug: string;
170
+ /**
171
+ * InterviewInvitationStatus
172
+ *
173
+ * Lifecycle state of an invitation (the unit that gets sent and produces a transcript).
174
+ */
175
+ status: "ready" | "in_progress" | "completed" | "cancelled";
176
+ name: string | null;
177
+ recipientEmail: string | null;
178
+ recipientPhone: string | null;
179
+ archivedAt: string | null;
180
+ createdAt: string;
181
+ updatedAt: string;
182
+ hasMessages: boolean;
183
+ summaryAvailable: boolean;
184
+ };
185
+ /**
186
+ * InterviewStatusCounts
187
+ *
188
+ * Number of invitations in each status for a given interview, archived invitations excluded.
189
+ */
190
+ export type InterviewStatusCounts = {
191
+ ready: number;
192
+ in_progress: number;
193
+ completed: number;
194
+ cancelled: number;
195
+ };
196
+ /**
197
+ * InterviewListSchema
198
+ *
199
+ * Schema for a list of interviews
200
+ */
201
+ export type InterviewListSchema = Array<InterviewSchema>;
202
+ /**
203
+ * CreatedInterviewsResponse
204
+ *
205
+ * Response for interview creation
206
+ */
207
+ export type CreatedInterviewsResponse = Array<CreatedInterviewSchema>;
208
+ /**
209
+ * CreatedInterviewSchema
210
+ *
211
+ * Schema for a newly created interview, including the slug of its initial invitation.
212
+ */
213
+ export type CreatedInterviewSchema = {
214
+ id: string;
215
+ invitationId: string;
216
+ slug: string;
217
+ /**
218
+ * InterviewInvitationStatus
219
+ *
220
+ * Lifecycle state of an invitation (the unit that gets sent and produces a transcript).
221
+ */
222
+ status: "ready" | "in_progress" | "completed" | "cancelled";
223
+ };
224
+ export type InterviewsControllerListData = {
225
+ body?: never;
226
+ path?: never;
227
+ query?: {
228
+ /**
229
+ * When true, returns archived interviews only. When omitted or false, returns active (non-archived) interviews.
230
+ */
231
+ archived?: boolean;
232
+ };
233
+ url: "/api/interviews";
234
+ };
235
+ export type InterviewsControllerListResponses = {
236
+ /**
237
+ * Schema for a list of interviews
238
+ */
239
+ 200: InterviewListSchema;
240
+ };
241
+ export type InterviewsControllerListResponse = InterviewsControllerListResponses[keyof InterviewsControllerListResponses];
242
+ export type InterviewsControllerCreateData = {
243
+ /**
244
+ * CreateInterviewSchema
245
+ *
246
+ * Schema for creating an interview. When invitees is provided, one invitation is created (and sent) per invitee. Otherwise a single initial invitation is created, pre-filled with email/phone when given. When locale or voiceId is omitted, the organization default (Settings > Interviews) is used, falling back to the app default language and the first voice for that language.
247
+ */
248
+ body: {
249
+ prompt: string;
250
+ title?: string;
251
+ intro?: string;
252
+ firstMessage?: string;
253
+ email?: string;
254
+ phone?: string;
255
+ invitees?: Array<{
256
+ name?: string;
257
+ email?: string;
258
+ phone?: string;
259
+ }>;
260
+ locale?: string;
261
+ voiceId?: string;
262
+ };
263
+ path?: never;
264
+ query?: never;
265
+ url: "/api/interviews";
266
+ };
267
+ export type InterviewsControllerCreateResponses = {
268
+ /**
269
+ * Response for interview creation
270
+ */
271
+ 200: CreatedInterviewsResponse;
272
+ };
273
+ export type InterviewsControllerCreateResponse = InterviewsControllerCreateResponses[keyof InterviewsControllerCreateResponses];
274
+ export type InterviewsControllerGetOneData = {
275
+ body?: never;
276
+ path: {
277
+ /**
278
+ * UUID identifier
279
+ */
280
+ id: string;
281
+ };
282
+ query?: never;
283
+ url: "/api/interviews/{id}";
284
+ };
285
+ export type InterviewsControllerGetOneResponses = {
286
+ /**
287
+ * Schema for an interview definition. invitations is the list of recipients this interview has been (or will be) sent to. When invitationsCount == 1, the interview is in "single" mode; when > 1, it is a bulk send.
288
+ */
289
+ 200: InterviewSchema;
290
+ };
291
+ export type InterviewsControllerGetOneResponse = InterviewsControllerGetOneResponses[keyof InterviewsControllerGetOneResponses];
292
+ export type InterviewsControllerUpdateData = {
293
+ /**
294
+ * UpdateInterviewSchema
295
+ *
296
+ * Schema for updating an interview definition. Recipient fields live on invitations and are updated via the invitations endpoints.
297
+ */
298
+ body: {
299
+ title?: string;
300
+ prompt?: string;
301
+ intro?: string;
302
+ firstMessage?: string;
303
+ locale?: string;
304
+ maxMinutes?: number;
305
+ maxResponses?: number;
306
+ disableOrgSystemPrompt?: boolean;
307
+ voiceId?: string;
308
+ };
309
+ path: {
310
+ /**
311
+ * UUID identifier
312
+ */
313
+ id: string;
314
+ };
315
+ query?: never;
316
+ url: "/api/interviews/{id}";
317
+ };
318
+ export type InterviewsControllerUpdateResponses = {
319
+ /**
320
+ * Schema for an interview definition. invitations is the list of recipients this interview has been (or will be) sent to. When invitationsCount == 1, the interview is in "single" mode; when > 1, it is a bulk send.
321
+ */
322
+ 200: InterviewSchema;
323
+ };
324
+ export type InterviewsControllerUpdateResponse = InterviewsControllerUpdateResponses[keyof InterviewsControllerUpdateResponses];
325
+ export type InterviewsControllerRegenerateIntroData = {
326
+ body?: never;
327
+ path: {
328
+ /**
329
+ * UUID identifier
330
+ */
331
+ id: string;
332
+ };
333
+ query?: never;
334
+ url: "/api/interviews/{id}/regenerate-intro";
335
+ };
336
+ export type InterviewsControllerRegenerateIntroResponses = {
337
+ /**
338
+ * Schema for an interview definition. invitations is the list of recipients this interview has been (or will be) sent to. When invitationsCount == 1, the interview is in "single" mode; when > 1, it is a bulk send.
339
+ */
340
+ 200: InterviewSchema;
341
+ };
342
+ export type InterviewsControllerRegenerateIntroResponse = InterviewsControllerRegenerateIntroResponses[keyof InterviewsControllerRegenerateIntroResponses];
343
+ export type InterviewsControllerRegenerateFirstMessageData = {
344
+ body?: never;
345
+ path: {
346
+ /**
347
+ * UUID identifier
348
+ */
349
+ id: string;
350
+ };
351
+ query?: never;
352
+ url: "/api/interviews/{id}/regenerate-first-message";
353
+ };
354
+ export type InterviewsControllerRegenerateFirstMessageResponses = {
355
+ /**
356
+ * Schema for an interview definition. invitations is the list of recipients this interview has been (or will be) sent to. When invitationsCount == 1, the interview is in "single" mode; when > 1, it is a bulk send.
357
+ */
358
+ 200: InterviewSchema;
359
+ };
360
+ export type InterviewsControllerRegenerateFirstMessageResponse = InterviewsControllerRegenerateFirstMessageResponses[keyof InterviewsControllerRegenerateFirstMessageResponses];
361
+ export type InterviewsControllerArchiveData = {
362
+ body?: never;
363
+ path: {
364
+ /**
365
+ * UUID identifier
366
+ */
367
+ id: string;
368
+ };
369
+ query?: never;
370
+ url: "/api/interviews/{id}/archive";
371
+ };
372
+ export type InterviewsControllerArchiveResponses = {
373
+ /**
374
+ * Response for archiving an interview
375
+ */
376
+ 200: ArchiveInterviewResponse;
377
+ };
378
+ export type InterviewsControllerArchiveResponse = InterviewsControllerArchiveResponses[keyof InterviewsControllerArchiveResponses];
379
+ export type InterviewsControllerRestoreData = {
380
+ body?: never;
381
+ path: {
382
+ /**
383
+ * UUID identifier
384
+ */
385
+ id: string;
386
+ };
387
+ query?: never;
388
+ url: "/api/interviews/{id}/restore";
389
+ };
390
+ export type InterviewsControllerRestoreResponses = {
391
+ /**
392
+ * Response for restoring an archived interview
393
+ */
394
+ 200: RestoreInterviewResponse;
395
+ };
396
+ export type InterviewsControllerRestoreResponse = InterviewsControllerRestoreResponses[keyof InterviewsControllerRestoreResponses];
397
+ export type InterviewsControllerGetLogsData = {
398
+ body?: never;
399
+ path: {
400
+ /**
401
+ * UUID identifier
402
+ */
403
+ id: string;
404
+ };
405
+ query?: never;
406
+ url: "/api/interviews/{id}/logs";
407
+ };
408
+ export type InterviewsControllerGetLogsResponses = {
409
+ /**
410
+ * Chronological history of events on an interview, most recent first.
411
+ */
412
+ 200: InterviewLogListSchema;
413
+ };
414
+ export type InterviewsControllerGetLogsResponse = InterviewsControllerGetLogsResponses[keyof InterviewsControllerGetLogsResponses];
415
+ export type InterviewInvitationsControllerListData = {
416
+ body?: never;
417
+ path: {
418
+ /**
419
+ * UUID identifier
420
+ */
421
+ id: string;
422
+ };
423
+ query?: never;
424
+ url: "/api/interviews/{id}/invitations";
425
+ };
426
+ export type InterviewInvitationsControllerListResponses = {
427
+ /**
428
+ * List of interview invitations belonging to an interview.
429
+ */
430
+ 200: InterviewInvitationListSchema;
431
+ };
432
+ export type InterviewInvitationsControllerListResponse = InterviewInvitationsControllerListResponses[keyof InterviewInvitationsControllerListResponses];
433
+ export type InterviewInvitationsControllerCreateData = {
434
+ /**
435
+ * CreateInterviewInvitationSchema
436
+ *
437
+ * Optional invitee details for a new invitation. Every field is optional: with an empty body you get a blank, ready-to-share invitation whose link is `<app>/invitation/{slug}` (the `slug` is returned in the response). Providing name, email or phone only pre-fills the invitation, it is not sent here: deliver it with the send endpoint, or just share the link.
438
+ */
439
+ body: {
440
+ name?: string;
441
+ email?: string;
442
+ phone?: string;
443
+ };
444
+ path: {
445
+ /**
446
+ * UUID identifier
447
+ */
448
+ id: string;
449
+ };
450
+ query?: never;
451
+ url: "/api/interviews/{id}/invitations";
452
+ };
453
+ export type InterviewInvitationsControllerCreateResponses = {
454
+ /**
455
+ * Full interview invitation payload including transcript messages. summary and per-message sentiments are populated asynchronously once the invitation reaches the completed state.
456
+ */
457
+ 200: InterviewInvitationSchema;
458
+ };
459
+ export type InterviewInvitationsControllerCreateResponse = InterviewInvitationsControllerCreateResponses[keyof InterviewInvitationsControllerCreateResponses];
460
+ export type InterviewInvitationsControllerCreateBulkData = {
461
+ /**
462
+ * CreateBulkInterviewInvitationsSchema
463
+ *
464
+ * Bulk create N interview invitations on an existing interview and dispatch each one by email or SMS right away. Each invitee row must carry an email or a phone.
465
+ */
466
+ body: {
467
+ invitees: Array<{
468
+ name?: string;
469
+ email?: string;
470
+ phone?: string;
471
+ }>;
472
+ };
473
+ path: {
474
+ /**
475
+ * UUID identifier
476
+ */
477
+ id: string;
478
+ };
479
+ query?: never;
480
+ url: "/api/interviews/{id}/invitations/bulk";
481
+ };
482
+ export type InterviewInvitationsControllerCreateBulkResponses = {
483
+ /**
484
+ * List of interview invitations belonging to an interview.
485
+ */
486
+ 200: InterviewInvitationListSchema;
487
+ };
488
+ export type InterviewInvitationsControllerCreateBulkResponse = InterviewInvitationsControllerCreateBulkResponses[keyof InterviewInvitationsControllerCreateBulkResponses];
489
+ export type InterviewInvitationsControllerGetOneData = {
490
+ body?: never;
491
+ path: {
492
+ /**
493
+ * Interview invitation UUID
494
+ */
495
+ invitationId: string;
496
+ };
497
+ query?: never;
498
+ url: "/api/invitations/{invitationId}";
499
+ };
500
+ export type InterviewInvitationsControllerGetOneResponses = {
501
+ /**
502
+ * Full interview invitation payload including transcript messages. summary and per-message sentiments are populated asynchronously once the invitation reaches the completed state.
503
+ */
504
+ 200: InterviewInvitationSchema;
505
+ };
506
+ export type InterviewInvitationsControllerGetOneResponse = InterviewInvitationsControllerGetOneResponses[keyof InterviewInvitationsControllerGetOneResponses];
507
+ export type InterviewInvitationsControllerUpdateData = {
508
+ /**
509
+ * UpdateInterviewInvitationSchema
510
+ *
511
+ * Schema for updating the invitee display name on an interview invitation. The recipient email and phone cannot be changed here: they are set when sending (see the send endpoint), so contact details are never altered without dispatching the invitation.
512
+ */
513
+ body: {
514
+ name?: string | null;
515
+ };
516
+ path: {
517
+ /**
518
+ * Interview invitation UUID
519
+ */
520
+ invitationId: string;
521
+ };
522
+ query?: never;
523
+ url: "/api/invitations/{invitationId}";
524
+ };
525
+ export type InterviewInvitationsControllerUpdateResponses = {
526
+ /**
527
+ * Full interview invitation payload including transcript messages. summary and per-message sentiments are populated asynchronously once the invitation reaches the completed state.
528
+ */
529
+ 200: InterviewInvitationSchema;
530
+ };
531
+ export type InterviewInvitationsControllerUpdateResponse = InterviewInvitationsControllerUpdateResponses[keyof InterviewInvitationsControllerUpdateResponses];
532
+ export type InterviewInvitationsControllerSendData = {
533
+ /**
534
+ * SendInterviewInvitationSchema
535
+ *
536
+ * Schema for sending an interview invitation by email or SMS. At least one of email or phone must be provided.
537
+ */
538
+ body: {
539
+ email?: string;
540
+ phone?: string;
541
+ };
542
+ path: {
543
+ /**
544
+ * Interview invitation UUID
545
+ */
546
+ invitationId: string;
547
+ };
548
+ query?: never;
549
+ url: "/api/invitations/{invitationId}/send";
550
+ };
551
+ export type InterviewInvitationsControllerSendResponses = {
552
+ /**
553
+ * Full interview invitation payload including transcript messages. summary and per-message sentiments are populated asynchronously once the invitation reaches the completed state.
554
+ */
555
+ 200: InterviewInvitationSchema;
556
+ };
557
+ export type InterviewInvitationsControllerSendResponse = InterviewInvitationsControllerSendResponses[keyof InterviewInvitationsControllerSendResponses];
558
+ export type InterviewInvitationsControllerCancelData = {
559
+ body?: never;
560
+ path: {
561
+ /**
562
+ * Interview invitation UUID
563
+ */
564
+ invitationId: string;
565
+ };
566
+ query?: never;
567
+ url: "/api/invitations/{invitationId}/cancel";
568
+ };
569
+ export type InterviewInvitationsControllerCancelResponses = {
570
+ /**
571
+ * Full interview invitation payload including transcript messages. summary and per-message sentiments are populated asynchronously once the invitation reaches the completed state.
572
+ */
573
+ 200: InterviewInvitationSchema;
574
+ };
575
+ export type InterviewInvitationsControllerCancelResponse = InterviewInvitationsControllerCancelResponses[keyof InterviewInvitationsControllerCancelResponses];
576
+ export type InterviewInvitationsControllerReactivateData = {
577
+ body?: never;
578
+ path: {
579
+ /**
580
+ * Interview invitation UUID
581
+ */
582
+ invitationId: string;
583
+ };
584
+ query?: never;
585
+ url: "/api/invitations/{invitationId}/reactivate";
586
+ };
587
+ export type InterviewInvitationsControllerReactivateResponses = {
588
+ /**
589
+ * Full interview invitation payload including transcript messages. summary and per-message sentiments are populated asynchronously once the invitation reaches the completed state.
590
+ */
591
+ 200: InterviewInvitationSchema;
592
+ };
593
+ export type InterviewInvitationsControllerReactivateResponse = InterviewInvitationsControllerReactivateResponses[keyof InterviewInvitationsControllerReactivateResponses];
594
+ export type InterviewInvitationsControllerArchiveData = {
595
+ body?: never;
596
+ path: {
597
+ /**
598
+ * Interview invitation UUID
599
+ */
600
+ invitationId: string;
601
+ };
602
+ query?: never;
603
+ url: "/api/invitations/{invitationId}/archive";
604
+ };
605
+ export type InterviewInvitationsControllerArchiveResponses = {
606
+ /**
607
+ * Full interview invitation payload including transcript messages. summary and per-message sentiments are populated asynchronously once the invitation reaches the completed state.
608
+ */
609
+ 200: InterviewInvitationSchema;
610
+ };
611
+ export type InterviewInvitationsControllerArchiveResponse = InterviewInvitationsControllerArchiveResponses[keyof InterviewInvitationsControllerArchiveResponses];
612
+ export type InterviewInvitationsControllerRestoreData = {
613
+ body?: never;
614
+ path: {
615
+ /**
616
+ * Interview invitation UUID
617
+ */
618
+ invitationId: string;
619
+ };
620
+ query?: never;
621
+ url: "/api/invitations/{invitationId}/restore";
622
+ };
623
+ export type InterviewInvitationsControllerRestoreResponses = {
624
+ /**
625
+ * Full interview invitation payload including transcript messages. summary and per-message sentiments are populated asynchronously once the invitation reaches the completed state.
626
+ */
627
+ 200: InterviewInvitationSchema;
628
+ };
629
+ export type InterviewInvitationsControllerRestoreResponse = InterviewInvitationsControllerRestoreResponses[keyof InterviewInvitationsControllerRestoreResponses];
630
+ export type InterviewInvitationsControllerGetLogsData = {
631
+ body?: never;
632
+ path: {
633
+ /**
634
+ * Interview invitation UUID
635
+ */
636
+ invitationId: string;
637
+ };
638
+ query?: never;
639
+ url: "/api/invitations/{invitationId}/logs";
640
+ };
641
+ export type InterviewInvitationsControllerGetLogsResponses = {
642
+ /**
643
+ * Chronological history of events on an interview, most recent first.
644
+ */
645
+ 200: InterviewLogListSchema;
646
+ };
647
+ export type InterviewInvitationsControllerGetLogsResponse = InterviewInvitationsControllerGetLogsResponses[keyof InterviewInvitationsControllerGetLogsResponses];
648
+ export type InterviewInvitationsControllerGetMessageAudioUrlData = {
649
+ body?: never;
650
+ path: {
651
+ /**
652
+ * Interview message UUID
653
+ */
654
+ messageId: string;
655
+ /**
656
+ * Interview invitation UUID
657
+ */
658
+ invitationId: string;
659
+ };
660
+ query?: never;
661
+ url: "/api/invitations/{invitationId}/messages/{messageId}/audio-url";
662
+ };
663
+ export type InterviewInvitationsControllerGetMessageAudioUrlResponses = {
664
+ /**
665
+ * Short-lived presigned URL for the audio attached to an interview message.
666
+ */
667
+ 200: InterviewMessageAudioUrlSchema;
668
+ };
669
+ export type InterviewInvitationsControllerGetMessageAudioUrlResponse = InterviewInvitationsControllerGetMessageAudioUrlResponses[keyof InterviewInvitationsControllerGetMessageAudioUrlResponses];
670
+ export type VoicesControllerListData = {
671
+ body?: never;
672
+ path?: never;
673
+ query?: {
674
+ /**
675
+ * ISO 639-1 code to filter voices by. Voices flagged as "all" are always included.
676
+ */
677
+ language?: string;
678
+ };
679
+ url: "/api/voices";
680
+ };
681
+ export type VoicesControllerListResponses = {
682
+ /**
683
+ * List of voices matching the requested language filter.
684
+ */
685
+ 200: VoiceListSchema;
686
+ };
687
+ export type VoicesControllerListResponse = VoicesControllerListResponses[keyof VoicesControllerListResponses];
688
+ export type VoicesControllerGetTestAudioUrlData = {
689
+ body?: never;
690
+ path: {
691
+ /**
692
+ * Voice UUID
693
+ */
694
+ id: string;
695
+ };
696
+ query?: never;
697
+ url: "/api/voices/{id}/test-audio-url";
698
+ };
699
+ export type VoicesControllerGetTestAudioUrlResponses = {
700
+ /**
701
+ * Short-lived presigned URL for the voice preview audio. Generated on first request if missing.
702
+ */
703
+ 200: VoiceTestAudioUrlSchema;
704
+ };
705
+ export type VoicesControllerGetTestAudioUrlResponse = VoicesControllerGetTestAudioUrlResponses[keyof VoicesControllerGetTestAudioUrlResponses];