casedev 0.2.0__py3-none-any.whl → 0.4.0__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 (157) hide show
  1. casedev/_base_client.py +5 -2
  2. casedev/_client.py +275 -1
  3. casedev/_compat.py +3 -3
  4. casedev/_utils/_json.py +35 -0
  5. casedev/_version.py +1 -1
  6. casedev/resources/__init__.py +98 -0
  7. casedev/resources/applications/__init__.py +33 -0
  8. casedev/resources/applications/applications.py +102 -0
  9. casedev/resources/applications/v1/__init__.py +61 -0
  10. casedev/resources/applications/v1/deployments.py +867 -0
  11. casedev/resources/applications/v1/projects.py +1377 -0
  12. casedev/resources/applications/v1/v1.py +166 -0
  13. casedev/resources/applications/v1/workflows.py +182 -0
  14. casedev/resources/compute/v1/__init__.py +28 -0
  15. casedev/resources/compute/v1/instance_types.py +145 -0
  16. casedev/resources/compute/v1/instances.py +448 -0
  17. casedev/resources/compute/v1/v1.py +64 -0
  18. casedev/resources/database/__init__.py +33 -0
  19. casedev/resources/database/database.py +102 -0
  20. casedev/resources/database/v1/__init__.py +33 -0
  21. casedev/resources/database/v1/projects.py +771 -0
  22. casedev/resources/database/v1/v1.py +175 -0
  23. casedev/resources/legal/__init__.py +33 -0
  24. casedev/resources/legal/legal.py +102 -0
  25. casedev/resources/legal/v1.py +924 -0
  26. casedev/resources/memory/__init__.py +33 -0
  27. casedev/resources/memory/memory.py +102 -0
  28. casedev/resources/memory/v1.py +1100 -0
  29. casedev/resources/ocr/v1.py +2 -2
  30. casedev/resources/privilege/__init__.py +33 -0
  31. casedev/resources/privilege/privilege.py +102 -0
  32. casedev/resources/privilege/v1.py +260 -0
  33. casedev/resources/superdoc/__init__.py +33 -0
  34. casedev/resources/superdoc/superdoc.py +102 -0
  35. casedev/resources/superdoc/v1.py +349 -0
  36. casedev/resources/translate/__init__.py +33 -0
  37. casedev/resources/translate/translate.py +102 -0
  38. casedev/resources/translate/v1.py +418 -0
  39. casedev/resources/vault/__init__.py +14 -0
  40. casedev/resources/vault/graphrag.py +91 -0
  41. casedev/resources/vault/multipart.py +549 -0
  42. casedev/resources/vault/objects.py +481 -1
  43. casedev/resources/vault/vault.py +264 -5
  44. casedev/resources/voice/streaming.py +2 -2
  45. casedev/types/__init__.py +4 -0
  46. casedev/types/applications/v1/__init__.py +20 -0
  47. casedev/types/applications/v1/deployment_cancel_params.py +14 -0
  48. casedev/types/applications/v1/deployment_create_params.py +20 -0
  49. casedev/types/applications/v1/deployment_get_logs_params.py +14 -0
  50. casedev/types/applications/v1/deployment_list_params.py +23 -0
  51. casedev/types/applications/v1/deployment_retrieve_params.py +17 -0
  52. casedev/types/applications/v1/deployment_stream_params.py +17 -0
  53. casedev/types/applications/v1/project_create_deployment_params.py +29 -0
  54. casedev/types/applications/v1/project_create_domain_params.py +17 -0
  55. casedev/types/applications/v1/project_create_env_params.py +27 -0
  56. casedev/types/applications/v1/project_create_params.py +53 -0
  57. casedev/types/applications/v1/project_delete_params.py +14 -0
  58. casedev/types/applications/v1/project_get_runtime_logs_params.py +12 -0
  59. casedev/types/applications/v1/project_list_deployments_params.py +18 -0
  60. casedev/types/applications/v1/project_list_env_params.py +12 -0
  61. casedev/types/applications/v1/project_list_response.py +45 -0
  62. casedev/types/applications/v1/workflow_get_status_params.py +14 -0
  63. casedev/types/compute/v1/__init__.py +6 -0
  64. casedev/types/compute/v1/instance_create_params.py +28 -0
  65. casedev/types/compute/v1/instance_create_response.py +35 -0
  66. casedev/types/compute/v1/instance_delete_response.py +23 -0
  67. casedev/types/compute/v1/instance_list_response.py +45 -0
  68. casedev/types/compute/v1/instance_retrieve_response.py +55 -0
  69. casedev/types/compute/v1/instance_type_list_response.py +46 -0
  70. casedev/types/database/__init__.py +5 -0
  71. casedev/types/database/v1/__init__.py +14 -0
  72. casedev/types/database/v1/project_create_branch_params.py +17 -0
  73. casedev/types/database/v1/project_create_branch_response.py +30 -0
  74. casedev/types/database/v1/project_create_params.py +27 -0
  75. casedev/types/database/v1/project_create_response.py +47 -0
  76. casedev/types/database/v1/project_delete_response.py +13 -0
  77. casedev/types/database/v1/project_get_connection_params.py +15 -0
  78. casedev/types/database/v1/project_get_connection_response.py +18 -0
  79. casedev/types/database/v1/project_list_branches_response.py +37 -0
  80. casedev/types/database/v1/project_list_response.py +64 -0
  81. casedev/types/database/v1/project_retrieve_response.py +100 -0
  82. casedev/types/database/v1_get_usage_response.py +116 -0
  83. casedev/types/legal/__init__.py +20 -0
  84. casedev/types/legal/v1_find_params.py +23 -0
  85. casedev/types/legal/v1_find_response.py +37 -0
  86. casedev/types/legal/v1_get_citations_from_url_params.py +12 -0
  87. casedev/types/legal/v1_get_citations_from_url_response.py +69 -0
  88. casedev/types/legal/v1_get_citations_params.py +16 -0
  89. casedev/types/legal/v1_get_citations_response.py +60 -0
  90. casedev/types/legal/v1_get_full_text_params.py +23 -0
  91. casedev/types/legal/v1_get_full_text_response.py +35 -0
  92. casedev/types/legal/v1_list_jurisdictions_params.py +12 -0
  93. casedev/types/legal/v1_list_jurisdictions_response.py +35 -0
  94. casedev/types/legal/v1_research_params.py +27 -0
  95. casedev/types/legal/v1_research_response.py +51 -0
  96. casedev/types/legal/v1_similar_params.py +25 -0
  97. casedev/types/legal/v1_similar_response.py +42 -0
  98. casedev/types/legal/v1_verify_params.py +16 -0
  99. casedev/types/legal/v1_verify_response.py +92 -0
  100. casedev/types/memory/__init__.py +14 -0
  101. casedev/types/memory/v1_create_params.py +69 -0
  102. casedev/types/memory/v1_create_response.py +23 -0
  103. casedev/types/memory/v1_delete_all_params.py +45 -0
  104. casedev/types/memory/v1_delete_all_response.py +12 -0
  105. casedev/types/memory/v1_delete_response.py +13 -0
  106. casedev/types/memory/v1_list_params.py +54 -0
  107. casedev/types/memory/v1_list_response.py +29 -0
  108. casedev/types/memory/v1_retrieve_response.py +23 -0
  109. casedev/types/memory/v1_search_params.py +54 -0
  110. casedev/types/memory/v1_search_response.py +61 -0
  111. casedev/types/ocr/v1_process_params.py +21 -13
  112. casedev/types/ocr/v1_retrieve_response.py +7 -7
  113. casedev/types/privilege/__init__.py +6 -0
  114. casedev/types/privilege/v1_detect_params.py +34 -0
  115. casedev/types/privilege/v1_detect_response.py +41 -0
  116. casedev/types/superdoc/__init__.py +6 -0
  117. casedev/types/superdoc/v1_annotate_params.py +56 -0
  118. casedev/types/superdoc/v1_convert_params.py +23 -0
  119. casedev/types/translate/__init__.py +10 -0
  120. casedev/types/translate/v1_detect_params.py +18 -0
  121. casedev/types/translate/v1_detect_response.py +28 -0
  122. casedev/types/translate/v1_list_languages_params.py +18 -0
  123. casedev/types/translate/v1_list_languages_response.py +23 -0
  124. casedev/types/translate/v1_translate_params.py +30 -0
  125. casedev/types/translate/v1_translate_response.py +28 -0
  126. casedev/types/vault/__init__.py +14 -0
  127. casedev/types/vault/graphrag_process_object_response.py +45 -0
  128. casedev/types/vault/multipart_abort_params.py +15 -0
  129. casedev/types/vault/multipart_complete_params.py +26 -0
  130. casedev/types/vault/multipart_get_part_urls_params.py +24 -0
  131. casedev/types/vault/multipart_get_part_urls_response.py +19 -0
  132. casedev/types/vault/multipart_init_params.py +32 -0
  133. casedev/types/vault/multipart_init_response.py +23 -0
  134. casedev/types/vault/object_create_presigned_url_params.py +6 -0
  135. casedev/types/vault/object_delete_params.py +17 -0
  136. casedev/types/vault/object_delete_response.py +29 -0
  137. casedev/types/vault/object_get_ocr_words_params.py +28 -0
  138. casedev/types/vault/object_get_ocr_words_response.py +48 -0
  139. casedev/types/vault/object_get_summarize_job_response.py +40 -0
  140. casedev/types/vault/object_get_text_response.py +10 -10
  141. casedev/types/vault/object_list_response.py +13 -13
  142. casedev/types/vault/object_retrieve_response.py +13 -13
  143. casedev/types/vault/object_update_params.py +24 -0
  144. casedev/types/vault/object_update_response.py +39 -0
  145. casedev/types/vault_delete_params.py +17 -0
  146. casedev/types/vault_delete_response.py +30 -0
  147. casedev/types/vault_retrieve_response.py +13 -13
  148. casedev/types/vault_search_response.py +14 -0
  149. casedev/types/vault_update_params.py +21 -0
  150. casedev/types/vault_update_response.py +60 -0
  151. casedev/types/vault_upload_params.py +5 -2
  152. {casedev-0.2.0.dist-info → casedev-0.4.0.dist-info}/METADATA +1 -1
  153. casedev-0.4.0.dist-info/RECORD +275 -0
  154. casedev-0.2.0.dist-info/RECORD +0 -149
  155. /casedev/types/{webhooks → applications}/__init__.py +0 -0
  156. {casedev-0.2.0.dist-info → casedev-0.4.0.dist-info}/WHEEL +0 -0
  157. {casedev-0.2.0.dist-info → casedev-0.4.0.dist-info}/licenses/LICENSE +0 -0
