casedev 0.1.0__py3-none-any.whl → 0.2.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 (135) hide show
  1. casedev/_base_client.py +140 -11
  2. casedev/_client.py +290 -119
  3. casedev/_models.py +16 -1
  4. casedev/_types.py +12 -2
  5. casedev/_version.py +1 -1
  6. casedev/resources/__init__.py +0 -70
  7. casedev/resources/compute/v1/__init__.py +0 -42
  8. casedev/resources/compute/v1/environments.py +16 -19
  9. casedev/resources/compute/v1/secrets.py +35 -41
  10. casedev/resources/compute/v1/v1.py +14 -276
  11. casedev/resources/format/v1/templates.py +11 -13
  12. casedev/resources/llm/llm.py +6 -7
  13. casedev/resources/llm/v1/v1.py +11 -13
  14. casedev/resources/ocr/v1.py +10 -13
  15. casedev/resources/search/v1.py +6 -7
  16. casedev/resources/vault/graphrag.py +11 -13
  17. casedev/resources/vault/objects.py +20 -25
  18. casedev/resources/vault/vault.py +64 -28
  19. casedev/resources/voice/streaming.py +6 -7
  20. casedev/resources/voice/transcription.py +82 -23
  21. casedev/resources/voice/v1/speak.py +1 -195
  22. casedev/resources/voice/v1/v1.py +6 -7
  23. casedev/types/__init__.py +2 -0
  24. casedev/types/compute/__init__.py +1 -2
  25. casedev/types/compute/v1/__init__.py +7 -5
  26. casedev/types/compute/v1/environment_list_response.py +40 -0
  27. casedev/types/compute/v1/environment_retrieve_response.py +36 -0
  28. casedev/types/compute/v1/environment_set_default_response.py +36 -0
  29. casedev/types/{convert/v1_webhook_response.py → compute/v1/secret_delete_group_response.py} +3 -3
  30. casedev/types/compute/v1/secret_list_response.py +31 -0
  31. casedev/types/compute/v1/secret_retrieve_group_response.py +38 -0
  32. casedev/types/compute/v1/secret_update_group_response.py +22 -0
  33. casedev/types/compute/v1_get_usage_response.py +51 -0
  34. casedev/types/format/v1/__init__.py +2 -0
  35. casedev/types/format/v1/template_list_response.py +40 -0
  36. casedev/types/format/v1/template_retrieve_response.py +33 -0
  37. casedev/types/llm/__init__.py +2 -0
  38. casedev/types/llm/v1_create_embedding_response.py +31 -0
  39. casedev/types/llm/v1_list_models_response.py +41 -0
  40. casedev/types/llm_get_config_response.py +33 -0
  41. casedev/types/ocr/__init__.py +2 -0
  42. casedev/types/ocr/v1_download_response.py +7 -0
  43. casedev/types/ocr/v1_process_params.py +2 -0
  44. casedev/types/ocr/v1_retrieve_response.py +32 -0
  45. casedev/types/search/__init__.py +1 -0
  46. casedev/types/search/v1_retrieve_research_response.py +74 -0
  47. casedev/types/vault/__init__.py +6 -0
  48. casedev/types/vault/graphrag_get_stats_response.py +31 -0
  49. casedev/types/{workflows/v1_delete_response.py → vault/graphrag_init_response.py} +6 -2
  50. casedev/types/vault/object_download_response.py +7 -0
  51. casedev/types/vault/object_get_text_response.py +35 -0
  52. casedev/types/vault/object_list_response.py +64 -0
  53. casedev/types/vault/object_retrieve_response.py +57 -0
  54. casedev/types/vault_create_params.py +16 -1
  55. casedev/types/vault_create_response.py +5 -2
  56. casedev/types/vault_ingest_response.py +15 -5
  57. casedev/types/vault_retrieve_response.py +76 -0
  58. casedev/types/vault_search_params.py +19 -5
  59. casedev/types/vault_search_response.py +25 -1
  60. casedev/types/vault_upload_params.py +7 -0
  61. casedev/types/vault_upload_response.py +6 -0
  62. casedev/types/voice/__init__.py +3 -0
  63. casedev/types/voice/streaming_get_url_response.py +44 -0
  64. casedev/types/voice/transcription_create_params.py +23 -3
  65. casedev/types/voice/transcription_create_response.py +22 -0
  66. casedev/types/voice/transcription_retrieve_response.py +19 -17
  67. casedev/types/voice/v1/__init__.py +0 -1
  68. casedev/types/voice/v1/speak_create_params.py +2 -0
  69. casedev/types/voice/v1_list_voices_response.py +40 -0
  70. casedev/types/webhooks/__init__.py +0 -3
  71. {casedev-0.1.0.dist-info → casedev-0.2.0.dist-info}/METADATA +10 -13
  72. casedev-0.2.0.dist-info/RECORD +149 -0
  73. {casedev-0.1.0.dist-info → casedev-0.2.0.dist-info}/licenses/LICENSE +1 -1
  74. casedev/resources/actions/__init__.py +0 -33
  75. casedev/resources/actions/actions.py +0 -102
  76. casedev/resources/actions/v1.py +0 -640
  77. casedev/resources/compute/v1/functions.py +0 -278
  78. casedev/resources/compute/v1/invoke.py +0 -216
  79. casedev/resources/compute/v1/runs.py +0 -290
  80. casedev/resources/convert/__init__.py +0 -33
  81. casedev/resources/convert/convert.py +0 -102
  82. casedev/resources/convert/v1/__init__.py +0 -33
  83. casedev/resources/convert/v1/jobs.py +0 -254
  84. casedev/resources/convert/v1/v1.py +0 -450
  85. casedev/resources/templates/__init__.py +0 -33
  86. casedev/resources/templates/templates.py +0 -102
  87. casedev/resources/templates/v1.py +0 -633
  88. casedev/resources/webhooks/__init__.py +0 -33
  89. casedev/resources/webhooks/v1.py +0 -447
  90. casedev/resources/webhooks/webhooks.py +0 -102
  91. casedev/resources/workflows/__init__.py +0 -33
  92. casedev/resources/workflows/v1.py +0 -1053
  93. casedev/resources/workflows/workflows.py +0 -102
  94. casedev/types/actions/__init__.py +0 -8
  95. casedev/types/actions/v1_create_params.py +0 -22
  96. casedev/types/actions/v1_create_response.py +0 -33
  97. casedev/types/actions/v1_execute_params.py +0 -16
  98. casedev/types/actions/v1_execute_response.py +0 -31
  99. casedev/types/compute/v1/function_get_logs_params.py +0 -12
  100. casedev/types/compute/v1/function_list_params.py +0 -12
  101. casedev/types/compute/v1/invoke_run_params.py +0 -21
  102. casedev/types/compute/v1/invoke_run_response.py +0 -39
  103. casedev/types/compute/v1/run_list_params.py +0 -18
  104. casedev/types/compute/v1_deploy_params.py +0 -114
  105. casedev/types/compute/v1_deploy_response.py +0 -30
  106. casedev/types/convert/__init__.py +0 -8
  107. casedev/types/convert/v1/__init__.py +0 -3
  108. casedev/types/convert/v1_process_params.py +0 -15
  109. casedev/types/convert/v1_process_response.py +0 -19
  110. casedev/types/convert/v1_webhook_params.py +0 -32
  111. casedev/types/templates/__init__.py +0 -8
  112. casedev/types/templates/v1_execute_params.py +0 -22
  113. casedev/types/templates/v1_execute_response.py +0 -31
  114. casedev/types/templates/v1_list_params.py +0 -32
  115. casedev/types/templates/v1_search_params.py +0 -18
  116. casedev/types/voice/v1/speak_stream_params.py +0 -58
  117. casedev/types/webhooks/v1_create_params.py +0 -20
  118. casedev/types/webhooks/v1_create_response.py +0 -33
  119. casedev/types/workflows/__init__.py +0 -19
  120. casedev/types/workflows/v1_create_params.py +0 -32
  121. casedev/types/workflows/v1_create_response.py +0 -29
  122. casedev/types/workflows/v1_deploy_response.py +0 -20
  123. casedev/types/workflows/v1_execute_params.py +0 -12
  124. casedev/types/workflows/v1_execute_response.py +0 -22
  125. casedev/types/workflows/v1_list_executions_params.py +0 -13
  126. casedev/types/workflows/v1_list_executions_response.py +0 -27
  127. casedev/types/workflows/v1_list_params.py +0 -18
  128. casedev/types/workflows/v1_list_response.py +0 -37
  129. casedev/types/workflows/v1_retrieve_execution_response.py +0 -31
  130. casedev/types/workflows/v1_retrieve_response.py +0 -35
  131. casedev/types/workflows/v1_undeploy_response.py +0 -13
  132. casedev/types/workflows/v1_update_params.py +0 -26
  133. casedev/types/workflows/v1_update_response.py +0 -17
  134. casedev-0.1.0.dist-info/RECORD +0 -185
  135. {casedev-0.1.0.dist-info → casedev-0.2.0.dist-info}/WHEEL +0 -0
