whio-api-sdk 1.0.177-beta → 1.0.179-beta
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 +83 -0
- package/dist/src/sdk/sdk.d.ts +10 -3
- package/dist/src/sdk/sdk.js +40 -6
- package/dist/src/sdk/types.d.ts +14 -2
- package/package.json +1 -1
- package/src/sdk/sdk.ts +40 -5
- package/src/sdk/types.ts +16 -2
package/README.md
CHANGED
|
@@ -1,2 +1,85 @@
|
|
|
1
1
|
# whio-sdk
|
|
2
2
|
A JS SDK that interacts with our medical-assistant-api
|
|
3
|
+
|
|
4
|
+
## Audio Transcription Queue
|
|
5
|
+
|
|
6
|
+
The SDK now supports automatic audio transcription through a background queue system. When you upload audio files, they are automatically processed and transcribed.
|
|
7
|
+
|
|
8
|
+
### Upload Audio with Transcription Queue
|
|
9
|
+
|
|
10
|
+
```typescript
|
|
11
|
+
import { ApiSDK, AudioFileStatus } from 'whio-sdk';
|
|
12
|
+
|
|
13
|
+
const sdk = new ApiSDK({ baseUrl: 'https://your-api.com' });
|
|
14
|
+
|
|
15
|
+
// Simple upload (automatically triggers transcription)
|
|
16
|
+
const audioFile = await sdk.uploadAudioFileToSession(sessionId, file);
|
|
17
|
+
|
|
18
|
+
// Upload with cultural context
|
|
19
|
+
const audioFileWithContext = await sdk.uploadAudioFileToSession(
|
|
20
|
+
sessionId,
|
|
21
|
+
file,
|
|
22
|
+
'audio.mp3',
|
|
23
|
+
'This is cultural context for the audio'
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
// Alternative method with options object
|
|
27
|
+
const audioFileAlt = await sdk.uploadAudioFileWithTranscriptionQueue(sessionId, file, {
|
|
28
|
+
fileName: 'recording.mp3',
|
|
29
|
+
culturalTranscription: 'Patient discussing symptoms in Māori'
|
|
30
|
+
});
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Check Transcription Results
|
|
34
|
+
|
|
35
|
+
```typescript
|
|
36
|
+
// Get specific audio file with transcription results
|
|
37
|
+
const audioFile = await sdk.getAudioFile(audioFileId);
|
|
38
|
+
|
|
39
|
+
if (audioFile.status === AudioFileStatus.TRANSCRIBED) {
|
|
40
|
+
console.log('Transcription:', audioFile.transcription);
|
|
41
|
+
console.log('Cultural Context:', audioFile.cultural_transcription);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Get all transcribed files
|
|
45
|
+
const transcribedFiles = await sdk.getTranscribedAudioFiles();
|
|
46
|
+
|
|
47
|
+
// Get files currently being processed
|
|
48
|
+
const processingFiles = await sdk.getProcessingAudioFiles();
|
|
49
|
+
|
|
50
|
+
// Get failed transcriptions
|
|
51
|
+
const failedFiles = await sdk.getFailedAudioFiles();
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Audio File Status
|
|
55
|
+
|
|
56
|
+
Audio files have the following status values:
|
|
57
|
+
- `UPLOADED` - File uploaded, waiting for transcription
|
|
58
|
+
- `PROCESSING` - Currently being transcribed
|
|
59
|
+
- `TRANSCRIBED` - Transcription complete
|
|
60
|
+
- `FAILED` - Transcription failed
|
|
61
|
+
|
|
62
|
+
### Key Features
|
|
63
|
+
|
|
64
|
+
- **Automatic Processing**: Upload triggers transcription automatically
|
|
65
|
+
- **Serial Processing**: Files are processed one at a time for reliability
|
|
66
|
+
- **Cultural Context**: Optional cultural transcription field for context
|
|
67
|
+
- **Status Tracking**: Monitor transcription progress
|
|
68
|
+
- **Error Handling**: Graceful handling of transcription failures
|
|
69
|
+
- **Fire and Forget**: No polling required - just upload and check later
|
|
70
|
+
|
|
71
|
+
### Example Usage
|
|
72
|
+
|
|
73
|
+
```typescript
|
|
74
|
+
// Upload and get immediate response
|
|
75
|
+
const audioFile = await sdk.uploadAudioFileToSession(sessionId, audioBlob, 'recording.wav');
|
|
76
|
+
console.log('Status:', audioFile.status); // 'UPLOADED'
|
|
77
|
+
|
|
78
|
+
// Check later for transcription results
|
|
79
|
+
setTimeout(async () => {
|
|
80
|
+
const updatedFile = await sdk.getAudioFile(audioFile.id);
|
|
81
|
+
if (updatedFile.status === AudioFileStatus.TRANSCRIBED) {
|
|
82
|
+
console.log('Transcription ready:', updatedFile.transcription);
|
|
83
|
+
}
|
|
84
|
+
}, 10000); // Check after 10 seconds
|
|
85
|
+
```
|
package/dist/src/sdk/sdk.d.ts
CHANGED
|
@@ -39,9 +39,9 @@ export declare class ApiSDK {
|
|
|
39
39
|
getTemplates(): Promise<Template[]>;
|
|
40
40
|
getTemplatesByOrganization(): Promise<Template[]>;
|
|
41
41
|
getUserTemplates(): Promise<UserTemplate[]>;
|
|
42
|
-
generateTranscriptionSummary(
|
|
42
|
+
generateTranscriptionSummary(templateId: string, sessionId: string): Promise<TranscriptionSummary>;
|
|
43
43
|
getByOrganizationTranscriptionSummaries(organizationId: string): Promise<TranscriptionSummary[]>;
|
|
44
|
-
generateTranscriptionSummaryFromUserTemplate(
|
|
44
|
+
generateTranscriptionSummaryFromUserTemplate(userTemplateId: string, sessionId: string): Promise<TranscriptionSummary>;
|
|
45
45
|
updateTranscriptionSummary(id: string, content: string): Promise<TranscriptionSummary>;
|
|
46
46
|
uploadLargeAudioFile(formData: FormData): Promise<string>;
|
|
47
47
|
uploadAudioFile(formData: FormData): Promise<TranscriptionAudioUploadResponse | null>;
|
|
@@ -102,7 +102,11 @@ export declare class ApiSDK {
|
|
|
102
102
|
getAgentSettingsByAgentAndOrganization(agentId: string, organizationId: string): Promise<AgentSettings>;
|
|
103
103
|
updateAgentSettings(id: string, settingsData: UpdateAgentSettingsDto): Promise<AgentSettings>;
|
|
104
104
|
deleteAgentSettings(id: string): Promise<void>;
|
|
105
|
-
uploadAudioFileToSession(sessionId: string, file: File | Blob, fileName?: string): Promise<AudioFile>;
|
|
105
|
+
uploadAudioFileToSession(sessionId: string, file: File | Blob, fileName?: string, culturalTranscription?: string): Promise<AudioFile>;
|
|
106
|
+
uploadAudioFileWithTranscriptionQueue(sessionId: string, file: File | Blob, options?: {
|
|
107
|
+
fileName?: string;
|
|
108
|
+
culturalTranscription?: string;
|
|
109
|
+
}): Promise<AudioFile>;
|
|
106
110
|
getMyAudioFiles(): Promise<AudioFile[]>;
|
|
107
111
|
getAllAudioFiles(): Promise<AudioFile[]>;
|
|
108
112
|
getOrganizationAudioFiles(): Promise<AudioFile[]>;
|
|
@@ -112,4 +116,7 @@ export declare class ApiSDK {
|
|
|
112
116
|
deleteAudioFile(id: string): Promise<void>;
|
|
113
117
|
downloadAudioFile(id: string): Promise<Blob>;
|
|
114
118
|
downloadAudioFileAsUrl(id: string): Promise<string>;
|
|
119
|
+
getTranscribedAudioFiles(): Promise<AudioFile[]>;
|
|
120
|
+
getProcessingAudioFiles(): Promise<AudioFile[]>;
|
|
121
|
+
getFailedAudioFiles(): Promise<AudioFile[]>;
|
|
115
122
|
}
|
package/dist/src/sdk/sdk.js
CHANGED
|
@@ -8,7 +8,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
// sdk.ts
|
|
11
|
-
import { OrganizationRoleType, } from './types';
|
|
11
|
+
import { OrganizationRoleType, AudioFileStatus, } from './types';
|
|
12
12
|
import urls from './urls';
|
|
13
13
|
import { jwtDecode } from 'jwt-decode';
|
|
14
14
|
export class ApiSDK {
|
|
@@ -365,10 +365,9 @@ export class ApiSDK {
|
|
|
365
365
|
// ======================
|
|
366
366
|
// trANSCRIPTION SUMMARY METHODS
|
|
367
367
|
// ======================
|
|
368
|
-
generateTranscriptionSummary(
|
|
368
|
+
generateTranscriptionSummary(templateId, sessionId) {
|
|
369
369
|
return __awaiter(this, void 0, void 0, function* () {
|
|
370
370
|
const generateSummaryDto = {
|
|
371
|
-
transcript,
|
|
372
371
|
templateId,
|
|
373
372
|
userId: this.user.id,
|
|
374
373
|
fromUserTemplate: false,
|
|
@@ -383,13 +382,13 @@ export class ApiSDK {
|
|
|
383
382
|
return this.request(`${urls.transcriptionSummaries}/organization/${organizationId}`, 'GET');
|
|
384
383
|
});
|
|
385
384
|
}
|
|
386
|
-
generateTranscriptionSummaryFromUserTemplate(
|
|
385
|
+
generateTranscriptionSummaryFromUserTemplate(userTemplateId, sessionId) {
|
|
387
386
|
return __awaiter(this, void 0, void 0, function* () {
|
|
388
387
|
const generateSummaryDto = {
|
|
389
|
-
transcript,
|
|
390
388
|
templateId: userTemplateId,
|
|
391
389
|
userId: this.user.id,
|
|
392
390
|
fromUserTemplate: true,
|
|
391
|
+
sessionId: sessionId,
|
|
393
392
|
};
|
|
394
393
|
const transcriptionSummary = yield this.request(urls.transcriptionSummary, 'POST', generateSummaryDto);
|
|
395
394
|
return transcriptionSummary;
|
|
@@ -766,10 +765,24 @@ export class ApiSDK {
|
|
|
766
765
|
// ======================
|
|
767
766
|
// AUDIO FILE METHODS
|
|
768
767
|
// ======================
|
|
769
|
-
uploadAudioFileToSession(sessionId, file, fileName) {
|
|
768
|
+
uploadAudioFileToSession(sessionId, file, fileName, culturalTranscription) {
|
|
770
769
|
return __awaiter(this, void 0, void 0, function* () {
|
|
771
770
|
const formData = new FormData();
|
|
772
771
|
formData.append('file', file, fileName);
|
|
772
|
+
if (culturalTranscription) {
|
|
773
|
+
formData.append('cultural_transcription', culturalTranscription);
|
|
774
|
+
}
|
|
775
|
+
return this.fileUploadRequest(`${urls.audioFiles}/upload/${sessionId}`, formData);
|
|
776
|
+
});
|
|
777
|
+
}
|
|
778
|
+
uploadAudioFileWithTranscriptionQueue(sessionId, file, options) {
|
|
779
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
780
|
+
const formData = new FormData();
|
|
781
|
+
formData.append('file', file, options === null || options === void 0 ? void 0 : options.fileName);
|
|
782
|
+
if (options === null || options === void 0 ? void 0 : options.culturalTranscription) {
|
|
783
|
+
formData.append('cultural_transcription', options.culturalTranscription);
|
|
784
|
+
}
|
|
785
|
+
// This will automatically trigger the transcription queue
|
|
773
786
|
return this.fileUploadRequest(`${urls.audioFiles}/upload/${sessionId}`, formData);
|
|
774
787
|
});
|
|
775
788
|
}
|
|
@@ -837,4 +850,25 @@ export class ApiSDK {
|
|
|
837
850
|
return URL.createObjectURL(blob);
|
|
838
851
|
});
|
|
839
852
|
}
|
|
853
|
+
// ======================
|
|
854
|
+
// TRANSCRIPTION QUEUE HELPER METHODS
|
|
855
|
+
// ======================
|
|
856
|
+
getTranscribedAudioFiles() {
|
|
857
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
858
|
+
const audioFiles = yield this.getMyAudioFiles();
|
|
859
|
+
return audioFiles.filter(file => file.status === AudioFileStatus.TRANSCRIBED && file.transcription);
|
|
860
|
+
});
|
|
861
|
+
}
|
|
862
|
+
getProcessingAudioFiles() {
|
|
863
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
864
|
+
const audioFiles = yield this.getMyAudioFiles();
|
|
865
|
+
return audioFiles.filter(file => file.status === AudioFileStatus.PROCESSING);
|
|
866
|
+
});
|
|
867
|
+
}
|
|
868
|
+
getFailedAudioFiles() {
|
|
869
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
870
|
+
const audioFiles = yield this.getMyAudioFiles();
|
|
871
|
+
return audioFiles.filter(file => file.status === AudioFileStatus.FAILED);
|
|
872
|
+
});
|
|
873
|
+
}
|
|
840
874
|
}
|
package/dist/src/sdk/types.d.ts
CHANGED
|
@@ -93,11 +93,10 @@ export interface UpdateTemplateDto {
|
|
|
93
93
|
categoryId?: string;
|
|
94
94
|
}
|
|
95
95
|
export interface GenerateTranscriptionSummaryDto {
|
|
96
|
-
transcript?: string;
|
|
97
96
|
templateId: string;
|
|
98
97
|
userId?: string;
|
|
99
98
|
fromUserTemplate?: boolean;
|
|
100
|
-
sessionId
|
|
99
|
+
sessionId: string;
|
|
101
100
|
}
|
|
102
101
|
export interface UpdateTranscriptionSummaryDto {
|
|
103
102
|
anonymisedTranscript?: string;
|
|
@@ -270,6 +269,8 @@ export interface PasswordChangeResponse {
|
|
|
270
269
|
export interface Session {
|
|
271
270
|
id: string;
|
|
272
271
|
transcript: string;
|
|
272
|
+
medicalTranscription?: string;
|
|
273
|
+
culturalTranscription?: string;
|
|
273
274
|
dateTime: string;
|
|
274
275
|
startDateTime?: string;
|
|
275
276
|
stopDateTime?: string;
|
|
@@ -288,6 +289,8 @@ export interface Session {
|
|
|
288
289
|
}
|
|
289
290
|
export interface CreateSessionDto {
|
|
290
291
|
transcript: string;
|
|
292
|
+
medicalTranscription?: string;
|
|
293
|
+
culturalTranscription?: string;
|
|
291
294
|
dateTime: string;
|
|
292
295
|
startDateTime?: string;
|
|
293
296
|
stopDateTime?: string;
|
|
@@ -299,6 +302,8 @@ export interface CreateSessionDto {
|
|
|
299
302
|
}
|
|
300
303
|
export interface UpdateSessionDto {
|
|
301
304
|
transcript?: string;
|
|
305
|
+
medicalTranscription?: string;
|
|
306
|
+
culturalTranscription?: string;
|
|
302
307
|
dateTime?: string;
|
|
303
308
|
startDateTime?: string;
|
|
304
309
|
stopDateTime?: string;
|
|
@@ -343,6 +348,8 @@ export interface AudioFile {
|
|
|
343
348
|
mimeType: string;
|
|
344
349
|
uploadId?: string;
|
|
345
350
|
transcriptionUrl?: string;
|
|
351
|
+
transcription?: string;
|
|
352
|
+
cultural_transcription?: string;
|
|
346
353
|
status: AudioFileStatus;
|
|
347
354
|
createdAt: string;
|
|
348
355
|
updatedAt: string;
|
|
@@ -362,8 +369,13 @@ export interface CreateAudioFileDto {
|
|
|
362
369
|
}
|
|
363
370
|
export interface UpdateAudioFileDto {
|
|
364
371
|
transcriptionUrl?: string;
|
|
372
|
+
transcription?: string;
|
|
373
|
+
cultural_transcription?: string;
|
|
365
374
|
status?: AudioFileStatus;
|
|
366
375
|
}
|
|
376
|
+
export interface UploadAudioFileDto {
|
|
377
|
+
cultural_transcription?: string;
|
|
378
|
+
}
|
|
367
379
|
export interface AgentSettings {
|
|
368
380
|
id: string;
|
|
369
381
|
temperature: number;
|
package/package.json
CHANGED
package/src/sdk/sdk.ts
CHANGED
|
@@ -44,6 +44,7 @@ import {
|
|
|
44
44
|
AudioFileStatus,
|
|
45
45
|
CreateAudioFileDto,
|
|
46
46
|
UpdateAudioFileDto,
|
|
47
|
+
UploadAudioFileDto,
|
|
47
48
|
AgentSettings,
|
|
48
49
|
CreateAgentSettingsDto,
|
|
49
50
|
UpdateAgentSettingsDto,
|
|
@@ -454,9 +455,8 @@ export class ApiSDK {
|
|
|
454
455
|
// ======================
|
|
455
456
|
|
|
456
457
|
public async generateTranscriptionSummary(
|
|
457
|
-
|
|
458
|
+
templateId: string, sessionId: string): Promise<TranscriptionSummary> {
|
|
458
459
|
const generateSummaryDto: GenerateTranscriptionSummaryDto = {
|
|
459
|
-
transcript,
|
|
460
460
|
templateId,
|
|
461
461
|
userId: this.user!.id,
|
|
462
462
|
fromUserTemplate: false,
|
|
@@ -479,12 +479,12 @@ export class ApiSDK {
|
|
|
479
479
|
}
|
|
480
480
|
|
|
481
481
|
public async generateTranscriptionSummaryFromUserTemplate(
|
|
482
|
-
|
|
482
|
+
userTemplateId: string, sessionId: string): Promise<TranscriptionSummary> {
|
|
483
483
|
const generateSummaryDto: GenerateTranscriptionSummaryDto = {
|
|
484
|
-
transcript,
|
|
485
484
|
templateId: userTemplateId,
|
|
486
485
|
userId: this.user!.id,
|
|
487
486
|
fromUserTemplate: true,
|
|
487
|
+
sessionId: sessionId,
|
|
488
488
|
};
|
|
489
489
|
const transcriptionSummary: TranscriptionSummary = await this.request(
|
|
490
490
|
urls.transcriptionSummary,
|
|
@@ -832,10 +832,26 @@ export class ApiSDK {
|
|
|
832
832
|
// AUDIO FILE METHODS
|
|
833
833
|
// ======================
|
|
834
834
|
|
|
835
|
-
public async uploadAudioFileToSession(sessionId: string, file: File | Blob, fileName?: string): Promise<AudioFile> {
|
|
835
|
+
public async uploadAudioFileToSession(sessionId: string, file: File | Blob, fileName?: string, culturalTranscription?: string): Promise<AudioFile> {
|
|
836
836
|
const formData = new FormData();
|
|
837
837
|
formData.append('file', file, fileName);
|
|
838
838
|
|
|
839
|
+
if (culturalTranscription) {
|
|
840
|
+
formData.append('cultural_transcription', culturalTranscription);
|
|
841
|
+
}
|
|
842
|
+
|
|
843
|
+
return this.fileUploadRequest<AudioFile>(`${urls.audioFiles}/upload/${sessionId}`, formData);
|
|
844
|
+
}
|
|
845
|
+
|
|
846
|
+
public async uploadAudioFileWithTranscriptionQueue(sessionId: string, file: File | Blob, options?: { fileName?: string; culturalTranscription?: string }): Promise<AudioFile> {
|
|
847
|
+
const formData = new FormData();
|
|
848
|
+
formData.append('file', file, options?.fileName);
|
|
849
|
+
|
|
850
|
+
if (options?.culturalTranscription) {
|
|
851
|
+
formData.append('cultural_transcription', options.culturalTranscription);
|
|
852
|
+
}
|
|
853
|
+
|
|
854
|
+
// This will automatically trigger the transcription queue
|
|
839
855
|
return this.fileUploadRequest<AudioFile>(`${urls.audioFiles}/upload/${sessionId}`, formData);
|
|
840
856
|
}
|
|
841
857
|
|
|
@@ -902,4 +918,23 @@ export class ApiSDK {
|
|
|
902
918
|
return URL.createObjectURL(blob);
|
|
903
919
|
}
|
|
904
920
|
|
|
921
|
+
// ======================
|
|
922
|
+
// TRANSCRIPTION QUEUE HELPER METHODS
|
|
923
|
+
// ======================
|
|
924
|
+
|
|
925
|
+
public async getTranscribedAudioFiles(): Promise<AudioFile[]> {
|
|
926
|
+
const audioFiles = await this.getMyAudioFiles();
|
|
927
|
+
return audioFiles.filter(file => file.status === AudioFileStatus.TRANSCRIBED && file.transcription);
|
|
928
|
+
}
|
|
929
|
+
|
|
930
|
+
public async getProcessingAudioFiles(): Promise<AudioFile[]> {
|
|
931
|
+
const audioFiles = await this.getMyAudioFiles();
|
|
932
|
+
return audioFiles.filter(file => file.status === AudioFileStatus.PROCESSING);
|
|
933
|
+
}
|
|
934
|
+
|
|
935
|
+
public async getFailedAudioFiles(): Promise<AudioFile[]> {
|
|
936
|
+
const audioFiles = await this.getMyAudioFiles();
|
|
937
|
+
return audioFiles.filter(file => file.status === AudioFileStatus.FAILED);
|
|
938
|
+
}
|
|
939
|
+
|
|
905
940
|
}
|
package/src/sdk/types.ts
CHANGED
|
@@ -125,11 +125,10 @@ export interface UpdateTemplateDto {
|
|
|
125
125
|
|
|
126
126
|
// Transcription summary generation DTO
|
|
127
127
|
export interface GenerateTranscriptionSummaryDto {
|
|
128
|
-
transcript?: string;
|
|
129
128
|
templateId: string;
|
|
130
129
|
userId?: string;
|
|
131
130
|
fromUserTemplate?: boolean;
|
|
132
|
-
sessionId
|
|
131
|
+
sessionId: string; // Required session ID for linking to a session
|
|
133
132
|
}
|
|
134
133
|
|
|
135
134
|
// Transcription summary update DTO
|
|
@@ -345,6 +344,8 @@ export interface PasswordChangeResponse {
|
|
|
345
344
|
export interface Session {
|
|
346
345
|
id: string;
|
|
347
346
|
transcript: string;
|
|
347
|
+
medicalTranscription?: string;
|
|
348
|
+
culturalTranscription?: string;
|
|
348
349
|
dateTime: string;
|
|
349
350
|
startDateTime?: string;
|
|
350
351
|
stopDateTime?: string;
|
|
@@ -367,6 +368,8 @@ export interface Session {
|
|
|
367
368
|
// Session DTOs
|
|
368
369
|
export interface CreateSessionDto {
|
|
369
370
|
transcript: string;
|
|
371
|
+
medicalTranscription?: string;
|
|
372
|
+
culturalTranscription?: string;
|
|
370
373
|
dateTime: string;
|
|
371
374
|
startDateTime?: string;
|
|
372
375
|
stopDateTime?: string;
|
|
@@ -380,6 +383,8 @@ export interface CreateSessionDto {
|
|
|
380
383
|
|
|
381
384
|
export interface UpdateSessionDto {
|
|
382
385
|
transcript?: string;
|
|
386
|
+
medicalTranscription?: string;
|
|
387
|
+
culturalTranscription?: string;
|
|
383
388
|
dateTime?: string;
|
|
384
389
|
startDateTime?: string;
|
|
385
390
|
stopDateTime?: string;
|
|
@@ -434,6 +439,8 @@ export interface AudioFile {
|
|
|
434
439
|
mimeType: string;
|
|
435
440
|
uploadId?: string;
|
|
436
441
|
transcriptionUrl?: string;
|
|
442
|
+
transcription?: string;
|
|
443
|
+
cultural_transcription?: string;
|
|
437
444
|
status: AudioFileStatus;
|
|
438
445
|
createdAt: string;
|
|
439
446
|
updatedAt: string;
|
|
@@ -459,9 +466,16 @@ export interface CreateAudioFileDto {
|
|
|
459
466
|
|
|
460
467
|
export interface UpdateAudioFileDto {
|
|
461
468
|
transcriptionUrl?: string;
|
|
469
|
+
transcription?: string;
|
|
470
|
+
cultural_transcription?: string;
|
|
462
471
|
status?: AudioFileStatus;
|
|
463
472
|
}
|
|
464
473
|
|
|
474
|
+
// Audio File Upload DTO (for transcription queue)
|
|
475
|
+
export interface UploadAudioFileDto {
|
|
476
|
+
cultural_transcription?: string;
|
|
477
|
+
}
|
|
478
|
+
|
|
465
479
|
// Agent Settings types
|
|
466
480
|
export interface AgentSettings {
|
|
467
481
|
id: string;
|