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
@@ -2,6 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ from typing import Optional
5
6
  from typing_extensions import Literal
6
7
 
7
8
  import httpx
@@ -16,11 +17,20 @@ from ..._response import (
16
17
  async_to_raw_response_wrapper,
17
18
  async_to_streamed_response_wrapper,
18
19
  )
19
- from ...types.vault import object_create_presigned_url_params
20
+ from ...types.vault import (
21
+ object_delete_params,
22
+ object_update_params,
23
+ object_get_ocr_words_params,
24
+ object_create_presigned_url_params,
25
+ )
20
26
  from ..._base_client import make_request_options
21
27
  from ...types.vault.object_list_response import ObjectListResponse
28
+ from ...types.vault.object_delete_response import ObjectDeleteResponse
29
+ from ...types.vault.object_update_response import ObjectUpdateResponse
22
30
  from ...types.vault.object_get_text_response import ObjectGetTextResponse
23
31
  from ...types.vault.object_retrieve_response import ObjectRetrieveResponse
32
+ from ...types.vault.object_get_ocr_words_response import ObjectGetOcrWordsResponse
33
+ from ...types.vault.object_get_summarize_job_response import ObjectGetSummarizeJobResponse
24
34
  from ...types.vault.object_create_presigned_url_response import ObjectCreatePresignedURLResponse
25
35
 
26
36
  __all__ = ["ObjectsResource", "AsyncObjectsResource"]
@@ -84,6 +94,63 @@ class ObjectsResource(SyncAPIResource):
84
94
  cast_to=ObjectRetrieveResponse,
85
95
  )
86
96
 
97
+ def update(
98
+ self,
99
+ object_id: str,
100
+ *,
101
+ id: str,
102
+ filename: str | Omit = omit,
103
+ metadata: object | Omit = omit,
104
+ path: Optional[str] | Omit = omit,
105
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
106
+ # The extra values given here take precedence over values defined on the client or passed to this method.
107
+ extra_headers: Headers | None = None,
108
+ extra_query: Query | None = None,
109
+ extra_body: Body | None = None,
110
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
111
+ ) -> ObjectUpdateResponse:
112
+ """Update a document's filename, path, or metadata.
113
+
114
+ Use this to rename files or
115
+ organize them into virtual folders. The path is stored in metadata.path and can
116
+ be used to build folder hierarchies in your application.
117
+
118
+ Args:
119
+ filename: New filename for the document (affects display name and downloads)
120
+
121
+ metadata: Additional metadata to merge with existing metadata
122
+
123
+ path: Folder path for hierarchy preservation (e.g., '/Discovery/Depositions'). Set to
124
+ null or empty string to remove.
125
+
126
+ extra_headers: Send extra headers
127
+
128
+ extra_query: Add additional query parameters to the request
129
+
130
+ extra_body: Add additional JSON properties to the request
131
+
132
+ timeout: Override the client-level default timeout for this request, in seconds
133
+ """
134
+ if not id:
135
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
136
+ if not object_id:
137
+ raise ValueError(f"Expected a non-empty value for `object_id` but received {object_id!r}")
138
+ return self._patch(
139
+ f"/vault/{id}/objects/{object_id}",
140
+ body=maybe_transform(
141
+ {
142
+ "filename": filename,
143
+ "metadata": metadata,
144
+ "path": path,
145
+ },
146
+ object_update_params.ObjectUpdateParams,
147
+ ),
148
+ options=make_request_options(
149
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
150
+ ),
151
+ cast_to=ObjectUpdateResponse,
152
+ )
153
+
87
154
  def list(
88
155
  self,
89
156
  id: str,
@@ -118,6 +185,51 @@ class ObjectsResource(SyncAPIResource):
118
185
  cast_to=ObjectListResponse,
119
186
  )
120
187
 