@@ -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 Literal, Required, TypedDict
6
+
7
+ __all__ = ["ObjectDeleteParams"]
8
+
9
+
10
+ class ObjectDeleteParams(TypedDict, total=False):
11
+ id: Required[str]
12
+
13
+ force: Literal["true"]
14
+ """Force delete a stuck document that is still in 'processing' state.
15
+
16
+ Use this if a document got stuck during ingestion (e.g., OCR timeout).
17
+ """
@@ -0,0 +1,29 @@
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__ = ["ObjectDeleteResponse", "DeletedObject"]
10
+
11
+
12
+ class DeletedObject(BaseModel):
13
+ id: Optional[str] = None
14
+ """Deleted object ID"""
15
+
16
+ filename: Optional[str] = None
17
+ """Original filename"""
18
+
19
+ size_bytes: Optional[int] = FieldInfo(alias="sizeBytes", default=None)
20
+ """Size of deleted file in bytes"""
21
+
22
+ vectors_deleted: Optional[int] = FieldInfo(alias="vectorsDeleted", default=None)
23
+ """Number of vectors deleted"""
24
+
25
+
26
+ class ObjectDeleteResponse(BaseModel):
27
+ deleted_object: Optional[DeletedObject] = FieldInfo(alias="deletedObject", default=None)
28
+
29
+ success: Optional[bool] = None
@@ -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_extensions import Required, Annotated, TypedDict
6
+
7
+ from ..._utils import PropertyInfo
8
+
9
+ __all__ = ["ObjectGetOcrWordsParams"]
10
+
11
+
12
+ class ObjectGetOcrWordsParams(TypedDict, total=False):
13
+ id: Required[str]
14
+
15
+ page: int
16
+ """Filter to a specific page number (1-indexed). If omitted, returns all pages."""
17
+
18
+ word_end: Annotated[int, PropertyInfo(alias="wordEnd")]
19
+ """Filter to words ending at this index (inclusive).
20
+
21
+ Useful for retrieving words for a specific chunk.
22
+ """
23
+
24
+ word_start: Annotated[int, PropertyInfo(alias="wordStart")]
25
+ """Filter to words starting at this index (inclusive).
26
+
27
+ Useful for retrieving words for a specific chunk.
28
+ """
@@ -0,0 +1,48 @@
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
+
6
+ from pydantic import Field as FieldInfo
7
+
8
+ from ..._models import BaseModel
9
+
10
+ __all__ = ["ObjectGetOcrWordsResponse", "Page", "PageWord"]
11
+
12
+
13
+ class PageWord(BaseModel):
14
+ bbox: Optional[List[float]] = None
15
+ """Bounding box [x0, y0, x1, y1] normalized to 0-1 range"""
16
+
17
+ confidence: Optional[float] = None
18
+ """OCR confidence score (0-1)"""
19
+
20
+ text: Optional[str] = None
21
+ """The word text"""
22
+
23
+ word_index: Optional[int] = FieldInfo(alias="wordIndex", default=None)
24
+ """Global word index across the entire document (0-based)"""
25
+
26
+
27
+ class Page(BaseModel):
28
+ page: Optional[int] = None
29
+ """Page number (1-indexed)"""
30
+
31
+ words: Optional[List[PageWord]] = None
32
+
33
+
34
+ class ObjectGetOcrWordsResponse(BaseModel):
35
+ created_at: Optional[datetime] = FieldInfo(alias="createdAt", default=None)
36
+ """When the OCR data was extracted"""
37
+
38
+ object_id: Optional[str] = FieldInfo(alias="objectId", default=None)
39
+ """The object ID"""
40
+
41
+ page_count: Optional[int] = FieldInfo(alias="pageCount", default=None)
42
+ """Total number of pages in the document"""
43
+
44
+ pages: Optional[List[Page]] = None
45
+ """Per-page word data with bounding boxes"""
46
+
47
+ total_words: Optional[int] = FieldInfo(alias="totalWords", default=None)
48
+ """Total number of words extracted from the document"""
@@ -0,0 +1,40 @@
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__ = ["ObjectGetSummarizeJobResponse"]
12
+
13
+
14
+ class ObjectGetSummarizeJobResponse(BaseModel):
15
+ completed_at: Optional[datetime] = FieldInfo(alias="completedAt", default=None)
16
+ """When the job completed"""
17
+
18
+ created_at: Optional[datetime] = FieldInfo(alias="createdAt", default=None)
19
+ """When the job was created"""
20
+
21
+ error: Optional[str] = None
22
+ """Error message (if failed)"""
23
+
24
+ job_id: Optional[str] = FieldInfo(alias="jobId", default=None)
25
+ """Case.dev job ID"""
26
+
27
+ result_filename: Optional[str] = FieldInfo(alias="resultFilename", default=None)
28
+ """Filename of the result document (if completed)"""
29
+
30
+ result_object_id: Optional[str] = FieldInfo(alias="resultObjectId", default=None)
31
+ """ID of the result document (if completed)"""
32
+
33
+ source_object_id: Optional[str] = FieldInfo(alias="sourceObjectId", default=None)
34
+ """ID of the source document"""
35
+
36
+ status: Optional[Literal["pending", "processing", "completed", "failed"]] = None
37
+ """Current job status"""
38
+
39
+ workflow_type: Optional[str] = FieldInfo(alias="workflowType", default=None)
40
+ """Type of workflow being executed"""
@@ -9,27 +9,27 @@ __all__ = ["ObjectGetTextResponse", "Metadata"]
9
9
 
