studyfetch-sdk 0.1.0a17__py3-none-any.whl → 0.1.0a19__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 (58) hide show
  1. studyfetch_sdk/_models.py +1 -1
  2. studyfetch_sdk/_version.py +1 -1
  3. studyfetch_sdk/resources/v1/__init__.py +14 -0
  4. studyfetch_sdk/resources/v1/assignment_grader.py +81 -1
  5. studyfetch_sdk/resources/v1/components.py +36 -4
  6. studyfetch_sdk/resources/v1/data_analyst/__init__.py +47 -0
  7. studyfetch_sdk/resources/v1/data_analyst/data_analyst.py +582 -0
  8. studyfetch_sdk/resources/v1/data_analyst/sessions.py +222 -0
  9. studyfetch_sdk/resources/v1/data_analyst/test.py +190 -0
  10. studyfetch_sdk/resources/v1/materials/bulk.py +60 -7
  11. studyfetch_sdk/resources/v1/materials/materials.py +250 -57
  12. studyfetch_sdk/resources/v1/materials/test.py +29 -25
  13. studyfetch_sdk/resources/v1/materials/upload.py +402 -14
  14. studyfetch_sdk/resources/v1/usage/analyst.py +143 -15
  15. studyfetch_sdk/resources/v1/v1.py +98 -0
  16. studyfetch_sdk/types/v1/__init__.py +12 -0
  17. studyfetch_sdk/types/v1/assignment_grader_response.py +20 -1
  18. studyfetch_sdk/types/v1/component.py +9 -1
  19. studyfetch_sdk/types/v1/component_create_params.py +57 -1
  20. studyfetch_sdk/types/v1/component_list_params.py +9 -1
  21. studyfetch_sdk/types/v1/content_param.py +23 -0
  22. studyfetch_sdk/types/v1/data_analyst/__init__.py +5 -0
  23. studyfetch_sdk/types/v1/data_analyst/session_retrieve_params.py +11 -0
  24. studyfetch_sdk/types/v1/data_analyst_retrieve_session_params.py +13 -0
  25. studyfetch_sdk/types/v1/data_analyst_send_message_params.py +54 -0
  26. studyfetch_sdk/types/v1/data_analyst_stream_params.py +28 -0
  27. studyfetch_sdk/types/v1/material_batch_create_params.py +29 -0
  28. studyfetch_sdk/types/v1/material_batch_create_response.py +27 -0
  29. studyfetch_sdk/types/v1/material_create_and_process_params.py +27 -0
  30. studyfetch_sdk/types/v1/material_create_params.py +4 -17
  31. studyfetch_sdk/types/v1/material_debug_response.py +47 -0
  32. studyfetch_sdk/types/v1/material_get_download_url_params.py +3 -2
  33. studyfetch_sdk/types/v1/material_get_download_url_response.py +12 -0
  34. studyfetch_sdk/types/v1/material_move_params.py +15 -0
  35. studyfetch_sdk/types/v1/material_rename_params.py +12 -0
  36. studyfetch_sdk/types/v1/material_search_params.py +3 -6
  37. studyfetch_sdk/types/v1/material_search_response.py +54 -0
  38. studyfetch_sdk/types/v1/materials/__init__.py +11 -0
  39. studyfetch_sdk/types/v1/materials/bulk_move_params.py +18 -0
  40. studyfetch_sdk/types/v1/materials/bulk_move_response.py +15 -0
  41. studyfetch_sdk/types/v1/materials/test_perform_ocr_response.py +19 -0
  42. studyfetch_sdk/types/v1/materials/test_process_epub_response.py +30 -0
  43. studyfetch_sdk/types/v1/materials/test_process_image_response.py +30 -0
  44. studyfetch_sdk/types/v1/materials/test_process_video_response.py +25 -0
  45. studyfetch_sdk/types/v1/materials/upload_complete_upload_params.py +20 -0
  46. studyfetch_sdk/types/v1/materials/upload_create_presigned_url_params.py +23 -0
  47. studyfetch_sdk/types/v1/materials/upload_create_presigned_url_response.py +18 -0
  48. studyfetch_sdk/types/v1/materials/upload_upload_file_and_process_params.py +26 -0
  49. studyfetch_sdk/types/v1/materials/upload_upload_url_and_process_params.py +26 -0
  50. studyfetch_sdk/types/v1/usage/__init__.py +3 -0
  51. studyfetch_sdk/types/v1/usage/analyst_get_test_questions_params.py +18 -0
  52. studyfetch_sdk/types/v1/usage/analyst_list_chat_messages_params.py +18 -0
  53. studyfetch_sdk/types/v1/usage/analyst_list_chat_messages_response.py +35 -0
  54. studyfetch_sdk/types/v1/usage/analyst_list_events_params.py +7 -0
  55. {studyfetch_sdk-0.1.0a17.dist-info → studyfetch_sdk-0.1.0a19.dist-info}/METADATA +1 -1
  56. {studyfetch_sdk-0.1.0a17.dist-info → studyfetch_sdk-0.1.0a19.dist-info}/RECORD +58 -26
  57. {studyfetch_sdk-0.1.0a17.dist-info → studyfetch_sdk-0.1.0a19.dist-info}/WHEEL +0 -0
  58. {studyfetch_sdk-0.1.0a17.dist-info → studyfetch_sdk-0.1.0a19.dist-info}/licenses/LICENSE +0 -0