188
+ def delete(
189
+ self,
190
+ object_id: str,
191
+ *,
192
+ id: str,
193
+ force: Literal["true"] | Omit = omit,
194
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
195
+ # The extra values given here take precedence over values defined on the client or passed to this method.
196
+ extra_headers: Headers | None = None,
197
+ extra_query: Query | None = None,
198
+ extra_body: Body | None = None,
199
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
200
+ ) -> ObjectDeleteResponse:
201
+ """
202
+ Permanently deletes a document from the vault including all associated vectors,
203
+ chunks, graph data, and the original file. This operation cannot be undone.
204
+
205
+ Args:
206
+ force: Force delete a stuck document that is still in 'processing' state. Use this if a
207
+ document got stuck during ingestion (e.g., OCR timeout).
208
+
209
+ extra_headers: Send extra headers
210
+
211
+ extra_query: Add additional query parameters to the request
212
+
213
+ extra_body: Add additional JSON properties to the request
214
+
215
+ timeout: Override the client-level default timeout for this request, in seconds
216
+ """
217
+ if not id:
218
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
219
+ if not object_id:
220
+ raise ValueError(f"Expected a non-empty value for `object_id` but received {object_id!r}")
221
+ return self._delete(
222
+ f"/vault/{id}/objects/{object_id}",
223
+ options=make_request_options(
224
+ extra_headers=extra_headers,
225
+ extra_query=extra_query,
226
+ extra_body=extra_body,
227
+ timeout=timeout,
228
+ query=maybe_transform({"force": force}, object_delete_params.ObjectDeleteParams),
229
+ ),
230
+ cast_to=ObjectDeleteResponse,
231
+ )
232
+
121
233
  def create_presigned_url(
122
234
  self,
123
235
  object_id: str,
@@ -126,6 +238,7 @@ class ObjectsResource(SyncAPIResource):
126
238
  content_type: str | Omit = omit,
127
239
  expires_in: int | Omit = omit,
128
240
  operation: Literal["GET", "PUT", "DELETE", "HEAD"] | Omit = omit,
241
+ size_bytes: int | Omit = omit,
129
242
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
130
243
  # The extra values given here take precedence over values defined on the client or passed to this method.
131
244
  extra_headers: Headers | None = None,
@@ -146,6 +259,9 @@ class ObjectsResource(SyncAPIResource):
146
259
 
147
260
  operation: The S3 operation to generate URL for
148
261
 
262
+ size_bytes: File size in bytes (optional, max 5GB for single PUT uploads). When provided for
263
+ PUT operations, enforces exact file size at S3 level.
264
+
149
265
  extra_headers: Send extra headers
150
266
 
151
267
  extra_query: Add additional query parameters to the request
@@ -165,6 +281,7 @@ class ObjectsResource(SyncAPIResource):
165
281
  "content_type": content_type,
166
282
  "expires_in": expires_in,
167
283
  "operation": operation,
284
+ "size_bytes": size_bytes,
168
285
  },
169
286
  object_create_presigned_url_params.ObjectCreatePresignedURLParams,
170
287
  ),
@@ -214,6 +331,110 @@ class ObjectsResource(SyncAPIResource):
214
331
  cast_to=str,
215
332
  )
216
333
 