10
10
 
11
11
  class Metadata(BaseModel):
12
- chunk_count: Optional[int] = None
12
+ chunk_count: int
13
13
  """Number of text chunks the document was split into"""
14
14
 
15
- filename: Optional[str] = None
15
+ filename: str
16
16
  """Original filename of the document"""
17
17
 
18
- ingestion_completed_at: Optional[datetime] = None
19
- """When the document processing completed"""
20
-
21
- length: Optional[int] = None
18
+ length: int
22
19
  """Total character count of the extracted text"""
23
20
 
24
- object_id: Optional[str] = None
21
+ object_id: str
25
22
  """The object ID"""
26
23
 
27
- vault_id: Optional[str] = None
24
+ vault_id: str
28
25
  """The vault ID"""
29
26
 
27
+ ingestion_completed_at: Optional[datetime] = None
28
+ """When the document processing completed"""
29
+
30
30
 
31
31
  class ObjectGetTextResponse(BaseModel):
32
- metadata: Optional[Metadata] = None
32
+ metadata: Metadata
33
33
 
34
- text: Optional[str] = None
34
+ text: str
35
35
  """Full concatenated text content from all chunks"""
@@ -11,27 +11,27 @@ __all__ = ["ObjectListResponse", "Object"]
11
11
 
12
12
 
