sarvamai 0.1.22a3__py3-none-any.whl → 0.1.22a7__py3-none-any.whl
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.
- sarvamai/__init__.py +62 -9
- sarvamai/client.py +3 -0
- sarvamai/core/client_wrapper.py +2 -2
- sarvamai/doc_digitization_job/__init__.py +4 -0
- sarvamai/doc_digitization_job/client.py +776 -0
- sarvamai/doc_digitization_job/job.py +496 -0
- sarvamai/doc_digitization_job/raw_client.py +1176 -0
- sarvamai/requests/__init__.py +20 -0
- sarvamai/requests/audio_data.py +0 -6
- sarvamai/requests/configure_connection.py +4 -0
- sarvamai/requests/configure_connection_data.py +40 -11
- sarvamai/requests/doc_digitization_create_job_response.py +25 -0
- sarvamai/requests/doc_digitization_download_files_response.py +37 -0
- sarvamai/requests/doc_digitization_error_details.py +21 -0
- sarvamai/requests/doc_digitization_error_message.py +11 -0
- sarvamai/requests/doc_digitization_job_detail.py +64 -0
- sarvamai/requests/doc_digitization_job_parameters.py +21 -0
- sarvamai/requests/doc_digitization_job_status_response.py +65 -0
- sarvamai/requests/doc_digitization_page_error.py +24 -0
- sarvamai/requests/doc_digitization_upload_files_response.py +34 -0
- sarvamai/requests/doc_digitization_webhook_callback.py +19 -0
- sarvamai/requests/speech_to_text_job_parameters.py +43 -2
- sarvamai/requests/speech_to_text_transcription_data.py +0 -6
- sarvamai/requests/speech_to_text_translate_job_parameters.py +4 -1
- sarvamai/requests/speech_to_text_translate_transcription_data.py +0 -6
- sarvamai/speech_to_text/client.py +95 -10
- sarvamai/speech_to_text/raw_client.py +95 -10
- sarvamai/speech_to_text_job/client.py +60 -15
- sarvamai/speech_to_text_job/job.py +100 -2
- sarvamai/speech_to_text_job/raw_client.py +14 -10
- sarvamai/speech_to_text_streaming/__init__.py +4 -2
- sarvamai/speech_to_text_streaming/client.py +100 -47
- sarvamai/speech_to_text_streaming/raw_client.py +100 -47
- sarvamai/speech_to_text_streaming/types/__init__.py +4 -2
- sarvamai/speech_to_text_streaming/types/speech_to_text_streaming_input_audio_codec.py +1 -27
- sarvamai/speech_to_text_streaming/types/speech_to_text_streaming_mode.py +7 -0
- sarvamai/speech_to_text_streaming/types/speech_to_text_streaming_model.py +5 -0
- sarvamai/speech_to_text_translate_job/job.py +100 -2
- sarvamai/speech_to_text_translate_job/raw_client.py +14 -10
- sarvamai/speech_to_text_translate_streaming/__init__.py +0 -2
- sarvamai/speech_to_text_translate_streaming/client.py +18 -41
- sarvamai/speech_to_text_translate_streaming/raw_client.py +18 -41
- sarvamai/speech_to_text_translate_streaming/types/__init__.py +0 -4
- sarvamai/speech_to_text_translate_streaming/types/speech_to_text_translate_streaming_input_audio_codec.py +1 -27
- sarvamai/text/client.py +0 -12
- sarvamai/text/raw_client.py +0 -12
- sarvamai/text_to_speech/client.py +116 -14
- sarvamai/text_to_speech/raw_client.py +116 -14
- sarvamai/text_to_speech_streaming/__init__.py +2 -2
- sarvamai/text_to_speech_streaming/client.py +19 -6
- sarvamai/text_to_speech_streaming/raw_client.py +19 -6
- sarvamai/text_to_speech_streaming/types/__init__.py +2 -1
- sarvamai/text_to_speech_streaming/types/text_to_speech_streaming_model.py +5 -0
- sarvamai/types/__init__.py +34 -4
- sarvamai/types/audio_data.py +0 -6
- sarvamai/types/completion_event_flag.py +3 -1
- sarvamai/types/configure_connection.py +4 -0
- sarvamai/types/configure_connection_data.py +40 -11
- sarvamai/types/configure_connection_data_model.py +5 -0
- sarvamai/types/configure_connection_data_speaker.py +35 -1
- sarvamai/types/doc_digitization_create_job_response.py +37 -0
- sarvamai/types/doc_digitization_download_files_response.py +47 -0
- sarvamai/types/doc_digitization_error_code.py +15 -0
- sarvamai/types/doc_digitization_error_details.py +33 -0
- sarvamai/types/doc_digitization_error_message.py +23 -0
- sarvamai/types/doc_digitization_job_detail.py +74 -0
- sarvamai/types/doc_digitization_job_detail_state.py +7 -0
- sarvamai/types/doc_digitization_job_parameters.py +33 -0
- sarvamai/types/doc_digitization_job_state.py +7 -0
- sarvamai/types/doc_digitization_job_status_response.py +75 -0
- sarvamai/types/doc_digitization_output_format.py +5 -0
- sarvamai/types/doc_digitization_page_error.py +36 -0
- sarvamai/types/doc_digitization_supported_language.py +32 -0
- sarvamai/types/doc_digitization_upload_files_response.py +44 -0
- sarvamai/types/doc_digitization_webhook_callback.py +31 -0
- sarvamai/types/mode.py +5 -0
- sarvamai/types/speech_to_text_job_parameters.py +43 -2
- sarvamai/types/speech_to_text_model.py +1 -1
- sarvamai/types/speech_to_text_transcription_data.py +0 -6
- sarvamai/types/speech_to_text_translate_job_parameters.py +4 -1
- sarvamai/types/speech_to_text_translate_transcription_data.py +0 -6
- sarvamai/types/text_to_speech_model.py +1 -1
- sarvamai/types/text_to_speech_speaker.py +35 -1
- {sarvamai-0.1.22a3.dist-info → sarvamai-0.1.22a7.dist-info}/METADATA +1 -1
- {sarvamai-0.1.22a3.dist-info → sarvamai-0.1.22a7.dist-info}/RECORD +86 -56
- sarvamai/speech_to_text_streaming/types/speech_to_text_streaming_stream_ongoing_speech_results.py +0 -5
- sarvamai/speech_to_text_translate_streaming/types/speech_to_text_translate_streaming_stream_ongoing_speech_results.py +0 -5
- sarvamai/types/audio_data_input_audio_codec.py +0 -33
- sarvamai/types/response_speech_state.py +0 -7
- {sarvamai-0.1.22a3.dist-info → sarvamai-0.1.22a7.dist-info}/WHEEL +0 -0
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# isort: skip_file
|
|
4
4
|
|
|
5
|
+
from .text_to_speech_streaming_model import TextToSpeechStreamingModel
|
|
5
6
|
from .text_to_speech_streaming_send_completion_event import TextToSpeechStreamingSendCompletionEvent
|
|
6
7
|
|
|
7
|
-
__all__ = ["TextToSpeechStreamingSendCompletionEvent"]
|
|
8
|
+
__all__ = ["TextToSpeechStreamingModel", "TextToSpeechStreamingSendCompletionEvent"]
|
sarvamai/types/__init__.py
CHANGED
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
# isort: skip_file
|
|
4
4
|
|
|
5
5
|
from .audio_data import AudioData
|
|
6
|
-
from .audio_data_input_audio_codec import AudioDataInputAudioCodec
|
|
7
6
|
from .audio_message import AudioMessage
|
|
8
7
|
from .audio_output import AudioOutput
|
|
9
8
|
from .audio_output_data import AudioOutputData
|
|
@@ -26,6 +25,7 @@ from .completion_usage import CompletionUsage
|
|
|
26
25
|
from .config_message import ConfigMessage
|
|
27
26
|
from .configure_connection import ConfigureConnection
|
|
28
27
|
from .configure_connection_data import ConfigureConnectionData
|
|
28
|
+
from .configure_connection_data_model import ConfigureConnectionDataModel
|
|
29
29
|
from .configure_connection_data_output_audio_bitrate import ConfigureConnectionDataOutputAudioBitrate
|
|
30
30
|
from .configure_connection_data_output_audio_codec import ConfigureConnectionDataOutputAudioCodec
|
|
31
31
|
from .configure_connection_data_speaker import ConfigureConnectionDataSpeaker
|
|
@@ -34,6 +34,21 @@ from .connection_sample_rate import ConnectionSampleRate
|
|
|
34
34
|
from .create_chat_completion_response import CreateChatCompletionResponse
|
|
35
35
|
from .diarized_entry import DiarizedEntry
|
|
36
36
|
from .diarized_transcript import DiarizedTranscript
|
|
37
|
+
from .doc_digitization_create_job_response import DocDigitizationCreateJobResponse
|
|
38
|
+
from .doc_digitization_download_files_response import DocDigitizationDownloadFilesResponse
|
|
39
|
+
from .doc_digitization_error_code import DocDigitizationErrorCode
|
|
40
|
+
from .doc_digitization_error_details import DocDigitizationErrorDetails
|
|
41
|
+
from .doc_digitization_error_message import DocDigitizationErrorMessage
|
|
42
|
+
from .doc_digitization_job_detail import DocDigitizationJobDetail
|
|
43
|
+
from .doc_digitization_job_detail_state import DocDigitizationJobDetailState
|
|
44
|
+
from .doc_digitization_job_parameters import DocDigitizationJobParameters
|
|
45
|
+
from .doc_digitization_job_state import DocDigitizationJobState
|
|
46
|
+
from .doc_digitization_job_status_response import DocDigitizationJobStatusResponse
|
|
47
|
+
from .doc_digitization_output_format import DocDigitizationOutputFormat
|
|
48
|
+
from .doc_digitization_page_error import DocDigitizationPageError
|
|
49
|
+
from .doc_digitization_supported_language import DocDigitizationSupportedLanguage
|
|
50
|
+
from .doc_digitization_upload_files_response import DocDigitizationUploadFilesResponse
|
|
51
|
+
from .doc_digitization_webhook_callback import DocDigitizationWebhookCallback
|
|
37
52
|
from .error_code import ErrorCode
|
|
38
53
|
from .error_data import ErrorData
|
|
39
54
|
from .error_details import ErrorDetails
|
|
@@ -54,10 +69,10 @@ from .input_audio_codec import InputAudioCodec
|
|
|
54
69
|
from .job_state import JobState
|
|
55
70
|
from .job_status_v_1_response import JobStatusV1Response
|
|
56
71
|
from .language_identification_response import LanguageIdentificationResponse
|
|
72
|
+
from .mode import Mode
|
|
57
73
|
from .numerals_format import NumeralsFormat
|
|
58
74
|
from .ping_signal import PingSignal
|
|
59
75
|
from .reasoning_effort import ReasoningEffort
|
|
60
|
-
from .response_speech_state import ResponseSpeechState
|
|
61
76
|
from .response_type import ResponseType
|
|
62
77
|
from .role import Role
|
|
63
78
|
from .sarvam_model_ids import SarvamModelIds
|
|
@@ -105,7 +120,6 @@ from .transliteration_response import TransliterationResponse
|
|
|
105
120
|
|
|
106
121
|
__all__ = [
|
|
107
122
|
"AudioData",
|
|
108
|
-
"AudioDataInputAudioCodec",
|
|
109
123
|
"AudioMessage",
|
|
110
124
|
"AudioOutput",
|
|
111
125
|
"AudioOutputData",
|
|
@@ -126,6 +140,7 @@ __all__ = [
|
|
|
126
140
|
"ConfigMessage",
|
|
127
141
|
"ConfigureConnection",
|
|
128
142
|
"ConfigureConnectionData",
|
|
143
|
+
"ConfigureConnectionDataModel",
|
|
129
144
|
"ConfigureConnectionDataOutputAudioBitrate",
|
|
130
145
|
"ConfigureConnectionDataOutputAudioCodec",
|
|
131
146
|
"ConfigureConnectionDataSpeaker",
|
|
@@ -134,6 +149,21 @@ __all__ = [
|
|
|
134
149
|
"CreateChatCompletionResponse",
|
|
135
150
|
"DiarizedEntry",
|
|
136
151
|
"DiarizedTranscript",
|
|
152
|
+
"DocDigitizationCreateJobResponse",
|
|
153
|
+
"DocDigitizationDownloadFilesResponse",
|
|
154
|
+
"DocDigitizationErrorCode",
|
|
155
|
+
"DocDigitizationErrorDetails",
|
|
156
|
+
"DocDigitizationErrorMessage",
|
|
157
|
+
"DocDigitizationJobDetail",
|
|
158
|
+
"DocDigitizationJobDetailState",
|
|
159
|
+
"DocDigitizationJobParameters",
|
|
160
|
+
"DocDigitizationJobState",
|
|
161
|
+
"DocDigitizationJobStatusResponse",
|
|
162
|
+
"DocDigitizationOutputFormat",
|
|
163
|
+
"DocDigitizationPageError",
|
|
164
|
+
"DocDigitizationSupportedLanguage",
|
|
165
|
+
"DocDigitizationUploadFilesResponse",
|
|
166
|
+
"DocDigitizationWebhookCallback",
|
|
137
167
|
"ErrorCode",
|
|
138
168
|
"ErrorData",
|
|
139
169
|
"ErrorDetails",
|
|
@@ -154,10 +184,10 @@ __all__ = [
|
|
|
154
184
|
"JobState",
|
|
155
185
|
"JobStatusV1Response",
|
|
156
186
|
"LanguageIdentificationResponse",
|
|
187
|
+
"Mode",
|
|
157
188
|
"NumeralsFormat",
|
|
158
189
|
"PingSignal",
|
|
159
190
|
"ReasoningEffort",
|
|
160
|
-
"ResponseSpeechState",
|
|
161
191
|
"ResponseType",
|
|
162
192
|
"Role",
|
|
163
193
|
"SarvamModelIds",
|
sarvamai/types/audio_data.py
CHANGED
|
@@ -4,7 +4,6 @@ import typing
|
|
|
4
4
|
|
|
5
5
|
import pydantic
|
|
6
6
|
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
|
-
from .audio_data_input_audio_codec import AudioDataInputAudioCodec
|
|
8
7
|
|
|
9
8
|
|
|
10
9
|
class AudioData(UniversalBaseModel):
|
|
@@ -29,11 +28,6 @@ class AudioData(UniversalBaseModel):
|
|
|
29
28
|
Audio encoding format
|
|
30
29
|
"""
|
|
31
30
|
|
|
32
|
-
input_audio_codec: typing.Optional[AudioDataInputAudioCodec] = pydantic.Field(default=None)
|
|
33
|
-
"""
|
|
34
|
-
Audio codec/format of the input file. Our API automatically detects all codec formats, but for PCM files specifically (pcm_s16le, pcm_l16, pcm_raw), you must pass this parameter. PCM files supports sample rate 16000 and 8000.
|
|
35
|
-
"""
|
|
36
|
-
|
|
37
31
|
if IS_PYDANTIC_V2:
|
|
38
32
|
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
39
33
|
else:
|
|
@@ -13,6 +13,10 @@ class ConfigureConnection(UniversalBaseModel):
|
|
|
13
13
|
This initializes TTS parameters and can be updated at any time during the WebSocket lifecycle
|
|
14
14
|
by sending a new config message. When a config update is sent, any text currently in the buffer
|
|
15
15
|
will be automatically flushed and processed before applying the new configuration.
|
|
16
|
+
|
|
17
|
+
**Model-Specific Notes:**
|
|
18
|
+
- **bulbul:v2:** Supports pitch, loudness, pace (0.3-3.0). Default sample rate: 22050 Hz.
|
|
19
|
+
- **bulbul:v3-beta:** Does NOT support pitch/loudness. Pace range: 0.5-2.0. Supports temperature. Default sample rate: 24000 Hz.
|
|
16
20
|
"""
|
|
17
21
|
|
|
18
22
|
type: typing.Literal["config"] = "config"
|
|
@@ -4,6 +4,7 @@ import typing
|
|
|
4
4
|
|
|
5
5
|
import pydantic
|
|
6
6
|
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
|
+
from .configure_connection_data_model import ConfigureConnectionDataModel
|
|
7
8
|
from .configure_connection_data_output_audio_bitrate import ConfigureConnectionDataOutputAudioBitrate
|
|
8
9
|
from .configure_connection_data_output_audio_codec import ConfigureConnectionDataOutputAudioCodec
|
|
9
10
|
from .configure_connection_data_speaker import ConfigureConnectionDataSpeaker
|
|
@@ -11,21 +12,25 @@ from .configure_connection_data_target_language_code import ConfigureConnectionD
|
|
|
11
12
|
|
|
12
13
|
|
|
13
14
|
class ConfigureConnectionData(UniversalBaseModel):
|
|
15
|
+
model: typing.Optional[ConfigureConnectionDataModel] = pydantic.Field(default=None)
|
|
16
|
+
"""
|
|
17
|
+
Specifies the model to use for text-to-speech conversion.
|
|
18
|
+
- **bulbul:v2** (default): Standard TTS model with pitch/loudness support
|
|
19
|
+
- **bulbul:v3-beta**: Advanced model with temperature control (no pitch/loudness)
|
|
20
|
+
"""
|
|
21
|
+
|
|
14
22
|
target_language_code: ConfigureConnectionDataTargetLanguageCode = pydantic.Field()
|
|
15
23
|
"""
|
|
16
|
-
The language of the text
|
|
24
|
+
The language of the text in BCP-47 format
|
|
17
25
|
"""
|
|
18
26
|
|
|
19
27
|
speaker: ConfigureConnectionDataSpeaker = pydantic.Field()
|
|
20
28
|
"""
|
|
21
29
|
The speaker voice to be used for the output audio.
|
|
22
30
|
|
|
23
|
-
**
|
|
24
|
-
|
|
25
|
-
**
|
|
26
|
-
- **bulbul:v2:**
|
|
27
|
-
- Female: Anushka, Manisha, Vidya, Arya
|
|
28
|
-
- Male: Abhilash, Karun, Hitesh
|
|
31
|
+
**Model Compatibility:**
|
|
32
|
+
- **bulbul:v2:** anushka (default), abhilash, manisha, vidya, arya, karun, hitesh
|
|
33
|
+
- **bulbul:v3-beta:** aditya (default), ritu, priya, neha, rahul, pooja, rohan, simran, kavya, amit, dev, ishita, shreya, ratan, varun, manan, sumit, roopa, kabir, aayan, shubh, ashutosh, advait, amelia, sophia
|
|
29
34
|
|
|
30
35
|
**Note:** Speaker selection must match the chosen model version.
|
|
31
36
|
"""
|
|
@@ -35,13 +40,18 @@ class ConfigureConnectionData(UniversalBaseModel):
|
|
|
35
40
|
Controls the pitch of the audio. Lower values result in a deeper voice,
|
|
36
41
|
while higher values make it sharper. The suitable range is between -0.75
|
|
37
42
|
and 0.75. Default is 0.0.
|
|
43
|
+
|
|
44
|
+
**Note:** NOT supported for bulbul:v3-beta. Will be ignored if provided.
|
|
38
45
|
"""
|
|
39
46
|
|
|
40
47
|
pace: typing.Optional[float] = pydantic.Field(default=None)
|
|
41
48
|
"""
|
|
42
49
|
Controls the speed of the audio. Lower values result in slower speech,
|
|
43
|
-
while higher values make it faster.
|
|
44
|
-
|
|
50
|
+
while higher values make it faster. Default is 1.0.
|
|
51
|
+
|
|
52
|
+
**Model-specific ranges:**
|
|
53
|
+
- **bulbul:v2:** 0.3 to 3.0
|
|
54
|
+
- **bulbul:v3-beta:** 0.5 to 2.0
|
|
45
55
|
"""
|
|
46
56
|
|
|
47
57
|
loudness: typing.Optional[float] = pydantic.Field(default=None)
|
|
@@ -49,19 +59,38 @@ class ConfigureConnectionData(UniversalBaseModel):
|
|
|
49
59
|
Controls the loudness of the audio. Lower values result in quieter audio,
|
|
50
60
|
while higher values make it louder. The suitable range is between 0.3
|
|
51
61
|
and 3.0. Default is 1.0.
|
|
62
|
+
|
|
63
|
+
**Note:** NOT supported for bulbul:v3-beta. Will be ignored if provided.
|
|
64
|
+
"""
|
|
65
|
+
|
|
66
|
+
temperature: typing.Optional[float] = pydantic.Field(default=None)
|
|
67
|
+
"""
|
|
68
|
+
Controls the randomness of the output. Lower values make the output more
|
|
69
|
+
focused and deterministic, while higher values make it more random.
|
|
70
|
+
The suitable range is between 0.01 and 1.0. Default is 0.6.
|
|
71
|
+
|
|
72
|
+
**Note:** Only supported for bulbul:v3-beta. Will be ignored for bulbul:v2.
|
|
52
73
|
"""
|
|
53
74
|
|
|
54
75
|
speech_sample_rate: typing.Optional[int] = pydantic.Field(default=None)
|
|
55
76
|
"""
|
|
56
77
|
Specifies the sample rate of the output audio. Supported values are
|
|
57
|
-
8000, 16000, 22050, 24000 Hz.
|
|
78
|
+
8000, 16000, 22050, 24000 Hz.
|
|
79
|
+
|
|
80
|
+
**Model-specific defaults:**
|
|
81
|
+
- **bulbul:v2:** 22050 Hz
|
|
82
|
+
- **bulbul:v3-beta:** 24000 Hz
|
|
58
83
|
"""
|
|
59
84
|
|
|
60
85
|
enable_preprocessing: typing.Optional[bool] = pydantic.Field(default=None)
|
|
61
86
|
"""
|
|
62
87
|
Controls whether normalization of English words and numeric entities
|
|
63
88
|
(e.g., numbers, dates) is performed. Set to true for better handling
|
|
64
|
-
of mixed-language text.
|
|
89
|
+
of mixed-language text.
|
|
90
|
+
|
|
91
|
+
**Model-specific defaults:**
|
|
92
|
+
- **bulbul:v2:** false (optional)
|
|
93
|
+
- **bulbul:v3-beta:** Always enabled (cannot be disabled)
|
|
65
94
|
"""
|
|
66
95
|
|
|
67
96
|
output_audio_codec: typing.Optional[ConfigureConnectionDataOutputAudioCodec] = pydantic.Field(default=None)
|
|
@@ -3,5 +3,39 @@
|
|
|
3
3
|
import typing
|
|
4
4
|
|
|
5
5
|
ConfigureConnectionDataSpeaker = typing.Union[
|
|
6
|
-
typing.Literal[
|
|
6
|
+
typing.Literal[
|
|
7
|
+
"anushka",
|
|
8
|
+
"abhilash",
|
|
9
|
+
"manisha",
|
|
10
|
+
"vidya",
|
|
11
|
+
"arya",
|
|
12
|
+
"karun",
|
|
13
|
+
"hitesh",
|
|
14
|
+
"aditya",
|
|
15
|
+
"ritu",
|
|
16
|
+
"priya",
|
|
17
|
+
"neha",
|
|
18
|
+
"rahul",
|
|
19
|
+
"pooja",
|
|
20
|
+
"rohan",
|
|
21
|
+
"simran",
|
|
22
|
+
"kavya",
|
|
23
|
+
"amit",
|
|
24
|
+
"dev",
|
|
25
|
+
"ishita",
|
|
26
|
+
"shreya",
|
|
27
|
+
"ratan",
|
|
28
|
+
"varun",
|
|
29
|
+
"manan",
|
|
30
|
+
"sumit",
|
|
31
|
+
"roopa",
|
|
32
|
+
"kabir",
|
|
33
|
+
"aayan",
|
|
34
|
+
"shubh",
|
|
35
|
+
"ashutosh",
|
|
36
|
+
"advait",
|
|
37
|
+
"amelia",
|
|
38
|
+
"sophia",
|
|
39
|
+
],
|
|
40
|
+
typing.Any,
|
|
7
41
|
]
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
import pydantic
|
|
6
|
+
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
|
+
from .doc_digitization_job_parameters import DocDigitizationJobParameters
|
|
8
|
+
from .doc_digitization_job_state import DocDigitizationJobState
|
|
9
|
+
from .storage_container_type import StorageContainerType
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class DocDigitizationCreateJobResponse(UniversalBaseModel):
|
|
13
|
+
job_id: str = pydantic.Field()
|
|
14
|
+
"""
|
|
15
|
+
Unique job identifier (UUID)
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
storage_container_type: StorageContainerType = pydantic.Field()
|
|
19
|
+
"""
|
|
20
|
+
Storage Container Type
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
job_parameters: DocDigitizationJobParameters = pydantic.Field()
|
|
24
|
+
"""
|
|
25
|
+
Job configuration parameters
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
job_state: DocDigitizationJobState
|
|
29
|
+
|
|
30
|
+
if IS_PYDANTIC_V2:
|
|
31
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
32
|
+
else:
|
|
33
|
+
|
|
34
|
+
class Config:
|
|
35
|
+
frozen = True
|
|
36
|
+
smart_union = True
|
|
37
|
+
extra = pydantic.Extra.allow
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
import pydantic
|
|
6
|
+
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
|
+
from .doc_digitization_job_state import DocDigitizationJobState
|
|
8
|
+
from .file_signed_url_details import FileSignedUrlDetails
|
|
9
|
+
from .storage_container_type import StorageContainerType
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class DocDigitizationDownloadFilesResponse(UniversalBaseModel):
|
|
13
|
+
"""
|
|
14
|
+
Response for download-files endpoint.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
job_id: str = pydantic.Field()
|
|
18
|
+
"""
|
|
19
|
+
Job identifier (UUID)
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
job_state: DocDigitizationJobState = pydantic.Field()
|
|
23
|
+
"""
|
|
24
|
+
Current job state
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
storage_container_type: StorageContainerType = pydantic.Field()
|
|
28
|
+
"""
|
|
29
|
+
Storage backend type
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
download_urls: typing.Dict[str, FileSignedUrlDetails] = pydantic.Field()
|
|
33
|
+
"""
|
|
34
|
+
Map of filename to presigned download URL details
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
error_code: typing.Optional[str] = None
|
|
38
|
+
error_message: typing.Optional[str] = None
|
|
39
|
+
|
|
40
|
+
if IS_PYDANTIC_V2:
|
|
41
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
42
|
+
else:
|
|
43
|
+
|
|
44
|
+
class Config:
|
|
45
|
+
frozen = True
|
|
46
|
+
smart_union = True
|
|
47
|
+
extra = pydantic.Extra.allow
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
DocDigitizationErrorCode = typing.Union[
|
|
6
|
+
typing.Literal[
|
|
7
|
+
"invalid_request_error",
|
|
8
|
+
"internal_server_error",
|
|
9
|
+
"insufficient_quota_error",
|
|
10
|
+
"invalid_api_key_error",
|
|
11
|
+
"rate_limit_exceeded_error",
|
|
12
|
+
"high_load_error",
|
|
13
|
+
],
|
|
14
|
+
typing.Any,
|
|
15
|
+
]
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
import pydantic
|
|
6
|
+
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
|
+
from .doc_digitization_error_code import DocDigitizationErrorCode
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class DocDigitizationErrorDetails(UniversalBaseModel):
|
|
11
|
+
message: str = pydantic.Field()
|
|
12
|
+
"""
|
|
13
|
+
Message describing the error
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
code: DocDigitizationErrorCode = pydantic.Field()
|
|
17
|
+
"""
|
|
18
|
+
Error code for the specific error that has occurred.
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
request_id: typing.Optional[str] = pydantic.Field(default=None)
|
|
22
|
+
"""
|
|
23
|
+
Unique identifier for the request. Format: date_UUID4
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
if IS_PYDANTIC_V2:
|
|
27
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
28
|
+
else:
|
|
29
|
+
|
|
30
|
+
class Config:
|
|
31
|
+
frozen = True
|
|
32
|
+
smart_union = True
|
|
33
|
+
extra = pydantic.Extra.allow
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
import pydantic
|
|
6
|
+
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
|
+
from .doc_digitization_error_details import DocDigitizationErrorDetails
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class DocDigitizationErrorMessage(UniversalBaseModel):
|
|
11
|
+
error: DocDigitizationErrorDetails = pydantic.Field()
|
|
12
|
+
"""
|
|
13
|
+
Error details
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
if IS_PYDANTIC_V2:
|
|
17
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
18
|
+
else:
|
|
19
|
+
|
|
20
|
+
class Config:
|
|
21
|
+
frozen = True
|
|
22
|
+
smart_union = True
|
|
23
|
+
extra = pydantic.Extra.allow
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
import pydantic
|
|
6
|
+
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
|
+
from .doc_digitization_job_detail_state import DocDigitizationJobDetailState
|
|
8
|
+
from .doc_digitization_page_error import DocDigitizationPageError
|
|
9
|
+
from .task_file_details import TaskFileDetails
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class DocDigitizationJobDetail(UniversalBaseModel):
|
|
13
|
+
"""
|
|
14
|
+
Processing details for a single input file with page-level metrics.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
inputs: typing.List[TaskFileDetails] = pydantic.Field()
|
|
18
|
+
"""
|
|
19
|
+
Input file(s) for this task
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
outputs: typing.List[TaskFileDetails] = pydantic.Field()
|
|
23
|
+
"""
|
|
24
|
+
Output file(s) produced
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
state: DocDigitizationJobDetailState = pydantic.Field()
|
|
28
|
+
"""
|
|
29
|
+
Processing state for this file
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
total_pages: typing.Optional[int] = pydantic.Field(default=None)
|
|
33
|
+
"""
|
|
34
|
+
Total pages/images in the input file
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
pages_processed: typing.Optional[int] = pydantic.Field(default=None)
|
|
38
|
+
"""
|
|
39
|
+
Number of pages processed so far
|
|
40
|
+
"""
|
|
41
|
+
|
|
42
|
+
pages_succeeded: typing.Optional[int] = pydantic.Field(default=None)
|
|
43
|
+
"""
|
|
44
|
+
Number of pages successfully processed
|
|
45
|
+
"""
|
|
46
|
+
|
|
47
|
+
pages_failed: typing.Optional[int] = pydantic.Field(default=None)
|
|
48
|
+
"""
|
|
49
|
+
Number of pages that failed processing
|
|
50
|
+
"""
|
|
51
|
+
|
|
52
|
+
error_message: typing.Optional[str] = pydantic.Field(default=None)
|
|
53
|
+
"""
|
|
54
|
+
Error message if processing failed
|
|
55
|
+
"""
|
|
56
|
+
|
|
57
|
+
error_code: typing.Optional[str] = pydantic.Field(default=None)
|
|
58
|
+
"""
|
|
59
|
+
Standardized error code if failed
|
|
60
|
+
"""
|
|
61
|
+
|
|
62
|
+
page_errors: typing.Optional[typing.List[DocDigitizationPageError]] = pydantic.Field(default=None)
|
|
63
|
+
"""
|
|
64
|
+
Detailed errors for each failed page
|
|
65
|
+
"""
|
|
66
|
+
|
|
67
|
+
if IS_PYDANTIC_V2:
|
|
68
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
69
|
+
else:
|
|
70
|
+
|
|
71
|
+
class Config:
|
|
72
|
+
frozen = True
|
|
73
|
+
smart_union = True
|
|
74
|
+
extra = pydantic.Extra.allow
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
import pydantic
|
|
6
|
+
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
|
+
from .doc_digitization_output_format import DocDigitizationOutputFormat
|
|
8
|
+
from .doc_digitization_supported_language import DocDigitizationSupportedLanguage
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class DocDigitizationJobParameters(UniversalBaseModel):
|
|
12
|
+
"""
|
|
13
|
+
Job parameters for document digitization.
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
language: typing.Optional[DocDigitizationSupportedLanguage] = pydantic.Field(default=None)
|
|
17
|
+
"""
|
|
18
|
+
ISO language code for the document
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
output_format: typing.Optional[DocDigitizationOutputFormat] = pydantic.Field(default=None)
|
|
22
|
+
"""
|
|
23
|
+
Output format: html or md
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
if IS_PYDANTIC_V2:
|
|
27
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
28
|
+
else:
|
|
29
|
+
|
|
30
|
+
class Config:
|
|
31
|
+
frozen = True
|
|
32
|
+
smart_union = True
|
|
33
|
+
extra = pydantic.Extra.allow
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import datetime as dt
|
|
4
|
+
import typing
|
|
5
|
+
|
|
6
|
+
import pydantic
|
|
7
|
+
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
8
|
+
from .doc_digitization_job_detail import DocDigitizationJobDetail
|
|
9
|
+
from .doc_digitization_job_state import DocDigitizationJobState
|
|
10
|
+
from .storage_container_type import StorageContainerType
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class DocDigitizationJobStatusResponse(UniversalBaseModel):
|
|
14
|
+
"""
|
|
15
|
+
Response model for job status endpoint.
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
job_id: str = pydantic.Field()
|
|
19
|
+
"""
|
|
20
|
+
Job identifier (UUID)
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
job_state: DocDigitizationJobState = pydantic.Field()
|
|
24
|
+
"""
|
|
25
|
+
Current job state
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
created_at: dt.datetime = pydantic.Field()
|
|
29
|
+
"""
|
|
30
|
+
Job creation timestamp (ISO 8601)
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
updated_at: dt.datetime = pydantic.Field()
|
|
34
|
+
"""
|
|
35
|
+
Last update timestamp (ISO 8601)
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
storage_container_type: StorageContainerType = pydantic.Field()
|
|
39
|
+
"""
|
|
40
|
+
Storage backend type
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
total_files: typing.Optional[int] = pydantic.Field(default=None)
|
|
44
|
+
"""
|
|
45
|
+
Total input files (always 1)
|
|
46
|
+
"""
|
|
47
|
+
|
|
48
|
+
successful_files_count: typing.Optional[int] = pydantic.Field(default=None)
|
|
49
|
+
"""
|
|
50
|
+
Files that completed successfully
|
|
51
|
+
"""
|
|
52
|
+
|
|
53
|
+
failed_files_count: typing.Optional[int] = pydantic.Field(default=None)
|
|
54
|
+
"""
|
|
55
|
+
Files that failed
|
|
56
|
+
"""
|
|
57
|
+
|
|
58
|
+
error_message: typing.Optional[str] = pydantic.Field(default=None)
|
|
59
|
+
"""
|
|
60
|
+
Job-level error message
|
|
61
|
+
"""
|
|
62
|
+
|
|
63
|
+
job_details: typing.Optional[typing.List[DocDigitizationJobDetail]] = pydantic.Field(default=None)
|
|
64
|
+
"""
|
|
65
|
+
Per-file processing details with page metrics
|
|
66
|
+
"""
|
|
67
|
+
|
|
68
|
+
if IS_PYDANTIC_V2:
|
|
69
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
70
|
+
else:
|
|
71
|
+
|
|
72
|
+
class Config:
|
|
73
|
+
frozen = True
|
|
74
|
+
smart_union = True
|
|
75
|
+
extra = pydantic.Extra.allow
|