@@ -0,0 +1,33 @@
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__ = ["TemplateRetrieveResponse"]
11
+
12
+
13
+ class TemplateRetrieveResponse(BaseModel):
14
+ id: Optional[str] = None
15
+ """Unique template identifier"""
16
+
17
+ content: Optional[object] = None
18
+ """Template formatting rules and structure"""
19
+
20
+ created_at: Optional[datetime] = FieldInfo(alias="createdAt", default=None)
21
+ """Template creation timestamp"""
22
+
23
+ description: Optional[str] = None
24
+ """Template description"""
25
+
26
+ name: Optional[str] = None
27
+ """Template name"""
28
+
29
+ organization_id: Optional[str] = FieldInfo(alias="organizationId", default=None)
30
+ """Organization ID that owns the template"""
31
+
32
+ updated_at: Optional[datetime] = FieldInfo(alias="updatedAt", default=None)
33
+ """Template last modification timestamp"""
@@ -2,4 +2,6 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ from .v1_list_models_response import V1ListModelsResponse as V1ListModelsResponse
5
6
  from .v1_create_embedding_params import V1CreateEmbeddingParams as V1CreateEmbeddingParams
7
+ from .v1_create_embedding_response import V1CreateEmbeddingResponse as V1CreateEmbeddingResponse
@@ -0,0 +1,31 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import List, Optional
4
+
5
+ from ..._models import BaseModel
6
+
7
+ __all__ = ["V1CreateEmbeddingResponse", "Data", "Usage"]
8
+
9
+
10
+ class Data(BaseModel):
11
+ embedding: Optional[List[float]] = None
12
+
13
+ index: Optional[int] = None
14
+
15
+ object: Optional[str] = None
16
+
17
+
18
+ class Usage(BaseModel):
19
+ prompt_tokens: Optional[int] = None
20
+
21
+ total_tokens: Optional[int] = None
22
+
23
+
24
+ class V1CreateEmbeddingResponse(BaseModel):
25
+ data: Optional[List[Data]] = None
26
+
27
+ model: Optional[str] = None
28
+
29
+ object: Optional[str] = None
30
+
31
+ usage: Optional[Usage] = None
@@ -0,0 +1,41 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import List, Optional
4
+
5
+ from ..._models import BaseModel
6
+
7
+ __all__ = ["V1ListModelsResponse", "Data", "DataPricing"]
8
+
9
+
10
+ class DataPricing(BaseModel):
11
+ input: Optional[str] = None
12
+ """Input token price per token"""
13
+
14
+ input_cache_read: Optional[str] = None
15
+ """Cache read price per token (if supported)"""
16
+
17
+ output: Optional[str] = None
18
+ """Output token price per token"""
19
+
20
+
21
+ class Data(BaseModel):
22
+ id: Optional[str] = None
23
+ """Unique model identifier"""
24
+
25
+ created: Optional[int] = None
26
+ """Unix timestamp of model creation"""
27
+
28
+ object: Optional[str] = None
29
+ """Object type, always 'model'"""
30
+
31
+ owned_by: Optional[str] = None
32
+ """Model provider (openai, anthropic, google, casemark, etc.)"""
33
+
34
+ pricing: Optional[DataPricing] = None
35
+
36
+
37
+ class V1ListModelsResponse(BaseModel):
38
+ data: Optional[List[Data]] = None
39
+
40
+ object: Optional[str] = None
41
+ """Response object type, always 'list'"""
@@ -0,0 +1,33 @@
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__ = ["LlmGetConfigResponse", "Model"]
10
+
11
+
12
+ class Model(BaseModel):
13
+ id: str
14
+ """Unique model identifier"""
15
+
16
+ api_model_type: str = FieldInfo(alias="modelType")
17
+ """Type of model (e.g., language, embedding)"""
18
+
19
+ name: str
20
+ """Human-readable model name"""
21
+
22
+ description: Optional[str] = None
23
+ """Model description and capabilities"""
24
+
25
+ pricing: Optional[object] = None
26
+ """Pricing information for the model"""
27
+
28
+ specification: Optional[object] = None
29
+ """Technical specifications and limits"""
30
+
31
+
32
+ class LlmGetConfigResponse(BaseModel):
33
+ models: List[Model]
@@ -4,3 +4,5 @@ from __future__ import annotations
4
4
 