334
+ def get_ocr_words(
335
+ self,
336
+ object_id: str,
337
+ *,
338
+ id: str,
339
+ page: int | Omit = omit,
340
+ word_end: int | Omit = omit,
341
+ word_start: int | Omit = omit,
342
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
343
+ # The extra values given here take precedence over values defined on the client or passed to this method.
344
+ extra_headers: Headers | None = None,
345
+ extra_query: Query | None = None,
346
+ extra_body: Body | None = None,
347
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
348
+ ) -> ObjectGetOcrWordsResponse:
349
+ """Retrieves word-level OCR bounding box data for a processed PDF document.
350
+
351
+ Each
352
+ word includes its text, normalized bounding box coordinates (0-1 range),
353
+ confidence score, and global word index. Use this data to highlight specific
354
+ text ranges in a PDF viewer based on word indices from search results.
355
+
356
+ Args:
357
+ page: Filter to a specific page number (1-indexed). If omitted, returns all pages.
358
+
359
+ word_end: Filter to words ending at this index (inclusive). Useful for retrieving words
360
+ for a specific chunk.
361
+
362
+ word_start: Filter to words starting at this index (inclusive). Useful for retrieving words
363
+ for a specific chunk.
364
+
365
+ extra_headers: Send extra headers
366
+
367
+ extra_query: Add additional query parameters to the request
368
+
369
+ extra_body: Add additional JSON properties to the request
370
+
371
+ timeout: Override the client-level default timeout for this request, in seconds
372
+ """
373
+ if not id:
374
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
375
+ if not object_id:
376
+ raise ValueError(f"Expected a non-empty value for `object_id` but received {object_id!r}")
377
+ return self._get(
378
+ f"/vault/{id}/objects/{object_id}/ocr-words",
379
+ options=make_request_options(
380
+ extra_headers=extra_headers,
381
+ extra_query=extra_query,
382
+ extra_body=extra_body,
383
+ timeout=timeout,
384
+ query=maybe_transform(
385
+ {
386
+ "page": page,
387
+ "word_end": word_end,
388
+ "word_start": word_start,
389
+ },
390
+ object_get_ocr_words_params.ObjectGetOcrWordsParams,
391
+ ),
392
+ ),
393
+ cast_to=ObjectGetOcrWordsResponse,
394
+ )
395
+
396
+ def get_summarize_job(
397
+ self,
398
+ job_id: str,
399
+ *,
400
+ id: str,
401
+ object_id: str,
402
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
403
+ # The extra values given here take precedence over values defined on the client or passed to this method.
404
+ extra_headers: Headers | None = None,
405
+ extra_query: Query | None = None,
406
+ extra_body: Body | None = None,
407
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
408
+ ) -> ObjectGetSummarizeJobResponse:
409
+ """Get the status of a CaseMark summary workflow job.
410
+
411
+ If the job has been
412
+ processing for too long, this endpoint will poll CaseMark directly to recover
413
+ stuck jobs.
414
+
415
+ Args:
416
+ extra_headers: Send extra headers
417
+
418
+ extra_query: Add additional query parameters to the request
419
+
420
+ extra_body: Add additional JSON properties to the request
421
+
422
+ timeout: Override the client-level default timeout for this request, in seconds
423
+ """
424
+ if not id:
425
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
426
+ if not object_id:
427
+ raise ValueError(f"Expected a non-empty value for `object_id` but received {object_id!r}")
428
+ if not job_id:
429
+ raise ValueError(f"Expected a non-empty value for `job_id` but received {job_id!r}")
430
+ return self._get(
431
+ f"/vault/{id}/objects/{object_id}/summarize/{job_id}",
432
+ options=make_request_options(
433
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
434
+ ),
435
+ cast_to=ObjectGetSummarizeJobResponse,
436
+ )
437
+
217
438
  def get_text(
218
439
  self,
219
440
  object_id: str,
@@ -312,6 +533,63 @@ class AsyncObjectsResource(AsyncAPIResource):
312
533
  cast_to=ObjectRetrieveResponse,
313
534
  )
314
535
 
536
+ async def update(
537
+ self,
538
+ object_id: str,
539
+ *,
540
+ id: str,
541
+ filename: str | Omit = omit,
542
+ metadata: object | Omit = omit,
543
+ path: Optional[str] | Omit = omit,
544
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
545
+ # The extra values given here take precedence over values defined on the client or passed to this method.
546
+ extra_headers: Headers | None = None,
547
+ extra_query: Query | None = None,
548
+ extra_body: Body | None = None,
549
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
550
+ ) -> ObjectUpdateResponse:
551
+ """Update a document's filename, path, or metadata.
552
+
553
+ Use this to rename files or
554
+ organize them into virtual folders. The path is stored in metadata.path and can
555
+ be used to build folder hierarchies in your application.
556
+
557
+ Args:
558
+ filename: New filename for the document (affects display name and downloads)
559
+
560
+ metadata: Additional metadata to merge with existing metadata
561
+
562
+ path: Folder path for hierarchy preservation (e.g., '/Discovery/Depositions'). Set to
563
+ null or empty string to remove.
564
+
565
+ extra_headers: Send extra headers
566
+
567
+ extra_query: Add additional query parameters to the request
568
+
569
+ extra_body: Add additional JSON properties to the request
570
+
571
+ timeout: Override the client-level default timeout for this request, in seconds
572
+ """
573
+ if not id:
574
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
575
+ if not object_id:
576
+ raise ValueError(f"Expected a non-empty value for `object_id` but received {object_id!r}")
577
+ return await self._patch(
578
+ f"/vault/{id}/objects/{object_id}",
579
+ body=await async_maybe_transform(
580
+ {
581
+ "filename": filename,
582
+ "metadata": metadata,
583
+ "path": path,
584
+ },
585
+ object_update_params.ObjectUpdateParams,
586
+ ),
587
+ options=make_request_options(
588
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
589
+ ),
590
+ cast_to=ObjectUpdateResponse,
591
+ )
592
+
315
593
  async def list(
316
594
  self,
317
595
  id: str,
@@ -346,6 +624,51 @@ class AsyncObjectsResource(AsyncAPIResource):
346
624
  cast_to=ObjectListResponse,
347
625
  )
