studyfetch-sdk 0.1.0a3__py3-none-any.whl → 0.1.0a5__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.
- studyfetch_sdk/_version.py +1 -1
- studyfetch_sdk/resources/v1/chat/chat.py +7 -7
- studyfetch_sdk/resources/v1/components.py +9 -8
- studyfetch_sdk/resources/v1/explainers.py +154 -9
- studyfetch_sdk/resources/v1/flashcards.py +16 -16
- studyfetch_sdk/resources/v1/scenarios/component.py +116 -12
- studyfetch_sdk/resources/v1/scenarios/scenarios.py +245 -9
- studyfetch_sdk/types/v1/__init__.py +2 -0
- studyfetch_sdk/types/v1/chat_send_message_params.py +3 -3
- studyfetch_sdk/types/v1/component_create_params.py +349 -3
- studyfetch_sdk/types/v1/component_create_response.py +3 -1
- studyfetch_sdk/types/v1/component_embed_params.py +3 -2
- studyfetch_sdk/types/v1/component_list_response.py +3 -1
- studyfetch_sdk/types/v1/component_retrieve_response.py +3 -1
- studyfetch_sdk/types/v1/component_update_response.py +3 -1
- studyfetch_sdk/types/v1/explainer_create_params.py +45 -0
- studyfetch_sdk/types/v1/explainer_handle_webhook_params.py +45 -3
- studyfetch_sdk/types/v1/flashcard_get_all_params.py +2 -2
- studyfetch_sdk/types/v1/flashcard_get_due_params.py +1 -1
- studyfetch_sdk/types/v1/flashcard_get_stats_params.py +2 -2
- studyfetch_sdk/types/v1/scenario_create_params.py +39 -2
- studyfetch_sdk/types/v1/scenario_submit_params.py +18 -0
- studyfetch_sdk/types/v1/scenario_update_params.py +39 -2
- studyfetch_sdk/types/v1/scenarios/component_update_params.py +39 -2
- {studyfetch_sdk-0.1.0a3.dist-info → studyfetch_sdk-0.1.0a5.dist-info}/METADATA +1 -1
- {studyfetch_sdk-0.1.0a3.dist-info → studyfetch_sdk-0.1.0a5.dist-info}/RECORD +28 -26
- {studyfetch_sdk-0.1.0a3.dist-info → studyfetch_sdk-0.1.0a5.dist-info}/WHEEL +0 -0
- {studyfetch_sdk-0.1.0a3.dist-info → studyfetch_sdk-0.1.0a5.dist-info}/licenses/LICENSE +0 -0
@@ -2,13 +2,30 @@
|
|
2
2
|
|
3
3
|
from __future__ import annotations
|
4
4
|
|
5
|
-
from
|
5
|
+
from typing import List, Union, Iterable
|
6
|
+
from typing_extensions import Literal, Required, Annotated, TypeAlias, TypedDict
|
6
7
|
|
7
|
-
|
8
|
+
from ..._utils import PropertyInfo
|
9
|
+
|
10
|
+
__all__ = [
|
11
|
+
"ComponentCreateParams",
|
12
|
+
"Config",
|
13
|
+
"ConfigChatConfigDto",
|
14
|
+
"ConfigFlashcardsConfigDto",
|
15
|
+
"ConfigScenariosConfigDto",
|
16
|
+
"ConfigScenariosConfigDtoCharacter",
|
17
|
+
"ConfigScenariosConfigDtoTool",
|
18
|
+
"ConfigPracticeTestConfigDto",
|
19
|
+
"ConfigPracticeTestConfigDtoQuestionDistribution",
|
20
|
+
"ConfigAudioRecapConfigDto",
|
21
|
+
"ConfigExplainersConfigDto",
|
22
|
+
"ConfigUploadsConfigDto",
|
23
|
+
"ConfigTutorMeConfigDto",
|
24
|
+
]
|
8
25
|
|
9
26
|
|
10
27
|
class ComponentCreateParams(TypedDict, total=False):
|
11
|
-
config: Required[
|
28
|
+
config: Required[Config]
|
12
29
|
"""Component-specific configuration"""
|
13
30
|
|
14
31
|
name: Required[str]
|
@@ -27,3 +44,332 @@ class ComponentCreateParams(TypedDict, total=False):
|
|
27
44
|
|
28
45
|
metadata: object
|
29
46
|
"""Additional metadata"""
|
47
|
+
|
48
|
+
|
49
|
+
class ConfigChatConfigDto(TypedDict, total=False):
|
50
|
+
model: Required[str]
|
51
|
+
"""AI model to use"""
|
52
|
+
|
53
|
+
enable_component_creation: Annotated[bool, PropertyInfo(alias="enableComponentCreation")]
|
54
|
+
"""Enable component creation"""
|
55
|
+
|
56
|
+
enable_follow_ups: Annotated[bool, PropertyInfo(alias="enableFollowUps")]
|
57
|
+
"""Enable follow-up questions"""
|
58
|
+
|
59
|
+
enable_history: Annotated[bool, PropertyInfo(alias="enableHistory")]
|
60
|
+
"""Enable conversation history"""
|
61
|
+
|
62
|
+
enable_rag_search: Annotated[bool, PropertyInfo(alias="enableRAGSearch")]
|
63
|
+
"""Enable RAG search"""
|
64
|
+
|
65
|
+
enable_voice: Annotated[bool, PropertyInfo(alias="enableVoice")]
|
66
|
+
"""Enable voice interactions"""
|
67
|
+
|
68
|
+
enable_web_search: Annotated[bool, PropertyInfo(alias="enableWebSearch")]
|
69
|
+
"""Enable web search"""
|
70
|
+
|
71
|
+
folders: List[str]
|
72
|
+
"""Folder IDs"""
|
73
|
+
|
74
|
+
materials: List[str]
|
75
|
+
"""Material IDs"""
|
76
|
+
|
77
|
+
max_steps: Annotated[float, PropertyInfo(alias="maxSteps")]
|
78
|
+
"""Maximum steps for multi-step tool calls"""
|
79
|
+
|
80
|
+
max_tokens: Annotated[float, PropertyInfo(alias="maxTokens")]
|
81
|
+
"""Maximum tokens for response"""
|
82
|
+
|
83
|
+
system_prompt: Annotated[str, PropertyInfo(alias="systemPrompt")]
|
84
|
+
"""System prompt for the chat"""
|
85
|
+
|
86
|
+
temperature: float
|
87
|
+
"""Temperature for response generation"""
|
88
|
+
|
89
|
+
|
90
|
+
class ConfigFlashcardsConfigDto(TypedDict, total=False):
|
91
|
+
card_types: Annotated[List[str], PropertyInfo(alias="cardTypes")]
|
92
|
+
"""Types of flashcards"""
|
93
|
+
|
94
|
+
difficulty: Literal["easy", "medium", "hard", "mixed"]
|
95
|
+
"""Difficulty level"""
|
96
|
+
|
97
|
+
enable_spaced_repetition: Annotated[bool, PropertyInfo(alias="enableSpacedRepetition")]
|
98
|
+
"""Enable spaced repetition"""
|
99
|
+
|
100
|
+
folders: List[str]
|
101
|
+
"""Folder IDs"""
|
102
|
+
|
103
|
+
learning_steps: Annotated[str, PropertyInfo(alias="learningSteps")]
|
104
|
+
"""Learning steps configuration"""
|
105
|
+
|
106
|
+
materials: List[str]
|
107
|
+
"""Material IDs"""
|
108
|
+
|
109
|
+
max_review_interval: Annotated[float, PropertyInfo(alias="maxReviewInterval")]
|
110
|
+
"""Maximum review interval in days"""
|
111
|
+
|
112
|
+
model: str
|
113
|
+
"""AI model to use for flashcard generation"""
|
114
|
+
|
115
|
+
total_flashcards: Annotated[float, PropertyInfo(alias="totalFlashcards")]
|
116
|
+
"""Total number of flashcards to generate"""
|
117
|
+
|
118
|
+
view_mode: Annotated[Literal["spaced_repetition", "normal"], PropertyInfo(alias="viewMode")]
|
119
|
+
"""View mode for flashcards"""
|
120
|
+
|
121
|
+
|
122
|
+
class ConfigScenariosConfigDtoCharacter(TypedDict, total=False):
|
123
|
+
id: Required[str]
|
124
|
+
"""Character ID"""
|
125
|
+
|
126
|
+
name: Required[str]
|
127
|
+
"""Character name"""
|
128
|
+
|
129
|
+
role: Required[str]
|
130
|
+
"""Character role"""
|
131
|
+
|
132
|
+
description: str
|
133
|
+
"""Character description"""
|
134
|
+
|
135
|
+
|
136
|
+
class ConfigScenariosConfigDtoTool(TypedDict, total=False):
|
137
|
+
id: Required[str]
|
138
|
+
"""Tool ID"""
|
139
|
+
|
140
|
+
name: Required[str]
|
141
|
+
"""Tool name"""
|
142
|
+
|
143
|
+
data_format: Annotated[str, PropertyInfo(alias="dataFormat")]
|
144
|
+
"""Data format provided by the tool"""
|
145
|
+
|
146
|
+
description: str
|
147
|
+
"""Tool description"""
|
148
|
+
|
149
|
+
type: str
|
150
|
+
"""Tool type"""
|
151
|
+
|
152
|
+
|
153
|
+
class ConfigScenariosConfigDto(TypedDict, total=False):
|
154
|
+
characters: Iterable[ConfigScenariosConfigDtoCharacter]
|
155
|
+
"""Scenario characters"""
|
156
|
+
|
157
|
+
context: str
|
158
|
+
"""Scenario context"""
|
159
|
+
|
160
|
+
enable_history: Annotated[bool, PropertyInfo(alias="enableHistory")]
|
161
|
+
"""Enable history"""
|
162
|
+
|
163
|
+
enable_voice: Annotated[bool, PropertyInfo(alias="enableVoice")]
|
164
|
+
"""Enable voice"""
|
165
|
+
|
166
|
+
final_answer_prompt: Annotated[str, PropertyInfo(alias="finalAnswerPrompt")]
|
167
|
+
"""Final answer prompt"""
|
168
|
+
|
169
|
+
folders: List[str]
|
170
|
+
"""Folder IDs"""
|
171
|
+
|
172
|
+
format: str
|
173
|
+
"""Scenario format"""
|
174
|
+
|
175
|
+
goal: str
|
176
|
+
"""Scenario goal"""
|
177
|
+
|
178
|
+
greeting_character_id: Annotated[str, PropertyInfo(alias="greetingCharacterId")]
|
179
|
+
"""Character ID for greeting"""
|
180
|
+
|
181
|
+
greeting_message: Annotated[str, PropertyInfo(alias="greetingMessage")]
|
182
|
+
"""Greeting message"""
|
183
|
+
|
184
|
+
materials: List[str]
|
185
|
+
"""Material IDs"""
|
186
|
+
|
187
|
+
model: str
|
188
|
+
"""AI model to use for scenario generation"""
|
189
|
+
|
190
|
+
placeholder_text: Annotated[str, PropertyInfo(alias="placeholderText")]
|
191
|
+
"""Placeholder text"""
|
192
|
+
|
193
|
+
requires_final_answer: Annotated[bool, PropertyInfo(alias="requiresFinalAnswer")]
|
194
|
+
"""Requires final answer"""
|
195
|
+
|
196
|
+
tools: Iterable[ConfigScenariosConfigDtoTool]
|
197
|
+
"""Available tools"""
|
198
|
+
|
199
|
+
|
200
|
+
class ConfigPracticeTestConfigDtoQuestionDistribution(TypedDict, total=False):
|
201
|
+
fillinblank: float
|
202
|
+
"""Number of fill in the blank questions"""
|
203
|
+
|
204
|
+
frq: float
|
205
|
+
"""Number of free response questions"""
|
206
|
+
|
207
|
+
multiplechoice: float
|
208
|
+
"""Number of multiple choice questions"""
|
209
|
+
|
210
|
+
shortanswer: float
|
211
|
+
"""Number of short answer questions"""
|
212
|
+
|
213
|
+
truefalse: float
|
214
|
+
"""Number of true/false questions"""
|
215
|
+
|
216
|
+
|
217
|
+
class ConfigPracticeTestConfigDto(TypedDict, total=False):
|
218
|
+
question_types: Required[Annotated[List[str], PropertyInfo(alias="questionTypes")]]
|
219
|
+
"""Question types"""
|
220
|
+
|
221
|
+
ai_generation_mode: Annotated[
|
222
|
+
Literal["balanced", "comprehensive", "focused", "adaptive"], PropertyInfo(alias="aiGenerationMode")
|
223
|
+
]
|
224
|
+
"""AI generation mode"""
|
225
|
+
|
226
|
+
allow_retakes: Annotated[bool, PropertyInfo(alias="allowRetakes")]
|
227
|
+
"""Allow retakes"""
|
228
|
+
|
229
|
+
difficulty: Literal["easy", "medium", "hard", "mixed"]
|
230
|
+
"""Difficulty level"""
|
231
|
+
|
232
|
+
folders: List[str]
|
233
|
+
"""Folder IDs"""
|
234
|
+
|
235
|
+
materials: List[str]
|
236
|
+
"""Material IDs"""
|
237
|
+
|
238
|
+
max_attempts: Annotated[float, PropertyInfo(alias="maxAttempts")]
|
239
|
+
"""Maximum attempts allowed"""
|
240
|
+
|
241
|
+
model: str
|
242
|
+
"""AI model to use for question generation and grading"""
|
243
|
+
|
244
|
+
passing_score: Annotated[float, PropertyInfo(alias="passingScore")]
|
245
|
+
"""Passing score percentage"""
|
246
|
+
|
247
|
+
question_distribution: Annotated[
|
248
|
+
ConfigPracticeTestConfigDtoQuestionDistribution, PropertyInfo(alias="questionDistribution")
|
249
|
+
]
|
250
|
+
"""Distribution of question types"""
|
251
|
+
|
252
|
+
questions_per_test: Annotated[float, PropertyInfo(alias="questionsPerTest")]
|
253
|
+
"""Number of questions per test"""
|
254
|
+
|
255
|
+
randomize_answers: Annotated[bool, PropertyInfo(alias="randomizeAnswers")]
|
256
|
+
"""Randomize answer order"""
|
257
|
+
|
258
|
+
randomize_questions: Annotated[bool, PropertyInfo(alias="randomizeQuestions")]
|
259
|
+
"""Randomize question order"""
|
260
|
+
|
261
|
+
show_correct_answers: Annotated[bool, PropertyInfo(alias="showCorrectAnswers")]
|
262
|
+
"""Show correct answers after submission"""
|
263
|
+
|
264
|
+
show_explanations: Annotated[bool, PropertyInfo(alias="showExplanations")]
|
265
|
+
"""Show explanations for answers"""
|
266
|
+
|
267
|
+
time_limit: Annotated[float, PropertyInfo(alias="timeLimit")]
|
268
|
+
"""Time limit in minutes"""
|
269
|
+
|
270
|
+
|
271
|
+
class ConfigAudioRecapConfigDto(TypedDict, total=False):
|
272
|
+
duration: float
|
273
|
+
"""Duration of audio recap in minutes"""
|
274
|
+
|
275
|
+
folders: List[str]
|
276
|
+
"""Folder IDs"""
|
277
|
+
|
278
|
+
is_multi_voice: Annotated[bool, PropertyInfo(alias="isMultiVoice")]
|
279
|
+
"""Enable multi-voice conversation mode"""
|
280
|
+
|
281
|
+
materials: List[str]
|
282
|
+
"""Material IDs"""
|
283
|
+
|
284
|
+
model: str
|
285
|
+
"""AI model to use for generation"""
|
286
|
+
|
287
|
+
num_parts: Annotated[float, PropertyInfo(alias="numParts")]
|
288
|
+
"""Number of parts to split the audio into"""
|
289
|
+
|
290
|
+
recap_type: Annotated[Literal["SUMMARY", "LECTURE", "PODCAST", "AUDIO_BOOK"], PropertyInfo(alias="recapType")]
|
291
|
+
"""Type of audio recap"""
|
292
|
+
|
293
|
+
theme: str
|
294
|
+
"""Theme or style for the audio recap"""
|
295
|
+
|
296
|
+
topic: str
|
297
|
+
"""Specific topic to focus on"""
|
298
|
+
|
299
|
+
voice1: str
|
300
|
+
"""Primary voice for narration"""
|
301
|
+
|
302
|
+
voice2: str
|
303
|
+
"""Secondary voice for multi-voice mode"""
|
304
|
+
|
305
|
+
|
306
|
+
class ConfigExplainersConfigDto(TypedDict, total=False):
|
307
|
+
folders: List[str]
|
308
|
+
"""Folder IDs"""
|
309
|
+
|
310
|
+
image_search: Annotated[bool, PropertyInfo(alias="imageSearch")]
|
311
|
+
"""Enable image search for visuals"""
|
312
|
+
|
313
|
+
materials: List[str]
|
314
|
+
"""Material IDs"""
|
315
|
+
|
316
|
+
model: str
|
317
|
+
"""AI model to use for generation"""
|
318
|
+
|
319
|
+
style: str
|
320
|
+
"""Video style"""
|
321
|
+
|
322
|
+
target_length: Annotated[float, PropertyInfo(alias="targetLength")]
|
323
|
+
"""Target length in seconds"""
|
324
|
+
|
325
|
+
title: str
|
326
|
+
"""Video title (defaults to component name if not provided)"""
|
327
|
+
|
328
|
+
vertical_video: Annotated[bool, PropertyInfo(alias="verticalVideo")]
|
329
|
+
"""Create vertical video format (9:16)"""
|
330
|
+
|
331
|
+
web_search: Annotated[bool, PropertyInfo(alias="webSearch")]
|
332
|
+
"""Enable web search for additional content"""
|
333
|
+
|
334
|
+
|
335
|
+
class ConfigUploadsConfigDto(TypedDict, total=False):
|
336
|
+
folder_id: Required[Annotated[str, PropertyInfo(alias="folderId")]]
|
337
|
+
"""Folder ID where uploads will be stored"""
|
338
|
+
|
339
|
+
folders: List[str]
|
340
|
+
"""Folder IDs"""
|
341
|
+
|
342
|
+
materials: List[str]
|
343
|
+
"""Material IDs"""
|
344
|
+
|
345
|
+
|
346
|
+
class ConfigTutorMeConfigDto(TypedDict, total=False):
|
347
|
+
enable_video: Annotated[bool, PropertyInfo(alias="enableVideo")]
|
348
|
+
"""Enable video"""
|
349
|
+
|
350
|
+
enable_voice: Annotated[bool, PropertyInfo(alias="enableVoice")]
|
351
|
+
"""Enable voice"""
|
352
|
+
|
353
|
+
folders: List[str]
|
354
|
+
"""Folder IDs"""
|
355
|
+
|
356
|
+
materials: List[str]
|
357
|
+
"""Material IDs"""
|
358
|
+
|
359
|
+
session_duration: Annotated[float, PropertyInfo(alias="sessionDuration")]
|
360
|
+
"""Session duration in minutes"""
|
361
|
+
|
362
|
+
tutor_personality: Annotated[str, PropertyInfo(alias="tutorPersonality")]
|
363
|
+
"""Tutor personality"""
|
364
|
+
|
365
|
+
|
366
|
+
Config: TypeAlias = Union[
|
367
|
+
ConfigChatConfigDto,
|
368
|
+
ConfigFlashcardsConfigDto,
|
369
|
+
ConfigScenariosConfigDto,
|
370
|
+
ConfigPracticeTestConfigDto,
|
371
|
+
ConfigAudioRecapConfigDto,
|
372
|
+
ConfigExplainersConfigDto,
|
373
|
+
ConfigUploadsConfigDto,
|
374
|
+
ConfigTutorMeConfigDto,
|
375
|
+
]
|
@@ -33,7 +33,9 @@ class ComponentCreateResponse(BaseModel):
|
|
33
33
|
status: Literal["active", "inactive", "draft"]
|
34
34
|
"""Component status"""
|
35
35
|
|
36
|
-
type: Literal[
|
36
|
+
type: Literal[
|
37
|
+
"chat", "flashcards", "scenarios", "practice_test", "audio_recap", "tutor_me", "explainers", "uploads"
|
38
|
+
]
|
37
39
|
"""Component type"""
|
38
40
|
|
39
41
|
updated_at: datetime = FieldInfo(alias="updatedAt")
|
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
from __future__ import annotations
|
4
4
|
|
5
|
+
from typing import List
|
5
6
|
from typing_extensions import Annotated, TypedDict
|
6
7
|
|
7
8
|
from ..._utils import PropertyInfo
|
@@ -16,8 +17,8 @@ class ComponentEmbedParams(TypedDict, total=False):
|
|
16
17
|
features: Features
|
17
18
|
"""Feature toggles"""
|
18
19
|
|
19
|
-
|
20
|
-
"""Group
|
20
|
+
group_ids: Annotated[List[str], PropertyInfo(alias="groupIds")]
|
21
|
+
"""Group IDs for collaboration"""
|
21
22
|
|
22
23
|
height: str
|
23
24
|
"""Embed height (e.g., "400px", "100vh")"""
|
@@ -33,7 +33,9 @@ class ComponentListResponseItem(BaseModel):
|
|
33
33
|
status: Literal["active", "inactive", "draft"]
|
34
34
|
"""Component status"""
|
35
35
|
|
36
|
-
type: Literal[
|
36
|
+
type: Literal[
|
37
|
+
"chat", "flashcards", "scenarios", "practice_test", "audio_recap", "tutor_me", "explainers", "uploads"
|
38
|
+
]
|
37
39
|
"""Component type"""
|
38
40
|
|
39
41
|
updated_at: datetime = FieldInfo(alias="updatedAt")
|
@@ -33,7 +33,9 @@ class ComponentRetrieveResponse(BaseModel):
|
|
33
33
|
status: Literal["active", "inactive", "draft"]
|
34
34
|
"""Component status"""
|
35
35
|
|
36
|
-
type: Literal[
|
36
|
+
type: Literal[
|
37
|
+
"chat", "flashcards", "scenarios", "practice_test", "audio_recap", "tutor_me", "explainers", "uploads"
|
38
|
+
]
|
37
39
|
"""Component type"""
|
38
40
|
|
39
41
|
updated_at: datetime = FieldInfo(alias="updatedAt")
|
@@ -33,7 +33,9 @@ class ComponentUpdateResponse(BaseModel):
|
|
33
33
|
status: Literal["active", "inactive", "draft"]
|
34
34
|
"""Component status"""
|
35
35
|
|
36
|
-
type: Literal[
|
36
|
+
type: Literal[
|
37
|
+
"chat", "flashcards", "scenarios", "practice_test", "audio_recap", "tutor_me", "explainers", "uploads"
|
38
|
+
]
|
37
39
|
"""Component type"""
|
38
40
|
|
39
41
|
updated_at: datetime = FieldInfo(alias="updatedAt")
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
2
|
+
|
3
|
+
from __future__ import annotations
|
4
|
+
|
5
|
+
from typing import List
|
6
|
+
from typing_extensions import Required, Annotated, TypedDict
|
7
|
+
|
8
|
+
from ..._utils import PropertyInfo
|
9
|
+
|
10
|
+
__all__ = ["ExplainerCreateParams"]
|
11
|
+
|
12
|
+
|
13
|
+
class ExplainerCreateParams(TypedDict, total=False):
|
14
|
+
component_id: Required[Annotated[str, PropertyInfo(alias="componentId")]]
|
15
|
+
"""Component ID"""
|
16
|
+
|
17
|
+
folder_ids: Required[Annotated[List[str], PropertyInfo(alias="folderIds")]]
|
18
|
+
"""Folder IDs to include"""
|
19
|
+
|
20
|
+
material_ids: Required[Annotated[List[str], PropertyInfo(alias="materialIds")]]
|
21
|
+
"""Material IDs to include"""
|
22
|
+
|
23
|
+
target_length: Required[Annotated[float, PropertyInfo(alias="targetLength")]]
|
24
|
+
"""Target video length in seconds"""
|
25
|
+
|
26
|
+
title: Required[str]
|
27
|
+
"""Title for the explainer video"""
|
28
|
+
|
29
|
+
image_search: Annotated[bool, PropertyInfo(alias="imageSearch")]
|
30
|
+
"""Enable image search for visuals"""
|
31
|
+
|
32
|
+
model: str
|
33
|
+
"""AI model to use"""
|
34
|
+
|
35
|
+
style: str
|
36
|
+
"""Video style"""
|
37
|
+
|
38
|
+
user_id: Annotated[str, PropertyInfo(alias="userId")]
|
39
|
+
"""User ID"""
|
40
|
+
|
41
|
+
vertical_video: Annotated[bool, PropertyInfo(alias="verticalVideo")]
|
42
|
+
"""Create vertical video format (9:16)"""
|
43
|
+
|
44
|
+
web_search: Annotated[bool, PropertyInfo(alias="webSearch")]
|
45
|
+
"""Enable web search for additional content"""
|
@@ -2,10 +2,52 @@
|
|
2
2
|
|
3
3
|
from __future__ import annotations
|
4
4
|
|
5
|
-
from
|
5
|
+
from typing import List
|
6
|
+
from typing_extensions import Literal, Required, Annotated, TypedDict
|
6
7
|
|
7
|
-
|
8
|
+
from ..._utils import PropertyInfo
|
9
|
+
|
10
|
+
__all__ = ["ExplainerHandleWebhookParams", "Video"]
|
8
11
|
|
9
12
|
|
10
13
|
class ExplainerHandleWebhookParams(TypedDict, total=False):
|
11
|
-
|
14
|
+
event: Required[Literal["video.completed", "video.progress", "video.failed"]]
|
15
|
+
"""Webhook event type"""
|
16
|
+
|
17
|
+
video: Required[Video]
|
18
|
+
"""Video data"""
|
19
|
+
|
20
|
+
|
21
|
+
class Video(TypedDict, total=False):
|
22
|
+
id: Required[str]
|
23
|
+
"""Video ID"""
|
24
|
+
|
25
|
+
image_sources: Annotated[object, PropertyInfo(alias="imageSources")]
|
26
|
+
"""Image sources"""
|
27
|
+
|
28
|
+
progress: float
|
29
|
+
"""Progress percentage"""
|
30
|
+
|
31
|
+
sections: List[str]
|
32
|
+
"""Video sections"""
|
33
|
+
|
34
|
+
stream_id: Annotated[str, PropertyInfo(alias="streamId")]
|
35
|
+
"""Stream ID"""
|
36
|
+
|
37
|
+
stream_url: Annotated[str, PropertyInfo(alias="streamUrl")]
|
38
|
+
"""Stream URL"""
|
39
|
+
|
40
|
+
thumbnail_url: Annotated[str, PropertyInfo(alias="thumbnailUrl")]
|
41
|
+
"""Thumbnail URL"""
|
42
|
+
|
43
|
+
transcript: str
|
44
|
+
"""Video transcript"""
|
45
|
+
|
46
|
+
video_url: Annotated[str, PropertyInfo(alias="videoUrl")]
|
47
|
+
"""Video URL"""
|
48
|
+
|
49
|
+
web_search_results: Annotated[object, PropertyInfo(alias="webSearchResults")]
|
50
|
+
"""Web search results"""
|
51
|
+
|
52
|
+
web_search_sources: Annotated[object, PropertyInfo(alias="webSearchSources")]
|
53
|
+
"""Web search sources"""
|
@@ -10,8 +10,8 @@ __all__ = ["FlashcardGetAllParams"]
|
|
10
10
|
|
11
11
|
|
12
12
|
class FlashcardGetAllParams(TypedDict, total=False):
|
13
|
-
|
14
|
-
"""Group
|
13
|
+
group_ids: Annotated[str, PropertyInfo(alias="groupIds")]
|
14
|
+
"""Group IDs (comma-separated)"""
|
15
15
|
|
16
16
|
limit: float
|
17
17
|
"""Max number of cards"""
|
@@ -10,7 +10,7 @@ __all__ = ["FlashcardGetDueParams"]
|
|
10
10
|
|
11
11
|
|
12
12
|
class FlashcardGetDueParams(TypedDict, total=False):
|
13
|
-
|
13
|
+
group_ids: Required[Annotated[str, PropertyInfo(alias="groupIds")]]
|
14
14
|
|
15
15
|
limit: float
|
16
16
|
"""Max number of cards"""
|
@@ -10,8 +10,8 @@ __all__ = ["FlashcardGetStatsParams"]
|
|
10
10
|
|
11
11
|
|
12
12
|
class FlashcardGetStatsParams(TypedDict, total=False):
|
13
|
-
|
14
|
-
"""Group
|
13
|
+
group_ids: Annotated[str, PropertyInfo(alias="groupIds")]
|
14
|
+
"""Group IDs (comma-separated)"""
|
15
15
|
|
16
16
|
user_id: Annotated[str, PropertyInfo(alias="userId")]
|
17
17
|
"""User ID"""
|
@@ -2,10 +2,47 @@
|
|
2
2
|
|
3
3
|
from __future__ import annotations
|
4
4
|
|
5
|
-
from
|
5
|
+
from typing import Iterable
|
6
|
+
from typing_extensions import Required, Annotated, TypedDict
|
7
|
+
|
8
|
+
from ..._utils import PropertyInfo
|
6
9
|
|
7
10
|
__all__ = ["ScenarioCreateParams"]
|
8
11
|
|
9
12
|
|
10
13
|
class ScenarioCreateParams(TypedDict, total=False):
|
11
|
-
|
14
|
+
component_id: Required[Annotated[str, PropertyInfo(alias="componentId")]]
|
15
|
+
"""Associated component ID"""
|
16
|
+
|
17
|
+
name: Required[str]
|
18
|
+
"""Scenario name"""
|
19
|
+
|
20
|
+
characters: Iterable[object]
|
21
|
+
"""Scenario characters"""
|
22
|
+
|
23
|
+
context: str
|
24
|
+
"""Scenario context"""
|
25
|
+
|
26
|
+
description: str
|
27
|
+
"""Scenario description"""
|
28
|
+
|
29
|
+
final_answer_prompt: Annotated[str, PropertyInfo(alias="finalAnswerPrompt")]
|
30
|
+
"""Prompt for final answer"""
|
31
|
+
|
32
|
+
format: str
|
33
|
+
"""Interaction format"""
|
34
|
+
|
35
|
+
goal: str
|
36
|
+
"""Scenario goal"""
|
37
|
+
|
38
|
+
greeting_character_id: Annotated[str, PropertyInfo(alias="greetingCharacterId")]
|
39
|
+
"""Character ID for greeting"""
|
40
|
+
|
41
|
+
greeting_message: Annotated[str, PropertyInfo(alias="greetingMessage")]
|
42
|
+
"""Greeting message"""
|
43
|
+
|
44
|
+
requires_final_answer: Annotated[bool, PropertyInfo(alias="requiresFinalAnswer")]
|
45
|
+
"""Whether scenario requires a final answer"""
|
46
|
+
|
47
|
+
tools: Iterable[object]
|
48
|
+
"""Available tools"""
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
2
|
+
|
3
|
+
from __future__ import annotations
|
4
|
+
|
5
|
+
from typing import Iterable
|
6
|
+
from typing_extensions import Required, Annotated, TypedDict
|
7
|
+
|
8
|
+
from ..._utils import PropertyInfo
|
9
|
+
|
10
|
+
__all__ = ["ScenarioSubmitParams"]
|
11
|
+
|
12
|
+
|
13
|
+
class ScenarioSubmitParams(TypedDict, total=False):
|
14
|
+
conversation_history: Required[Annotated[Iterable[object], PropertyInfo(alias="conversationHistory")]]
|
15
|
+
"""Conversation history"""
|
16
|
+
|
17
|
+
final_answer: Annotated[str, PropertyInfo(alias="finalAnswer")]
|
18
|
+
"""Final answer for the scenario"""
|