5
5
  from .v1_process_params import V1ProcessParams as V1ProcessParams
6
6
  from .v1_process_response import V1ProcessResponse as V1ProcessResponse
7
+ from .v1_download_response import V1DownloadResponse as V1DownloadResponse
8
+ from .v1_retrieve_response import V1RetrieveResponse as V1RetrieveResponse
@@ -0,0 +1,7 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing_extensions import TypeAlias
4
+
5
+ __all__ = ["V1DownloadResponse"]
6
+
7
+ V1DownloadResponse: TypeAlias = object
@@ -31,6 +31,8 @@ class V1ProcessParams(TypedDict, total=False):
31
31
 
32
32
 
33
33
  class Features(TypedDict, total=False):
34
+ """OCR features to extract"""
35
+
34
36
  forms: bool
35
37
  """Detect form fields"""
36
38
 
@@ -0,0 +1,32 @@
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 ..._models import BaseModel
8
+
9
+ __all__ = ["V1RetrieveResponse"]
10
+
11
+
12
+ class V1RetrieveResponse(BaseModel):
13
+ id: Optional[str] = None
14
+ """OCR job ID"""
15
+
16
+ completed_at: Optional[datetime] = None
17
+ """Job completion timestamp"""
18
+
19
+ created_at: Optional[datetime] = None
20
+ """Job creation timestamp"""
21
+
22
+ metadata: Optional[object] = None
23
+ """Additional processing metadata"""
24
+
25
+ page_count: Optional[int] = None
26
+ """Number of pages processed"""
27
+
28
+ status: Optional[Literal["pending", "processing", "completed", "failed"]] = None
29
+ """Current job status"""
30
+
31
+ text: Optional[str] = None
32
+ """Extracted text content (when completed)"""
@@ -13,3 +13,4 @@ from .v1_similar_response import V1SimilarResponse as V1SimilarResponse
13
13
  from .v1_contents_response import V1ContentsResponse as V1ContentsResponse