13
13
  class Object(BaseModel):
14
- id: Optional[str] = None
14
+ id: str
15
15
  """Unique object identifier"""
16
16
 
17
- chunk_count: Optional[float] = FieldInfo(alias="chunkCount", default=None)
18
- """Number of text chunks created for vectorization"""
19
-
20
- content_type: Optional[str] = FieldInfo(alias="contentType", default=None)
17
+ content_type: str = FieldInfo(alias="contentType")
21
18
  """MIME type of the document"""
22
19
 
23
- created_at: Optional[datetime] = FieldInfo(alias="createdAt", default=None)
20
+ created_at: datetime = FieldInfo(alias="createdAt")
24
21
  """Document upload timestamp"""
25
22
 
26
- filename: Optional[str] = None
23
+ filename: str
27
24
  """Original filename of the uploaded document"""
28
25
 
26
+ ingestion_status: str = FieldInfo(alias="ingestionStatus")
27
+ """Processing status of the document"""
28
+
29
+ chunk_count: Optional[float] = FieldInfo(alias="chunkCount", default=None)
30
+ """Number of text chunks created for vectorization"""
31
+
29
32
  ingestion_completed_at: Optional[datetime] = FieldInfo(alias="ingestionCompletedAt", default=None)
30
33
  """Processing completion timestamp"""
