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,36 @@
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, Required, Annotated, TypedDict
7
+
8
+ from ..._utils import PropertyInfo
9
+
10
+ __all__ = ["FlashcardBatchProcessParams", "Operation"]
11
+
12
+
13
+ class FlashcardBatchProcessParams(TypedDict, total=False):
14
+ operations: Required[Iterable[Operation]]
15
+
16
+ group_id: Annotated[str, PropertyInfo(alias="groupId")]
17
+ """Group ID (optional)"""
18
+
19
+ user_id: Annotated[str, PropertyInfo(alias="userId")]
20
+ """User ID (optional)"""
21
+
22
+
23
+ class Operation(TypedDict, total=False):
24
+ action: Required[Literal["rate", "get_due", "get_all", "get_stats"]]
25
+
26
+ card_id: Required[Annotated[str, PropertyInfo(alias="cardId")]]
27
+ """Flashcard ID"""
28
+
29
+ group_id: Annotated[str, PropertyInfo(alias="groupId")]
30
+ """Group ID (optional)"""
31
+
32
+ rating: float
33
+ """Rating for rate action (0-3)"""
34
+
35
+ user_id: Annotated[str, PropertyInfo(alias="userId")]
36
+ """User ID (optional)"""
@@ -0,0 +1,39 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import List, Optional
4
+
5
+ from pydantic import Field as FieldInfo
6
+
7
+ from ..._models import BaseModel
8
+
9
+ __all__ = ["FlashcardBatchProcessResponse", "Result"]
10
+
11
+
12
+ class Result(BaseModel):
13
+ card_id: str = FieldInfo(alias="cardId")
14
+ """Flashcard ID"""
15
+
16
+ success: bool
17
+ """Operation success"""
18
+
19
+ error: Optional[str] = None
20
+ """Error message if failed"""
21
+
22
+ result: Optional[object] = None
23
+ """Operation result"""
24
+
25
+
26
+ class FlashcardBatchProcessResponse(BaseModel):
27
+ failed: Optional[float] = None
28
+ """Failed operations"""
29
+
30
+ processed: Optional[float] = None
31
+ """Total operations processed"""
32
+
33
+ results: Optional[List[Result]] = None
34
+
35
+ success: Optional[bool] = None
36
+ """Overall success"""
37
+
38
+ successful: Optional[float] = None
39
+ """Successful operations"""
@@ -0,0 +1,37 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Dict, List, Optional
4
+
5
+ from ..._models import BaseModel
6
+
7
+ __all__ = ["FlashcardGetAlgorithmInfoResponse", "Intervals", "Ratings"]
8
+
9
+
10
+ class Intervals(BaseModel):
11
+ graduated: Optional[str] = None
12
+ """Description of graduated intervals"""
13
+
14
+ lapse: Optional[str] = None
15
+ """Description of lapse intervals"""
16
+
17
+ learning: Optional[List[float]] = None
18
+ """Learning intervals in minutes"""
19
+
20
+
21
+ class Ratings(BaseModel):
22
+ description: str
23
+ """Rating description"""
24
+
25
+ name: str
26
+ """Rating name"""
27
+
28
+
29
+ class FlashcardGetAlgorithmInfoResponse(BaseModel):
30
+ algorithm: Optional[str] = None
31
+ """Algorithm name"""
32
+
33
+ intervals: Optional[Intervals] = None
34
+
35
+ phases: Optional[Dict[str, str]] = None
36
+
37
+ ratings: Optional[Dict[str, Ratings]] = None
@@ -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 Annotated, TypedDict
6
+
7
+ from ..._utils import PropertyInfo
8
+
9
+ __all__ = ["FlashcardGetAllParams"]
10
+
11
+
12
+ class FlashcardGetAllParams(TypedDict, total=False):
13
+ group_id: Annotated[str, PropertyInfo(alias="groupId")]
14
+ """Group ID"""
15
+
16
+ limit: float
17
+ """Max number of cards"""
18
+
19
+ offset: float
20
+ """Offset"""
21
+
22
+ user_id: Annotated[str, PropertyInfo(alias="userId")]
23
+ """User ID"""
@@ -0,0 +1,19 @@
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__ = ["FlashcardGetDueParams"]
10
+
11
+
12
+ class FlashcardGetDueParams(TypedDict, total=False):
13
+ group_id: Required[Annotated[str, PropertyInfo(alias="groupId")]]
14
+
15
+ limit: float
16
+ """Max number of cards"""
17
+
18
+ user_id: Annotated[str, PropertyInfo(alias="userId")]
19
+ """User ID"""
@@ -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 Annotated, TypedDict
6
+
7
+ from ..._utils import PropertyInfo
8
+
9
+ __all__ = ["FlashcardGetStatsParams"]
10
+
11
+
12
+ class FlashcardGetStatsParams(TypedDict, total=False):
13
+ group_id: Annotated[str, PropertyInfo(alias="groupId")]
14
+ """Group ID"""
15
+
16
+ user_id: Annotated[str, PropertyInfo(alias="userId")]
17
+ """User ID"""
@@ -0,0 +1,14 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Dict, List, Optional
4
+
5
+ from ..._models import BaseModel
6
+
7
+ __all__ = ["FlashcardGetTypesResponse"]
8
+
9
+
10
+ class FlashcardGetTypesResponse(BaseModel):
11
+ descriptions: Optional[Dict[str, str]] = None
12
+
13
+ types: Optional[List[str]] = None
14
+ """List of flashcard types"""
@@ -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__ = ["FlashcardRateParams"]
10
+
11
+
12
+ class FlashcardRateParams(TypedDict, total=False):
13
+ card_id: Required[Annotated[str, PropertyInfo(alias="cardId")]]
14
+ """Flashcard ID"""
15
+
16
+ rating: Required[float]
17
+ """Rating (0-3)"""
18
+
19
+ group_id: Annotated[str, PropertyInfo(alias="groupId")]
20
+ """Group ID (optional)"""
21
+
22
+ user_id: Annotated[str, PropertyInfo(alias="userId")]
23
+ """User ID (optional)"""
@@ -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__ = ["FolderCreateParams"]
10
+
11
+
12
+ class FolderCreateParams(TypedDict, total=False):
13
+ name: Required[str]
14
+ """Folder name"""
15
+
16
+ parent_id: Annotated[str, PropertyInfo(alias="parentId")]
17
+ """Parent folder ID (optional)"""
@@ -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 Annotated, TypedDict
6
+
7
+ from ..._utils import PropertyInfo
8
+
9
+ __all__ = ["FolderListParams"]
10
+
11
+
12
+ class FolderListParams(TypedDict, total=False):
13
+ parent_id: Annotated[object, PropertyInfo(alias="parentId")]
14
+ """Filter by parent folder"""
@@ -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 Annotated, TypedDict
6
+
7
+ from ..._utils import PropertyInfo
8
+
9
+ __all__ = ["FolderUpdateParams"]
10
+
11
+
12
+ class FolderUpdateParams(TypedDict, total=False):
13
+ name: str
14
+ """New folder name"""
15
+
16
+ parent_id: Annotated[str, PropertyInfo(alias="parentId")]
17
+ """New parent folder ID"""
@@ -0,0 +1,34 @@
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, Annotated, TypedDict
6
+
7
+ from ..._utils import PropertyInfo
8
+
9
+ __all__ = ["MaterialCreateParams", "Content"]
10
+
11
+
12
+ class MaterialCreateParams(TypedDict, total=False):
13
+ content: Required[Content]
14
+ """Content details"""
15
+
16
+ name: Required[str]
17
+ """Name of the material"""
18
+
19
+ folder_id: Annotated[str, PropertyInfo(alias="folderId")]
20
+ """Folder ID to place the material in"""
21
+
22
+
23
+ class Content(TypedDict, total=False):
24
+ type: Required[Literal["text", "pdf", "video", "audio", "url"]]
25
+ """Type of content"""
26
+
27
+ source_url: Annotated[str, PropertyInfo(alias="sourceUrl")]
28
+ """URL to fetch content from"""
29
+
30
+ text: str
31
+ """Text content (for text type)"""
32
+
33
+ url: str
34
+ """URL to the content (for url type)"""
@@ -0,0 +1,62 @@
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__ = ["MaterialCreateResponse", "Content"]
12
+
13
+
14
+ class Content(BaseModel):
15
+ filename: Optional[str] = None
16
+
17
+ file_size: Optional[float] = FieldInfo(alias="fileSize", default=None)
18
+
19
+ mime_type: Optional[str] = FieldInfo(alias="mimeType", default=None)
20
+
21
+ s3_key: Optional[str] = FieldInfo(alias="s3Key", default=None)
22
+
23
+ s3_url: Optional[str] = FieldInfo(alias="s3Url", default=None)
24
+
25
+ text: Optional[str] = None
26
+
27
+ url: Optional[str] = None
28
+
29
+
30
+ class MaterialCreateResponse(BaseModel):
31
+ api_id: str = FieldInfo(alias="_id")
32
+ """Material ID"""
33
+
34
+ content: Content
35
+ """Material content"""
36
+
37
+ content_type: Literal["text", "pdf", "video", "audio", "image", "epub"] = FieldInfo(alias="contentType")
38
+ """Content type"""
39
+
40
+ created_at: datetime = FieldInfo(alias="createdAt")
41
+ """Creation timestamp"""
42
+
43
+ folder_id: Optional[str] = FieldInfo(alias="folderId", default=None)
44
+ """Folder ID"""
45
+
46
+ name: str
47
+ """Material name"""
48
+
49
+ organization_id: str = FieldInfo(alias="organizationId")
50
+ """Organization ID"""
51
+
52
+ status: Literal["active", "processing", "pending_upload", "error", "deleted"]
53
+ """Material status"""
54
+
55
+ updated_at: datetime = FieldInfo(alias="updatedAt")
56
+ """Last update timestamp"""
57
+
58
+ metadata: Optional[object] = None
59
+ """Material metadata"""
60
+
61
+ usage: Optional[object] = None
62
+ """Usage information"""
@@ -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__ = ["MaterialGetDownloadURLParams"]
10
+
11
+
12
+ class MaterialGetDownloadURLParams(TypedDict, total=False):
13
+ expires_in: Required[Annotated[str, PropertyInfo(alias="expiresIn")]]
@@ -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 Annotated, TypedDict
6
+
7
+ from ..._utils import PropertyInfo
8
+
9
+ __all__ = ["MaterialListParams"]
10
+
11
+
12
+ class MaterialListParams(TypedDict, total=False):
13
+ folder_id: Annotated[str, PropertyInfo(alias="folderId")]
14
+ """Filter by folder ID"""
@@ -0,0 +1,65 @@
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__ = ["MaterialListResponse", "MaterialListResponseItem", "MaterialListResponseItemContent"]
12
+
13
+
14
+ class MaterialListResponseItemContent(BaseModel):
15
+ filename: Optional[str] = None
16
+
17
+ file_size: Optional[float] = FieldInfo(alias="fileSize", default=None)
18
+
19
+ mime_type: Optional[str] = FieldInfo(alias="mimeType", default=None)
20
+
21
+ s3_key: Optional[str] = FieldInfo(alias="s3Key", default=None)
22
+
23
+ s3_url: Optional[str] = FieldInfo(alias="s3Url", default=None)
24
+
25
+ text: Optional[str] = None
26
+
27
+ url: Optional[str] = None
28
+
29
+
30
+ class MaterialListResponseItem(BaseModel):
31
+ api_id: str = FieldInfo(alias="_id")
32
+ """Material ID"""
33
+
34
+ content: MaterialListResponseItemContent
35
+ """Material content"""
36
+
37
+ content_type: Literal["text", "pdf", "video", "audio", "image", "epub"] = FieldInfo(alias="contentType")
38
+ """Content type"""
39
+
40
+ created_at: datetime = FieldInfo(alias="createdAt")
41
+ """Creation timestamp"""
42
+
43
+ folder_id: Optional[str] = FieldInfo(alias="folderId", default=None)
44
+ """Folder ID"""
45
+
46
+ name: str
47
+ """Material name"""
48
+
49
+ organization_id: str = FieldInfo(alias="organizationId")
50
+ """Organization ID"""
51
+
52
+ status: Literal["active", "processing", "pending_upload", "error", "deleted"]
53
+ """Material status"""
54
+
55
+ updated_at: datetime = FieldInfo(alias="updatedAt")
56
+ """Last update timestamp"""
57
+
58
+ metadata: Optional[object] = None
59
+ """Material metadata"""
60
+
61
+ usage: Optional[object] = None
62
+ """Usage information"""
63
+
64
+
65
+ MaterialListResponse: TypeAlias = List[MaterialListResponseItem]
@@ -0,0 +1,62 @@
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__ = ["MaterialRetrieveResponse", "Content"]
12
+
13
+
14
+ class Content(BaseModel):
15
+ filename: Optional[str] = None
16
+
17
+ file_size: Optional[float] = FieldInfo(alias="fileSize", default=None)
18
+
19
+ mime_type: Optional[str] = FieldInfo(alias="mimeType", default=None)
20
+
21
+ s3_key: Optional[str] = FieldInfo(alias="s3Key", default=None)
22
+
23
+ s3_url: Optional[str] = FieldInfo(alias="s3Url", default=None)
24
+
25
+ text: Optional[str] = None
26
+
27
+ url: Optional[str] = None
28
+
29
+
30
+ class MaterialRetrieveResponse(BaseModel):
31
+ api_id: str = FieldInfo(alias="_id")
32
+ """Material ID"""
33
+
34
+ content: Content
35
+ """Material content"""
36
+
37
+ content_type: Literal["text", "pdf", "video", "audio", "image", "epub"] = FieldInfo(alias="contentType")
38
+ """Content type"""
39
+
40
+ created_at: datetime = FieldInfo(alias="createdAt")
41
+ """Creation timestamp"""
42
+
43
+ folder_id: Optional[str] = FieldInfo(alias="folderId", default=None)
44
+ """Folder ID"""
45
+
46
+ name: str
47
+ """Material name"""
48
+
49
+ organization_id: str = FieldInfo(alias="organizationId")
50
+ """Organization ID"""
51
+
52
+ status: Literal["active", "processing", "pending_upload", "error", "deleted"]
53
+ """Material status"""
54
+
55
+ updated_at: datetime = FieldInfo(alias="updatedAt")
56
+ """Last update timestamp"""
57
+
58
+ metadata: Optional[object] = None
59
+ """Material metadata"""
60
+
61
+ usage: Optional[object] = None
62
+ """Usage information"""
@@ -0,0 +1,8 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from .upload_upload_file_params import UploadUploadFileParams as UploadUploadFileParams
6
+ from .upload_upload_file_response import UploadUploadFileResponse as UploadUploadFileResponse
7
+ from .upload_upload_from_url_params import UploadUploadFromURLParams as UploadUploadFromURLParams
8
+ from .upload_upload_from_url_response import UploadUploadFromURLResponse as UploadUploadFromURLResponse
@@ -0,0 +1,20 @@
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 ...._types import FileTypes
8
+ from ...._utils import PropertyInfo
9
+
10
+ __all__ = ["UploadUploadFileParams"]
11
+
12
+
13
+ class UploadUploadFileParams(TypedDict, total=False):
14
+ file: Required[FileTypes]
15
+
16
+ name: Required[str]
17
+ """Material name"""
18
+
19
+ folder_id: Annotated[str, PropertyInfo(alias="folderId")]
20
+ """Folder ID (optional)"""
@@ -0,0 +1,62 @@
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__ = ["UploadUploadFileResponse", "Content"]
12
+
13
+
14
+ class Content(BaseModel):
15
+ filename: Optional[str] = None
16
+
17
+ file_size: Optional[float] = FieldInfo(alias="fileSize", default=None)
18
+
19
+ mime_type: Optional[str] = FieldInfo(alias="mimeType", default=None)
20
+
21
+ s3_key: Optional[str] = FieldInfo(alias="s3Key", default=None)
22
+
23
+ s3_url: Optional[str] = FieldInfo(alias="s3Url", default=None)
24
+
25
+ text: Optional[str] = None
26
+
27
+ url: Optional[str] = None
28
+
29
+
30
+ class UploadUploadFileResponse(BaseModel):
31
+ api_id: str = FieldInfo(alias="_id")
32
+ """Material ID"""
33
+
34
+ content: Content
35
+ """Material content"""
36
+
37
+ content_type: Literal["text", "pdf", "video", "audio", "image", "epub"] = FieldInfo(alias="contentType")
38
+ """Content type"""
39
+
40
+ created_at: datetime = FieldInfo(alias="createdAt")
41
+ """Creation timestamp"""
42
+
43
+ folder_id: Optional[str] = FieldInfo(alias="folderId", default=None)
44
+ """Folder ID"""
45
+
46
+ name: str
47
+ """Material name"""
48
+
49
+ organization_id: str = FieldInfo(alias="organizationId")
50
+ """Organization ID"""
51
+
52
+ status: Literal["active", "processing", "pending_upload", "error", "deleted"]
53
+ """Material status"""
54
+
55
+ updated_at: datetime = FieldInfo(alias="updatedAt")
56
+ """Last update timestamp"""
57
+
58
+ metadata: Optional[object] = None
59
+ """Material metadata"""
60
+
61
+ usage: Optional[object] = None
62
+ """Usage information"""
@@ -0,0 +1,20 @@
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__ = ["UploadUploadFromURLParams"]
10
+
11
+
12
+ class UploadUploadFromURLParams(TypedDict, total=False):
13
+ name: Required[str]
14
+ """Material name"""
15
+
16
+ url: Required[str]
17
+ """URL to fetch content from"""
18
+
19
+ folder_id: Annotated[str, PropertyInfo(alias="folderId")]
20
+ """Folder ID (optional)"""