14
14
  from .v1_research_response import V1ResearchResponse as V1ResearchResponse
15
15
  from .v1_retrieve_research_params import V1RetrieveResearchParams as V1RetrieveResearchParams
16
+ from .v1_retrieve_research_response import V1RetrieveResearchResponse as V1RetrieveResearchResponse
@@ -0,0 +1,74 @@
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
6
+
7
+ from pydantic import Field as FieldInfo
8
+
9
+ from ..._models import BaseModel
10
+
11
+ __all__ = ["V1RetrieveResearchResponse", "Results", "ResultsSection", "ResultsSectionSource", "ResultsSource"]
12
+
13
+
14
+ class ResultsSectionSource(BaseModel):
15
+ snippet: Optional[str] = None
16
+
17
+ title: Optional[str] = None
18
+
19
+ url: Optional[str] = None
20
+
21
+
22
+ class ResultsSection(BaseModel):
23
+ content: Optional[str] = None
24
+
25
+ sources: Optional[List[ResultsSectionSource]] = None
26
+
27
+ title: Optional[str] = None
28
+
29
+
30
+ class ResultsSource(BaseModel):
31
+ snippet: Optional[str] = None
32
+
33
+ title: Optional[str] = None
34
+
35
+ url: Optional[str] = None
36
+
37
+
38
+ class Results(BaseModel):
39
+ """Research findings and analysis"""
40
+
41
+ sections: Optional[List[ResultsSection]] = None
42
+ """Detailed research sections"""
43
+
44
+ sources: Optional[List[ResultsSource]] = None
45
+ """All sources referenced in research"""
46
+
47
+ summary: Optional[str] = None
48
+ """Executive summary of research findings"""
49
+
50
+
51
+ class V1RetrieveResearchResponse(BaseModel):
52
+ id: Optional[str] = None
53
+ """Research task ID"""
54
+
55
+ completed_at: Optional[datetime] = FieldInfo(alias="completedAt", default=None)
56
+ """Task completion timestamp"""
57
+
58
+ created_at: Optional[datetime] = FieldInfo(alias="createdAt", default=None)
59
+ """Task creation timestamp"""
60
+
61
+ model: Optional[Literal["fast", "normal", "pro"]] = None
62
+ """Research model used"""
63
+
64
+ progress: Optional[float] = None
65
+ """Completion percentage (0-100)"""
66
+
67
+ query: Optional[str] = None
68
+ """Original research query"""
69
+
70
+ results: Optional[Results] = None
71
+ """Research findings and analysis"""
72
+
73
+ status: Optional[Literal["pending", "running", "completed", "failed"]] = None
74
+ """Current status of the research task"""
@@ -2,5 +2,11 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ from .object_list_response import ObjectListResponse as ObjectListResponse
6
+ from .graphrag_init_response import GraphragInitResponse as GraphragInitResponse
7
+ from .object_download_response import ObjectDownloadResponse as ObjectDownloadResponse
8
+ from .object_get_text_response import ObjectGetTextResponse as ObjectGetTextResponse
9
+ from .object_retrieve_response import ObjectRetrieveResponse as ObjectRetrieveResponse
10
+ from .graphrag_get_stats_response import GraphragGetStatsResponse as GraphragGetStatsResponse
5
11
  from .object_create_presigned_url_params import ObjectCreatePresignedURLParams as ObjectCreatePresignedURLParams