31
34
 
32
- ingestion_status: Optional[str] = FieldInfo(alias="ingestionStatus", default=None)
33
- """Processing status of the document"""
34
-
35
35
  metadata: Optional[object] = None
36
36
  """Custom metadata associated with the document"""
37
37
 
@@ -55,10 +55,10 @@ class Object(BaseModel):
55
55
 
56
56
 
57
57
  class ObjectListResponse(BaseModel):
58
- count: Optional[float] = None
58
+ count: float
59
59
  """Total number of objects in the vault"""
60
60
 
61
- objects: Optional[List[Object]] = None
61
+ objects: List[Object]
62
62
 
63
- vault_id: Optional[str] = FieldInfo(alias="vaultId", default=None)
63
+ vault_id: str = FieldInfo(alias="vaultId")
64
64
  """The ID of the vault"""
@@ -11,30 +11,33 @@ __all__ = ["ObjectRetrieveResponse"]
11
11
 
12
12
 
13
13
  class ObjectRetrieveResponse(BaseModel):
14
- id: Optional[str] = None
14
+ id: str
15
15
  """Object ID"""
16
16
 
17
- chunk_count: Optional[int] = FieldInfo(alias="chunkCount", default=None)
18
- """Number of text chunks created"""
19
-
20
- content_type: Optional[str] = FieldInfo(alias="contentType", default=None)
17
+ content_type: str = FieldInfo(alias="contentType")
21
18
  """MIME type"""
