studyfetch-sdk 0.1.0a1__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 (165) hide show
  1. studyfetch_sdk/__init__.py +100 -0
  2. studyfetch_sdk/_base_client.py +1992 -0
  3. studyfetch_sdk/_client.py +403 -0
  4. studyfetch_sdk/_compat.py +219 -0
  5. studyfetch_sdk/_constants.py +14 -0
  6. studyfetch_sdk/_exceptions.py +108 -0
  7. studyfetch_sdk/_files.py +123 -0
  8. studyfetch_sdk/_models.py +808 -0
  9. studyfetch_sdk/_qs.py +150 -0
  10. studyfetch_sdk/_resource.py +43 -0
  11. studyfetch_sdk/_response.py +832 -0
  12. studyfetch_sdk/_streaming.py +333 -0
  13. studyfetch_sdk/_types.py +219 -0
  14. studyfetch_sdk/_utils/__init__.py +57 -0
  15. studyfetch_sdk/_utils/_logs.py +25 -0
  16. studyfetch_sdk/_utils/_proxy.py +65 -0
  17. studyfetch_sdk/_utils/_reflection.py +42 -0
  18. studyfetch_sdk/_utils/_resources_proxy.py +24 -0
  19. studyfetch_sdk/_utils/_streams.py +12 -0
  20. studyfetch_sdk/_utils/_sync.py +86 -0
  21. studyfetch_sdk/_utils/_transform.py +447 -0
  22. studyfetch_sdk/_utils/_typing.py +151 -0
  23. studyfetch_sdk/_utils/_utils.py +422 -0
  24. studyfetch_sdk/_version.py +4 -0
  25. studyfetch_sdk/lib/.keep +4 -0
  26. studyfetch_sdk/py.typed +0 -0
  27. studyfetch_sdk/resources/__init__.py +19 -0
  28. studyfetch_sdk/resources/v1/__init__.py +215 -0
  29. studyfetch_sdk/resources/v1/audio_recaps/__init__.py +33 -0
  30. studyfetch_sdk/resources/v1/audio_recaps/audio_recaps.py +328 -0
  31. studyfetch_sdk/resources/v1/audio_recaps/sections.py +250 -0
  32. studyfetch_sdk/resources/v1/auth/__init__.py +61 -0
  33. studyfetch_sdk/resources/v1/auth/auth.py +620 -0
  34. studyfetch_sdk/resources/v1/auth/login.py +374 -0
  35. studyfetch_sdk/resources/v1/auth/number_2fa.py +457 -0
  36. studyfetch_sdk/resources/v1/auth/organization_invites.py +160 -0
  37. studyfetch_sdk/resources/v1/chat/__init__.py +47 -0
  38. studyfetch_sdk/resources/v1/chat/chat.py +576 -0
  39. studyfetch_sdk/resources/v1/chat/sessions.py +222 -0
  40. studyfetch_sdk/resources/v1/chat/test.py +190 -0
  41. studyfetch_sdk/resources/v1/components.py +943 -0
  42. studyfetch_sdk/resources/v1/embed/__init__.py +33 -0
  43. studyfetch_sdk/resources/v1/embed/component.py +278 -0
  44. studyfetch_sdk/resources/v1/embed/embed.py +346 -0
  45. studyfetch_sdk/resources/v1/explainers.py +216 -0
  46. studyfetch_sdk/resources/v1/flashcards.py +783 -0
  47. studyfetch_sdk/resources/v1/folders.py +744 -0
  48. studyfetch_sdk/resources/v1/materials/__init__.py +61 -0
  49. studyfetch_sdk/resources/v1/materials/bulk.py +134 -0
  50. studyfetch_sdk/resources/v1/materials/materials.py +1029 -0
  51. studyfetch_sdk/resources/v1/materials/test.py +290 -0
  52. studyfetch_sdk/resources/v1/materials/upload.py +410 -0
  53. studyfetch_sdk/resources/v1/organizations/__init__.py +103 -0
  54. studyfetch_sdk/resources/v1/organizations/api_keys.py +260 -0
  55. studyfetch_sdk/resources/v1/organizations/logo/__init__.py +33 -0
  56. studyfetch_sdk/resources/v1/organizations/logo/logo.py +166 -0
  57. studyfetch_sdk/resources/v1/organizations/logo/upload.py +184 -0
  58. studyfetch_sdk/resources/v1/organizations/organizations.py +428 -0
  59. studyfetch_sdk/resources/v1/organizations/profile/__init__.py +47 -0
  60. studyfetch_sdk/resources/v1/organizations/profile/models.py +134 -0
  61. studyfetch_sdk/resources/v1/organizations/profile/profile.py +248 -0
  62. studyfetch_sdk/resources/v1/organizations/profile/team.py +462 -0
  63. studyfetch_sdk/resources/v1/organizations/team/__init__.py +33 -0
  64. studyfetch_sdk/resources/v1/organizations/team/invite.py +236 -0
  65. studyfetch_sdk/resources/v1/organizations/team/team.py +564 -0
  66. studyfetch_sdk/resources/v1/organizations/theme.py +184 -0
  67. studyfetch_sdk/resources/v1/organizations/usage.py +160 -0
  68. studyfetch_sdk/resources/v1/scenarios/__init__.py +61 -0
  69. studyfetch_sdk/resources/v1/scenarios/component.py +330 -0
  70. studyfetch_sdk/resources/v1/scenarios/scenarios.py +708 -0
  71. studyfetch_sdk/resources/v1/scenarios/sessions.py +236 -0
  72. studyfetch_sdk/resources/v1/scenarios/submissions/__init__.py +33 -0
  73. studyfetch_sdk/resources/v1/scenarios/submissions/submissions.py +102 -0
  74. studyfetch_sdk/resources/v1/scenarios/submissions/user.py +210 -0
  75. studyfetch_sdk/resources/v1/tests/__init__.py +33 -0
  76. studyfetch_sdk/resources/v1/tests/component.py +160 -0
  77. studyfetch_sdk/resources/v1/tests/tests.py +682 -0
  78. studyfetch_sdk/resources/v1/upload/__init__.py +33 -0
  79. studyfetch_sdk/resources/v1/upload/component.py +388 -0
  80. studyfetch_sdk/resources/v1/upload/upload.py +102 -0
  81. studyfetch_sdk/resources/v1/usage.py +1126 -0
  82. studyfetch_sdk/resources/v1/v1.py +518 -0
  83. studyfetch_sdk/types/__init__.py +3 -0
  84. studyfetch_sdk/types/v1/__init__.py +52 -0
  85. studyfetch_sdk/types/v1/admin/__init__.py +3 -0
  86. studyfetch_sdk/types/v1/admin/organizations/__init__.py +3 -0
  87. studyfetch_sdk/types/v1/admin/organizations/models/__init__.py +3 -0
  88. studyfetch_sdk/types/v1/audio_recaps/__init__.py +3 -0
  89. studyfetch_sdk/types/v1/auth/__init__.py +13 -0
  90. studyfetch_sdk/types/v1/auth/login_authenticate_params.py +15 -0
  91. studyfetch_sdk/types/v1/auth/login_verify_2fa_params.py +15 -0
  92. studyfetch_sdk/types/v1/auth/login_verify_backup_code_params.py +17 -0
  93. studyfetch_sdk/types/v1/auth/number_2fa_disable_params.py +12 -0
  94. studyfetch_sdk/types/v1/auth/number_2fa_enable_params.py +12 -0
  95. studyfetch_sdk/types/v1/auth/number_2fa_regenerate_backup_codes_params.py +12 -0
  96. studyfetch_sdk/types/v1/auth/number_2fa_send_code_params.py +12 -0
  97. studyfetch_sdk/types/v1/auth_register_new_user_params.py +23 -0
  98. studyfetch_sdk/types/v1/auth_request_password_reset_params.py +12 -0
  99. studyfetch_sdk/types/v1/auth_reset_password_params.py +17 -0
  100. studyfetch_sdk/types/v1/chat/__init__.py +5 -0
  101. studyfetch_sdk/types/v1/chat/session_retrieve_params.py +11 -0
  102. studyfetch_sdk/types/v1/chat_retrieve_session_params.py +13 -0
  103. studyfetch_sdk/types/v1/chat_send_message_params.py +54 -0
  104. studyfetch_sdk/types/v1/chat_stream_params.py +28 -0
  105. studyfetch_sdk/types/v1/component_create_params.py +29 -0
  106. studyfetch_sdk/types/v1/component_create_response.py +46 -0
  107. studyfetch_sdk/types/v1/component_embed_params.py +99 -0
  108. studyfetch_sdk/types/v1/component_embed_response.py +38 -0
  109. studyfetch_sdk/types/v1/component_list_params.py +14 -0
  110. studyfetch_sdk/types/v1/component_list_response.py +49 -0
  111. studyfetch_sdk/types/v1/component_retrieve_response.py +46 -0
  112. studyfetch_sdk/types/v1/component_update_params.py +12 -0
  113. studyfetch_sdk/types/v1/component_update_response.py +46 -0
  114. studyfetch_sdk/types/v1/embed/__init__.py +6 -0
  115. studyfetch_sdk/types/v1/embed/component_interact_params.py +14 -0
  116. studyfetch_sdk/types/v1/embed/component_retrieve_params.py +12 -0
  117. studyfetch_sdk/types/v1/embed_get_theme_params.py +12 -0
  118. studyfetch_sdk/types/v1/embed_verify_params.py +12 -0
  119. studyfetch_sdk/types/v1/explainer_handle_webhook_params.py +11 -0
  120. studyfetch_sdk/types/v1/flashcard_batch_process_params.py +36 -0
  121. studyfetch_sdk/types/v1/flashcard_batch_process_response.py +39 -0
  122. studyfetch_sdk/types/v1/flashcard_get_algorithm_info_response.py +37 -0
  123. studyfetch_sdk/types/v1/flashcard_get_all_params.py +23 -0
  124. studyfetch_sdk/types/v1/flashcard_get_due_params.py +19 -0
  125. studyfetch_sdk/types/v1/flashcard_get_stats_params.py +17 -0
  126. studyfetch_sdk/types/v1/flashcard_get_types_response.py +14 -0
  127. studyfetch_sdk/types/v1/flashcard_rate_params.py +23 -0
  128. studyfetch_sdk/types/v1/folder_create_params.py +17 -0
  129. studyfetch_sdk/types/v1/folder_list_params.py +14 -0
  130. studyfetch_sdk/types/v1/folder_update_params.py +17 -0
  131. studyfetch_sdk/types/v1/material_create_params.py +34 -0
  132. studyfetch_sdk/types/v1/material_create_response.py +62 -0
  133. studyfetch_sdk/types/v1/material_get_download_url_params.py +13 -0
  134. studyfetch_sdk/types/v1/material_list_params.py +14 -0
  135. studyfetch_sdk/types/v1/material_list_response.py +65 -0
  136. studyfetch_sdk/types/v1/material_retrieve_response.py +62 -0
  137. studyfetch_sdk/types/v1/materials/__init__.py +8 -0
  138. studyfetch_sdk/types/v1/materials/upload_upload_file_params.py +20 -0
  139. studyfetch_sdk/types/v1/materials/upload_upload_file_response.py +62 -0
  140. studyfetch_sdk/types/v1/materials/upload_upload_from_url_params.py +20 -0
  141. studyfetch_sdk/types/v1/materials/upload_upload_from_url_response.py +62 -0
  142. studyfetch_sdk/types/v1/organizations/__init__.py +3 -0
  143. studyfetch_sdk/types/v1/organizations/logo/__init__.py +3 -0
  144. studyfetch_sdk/types/v1/organizations/profile/__init__.py +3 -0
  145. studyfetch_sdk/types/v1/organizations/team/__init__.py +3 -0
  146. studyfetch_sdk/types/v1/scenario_create_params.py +11 -0
  147. studyfetch_sdk/types/v1/scenario_update_params.py +11 -0
  148. studyfetch_sdk/types/v1/scenarios/__init__.py +5 -0
  149. studyfetch_sdk/types/v1/scenarios/component_update_params.py +11 -0
  150. studyfetch_sdk/types/v1/scenarios/submissions/__init__.py +3 -0
  151. studyfetch_sdk/types/v1/test_create_params.py +20 -0
  152. studyfetch_sdk/types/v1/test_retake_params.py +14 -0
  153. studyfetch_sdk/types/v1/test_submit_answer_params.py +20 -0
  154. studyfetch_sdk/types/v1/test_submit_params.py +14 -0
  155. studyfetch_sdk/types/v1/tests/__init__.py +3 -0
  156. studyfetch_sdk/types/v1/upload/__init__.py +3 -0
  157. studyfetch_sdk/types/v1/usage_get_stats_params.py +23 -0
  158. studyfetch_sdk/types/v1/usage_get_summary_params.py +23 -0
  159. studyfetch_sdk/types/v1/usage_list_events_params.py +61 -0
  160. studyfetch_sdk/types/v1/usage_track_chat_params.py +54 -0
  161. studyfetch_sdk/types/v1/usage_track_event_params.py +128 -0
  162. studyfetch_sdk-0.1.0a1.dist-info/METADATA +453 -0
  163. studyfetch_sdk-0.1.0a1.dist-info/RECORD +165 -0
  164. studyfetch_sdk-0.1.0a1.dist-info/WHEEL +4 -0
  165. studyfetch_sdk-0.1.0a1.dist-info/licenses/LICENSE +201 -0