6
12
  from .object_create_presigned_url_response import ObjectCreatePresignedURLResponse as ObjectCreatePresignedURLResponse
@@ -0,0 +1,31 @@
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__ = ["GraphragGetStatsResponse"]
12
+
13
+
14
+ class GraphragGetStatsResponse(BaseModel):
15
+ communities: Optional[int] = None
16
+ """Number of entity communities identified"""
17
+
18
+ documents: Optional[int] = None
19
+ """Number of processed documents"""
20
+
21
+ entities: Optional[int] = None
22
+ """Total number of entities extracted from documents"""
23
+
24
+ last_processed: Optional[datetime] = FieldInfo(alias="lastProcessed", default=None)
25
+ """Timestamp of last GraphRAG processing"""
26
+
27
+ relationships: Optional[int] = None
28
+ """Total number of relationships between entities"""
29
+
30
+ status: Optional[Literal["processing", "completed", "error"]] = None
31
+ """Current processing status"""
@@ -4,10 +4,14 @@ from typing import Optional
4
4
 
5
5
  from ..._models import BaseModel
6
6
 
7
- __all__ = ["V1DeleteResponse"]
7
+ __all__ = ["GraphragInitResponse"]
8
8
 
9
9
 
10
- class V1DeleteResponse(BaseModel):
10
+ class GraphragInitResponse(BaseModel):
11
11
  message: Optional[str] = None
12
12
 
13
+ status: Optional[str] = None
14
+
13
15
  success: Optional[bool] = None