348
626
 
627
+ async def delete(
628
+ self,
629
+ object_id: str,
630
+ *,
631
+ id: str,
632
+ force: Literal["true"] | Omit = omit,
633
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
634
+ # The extra values given here take precedence over values defined on the client or passed to this method.
635
+ extra_headers: Headers | None = None,
636
+ extra_query: Query | None = None,
637
+ extra_body: Body | None = None,
638
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
639
+ ) -> ObjectDeleteResponse:
640
+ """
641
+ Permanently deletes a document from the vault including all associated vectors,
642
+ chunks, graph data, and the original file. This operation cannot be undone.
643
+
644
+ Args:
645
+ force: Force delete a stuck document that is still in 'processing' state. Use this if a
646
+ document got stuck during ingestion (e.g., OCR timeout).
647
+
648
+ extra_headers: Send extra headers
649
+
650
+ extra_query: Add additional query parameters to the request
651
+
652
+ extra_body: Add additional JSON properties to the request
653
+
654
+ timeout: Override the client-level default timeout for this request, in seconds
655
+ """
656
+ if not id:
657
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
658
+ if not object_id:
659
+ raise ValueError(f"Expected a non-empty value for `object_id` but received {object_id!r}")
660
+ return await self._delete(
661
+ f"/vault/{id}/objects/{object_id}",
662
+ options=make_request_options(
663
+ extra_headers=extra_headers,
664
+ extra_query=extra_query,
665
+ extra_body=extra_body,
666
+ timeout=timeout,
667
+ query=await async_maybe_transform({"force": force}, object_delete_params.ObjectDeleteParams),
668
+ ),
669
+ cast_to=ObjectDeleteResponse,
670
+ )
671
+
349
672
  async def create_presigned_url(
350
673
  self,
351
674
  object_id: str,
@@ -354,6 +677,7 @@ class AsyncObjectsResource(AsyncAPIResource):
354
677
  content_type: str | Omit = omit,
355
678
  expires_in: int | Omit = omit,
356
679
  operation: Literal["GET", "PUT", "DELETE", "HEAD"] | Omit = omit,
680
+ size_bytes: int | Omit = omit,
357
681
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
358
682
  # The extra values given here take precedence over values defined on the client or passed to this method.
359
683
  extra_headers: Headers | None = None,
@@ -374,6 +698,9 @@ class AsyncObjectsResource(AsyncAPIResource):
374
698
 
375
699
  operation: The S3 operation to generate URL for
376
700
 
701
+ size_bytes: File size in bytes (optional, max 5GB for single PUT uploads). When provided for
702
+ PUT operations, enforces exact file size at S3 level.
703
+
377
704
  extra_headers: Send extra headers
378
705
 
379
706
  extra_query: Add additional query parameters to the request
@@ -393,6 +720,7 @@ class AsyncObjectsResource(AsyncAPIResource):
393
720
  "content_type": content_type,
394
721
  "expires_in": expires_in,
395
722
  "operation": operation,
723
+ "size_bytes": size_bytes,
396
724
  },
397
725
  object_create_presigned_url_params.ObjectCreatePresignedURLParams,
398
726
  ),
@@ -442,6 +770,110 @@ class AsyncObjectsResource(AsyncAPIResource):
442
770
  cast_to=str,
443
771
  )
444
772
 