22
19
 
23
- created_at: Optional[datetime] = FieldInfo(alias="createdAt", default=None)
20
+ created_at: datetime = FieldInfo(alias="createdAt")
24
21
  """Upload timestamp"""
25
22
 
26
- download_url: Optional[str] = FieldInfo(alias="downloadUrl", default=None)
23
+ download_url: str = FieldInfo(alias="downloadUrl")
27
24
  """Presigned S3 download URL"""
28
25
 
29
- expires_in: Optional[int] = FieldInfo(alias="expiresIn", default=None)
26
+ expires_in: int = FieldInfo(alias="expiresIn")
30
27
  """URL expiration time in seconds"""
31
28
 
32
- filename: Optional[str] = None
29
+ filename: str
33
30
  """Original filename"""
34
31
 
35
- ingestion_status: Optional[str] = FieldInfo(alias="ingestionStatus", default=None)
32
+ ingestion_status: str = FieldInfo(alias="ingestionStatus")
36
33
  """Processing status (pending, processing, completed, failed)"""
37
34
 
35
+ vault_id: str = FieldInfo(alias="vaultId")
36
+ """Vault ID"""
37
+
38
+ chunk_count: Optional[int] = FieldInfo(alias="chunkCount", default=None)
39
+ """Number of text chunks created"""
40
+
38
41
  metadata: Optional[object] = None
39
42
  """Additional metadata"""
40
43
 
@@ -50,8 +53,5 @@ class ObjectRetrieveResponse(BaseModel):
50
53
  text_length: Optional[int] = FieldInfo(alias="textLength", default=None)
51
54
  """Length of extracted text"""
52
55
 
53
- vault_id: Optional[str] = FieldInfo(alias="vaultId", default=None)
54
- """Vault ID"""
55
-
56
56
  vector_count: Optional[int] = FieldInfo(alias="vectorCount", default=None)
57
57
  """Number of embedding vectors generated"""