16
+
17
+ vault_id: Optional[str] = None
@@ -0,0 +1,7 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing_extensions import TypeAlias
4
+
5
+ __all__ = ["ObjectDownloadResponse"]
6
+
7
+ ObjectDownloadResponse: TypeAlias = object
@@ -0,0 +1,35 @@
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 ..._models import BaseModel
7
+
8
+ __all__ = ["ObjectGetTextResponse", "Metadata"]
9
+
10
+
11
+ class Metadata(BaseModel):
12
+ chunk_count: Optional[int] = None
13
+ """Number of text chunks the document was split into"""
14
+
15
+ filename: Optional[str] = None
16
+ """Original filename of the document"""
17
+
18
+ ingestion_completed_at: Optional[datetime] = None
19
+ """When the document processing completed"""
20
+
21
+ length: Optional[int] = None
22
+ """Total character count of the extracted text"""
23
+
24
+ object_id: Optional[str] = None
25
+ """The object ID"""
26
+
27
+ vault_id: Optional[str] = None
28
+ """The vault ID"""
29
+
30
+
31
+ class ObjectGetTextResponse(BaseModel):
32
+ metadata: Optional[Metadata] = None
33
+
34
+ text: Optional[str] = None
35
+ """Full concatenated text content from all chunks"""
@@ -0,0 +1,64 @@
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__ = ["ObjectListResponse", "Object"]
11
+
12
+
13
+ class Object(BaseModel):
14
+ id: Optional[str] = None
15
+ """Unique object identifier"""
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)
21
+ """MIME type of the document"""
22
+
23
+ created_at: Optional[datetime] = FieldInfo(alias="createdAt", default=None)
24
+ """Document upload timestamp"""
25
+
26
+ filename: Optional[str] = None
27
+ """Original filename of the uploaded document"""
28
+
29
+ ingestion_completed_at: Optional[datetime] = FieldInfo(alias="ingestionCompletedAt", default=None)
30
+ """Processing completion timestamp"""
31
+
32
+ ingestion_status: Optional[str] = FieldInfo(alias="ingestionStatus", default=None)
33
+ """Processing status of the document"""
34
+
35
+ metadata: Optional[object] = None
36
+ """Custom metadata associated with the document"""
37
+
38
+ page_count: Optional[float] = FieldInfo(alias="pageCount", default=None)
39
+ """Number of pages in the document"""
40
+
41
+ path: Optional[str] = None
42
+ """Optional folder path for hierarchy preservation from source systems"""
43
+
44
+ size_bytes: Optional[float] = FieldInfo(alias="sizeBytes", default=None)
45
+ """File size in bytes"""
46
+
47
+ tags: Optional[List[str]] = None
48
+ """Custom tags associated with the document"""
49
+
50
+ text_length: Optional[float] = FieldInfo(alias="textLength", default=None)
51
+ """Total character count of extracted text"""
52
+
53
+ vector_count: Optional[float] = FieldInfo(alias="vectorCount", default=None)
54
+ """Number of vectors generated for semantic search"""
55
+
56
+
57
+ class ObjectListResponse(BaseModel):
58
+ count: Optional[float] = None
59
+ """Total number of objects in the vault"""
60
+
61
+ objects: Optional[List[Object]] = None
62
+
63
+ vault_id: Optional[str] = FieldInfo(alias="vaultId", default=None)
64
+ """The ID of the vault"""
@@ -0,0 +1,57 @@
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__ = ["ObjectRetrieveResponse"]
11
+
12
+
13
+ class ObjectRetrieveResponse(BaseModel):
14
+ id: Optional[str] = None
15
+ """Object ID"""
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)
21
+ """MIME type"""
22
+
23
+ created_at: Optional[datetime] = FieldInfo(alias="createdAt", default=None)
24
+ """Upload timestamp"""
25
+
26
+ download_url: Optional[str] = FieldInfo(alias="downloadUrl", default=None)
27
+ """Presigned S3 download URL"""
28
+
29
+ expires_in: Optional[int] = FieldInfo(alias="expiresIn", default=None)
30
+ """URL expiration time in seconds"""
31
+
32
+ filename: Optional[str] = None
33
+ """Original filename"""
34
+
35
+ ingestion_status: Optional[str] = FieldInfo(alias="ingestionStatus", default=None)
36
+ """Processing status (pending, processing, completed, failed)"""
37
+
38
+ metadata: Optional[object] = None
39
+ """Additional metadata"""
40
+
41
+ page_count: Optional[int] = FieldInfo(alias="pageCount", default=None)
42
+ """Number of pages (for documents)"""
43
+
44
+ path: Optional[str] = None
45
+ """Optional folder path for hierarchy preservation"""
46
+
47
+ size_bytes: Optional[int] = FieldInfo(alias="sizeBytes", default=None)
48
+ """File size in bytes"""
49
+
50
+ text_length: Optional[int] = FieldInfo(alias="textLength", default=None)
51
+ """Length of extracted text"""
52
+
53
+ vault_id: Optional[str] = FieldInfo(alias="vaultId", default=None)
54
+ """Vault ID"""
55
+
56
+ vector_count: Optional[int] = FieldInfo(alias="vectorCount", default=None)
57
+ """Number of embedding vectors generated"""
@@ -17,4 +17,19 @@ class VaultCreateParams(TypedDict, total=False):
17
17
  """Optional description of the vault's purpose"""
