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.
Files changed (28) hide show
  1. studyfetch_sdk/_version.py +1 -1
  2. studyfetch_sdk/resources/v1/chat/chat.py +7 -7
  3. studyfetch_sdk/resources/v1/components.py +9 -8
  4. studyfetch_sdk/resources/v1/explainers.py +154 -9
  5. studyfetch_sdk/resources/v1/flashcards.py +16 -16
  6. studyfetch_sdk/resources/v1/scenarios/component.py +116 -12
  7. studyfetch_sdk/resources/v1/scenarios/scenarios.py +245 -9
  8. studyfetch_sdk/types/v1/__init__.py +2 -0
  9. studyfetch_sdk/types/v1/chat_send_message_params.py +3 -3
  10. studyfetch_sdk/types/v1/component_create_params.py +349 -3
  11. studyfetch_sdk/types/v1/component_create_response.py +3 -1
  12. studyfetch_sdk/types/v1/component_embed_params.py +3 -2
  13. studyfetch_sdk/types/v1/component_list_response.py +3 -1
  14. studyfetch_sdk/types/v1/component_retrieve_response.py +3 -1
  15. studyfetch_sdk/types/v1/component_update_response.py +3 -1
  16. studyfetch_sdk/types/v1/explainer_create_params.py +45 -0
  17. studyfetch_sdk/types/v1/explainer_handle_webhook_params.py +45 -3
  18. studyfetch_sdk/types/v1/flashcard_get_all_params.py +2 -2
  19. studyfetch_sdk/types/v1/flashcard_get_due_params.py +1 -1
  20. studyfetch_sdk/types/v1/flashcard_get_stats_params.py +2 -2
  21. studyfetch_sdk/types/v1/scenario_create_params.py +39 -2
  22. studyfetch_sdk/types/v1/scenario_submit_params.py +18 -0
  23. studyfetch_sdk/types/v1/scenario_update_params.py +39 -2
  24. studyfetch_sdk/types/v1/scenarios/component_update_params.py +39 -2
  25. {studyfetch_sdk-0.1.0a3.dist-info → studyfetch_sdk-0.1.0a5.dist-info}/METADATA +1 -1
  26. {studyfetch_sdk-0.1.0a3.dist-info → studyfetch_sdk-0.1.0a5.dist-info}/RECORD +28 -26
  27. {studyfetch_sdk-0.1.0a3.dist-info → studyfetch_sdk-0.1.0a5.dist-info}/WHEEL +0 -0
  28. {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 typing_extensions import Literal, Required, TypedDict
5
+ from typing import List, Union, Iterable
6
+ from typing_extensions import Literal, Required, Annotated, TypeAlias, TypedDict
6
7
 
7
- __all__ = ["ComponentCreateParams"]
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[object]
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["chat", "flashcards", "tests", "scenarios", "explainers", "audio-recap"]
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
- group_id: Annotated[str, PropertyInfo(alias="groupId")]
20
- """Group ID for collaboration"""
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["chat", "flashcards", "tests", "scenarios", "explainers", "audio-recap"]
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["chat", "flashcards", "tests", "scenarios", "explainers", "audio-recap"]
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["chat", "flashcards", "tests", "scenarios", "explainers", "audio-recap"]
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 typing_extensions import Required, TypedDict
5
+ from typing import List
6
+ from typing_extensions import Literal, Required, Annotated, TypedDict
6
7
 
7
- __all__ = ["ExplainerHandleWebhookParams"]
8
+ from ..._utils import PropertyInfo
9
+
10
+ __all__ = ["ExplainerHandleWebhookParams", "Video"]
8
11
 
9
12
 
10
13
  class ExplainerHandleWebhookParams(TypedDict, total=False):
11
- body: Required[str]
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
- group_id: Annotated[str, PropertyInfo(alias="groupId")]
14
- """Group ID"""
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
- group_id: Required[Annotated[str, PropertyInfo(alias="groupId")]]
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
- group_id: Annotated[str, PropertyInfo(alias="groupId")]
14
- """Group ID"""
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 typing_extensions import Required, TypedDict
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
- body: Required[str]
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"""