773
+ async def get_ocr_words(
774
+ self,
775
+ object_id: str,
776
+ *,
777
+ id: str,
778
+ page: int | Omit = omit,
779
+ word_end: int | Omit = omit,
780
+ word_start: int | Omit = omit,
781
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
782
+ # The extra values given here take precedence over values defined on the client or passed to this method.
783
+ extra_headers: Headers | None = None,
784
+ extra_query: Query | None = None,
785
+ extra_body: Body | None = None,
786
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
787
+ ) -> ObjectGetOcrWordsResponse:
788
+ """Retrieves word-level OCR bounding box data for a processed PDF document.
789
+
790
+ Each
791
+ word includes its text, normalized bounding box coordinates (0-1 range),
792
+ confidence score, and global word index. Use this data to highlight specific
793
+ text ranges in a PDF viewer based on word indices from search results.
794
+
795
+ Args:
796
+ page: Filter to a specific page number (1-indexed). If omitted, returns all pages.
797
+
798
+ word_end: Filter to words ending at this index (inclusive). Useful for retrieving words
799
+ for a specific chunk.
800
+
801
+ word_start: Filter to words starting at this index (inclusive). Useful for retrieving words
802
+ for a specific chunk.
803
+
804
+ extra_headers: Send extra headers
805
+
806
+ extra_query: Add additional query parameters to the request
807
+
808
+ extra_body: Add additional JSON properties to the request
809
+
810
+ timeout: Override the client-level default timeout for this request, in seconds
811
+ """
812
+ if not id:
813
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
814
+ if not object_id:
815
+ raise ValueError(f"Expected a non-empty value for `object_id` but received {object_id!r}")
816
+ return await self._get(
817
+ f"/vault/{id}/objects/{object_id}/ocr-words",
818
+ options=make_request_options(
819
+ extra_headers=extra_headers,
820
+ extra_query=extra_query,
821
+ extra_body=extra_body,
822
+ timeout=timeout,
823
+ query=await async_maybe_transform(
824
+ {
825
+ "page": page,
826
+ "word_end": word_end,
827
+ "word_start": word_start,
828
+ },
829
+ object_get_ocr_words_params.ObjectGetOcrWordsParams,
830
+ ),
831
+ ),
832
+ cast_to=ObjectGetOcrWordsResponse,
833
+ )
834
+
835
+ async def get_summarize_job(
836
+ self,
837
+ job_id: str,
838
+ *,
839
+ id: str,
840
+ object_id: str,
841
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
842
+ # The extra values given here take precedence over values defined on the client or passed to this method.
843
+ extra_headers: Headers | None = None,
844
+ extra_query: Query | None = None,
845
+ extra_body: Body | None = None,
846
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
847
+ ) -> ObjectGetSummarizeJobResponse:
848
+ """Get the status of a CaseMark summary workflow job.
849
+
850
+ If the job has been
851
+ processing for too long, this endpoint will poll CaseMark directly to recover
852
+ stuck jobs.
853
+
854
+ Args:
855
+ extra_headers: Send extra headers
856
+
857
+ extra_query: Add additional query parameters to the request
858
+
859
+ extra_body: Add additional JSON properties to the request
860
+
861
+ timeout: Override the client-level default timeout for this request, in seconds
862
+ """
863
+ if not id:
864
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
865
+ if not object_id:
866
+ raise ValueError(f"Expected a non-empty value for `object_id` but received {object_id!r}")
867
+ if not job_id:
868
+ raise ValueError(f"Expected a non-empty value for `job_id` but received {job_id!r}")
869
+ return await self._get(
870
+ f"/vault/{id}/objects/{object_id}/summarize/{job_id}",
871
+ options=make_request_options(
872
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
873
+ ),
874
+ cast_to=ObjectGetSummarizeJobResponse,
875
+ )
876
+
445
877
  async def get_text(
446
878
  self,
447
879
  object_id: str,
@@ -489,15 +921,27 @@ class ObjectsResourceWithRawResponse:
489
921
  self.retrieve = to_raw_response_wrapper(
490
922
  objects.retrieve,
491
923
  )
924
+ self.update = to_raw_response_wrapper(
925
+ objects.update,
926
+ )
492
927
  self.list = to_raw_response_wrapper(
493
928
  objects.list,
494
929
  )
930
+ self.delete = to_raw_response_wrapper(
931
+ objects.delete,
932
+ )
495
933
  self.create_presigned_url = to_raw_response_wrapper(
496
934
  objects.create_presigned_url,
497
935
  )
498
936
  self.download = to_raw_response_wrapper(
499
937
  objects.download,
500
938
  )
939
+ self.get_ocr_words = to_raw_response_wrapper(
940
+ objects.get_ocr_words,
941
+ )
942
+ self.get_summarize_job = to_raw_response_wrapper(
943
+ objects.get_summarize_job,
944
+ )
501
945
  self.get_text = to_raw_response_wrapper(
502
946
  objects.get_text,
503
947
  )
@@ -510,15 +954,27 @@ class AsyncObjectsResourceWithRawResponse:
510
954
  self.retrieve = async_to_raw_response_wrapper(
511
955
  objects.retrieve,
512
956
  )
957
+ self.update = async_to_raw_response_wrapper(
958
+ objects.update,
959
+ )
513
960
  self.list = async_to_raw_response_wrapper(
514
961
  objects.list,
515
962
  )
963
+ self.delete = async_to_raw_response_wrapper(
964
+ objects.delete,
965
+ )
516
966
  self.create_presigned_url = async_to_raw_response_wrapper(
517
967
  objects.create_presigned_url,
518
968
  )
519
969
  self.download = async_to_raw_response_wrapper(
520
970
  objects.download,
521
971
  )
972
+ self.get_ocr_words = async_to_raw_response_wrapper(
973
+ objects.get_ocr_words,
974
+ )
975
+ self.get_summarize_job = async_to_raw_response_wrapper(
976
+ objects.get_summarize_job,
977
+ )
522
978
  self.get_text = async_to_raw_response_wrapper(
523
979
  objects.get_text,
524
980
  )
@@ -531,15 +987,27 @@ class ObjectsResourceWithStreamingResponse:
531
987
  self.retrieve = to_streamed_response_wrapper(
532
988
  objects.retrieve,
533
989
  )
990
+ self.update = to_streamed_response_wrapper(
991
+ objects.update,
992
+ )
534
993
  self.list = to_streamed_response_wrapper(
535
994
  objects.list,
536
995
  )
996
+ self.delete = to_streamed_response_wrapper(
997
+ objects.delete,
998
+ )
537
999
  self.create_presigned_url = to_streamed_response_wrapper(
538
1000
  objects.create_presigned_url,
539
1001
  )
540
1002
  self.download = to_streamed_response_wrapper(
541
1003
  objects.download,
542
1004
  )
1005
+ self.get_ocr_words = to_streamed_response_wrapper(
1006
+ objects.get_ocr_words,
1007
+ )
1008
+ self.get_summarize_job = to_streamed_response_wrapper(
1009
+ objects.get_summarize_job,
1010
+ )
543
1011
  self.get_text = to_streamed_response_wrapper(
544
1012
  objects.get_text,
545
1013
  )
@@ -552,15 +1020,27 @@ class AsyncObjectsResourceWithStreamingResponse:
552
1020
  self.retrieve = async_to_streamed_response_wrapper(
553
1021
  objects.retrieve,
554
1022
  )
1023
+ self.update = async_to_streamed_response_wrapper(
1024
+ objects.update,
1025
+ )
555
1026
  self.list = async_to_streamed_response_wrapper(
556
1027
  objects.list,
557
1028
  )
1029
+ self.delete = async_to_streamed_response_wrapper(
1030
+ objects.delete,
1031
+ )
558
1032
  self.create_presigned_url = async_to_streamed_response_wrapper(
559
1033
  objects.create_presigned_url,
560
1034
  )
561
1035
  self.download = async_to_streamed_response_wrapper(
562
1036
  objects.download,
563
1037
  )
1038
+ self.get_ocr_words = async_to_streamed_response_wrapper(
1039
+ objects.get_ocr_words,
1040
+ )
1041
+ self.get_summarize_job = async_to_streamed_response_wrapper(
1042
+ objects.get_summarize_job,
1043
+ )
564
1044
  self.get_text = async_to_streamed_response_wrapper(
565
1045
  objects.get_text,
566
1046
  )