18
18
 
19
19
  enable_graph: Annotated[bool, PropertyInfo(alias="enableGraph")]
20
- """Enable knowledge graph for entity relationship mapping"""
20
+ """Enable knowledge graph for entity relationship mapping.
21
+
22
+ Only applies when enableIndexing is true.
23
+ """
24
+
25
+ enable_indexing: Annotated[bool, PropertyInfo(alias="enableIndexing")]
26
+ """Enable vector indexing and search capabilities.
27
+
28
+ Set to false for storage-only vaults.
29
+ """
30
+
31
+ metadata: object
32
+ """
33
+ Optional metadata to attach to the vault (e.g., { containsPHI: true } for HIPAA
34
+ compliance tracking)
35
+ """
@@ -20,11 +20,14 @@ class VaultCreateResponse(BaseModel):
20
20
  description: Optional[str] = None
21
21
  """Vault description"""
22
22
 
23
+ enable_indexing: Optional[bool] = FieldInfo(alias="enableIndexing", default=None)
24
+ """Whether vector indexing is enabled for this vault"""
25
+
23
26
  files_bucket: Optional[str] = FieldInfo(alias="filesBucket", default=None)
24
27
  """S3 bucket name for document storage"""
25
28
 
26
29
  index_name: Optional[str] = FieldInfo(alias="indexName", default=None)
27
- """Vector search index name"""
30
+ """Vector search index name. Null for storage-only vaults."""
28
31
 
29
32
  name: Optional[str] = None
30
33
  """Vault display name"""
@@ -33,4 +36,4 @@ class VaultCreateResponse(BaseModel):
33
36
  """AWS region for storage"""
34
37
 
35
38
  vector_bucket: Optional[str] = FieldInfo(alias="vectorBucket", default=None)
36
- """S3 bucket name for vector embeddings"""
39
+ """S3 bucket name for vector embeddings. Null for storage-only vaults."""
@@ -1,5 +1,6 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
+ from typing import Optional
3
4
  from typing_extensions import Literal
4
5
 
5
6
  from pydantic import Field as FieldInfo
@@ -11,7 +12,10 @@ __all__ = ["VaultIngestResponse"]
11
12
 
12
13
  class VaultIngestResponse(BaseModel):
13
14
  enable_graph_rag: bool = FieldInfo(alias="enableGraphRAG")
14
- """Whether GraphRAG is enabled for this vault"""
15
+ """
16
+ Always false - GraphRAG must be triggered separately via POST
17
+ /vault/:id/graphrag/:objectId
18
+ """
15
19
 
16
20
  message: str
17
21
  """Human-readable status message"""
@@ -19,8 +23,14 @@ class VaultIngestResponse(BaseModel):
19
23
  object_id: str = FieldInfo(alias="objectId")
20
24
  """ID of the vault object being processed"""
21
25
 
22
- status: Literal["processing"]
23
- """Current ingestion status"""
26
+ status: Literal["processing", "stored"]
27
+ """Current ingestion status.
24
28
 
25
- workflow_id: str = FieldInfo(alias="workflowId")
26
- """Workflow run ID for tracking progress"""
29
+ 'stored' for file types without text extraction (no chunks/vectors created).
30
+ """
31
+
32
+ workflow_id: Optional[str] = FieldInfo(alias="workflowId", default=None)
33
+ """Workflow run ID for tracking progress.
34
+
35
+ Null for file types that skip processing.
36
+ """