@@ -0,0 +1,24 @@
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, TypedDict
7
+
8
+ __all__ = ["ObjectUpdateParams"]
9
+
10
+
11
+ class ObjectUpdateParams(TypedDict, total=False):
12
+ id: Required[str]
13
+
14
+ filename: str
15
+ """New filename for the document (affects display name and downloads)"""
16
+
17
+ metadata: object
18
+ """Additional metadata to merge with existing metadata"""
19
+
20
+ path: Optional[str]
21
+ """Folder path for hierarchy preservation (e.g., '/Discovery/Depositions').
22
+
23
+ Set to null or empty string to remove.
24
+ """
@@ -0,0 +1,39 @@
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__ = ["ObjectUpdateResponse"]
11
+
12
+
13
+ class ObjectUpdateResponse(BaseModel):
14
+ id: Optional[str] = None
15
+ """Object ID"""
16
+
17
+ content_type: Optional[str] = FieldInfo(alias="contentType", default=None)
18
+ """MIME type"""
19
+
20
+ filename: Optional[str] = None
21
+ """Updated filename"""
22
+
23
+ ingestion_status: Optional[str] = FieldInfo(alias="ingestionStatus", default=None)
24
+ """Processing status"""
25
+
26
+ metadata: Optional[object] = None
27
+ """Full metadata object"""
28
+
29
+ path: Optional[str] = None
30
+ """Folder path for hierarchy preservation"""
31
+
32
+ size_bytes: Optional[int] = FieldInfo(alias="sizeBytes", default=None)
33
+ """File size in bytes"""
34
+
35
+ updated_at: Optional[datetime] = FieldInfo(alias="updatedAt", default=None)
36
+ """Last update timestamp"""
37
+
38
+ vault_id: Optional[str] = FieldInfo(alias="vaultId", default=None)
39
+ """Vault 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__ = ["VaultDeleteParams"]
10
+
11
+
12
+ class VaultDeleteParams(TypedDict, total=False):
13
+ async_: Annotated[bool, PropertyInfo(alias="async")]
14
+ """
15
+ If true and vault has many objects, queue deletion in background and return
16
+ immediately
17
+ """
@@ -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__ = ["VaultDeleteResponse", "DeletedVault"]
10
+
11
+
12
+ class DeletedVault(BaseModel):
13
+ id: Optional[str] = None
14
+
15
+ bytes_freed: Optional[int] = FieldInfo(alias="bytesFreed", default=None)
16
+
17
+ name: Optional[str] = None
18
+
19
+ objects_deleted: Optional[int] = FieldInfo(alias="objectsDeleted", default=None)
20
+
21
+ vectors_deleted: Optional[int] = FieldInfo(alias="vectorsDeleted", default=None)
22
+
23
+
24
+ class VaultDeleteResponse(BaseModel):
25
+ deleted_vault: Optional[DeletedVault] = FieldInfo(alias="deletedVault", default=None)
26
+
27
+ status: Optional[str] = None
28
+ """Either 'deleted' or 'deletion_queued'"""
29
+
30
+ success: Optional[bool] = None
@@ -27,24 +27,30 @@ class ChunkStrategy(BaseModel):
27
27
 
28
28
 
29
29
  class VaultRetrieveResponse(BaseModel):
30
- id: Optional[str] = None
30
+ id: str
31
31
  """Vault identifier"""
32
32
 
33
+ created_at: datetime = FieldInfo(alias="createdAt")
34
+ """Vault creation timestamp"""
35
+
36
+ files_bucket: str = FieldInfo(alias="filesBucket")
37
+ """S3 bucket for document storage"""
38
+
39
+ name: str
40
+ """Vault name"""
41
+
42
+ region: str
43
+ """AWS region"""
44
+
33
45
  chunk_strategy: Optional[ChunkStrategy] = FieldInfo(alias="chunkStrategy", default=None)
34
46
  """Document chunking strategy configuration"""
35
47
 
36
- created_at: Optional[datetime] = FieldInfo(alias="createdAt", default=None)
37
- """Vault creation timestamp"""
38
-
39
48
  description: Optional[str] = None
40
49
  """Vault description"""
41
50
 
42
51
  enable_graph: Optional[bool] = FieldInfo(alias="enableGraph", default=None)
43
52
  """Whether GraphRAG is enabled"""
44
53
 
45
- files_bucket: Optional[str] = FieldInfo(alias="filesBucket", default=None)
46
- """S3 bucket for document storage"""
47
-
48
54
  index_name: Optional[str] = FieldInfo(alias="indexName", default=None)
49
55
  """Search index name"""
50
56
 
@@ -54,12 +60,6 @@ class VaultRetrieveResponse(BaseModel):
54
60
  metadata: Optional[object] = None
55
61
  """Additional vault metadata"""
56
62
 
57
- name: Optional[str] = None
58
- """Vault name"""
59
-
60
- region: Optional[str] = None
61
- """AWS region"""
62
-
63
63
  total_bytes: Optional[int] = FieldInfo(alias="totalBytes", default=None)
64
64
  """Total storage size in bytes"""
65
65
 
@@ -41,6 +41,20 @@ class Chunk(BaseModel):
41
41
  text: Optional[str] = None
42
42
  """Preview of the chunk text (up to 500 characters)"""
43
43
 
44
+ word_end_index: Optional[int] = None
45
+ """Ending word index (0-based) in the OCR word list.
46
+
47
+ Use with GET /vault/:id/objects/:objectId/ocr-words to retrieve bounding boxes
48
+ for highlighting.
49
+ """
50
+
51
+ word_start_index: Optional[int] = None
52
+ """Starting word index (0-based) in the OCR word list.
53
+
54
+ Use with GET /vault/:id/objects/:objectId/ocr-words to retrieve bounding boxes
55
+ for highlighting.
56
+ """
57
+
44
58
 
45
59
  class Source(BaseModel):
46
60
  id: Optional[str] = None
@@ -0,0 +1,21 @@
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 Annotated, TypedDict
7
+
8
+ from .._utils import PropertyInfo
9
+
10
+ __all__ = ["VaultUpdateParams"]
11
+
12
+
13
+ class VaultUpdateParams(TypedDict, total=False):
14
+ description: Optional[str]
15
+ """New description for the vault. Set to null to remove."""
16
+
17
+ enable_graph: Annotated[bool, PropertyInfo(alias="enableGraph")]
18
+ """Whether to enable GraphRAG for future document uploads"""
19
+
20
+ name: str
21
+ """New name for the vault"""
@@ -0,0 +1,60 @@
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__ = ["VaultUpdateResponse"]
11
+
12
+
13
+ class VaultUpdateResponse(BaseModel):
14
+ id: Optional[str] = None
15
+ """Vault identifier"""
16
+
17
+ chunk_strategy: Optional[object] = FieldInfo(alias="chunkStrategy", default=None)
18
+ """Document chunking strategy configuration"""
19
+
20
+ created_at: Optional[datetime] = FieldInfo(alias="createdAt", default=None)
21
+ """Vault creation timestamp"""
22
+
23
+ description: Optional[str] = None
24
+ """Vault description"""
25
+
26
+ enable_graph: Optional[bool] = FieldInfo(alias="enableGraph", default=None)
27
+ """Whether GraphRAG is enabled for future uploads"""
28
+
29
+ files_bucket: Optional[str] = FieldInfo(alias="filesBucket", default=None)
30
+ """S3 bucket for document storage"""
31
+
32
+ index_name: Optional[str] = FieldInfo(alias="indexName", default=None)
33
+ """Search index name"""
34
+
35
+ kms_key_id: Optional[str] = FieldInfo(alias="kmsKeyId", default=None)
36
+ """KMS key for encryption"""
37
+
38
+ metadata: Optional[object] = None
39
+ """Additional vault metadata"""
40
+
41
+ name: Optional[str] = None
42
+ """Vault name"""
43
+
44
+ region: Optional[str] = None
45
+ """AWS region"""
46
+
47
+ total_bytes: Optional[int] = FieldInfo(alias="totalBytes", default=None)
48
+ """Total storage size in bytes"""
49
+
50
+ total_objects: Optional[int] = FieldInfo(alias="totalObjects", default=None)
51
+ """Number of stored documents"""
52
+
53
+ total_vectors: Optional[int] = FieldInfo(alias="totalVectors", default=None)
54
+ """Number of vector embeddings"""
55
+
56
+ updated_at: Optional[datetime] = FieldInfo(alias="updatedAt", default=None)
57
+ """Last update timestamp"""
58
+
59
+ vector_bucket: Optional[str] = FieldInfo(alias="vectorBucket", default=None)
60
+ """S3 bucket for vector embeddings"""
@@ -29,5 +29,8 @@ class VaultUploadParams(TypedDict, total=False):
29
29
  NetDocs, Clio, or Smokeball. Example: '/Discovery/Depositions/2024'
30
30
  """
31
31
 
32
- size_bytes: Annotated[float, PropertyInfo(alias="sizeBytes")]
33
- """Estimated file size in bytes for cost calculation"""
32
+ size_bytes: Annotated[int, PropertyInfo(alias="sizeBytes")]
33
+ """File size in bytes (optional, max 5GB for single PUT uploads).
34
+
35
+ When provided, enforces exact file size at S3 level.
36
+ """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: casedev
3
- Version: 0.2.0
3
+ Version: 0.4.0
4
4
  Summary: The official Python library for the casedev API
5
5
  Project-URL: Homepage, https://github.com/CaseMark/casedev-python
6
6
  Project-URL: Repository, https://github.com/CaseMark/casedev-python