@@ -0,0 +1,12 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import Required, TypedDict
6
+
7
+ __all__ = ["Number2faRegenerateBackupCodesParams"]
8
+
9
+
10
+ class Number2faRegenerateBackupCodesParams(TypedDict, total=False):
11
+ password: Required[str]
12
+ """User password for verification"""
@@ -0,0 +1,12 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import Required, TypedDict
6
+
7
+ __all__ = ["Number2faSendCodeParams"]
8
+
9
+
10
+ class Number2faSendCodeParams(TypedDict, total=False):
11
+ email: Required[str]
12
+ """Email to send verification code"""
@@ -0,0 +1,23 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import Required, Annotated, TypedDict
6
+
7
+ from ..._utils import PropertyInfo
8
+
9
+ __all__ = ["AuthRegisterNewUserParams"]
10
+
11
+
12
+ class AuthRegisterNewUserParams(TypedDict, total=False):
13
+ email: Required[str]
14
+ """User email address"""
15
+
16
+ name: Required[str]
17
+ """User full name"""
18
+
19
+ organization_name: Required[Annotated[str, PropertyInfo(alias="organizationName")]]
20
+ """Organization name"""
21
+
22
+ password: Required[str]
23
+ """User password"""
@@ -0,0 +1,12 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import Required, TypedDict
6
+
7
+ __all__ = ["AuthRequestPasswordResetParams"]
8
+
9
+
10
+ class AuthRequestPasswordResetParams(TypedDict, total=False):
11
+ email: Required[str]
12
+ """Email address to send reset link"""
@@ -0,0 +1,17 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import Required, Annotated, TypedDict
6
+
7
+ from ..._utils import PropertyInfo
8
+
9
+ __all__ = ["AuthResetPasswordParams"]
10
+
11
+
12
+ class AuthResetPasswordParams(TypedDict, total=False):
13
+ token: Required[str]
14
+ """Password reset token from email"""
15
+
16
+ new_password: Required[Annotated[str, PropertyInfo(alias="newPassword")]]
17
+ """New password"""
@@ -0,0 +1,5 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from .session_retrieve_params import SessionRetrieveParams as SessionRetrieveParams
@@ -0,0 +1,11 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import Required, TypedDict
6
+
7
+ __all__ = ["SessionRetrieveParams"]
8
+
9
+
10
+ class SessionRetrieveParams(TypedDict, total=False):
11
+ limit: Required[str]
@@ -0,0 +1,13 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import Required, Annotated, TypedDict
6
+
7
+ from ..._utils import PropertyInfo
8
+
9
+ __all__ = ["ChatRetrieveSessionParams"]
10
+
11
+
12
+ class ChatRetrieveSessionParams(TypedDict, total=False):
13
+ user_id: Required[Annotated[str, PropertyInfo(alias="userId")]]
@@ -0,0 +1,54 @@
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__ = ["ChatSendMessageParams", "Message", "MessageImage"]
11
+
12
+
13
+ class ChatSendMessageParams(TypedDict, total=False):
14
+ component_id: Required[Annotated[str, PropertyInfo(alias="componentId")]]
15
+ """Component ID for context"""
16
+
17
+ message: Required[Message]
18
+ """Chat message content"""
19
+
20
+ x_component_id: Required[Annotated[str, PropertyInfo(alias="x-component-id")]]
21
+
22
+ context: object
23
+ """Additional context data"""
24
+
25
+ group_id: Annotated[str, PropertyInfo(alias="groupId")]
26
+ """Group ID for collaboration"""
27
+
28
+ session_id: Annotated[str, PropertyInfo(alias="sessionId")]
29
+ """Session ID for conversation continuity"""
30
+
31
+ user_id: Annotated[str, PropertyInfo(alias="userId")]
32
+ """User ID for tracking"""
33
+
34
+
35
+ class MessageImage(TypedDict, total=False):
36
+ base64: str
37
+ """Base64 encoded image data"""
38
+
39
+ caption: str
40
+ """Caption for the image"""
41
+
42
+ mime_type: Annotated[str, PropertyInfo(alias="mimeType")]
43
+ """MIME type of the image"""
44
+
45
+ url: str
46
+ """URL of the image"""
47
+
48
+
49
+ class Message(TypedDict, total=False):
50
+ images: Iterable[MessageImage]
51
+ """Images attached to the message"""
52
+
53
+ text: str
54
+ """Text content of the message"""
@@ -0,0 +1,28 @@
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 Literal, Annotated, TypedDict
7
+
8
+ from ..._utils import PropertyInfo
9
+
10
+ __all__ = ["ChatStreamParams", "Message"]
11
+
12
+
13
+ class ChatStreamParams(TypedDict, total=False):
14
+ context: object
15
+
16
+ group_id: Annotated[str, PropertyInfo(alias="groupId")]
17
+
18
+ messages: Iterable[Message]
19
+
20
+ user_id: Annotated[str, PropertyInfo(alias="userId")]
21
+
22
+ x_component_id: Annotated[str, PropertyInfo(alias="x-component-id")]
23
+
24
+
25
+ class Message(TypedDict, total=False):
26
+ content: str
27
+
28
+ role: Literal["user", "assistant", "system"]
@@ -0,0 +1,29 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import Literal, Required, TypedDict
6
+
7
+ __all__ = ["ComponentCreateParams"]
8
+
9
+
10
+ class ComponentCreateParams(TypedDict, total=False):
11
+ config: Required[object]
12
+ """Component-specific configuration"""
13
+
14
+ name: Required[str]
15
+ """Name of the component"""
16
+
17
+ origin: Required[Literal["chat", "classroom", "upload", "console", "api"]]
18
+ """Origin of the component"""
19
+
20
+ type: Required[
21
+ Literal["chat", "flashcards", "scenarios", "practice_test", "audio_recap", "tutor_me", "explainers", "uploads"]
22
+ ]
23
+ """Type of component to create"""
24
+
25
+ description: str
26
+ """Component description"""
27
+
28
+ metadata: object
29
+ """Additional metadata"""
@@ -0,0 +1,46 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Optional
4
+ from datetime import datetime
5
+ from typing_extensions import Literal
6
+
7
+ from pydantic import Field as FieldInfo
8
+
9
+ from ..._models import BaseModel
10
+
11
+ __all__ = ["ComponentCreateResponse"]
12
+
13
+
14
+ class ComponentCreateResponse(BaseModel):
15
+ api_id: str = FieldInfo(alias="_id")
16
+ """Component ID (MongoDB ObjectId)"""
17
+
18
+ component_id: str = FieldInfo(alias="componentId")
19
+ """Unique component identifier"""
20
+
21
+ config: object
22
+ """Component configuration"""
23
+
24
+ created_at: datetime = FieldInfo(alias="createdAt")
25
+ """Creation timestamp"""
26
+
27
+ name: str
28
+ """Component name"""
29
+
30
+ organization: str
31
+ """Organization ID"""
32
+
33
+ status: Literal["active", "inactive", "draft"]
34
+ """Component status"""
35
+
36
+ type: Literal["chat", "flashcards", "tests", "scenarios", "explainers", "audio-recap"]
37
+ """Component type"""
38
+
39
+ updated_at: datetime = FieldInfo(alias="updatedAt")
40
+ """Last update timestamp"""
41
+
42
+ usage: object
43
+ """Usage statistics"""
44
+
45
+ description: Optional[str] = None
46
+ """Component description"""
@@ -0,0 +1,99 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import Annotated, TypedDict
6
+
7
+ from ..._utils import PropertyInfo
8
+
9
+ __all__ = ["ComponentEmbedParams", "Features", "Theme"]
10
+
11
+
12
+ class ComponentEmbedParams(TypedDict, total=False):
13
+ expiry_hours: Annotated[float, PropertyInfo(alias="expiryHours")]
14
+ """Token expiry time in hours"""
15
+
16
+ features: Features
17
+ """Feature toggles"""
18
+
19
+ group_id: Annotated[str, PropertyInfo(alias="groupId")]
20
+ """Group ID for collaboration"""
21
+
22
+ height: str
23
+ """Embed height (e.g., "400px", "100vh")"""
24
+
25
+ session_id: Annotated[str, PropertyInfo(alias="sessionId")]
26
+ """Session ID for continuity"""
27
+
28
+ theme: Theme
29
+ """Theme customization"""
30
+
31
+ user_id: Annotated[str, PropertyInfo(alias="userId")]
32
+ """User ID for tracking"""
33
+
34
+ width: str
35
+ """Embed width (e.g., "100%", "600px")"""
36
+
37
+
38
+ class Features(TypedDict, total=False):
39
+ enable_component_creation: Annotated[bool, PropertyInfo(alias="enableComponentCreation")]
40
+ """Enable component creation"""
41
+
42
+ enable_follow_ups: Annotated[bool, PropertyInfo(alias="enableFollowUps")]
43
+ """Enable follow-up questions"""
44
+
45
+ enable_history: Annotated[bool, PropertyInfo(alias="enableHistory")]
46
+ """Enable history"""
47
+
48
+ enable_image_sources: Annotated[bool, PropertyInfo(alias="enableImageSources")]
49
+ """Enable image sources"""
50
+
51
+ enable_outline: Annotated[bool, PropertyInfo(alias="enableOutline")]
52
+ """Enable outline"""
53
+
54
+ enable_transcript: Annotated[bool, PropertyInfo(alias="enableTranscript")]
55
+ """Enable transcript"""
56
+
57
+ enable_voice: Annotated[bool, PropertyInfo(alias="enableVoice")]
58
+ """Enable voice input"""
59
+
60
+ enable_web_search: Annotated[bool, PropertyInfo(alias="enableWebSearch")]
61
+ """Enable web search"""
62
+
63
+ enable_web_search_sources: Annotated[bool, PropertyInfo(alias="enableWebSearchSources")]
64
+ """Enable web search sources"""
65
+
66
+ placeholder_text: Annotated[str, PropertyInfo(alias="placeholderText")]
67
+ """Placeholder text"""
68
+
69
+
70
+ class Theme(TypedDict, total=False):
71
+ background_color: Annotated[str, PropertyInfo(alias="backgroundColor")]
72
+ """Background color (hex)"""
73
+
74
+ border_radius: Annotated[str, PropertyInfo(alias="borderRadius")]
75
+ """Border radius"""
76
+
77
+ font_family: Annotated[str, PropertyInfo(alias="fontFamily")]
78
+ """Font family"""
79
+
80
+ font_size: Annotated[str, PropertyInfo(alias="fontSize")]
81
+ """Font size"""
82
+
83
+ hide_branding: Annotated[bool, PropertyInfo(alias="hideBranding")]
84
+ """Hide branding"""
85
+
86
+ logo_url: Annotated[str, PropertyInfo(alias="logoUrl")]
87
+ """Logo URL"""
88
+
89
+ padding: str
90
+ """Padding"""
91
+
92
+ primary_color: Annotated[str, PropertyInfo(alias="primaryColor")]
93
+ """Primary color (hex)"""
94
+
95
+ secondary_color: Annotated[str, PropertyInfo(alias="secondaryColor")]
96
+ """Secondary color (hex)"""
97
+
98
+ text_color: Annotated[str, PropertyInfo(alias="textColor")]
99
+ """Text color (hex)"""
@@ -0,0 +1,38 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Optional
4
+ from datetime import datetime
5
+
6
+ from pydantic import Field as FieldInfo
7
+
8
+ from ..._models import BaseModel
9
+
10
+ __all__ = ["ComponentEmbedResponse", "Options"]
11
+
12
+
13
+ class Options(BaseModel):
14
+ height: Optional[str] = None
15
+ """Embed height"""
16
+
17
+ width: Optional[str] = None
18
+ """Embed width"""
19
+
20
+
21
+ class ComponentEmbedResponse(BaseModel):
22
+ token: str
23
+ """JWT token for authentication"""
24
+
25
+ component_id: str = FieldInfo(alias="componentId")
26
+ """Component ID"""
27
+
28
+ component_type: str = FieldInfo(alias="componentType")
29
+ """Component type"""
30
+
31
+ embed_url: str = FieldInfo(alias="embedUrl")
32
+ """The embed URL for iframe integration"""
33
+
34
+ expires_at: datetime = FieldInfo(alias="expiresAt")
35
+ """Token expiration timestamp"""
36
+
37
+ options: Options
38
+ """Embed options"""
@@ -0,0 +1,14 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import Literal, TypedDict
6
+
7
+ __all__ = ["ComponentListParams"]
8
+
9
+
10
+ class ComponentListParams(TypedDict, total=False):
11
+ type: Literal[
12
+ "chat", "flashcards", "scenarios", "practice_test", "audio_recap", "tutor_me", "explainers", "uploads"
13
+ ]
14
+ """Filter by component type"""
@@ -0,0 +1,49 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import List, Optional
4
+ from datetime import datetime
5
+ from typing_extensions import Literal, TypeAlias
6
+
7
+ from pydantic import Field as FieldInfo
8
+
9
+ from ..._models import BaseModel
10
+
11
+ __all__ = ["ComponentListResponse", "ComponentListResponseItem"]
12
+
13
+
14
+ class ComponentListResponseItem(BaseModel):
15
+ api_id: str = FieldInfo(alias="_id")
16
+ """Component ID (MongoDB ObjectId)"""
17
+
18
+ component_id: str = FieldInfo(alias="componentId")
19
+ """Unique component identifier"""
20
+
21
+ config: object
22
+ """Component configuration"""
23
+
24
+ created_at: datetime = FieldInfo(alias="createdAt")
25
+ """Creation timestamp"""
26
+
27
+ name: str
28
+ """Component name"""
29
+
30
+ organization: str
31
+ """Organization ID"""
32
+
33
+ status: Literal["active", "inactive", "draft"]
34
+ """Component status"""
35
+
36
+ type: Literal["chat", "flashcards", "tests", "scenarios", "explainers", "audio-recap"]
37
+ """Component type"""
38
+
39
+ updated_at: datetime = FieldInfo(alias="updatedAt")
40
+ """Last update timestamp"""
41
+
42
+ usage: object
43
+ """Usage statistics"""
44
+
45
+ description: Optional[str] = None
46
+ """Component description"""
47
+
48
+
49
+ ComponentListResponse: TypeAlias = List[ComponentListResponseItem]
@@ -0,0 +1,46 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Optional
4
+ from datetime import datetime
5
+ from typing_extensions import Literal
6
+
7
+ from pydantic import Field as FieldInfo
8
+
9
+ from ..._models import BaseModel
10
+
11
+ __all__ = ["ComponentRetrieveResponse"]
12
+
13
+
14
+ class ComponentRetrieveResponse(BaseModel):
15
+ api_id: str = FieldInfo(alias="_id")
16
+ """Component ID (MongoDB ObjectId)"""
17
+
18
+ component_id: str = FieldInfo(alias="componentId")
19
+ """Unique component identifier"""
20
+
21
+ config: object
22
+ """Component configuration"""
23
+
24
+ created_at: datetime = FieldInfo(alias="createdAt")
25
+ """Creation timestamp"""
26
+
27
+ name: str
28
+ """Component name"""
29
+
30
+ organization: str
31
+ """Organization ID"""
32
+
33
+ status: Literal["active", "inactive", "draft"]
34
+ """Component status"""
35
+
36
+ type: Literal["chat", "flashcards", "tests", "scenarios", "explainers", "audio-recap"]
37
+ """Component type"""
38
+
39
+ updated_at: datetime = FieldInfo(alias="updatedAt")
40
+ """Last update timestamp"""
41
+
42
+ usage: object
43
+ """Usage statistics"""
44
+
45
+ description: Optional[str] = None
46
+ """Component description"""
@@ -0,0 +1,12 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import Literal, TypedDict
6
+
7
+ __all__ = ["ComponentUpdateParams"]
8
+
9
+
10
+ class ComponentUpdateParams(TypedDict, total=False):
11
+ status: Literal["draft", "active", "inactive", "processing", "error"]
12
+ """Component status"""
@@ -0,0 +1,46 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Optional
4
+ from datetime import datetime
5
+ from typing_extensions import Literal
6
+
7
+ from pydantic import Field as FieldInfo
8
+
9
+ from ..._models import BaseModel
10
+
11
+ __all__ = ["ComponentUpdateResponse"]
12
+
13
+
14
+ class ComponentUpdateResponse(BaseModel):
15
+ api_id: str = FieldInfo(alias="_id")
16
+ """Component ID (MongoDB ObjectId)"""
17
+
18
+ component_id: str = FieldInfo(alias="componentId")
19
+ """Unique component identifier"""
20
+
21
+ config: object
22
+ """Component configuration"""
23
+
24
+ created_at: datetime = FieldInfo(alias="createdAt")
25
+ """Creation timestamp"""
26
+
27
+ name: str
28
+ """Component name"""
29
+
30
+ organization: str
31
+ """Organization ID"""
32
+
33
+ status: Literal["active", "inactive", "draft"]
34
+ """Component status"""
35
+
36
+ type: Literal["chat", "flashcards", "tests", "scenarios", "explainers", "audio-recap"]
37
+ """Component type"""
38
+
39
+ updated_at: datetime = FieldInfo(alias="updatedAt")
40
+ """Last update timestamp"""
41
+
42
+ usage: object
43
+ """Usage statistics"""
44
+
45
+ description: Optional[str] = None
46
+ """Component description"""
@@ -0,0 +1,6 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from .component_interact_params import ComponentInteractParams as ComponentInteractParams
6
+ from .component_retrieve_params import ComponentRetrieveParams as ComponentRetrieveParams
@@ -0,0 +1,14 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import Required, TypedDict
6
+
7
+ __all__ = ["ComponentInteractParams"]
8
+
9
+
10
+ class ComponentInteractParams(TypedDict, total=False):
11
+ token: Required[str]
12
+ """Embed token"""
13
+
14
+ body: Required[str]
@@ -0,0 +1,12 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import Required, TypedDict
6
+
7
+ __all__ = ["ComponentRetrieveParams"]
8
+
9
+
10
+ class ComponentRetrieveParams(TypedDict, total=False):
11
+ token: Required[str]
12
+ """Embed token"""
@@ -0,0 +1,12 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import Required, TypedDict
6
+
7
+ __all__ = ["EmbedGetThemeParams"]
8
+
9
+
10
+ class EmbedGetThemeParams(TypedDict, total=False):
11
+ token: Required[str]
12
+ """Embed token"""
@@ -0,0 +1,12 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import Required, TypedDict
6
+
7
+ __all__ = ["EmbedVerifyParams"]
8
+
9
+
10
+ class EmbedVerifyParams(TypedDict, total=False):
11
+ token: Required[str]
12
+ """Embed token to verify"""
@@ -0,0 +1,11 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import Required, TypedDict
6
+
7
+ __all__ = ["ExplainerHandleWebhookParams"]
8
+
9
+
10
+ class ExplainerHandleWebhookParams(TypedDict, total=False):
11
+ body: Required[str]