@@ -9,6 +9,14 @@ __all__ = ["ComponentListParams"]
9
9
 
10
10
  class ComponentListParams(TypedDict, total=False):
11
11
  type: Literal[
12
- "chat", "flashcards", "scenarios", "practice_test", "audio_recap", "tutor_me", "explainers", "uploads"
12
+ "chat",
13
+ "data_analyst",
14
+ "flashcards",
15
+ "scenarios",
16
+ "practice_test",
17
+ "audio_recap",
18
+ "tutor_me",
19
+ "explainers",
20
+ "uploads",
13
21
  ]
14
22
  """Filter by component type"""
@@ -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 Literal, Required, Annotated, TypedDict
6
+
7
+ from ..._utils import PropertyInfo
8
+
9
+ __all__ = ["ContentParam"]
10
+
11
+
12
+ class ContentParam(TypedDict, total=False):
13
+ type: Required[Literal["text", "pdf", "video", "audio", "url"]]
14
+ """Type of content"""
15
+
16
+ source_url: Annotated[str, PropertyInfo(alias="sourceUrl")]
17
+ """URL to fetch content from"""
18
+
19
+ text: str
20
+ """Text content (for text type)"""
21
+
22
+ url: str
23
+ """URL to the content (for url type)"""
@@ -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__ = ["DataAnalystRetrieveSessionParams"]
10
+
11
+
12
+ class DataAnalystRetrieveSessionParams(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 List, Iterable
6
+ from typing_extensions import Required, Annotated, TypedDict
7
+
8
+ from ..._utils import PropertyInfo
9
+
10
+ __all__ = ["DataAnalystSendMessageParams", "Message", "MessageImage"]
11
+
12
+
13
+ class DataAnalystSendMessageParams(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_ids: Annotated[List[str], PropertyInfo(alias="groupIds")]
26
+ """Group IDs 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__ = ["DataAnalystStreamParams", "Message"]
11
+
12
+
13
+ class DataAnalystStreamParams(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 import Iterable
6
+ from typing_extensions import Required, Annotated, TypedDict
7
+
8
+ from ..._utils import PropertyInfo
9
+
10
+ __all__ = ["MaterialBatchCreateParams", "Material"]
11
+
12
+
13
+ class MaterialBatchCreateParams(TypedDict, total=False):
14
+ materials: Required[Iterable[Material]]
15
+ """Array of materials to create"""
16
+
17
+
18
+ class Material(TypedDict, total=False):
19
+ content_type: Required[Annotated[str, PropertyInfo(alias="contentType")]]
20
+ """MIME type"""
21
+
22
+ filename: Required[str]
23
+ """Filename"""
24
+
25
+ name: Required[str]
26
+ """Material name"""
27
+
28
+ folder_id: Annotated[str, PropertyInfo(alias="folderId")]
29
+ """Folder ID"""
@@ -0,0 +1,27 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import List
4
+ from typing_extensions import TypeAlias
5
+
6
+ from pydantic import Field as FieldInfo
7
+
8
+ from ..._models import BaseModel
9
+
10
+ __all__ = ["MaterialBatchCreateResponse", "MaterialBatchCreateResponseItem"]
11
+
12
+
13
+ class MaterialBatchCreateResponseItem(BaseModel):
14
+ material_id: str = FieldInfo(alias="materialId")
15
+ """Material ID"""
16
+
17
+ name: str
18
+ """Material name"""
19
+
20
+ s3_key: str = FieldInfo(alias="s3Key")
21
+ """S3 key"""
22
+
23
+ upload_url: str = FieldInfo(alias="uploadUrl")
24
+ """Presigned upload URL"""
25
+
26
+
27
+ MaterialBatchCreateResponse: TypeAlias = List[MaterialBatchCreateResponseItem]
@@ -0,0 +1,27 @@
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
+ from .content_param import ContentParam
9
+
10
+ __all__ = ["MaterialCreateAndProcessParams"]
11
+
12
+
13
+ class MaterialCreateAndProcessParams(TypedDict, total=False):
14
+ content: Required[ContentParam]
15
+ """Content details"""
16
+
17
+ name: Required[str]
18
+ """Name of the material"""
19
+
20
+ folder_id: Annotated[str, PropertyInfo(alias="folderId")]
21
+ """Folder ID to place the material in"""
22
+
23
+ poll_interval_ms: Annotated[float, PropertyInfo(alias="pollIntervalMs")]
24
+ """Polling interval in milliseconds (default: 2 seconds)"""
25
+
26
+ timeout_ms: Annotated[float, PropertyInfo(alias="timeoutMs")]
27
+ """Maximum time to wait for processing in milliseconds (default: 5 minutes)"""
@@ -2,15 +2,16 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing_extensions import Literal, Required, Annotated, TypedDict
5
+ from typing_extensions import Required, Annotated, TypedDict
6
6
 
7
7
  from ..._utils import PropertyInfo
8
+ from .content_param import ContentParam
8
9
 
9
- __all__ = ["MaterialCreateParams", "Content"]
10
+ __all__ = ["MaterialCreateParams"]
10
11
 
11
12
 
12
13
  class MaterialCreateParams(TypedDict, total=False):
13
- content: Required[Content]
14
+ content: Required[ContentParam]
14
15
  """Content details"""
15
16
 
16
17
  name: Required[str]
@@ -18,17 +19,3 @@ class MaterialCreateParams(TypedDict, total=False):
18
19
 
19
20
  folder_id: Annotated[str, PropertyInfo(alias="folderId")]
20
21
  """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,47 @@
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__ = ["MaterialDebugResponse", "Image"]
10
+
11
+
12
+ class Image(BaseModel):
13
+ id: Optional[str] = None
14
+
15
+ description: Optional[str] = None
16
+
17
+ page_index: Optional[float] = FieldInfo(alias="pageIndex", default=None)
18
+
19
+ s3_key: Optional[str] = FieldInfo(alias="s3Key", default=None)
20
+
21
+ s3_url: Optional[str] = FieldInfo(alias="s3Url", default=None)
22
+
23
+
24
+ class MaterialDebugResponse(BaseModel):
25
+ content: object
26
+ """Content details"""
27
+
28
+ content_type: str = FieldInfo(alias="contentType")
29
+ """Content type"""
30
+
31
+ images: List[Image]
32
+ """Processed images"""
33
+
34
+ material_id: str = FieldInfo(alias="materialId")
35
+ """Material ID"""
36
+
37
+ metadata: object
38
+ """Material metadata"""
39
+
40
+ name: str
41
+ """Material name"""
42
+
43
+ status: str
44
+ """Processing status"""
45
+
46
+ transcript_structure: Optional[object] = FieldInfo(alias="transcriptStructure", default=None)
47
+ """Transcript structure for videos"""
@@ -2,7 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing_extensions import Required, Annotated, TypedDict
5
+ from typing_extensions import Annotated, TypedDict
6
6
 
7
7
  from ..._utils import PropertyInfo
8
8
 
@@ -10,4 +10,5 @@ __all__ = ["MaterialGetDownloadURLParams"]
10
10
 
11
11
 
12
12
  class MaterialGetDownloadURLParams(TypedDict, total=False):
13
- expires_in: Required[Annotated[str, PropertyInfo(alias="expiresIn")]]
13
+ expires_in: Annotated[float, PropertyInfo(alias="expiresIn")]
14
+ """URL expiration time in seconds (default: 3600)"""
@@ -0,0 +1,12 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from pydantic import Field as FieldInfo
4
+
5
+ from ..._models import BaseModel
6
+
7
+ __all__ = ["MaterialGetDownloadURLResponse"]
8
+
9
+
10
+ class MaterialGetDownloadURLResponse(BaseModel):
11
+ download_url: str = FieldInfo(alias="downloadUrl")
12
+ """Temporary download URL"""
@@ -0,0 +1,15 @@
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 Optional
6
+ from typing_extensions import Required, Annotated, TypedDict
7
+
8
+ from ..._utils import PropertyInfo
9
+
10
+ __all__ = ["MaterialMoveParams"]
11
+
12
+
13
+ class MaterialMoveParams(TypedDict, total=False):
14
+ folder_id: Required[Annotated[Optional[str], PropertyInfo(alias="folderId")]]
15
+ """Target folder ID (null for root)"""
@@ -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__ = ["MaterialRenameParams"]
8
+
9
+
10
+ class MaterialRenameParams(TypedDict, total=False):
11
+ name: Required[str]
12
+ """New name for the material"""
@@ -15,13 +15,10 @@ class MaterialSearchParams(TypedDict, total=False):
15
15
  """Search query"""
16
16
 
17
17
  folder_ids: Annotated[List[str], PropertyInfo(alias="folderIds")]
18
- """
19
- Optional: Limit search to materials within specific folders (includes
20
- subfolders)
21
- """
18
+ """Limit search to materials within specific folders (includes subfolders)"""
22
19
 
23
20
  material_ids: Annotated[List[str], PropertyInfo(alias="materialIds")]
24
- """Optional: Limit search to specific material IDs"""
21
+ """Limit search to specific material IDs"""
25
22
 
26
23
  top_k: Annotated[float, PropertyInfo(alias="topK")]
27
- """Number of results to return (default: 5)"""
24
+ """Number of results to return"""
@@ -0,0 +1,54 @@
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__ = ["MaterialSearchResponse", "Result", "ResultMaterial", "Scope"]
10
+
11
+
12
+ class ResultMaterial(BaseModel):
13
+ id: Optional[str] = None
14
+
15
+ content_type: Optional[str] = FieldInfo(alias="contentType", default=None)
16
+
17
+ name: Optional[str] = None
18
+
19
+
20
+ class Result(BaseModel):
21
+ chunk_index: float = FieldInfo(alias="chunkIndex")
22
+ """Chunk index within the material"""
23
+
24
+ material: Optional[ResultMaterial] = None
25
+ """Material information"""
26
+
27
+ score: float
28
+ """Relevance score (0-1)"""
29
+
30
+ text: str
31
+ """Matched text chunk"""
32
+
33
+
34
+ class Scope(BaseModel):
35
+ folder_ids: Optional[List[str]] = FieldInfo(alias="folderIds", default=None)
36
+
37
+ material_ids: Optional[List[str]] = FieldInfo(alias="materialIds", default=None)
38
+
39
+
40
+ class MaterialSearchResponse(BaseModel):
41
+ filtered: bool
42
+ """Whether results were filtered by scope"""
43
+
44
+ query: str
45
+ """Original search query"""
46
+
47
+ results: List[Result]
48
+ """Search results"""
49
+
50
+ scope: Scope
51
+ """Search scope"""
52
+
53
+ total_results: float = FieldInfo(alias="totalResults")
54
+ """Total number of results"""
@@ -2,5 +2,16 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ from .bulk_move_params import BulkMoveParams as BulkMoveParams
6
+ from .bulk_move_response import BulkMoveResponse as BulkMoveResponse
7
+ from .test_perform_ocr_response import TestPerformOcrResponse as TestPerformOcrResponse
5
8
  from .upload_upload_file_params import UploadUploadFileParams as UploadUploadFileParams
9
+ from .test_process_epub_response import TestProcessEpubResponse as TestProcessEpubResponse
10
+ from .test_process_image_response import TestProcessImageResponse as TestProcessImageResponse
11
+ from .test_process_video_response import TestProcessVideoResponse as TestProcessVideoResponse
12
+ from .upload_complete_upload_params import UploadCompleteUploadParams as UploadCompleteUploadParams
6
13
  from .upload_upload_from_url_params import UploadUploadFromURLParams as UploadUploadFromURLParams
14
+ from .upload_create_presigned_url_params import UploadCreatePresignedURLParams as UploadCreatePresignedURLParams
15
+ from .upload_create_presigned_url_response import UploadCreatePresignedURLResponse as UploadCreatePresignedURLResponse
16
+ from .upload_upload_url_and_process_params import UploadUploadURLAndProcessParams as UploadUploadURLAndProcessParams
17
+ from .upload_upload_file_and_process_params import UploadUploadFileAndProcessParams as UploadUploadFileAndProcessParams
@@ -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 List, Optional
6
+ from typing_extensions import Required, Annotated, TypedDict
7
+
8
+ from ...._utils import PropertyInfo
9
+
10
+ __all__ = ["BulkMoveParams"]
11
+
12
+
13
+ class BulkMoveParams(TypedDict, total=False):
14
+ folder_id: Required[Annotated[Optional[str], PropertyInfo(alias="folderId")]]
15
+ """Target folder ID (null for root)"""
16
+
17
+ material_ids: Required[Annotated[List[str], PropertyInfo(alias="materialIds")]]
18
+ """Array of material IDs to move"""
@@ -0,0 +1,15 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from pydantic import Field as FieldInfo
4
+
5
+ from ...._models import BaseModel
6
+
7
+ __all__ = ["BulkMoveResponse"]
8
+
9
+
10
+ class BulkMoveResponse(BaseModel):
11
+ moved_count: float = FieldInfo(alias="movedCount")
12
+ """Number of materials moved"""
13
+
14
+ success: bool
15
+ """Operation success status"""
@@ -0,0 +1,19 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from pydantic import Field as FieldInfo
4
+
5
+ from ...._models import BaseModel
6
+
7
+ __all__ = ["TestPerformOcrResponse"]
8
+
9
+
10
+ class TestPerformOcrResponse(BaseModel):
11
+ __test__ = False
12
+ first_chars: str = FieldInfo(alias="firstChars")
13
+ """First 500 characters of extracted text"""
14
+
15
+ success: bool
16
+ """Test success status"""
17
+
18
+ text_length: float = FieldInfo(alias="textLength")
19
+ """Length of extracted text"""
@@ -0,0 +1,30 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Optional
4
+
5
+ from pydantic import Field as FieldInfo
6
+
7
+ from ...._models import BaseModel
8
+
9
+ __all__ = ["TestProcessEpubResponse"]
10
+
11
+
12
+ class TestProcessEpubResponse(BaseModel):
13
+ __test__ = False
14
+ success: bool
15
+ """Test success status"""
16
+
17
+ epub_size: Optional[float] = FieldInfo(alias="epubSize", default=None)
18
+ """EPUB file size in bytes"""
19
+
20
+ epub_size_mb: Optional[str] = FieldInfo(alias="epubSizeMB", default=None)
21
+ """EPUB file size in MB"""
22
+
23
+ error: Optional[str] = None
24
+ """Error message if failed"""
25
+
26
+ message: Optional[str] = None
27
+ """Success message"""
28
+
29
+ stack: Optional[str] = None
30
+ """Error stack trace"""
@@ -0,0 +1,30 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Optional
4
+
5
+ from pydantic import Field as FieldInfo
6
+
7
+ from ...._models import BaseModel
8
+
9
+ __all__ = ["TestProcessImageResponse"]
10
+
11
+
12
+ class TestProcessImageResponse(BaseModel):
13
+ __test__ = False
14
+ success: bool
15
+ """Test success status"""
16
+
17
+ error: Optional[str] = None
18
+ """Error message if failed"""
19
+
20
+ image_info: Optional[object] = FieldInfo(alias="imageInfo", default=None)
21
+ """Image info if no base64 data"""
22
+
23
+ message: Optional[str] = None
24
+ """Success message"""
25
+
26
+ results: Optional[object] = None
27
+ """Test results"""
28
+
29
+ stack: Optional[str] = None
30
+ """Error stack trace"""
@@ -0,0 +1,25 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Optional
4
+
5
+ from ...._models import BaseModel
6
+
7
+ __all__ = ["TestProcessVideoResponse"]
8
+
9
+
10
+ class TestProcessVideoResponse(BaseModel):
11
+ __test__ = False
12
+ success: bool
13
+ """Test success status"""
14
+
15
+ error: Optional[str] = None
16
+ """Error message if failed"""
17
+
18
+ message: Optional[str] = None
19
+ """Success message"""
20
+
21
+ stack: Optional[str] = None
22
+ """Error stack trace"""
23
+
24
+ tests: Optional[object] = None
25
+ """Test results"""
@@ -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__ = ["UploadCompleteUploadParams"]
10
+
11
+
12
+ class UploadCompleteUploadParams(TypedDict, total=False):
13
+ material_id: Required[Annotated[str, PropertyInfo(alias="materialId")]]
14
+ """The ID of the material that was uploaded"""
15
+
16
+ organization_id: Required[Annotated[str, PropertyInfo(alias="organizationId")]]
17
+ """The ID of the organization"""
18
+
19
+ s3_key: Required[Annotated[str, PropertyInfo(alias="s3Key")]]
20
+ """The S3 key of the uploaded file"""