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,76 @@
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__ = ["VaultRetrieveResponse", "ChunkStrategy"]
11
+
12
+
13
+ class ChunkStrategy(BaseModel):
14
+ """Document chunking strategy configuration"""
15
+
16
+ chunk_size: Optional[int] = FieldInfo(alias="chunkSize", default=None)
17
+ """Target size for each chunk in tokens"""
18
+
19
+ method: Optional[str] = None
20
+ """Chunking method (e.g., 'semantic', 'fixed')"""
21
+
22
+ min_chunk_size: Optional[int] = FieldInfo(alias="minChunkSize", default=None)
23
+ """Minimum chunk size in tokens"""
24
+
25
+ overlap: Optional[int] = None
26
+ """Number of overlapping tokens between chunks"""
27
+
28
+
29
+ class VaultRetrieveResponse(BaseModel):
30
+ id: Optional[str] = None
31
+ """Vault identifier"""
32
+
33
+ chunk_strategy: Optional[ChunkStrategy] = FieldInfo(alias="chunkStrategy", default=None)
34
+ """Document chunking strategy configuration"""
35
+
36
+ created_at: Optional[datetime] = FieldInfo(alias="createdAt", default=None)
37
+ """Vault creation timestamp"""
38
+
39
+ description: Optional[str] = None
40
+ """Vault description"""
41
+
42
+ enable_graph: Optional[bool] = FieldInfo(alias="enableGraph", default=None)
43
+ """Whether GraphRAG is enabled"""
44
+
45
+ files_bucket: Optional[str] = FieldInfo(alias="filesBucket", default=None)
46
+ """S3 bucket for document storage"""
47
+
48
+ index_name: Optional[str] = FieldInfo(alias="indexName", default=None)
49
+ """Search index name"""
50
+
51
+ kms_key_id: Optional[str] = FieldInfo(alias="kmsKeyId", default=None)
52
+ """KMS key for encryption"""
53
+
54
+ metadata: Optional[object] = None
55
+ """Additional vault metadata"""
56
+
57
+ name: Optional[str] = None
58
+ """Vault name"""
59
+
60
+ region: Optional[str] = None
61
+ """AWS region"""
62
+
63
+ total_bytes: Optional[int] = FieldInfo(alias="totalBytes", default=None)
64
+ """Total storage size in bytes"""
65
+
66
+ total_objects: Optional[int] = FieldInfo(alias="totalObjects", default=None)
67
+ """Number of stored documents"""
68
+
69
+ total_vectors: Optional[int] = FieldInfo(alias="totalVectors", default=None)
70
+ """Number of vector embeddings"""
71
+
72
+ updated_at: Optional[datetime] = FieldInfo(alias="updatedAt", default=None)
73
+ """Last update timestamp"""
74
+
75
+ vector_bucket: Optional[str] = FieldInfo(alias="vectorBucket", default=None)
76
+ """S3 bucket for vector embeddings"""
@@ -2,20 +2,21 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import Dict
6
- from typing_extensions import Literal, Required, Annotated, TypedDict
5
+ from typing import Dict, Union
6
+ from typing_extensions import Literal, Required, Annotated, TypeAlias, TypedDict
7
7
 
8
+ from .._types import SequenceNotStr
8
9
  from .._utils import PropertyInfo
9
10
 
10
- __all__ = ["VaultSearchParams"]
11
+ __all__ = ["VaultSearchParams", "Filters"]
11
12
 
12
13
 
13
14
  class VaultSearchParams(TypedDict, total=False):
14
15
  query: Required[str]
15
16
  """Search query or question to find relevant documents"""
16
17
 
17
- filters: Dict[str, object]
18
- """Additional filters to apply to search results"""
18
+ filters: Filters
19
+ """Filters to narrow search results to specific documents"""
19
20
 
20
21
  method: Literal["vector", "graph", "hybrid", "global", "local", "fast", "entity"]
21
22
  """
@@ -25,3 +26,16 @@ class VaultSearchParams(TypedDict, total=False):
25
26
 
26
27
  top_k: Annotated[int, PropertyInfo(alias="topK")]
27
28
  """Maximum number of results to return"""
29
+
30
+
31
+ class FiltersTyped(TypedDict, total=False):
32
+ """Filters to narrow search results to specific documents"""
33
+
34
+ object_id: Union[str, SequenceNotStr[str]]
35
+ """Filter to specific document(s) by object ID.
36
+
37
+ Accepts a single ID or array of IDs.
38
+ """
39
+
40
+
41
+ Filters: TypeAlias = Union[FiltersTyped, Dict[str, object]]
@@ -11,11 +11,35 @@ __all__ = ["VaultSearchResponse", "Chunk", "Source"]
11
11
 
12
12
 
13
13
  class Chunk(BaseModel):
14
+ chunk_index: Optional[int] = None
15
+ """Index of the chunk within the document (0-based)"""
16
+
17
+ distance: Optional[float] = None
18
+ """Vector similarity distance (lower is more similar)"""
19
+
20
+ object_id: Optional[str] = None
21
+ """ID of the source document"""
22
+
23
+ page_end: Optional[int] = None
24
+ """PDF page number where the chunk ends (1-indexed).
25
+
26
+ Null for non-PDF documents or documents ingested before page tracking was added.
27
+ """
28
+
29
+ page_start: Optional[int] = None
30
+ """PDF page number where the chunk begins (1-indexed).
31
+
32
+ Null for non-PDF documents or documents ingested before page tracking was added.
33
+ """
34
+
14
35
  score: Optional[float] = None
36
+ """Relevance score (deprecated, use distance or hybridScore)"""
15
37
 
16
38
  source: Optional[str] = None
39
+ """Source identifier (deprecated, use object_id)"""
17
40
 
18
41
  text: Optional[str] = None
42
+ """Preview of the chunk text (up to 500 characters)"""
19
43
 
20
44
 
21
45
  class Source(BaseModel):
@@ -36,7 +60,7 @@ class Source(BaseModel):
36
60
 
37
61
  class VaultSearchResponse(BaseModel):
38
62
  chunks: Optional[List[Chunk]] = None
39
- """Relevant text chunks with similarity scores"""
63
+ """Relevant text chunks with similarity scores and page locations"""
40
64
 
41
65
  method: Optional[str] = None
42
66
  """Search method used"""
@@ -22,5 +22,12 @@ class VaultUploadParams(TypedDict, total=False):
22
22
  metadata: object
23
23
  """Additional metadata to associate with the file"""
24
24
 
25
+ path: str
26
+ """Optional folder path for hierarchy preservation.
27
+
28
+ Allows integrations to maintain source folder structure from systems like
29
+ NetDocs, Clio, or Smokeball. Example: '/Discovery/Depositions/2024'
30
+ """
31
+
25
32
  size_bytes: Annotated[float, PropertyInfo(alias="sizeBytes")]
26
33
  """Estimated file size in bytes for cost calculation"""
@@ -21,6 +21,9 @@ class VaultUploadResponse(BaseModel):
21
21
  auto_index: Optional[bool] = None
22
22
  """Whether the file will be automatically indexed"""
23
23
 
24
+ enable_indexing: Optional[bool] = FieldInfo(alias="enableIndexing", default=None)
25
+ """Whether the vault supports indexing. False for storage-only vaults."""
26
+
24
27
  expires_in: Optional[float] = FieldInfo(alias="expiresIn", default=None)
25
28
  """URL expiration time in seconds"""
26
29
 
@@ -32,6 +35,9 @@ class VaultUploadResponse(BaseModel):
32
35
  object_id: Optional[str] = FieldInfo(alias="objectId", default=None)
33
36
  """Unique identifier for the uploaded object"""
34
37
 
38
+ path: Optional[str] = None
39
+ """Folder path for hierarchy if provided"""
40
+
35
41
  s3_key: Optional[str] = FieldInfo(alias="s3Key", default=None)
36
42
  """S3 object key for the file"""
37
43
 
@@ -3,5 +3,8 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  from .v1_list_voices_params import V1ListVoicesParams as V1ListVoicesParams
6
+ from .v1_list_voices_response import V1ListVoicesResponse as V1ListVoicesResponse
7
+ from .streaming_get_url_response import StreamingGetURLResponse as StreamingGetURLResponse
6
8
  from .transcription_create_params import TranscriptionCreateParams as TranscriptionCreateParams
9
+ from .transcription_create_response import TranscriptionCreateResponse as TranscriptionCreateResponse
7
10
  from .transcription_retrieve_response import TranscriptionRetrieveResponse as TranscriptionRetrieveResponse
@@ -0,0 +1,44 @@
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__ = ["StreamingGetURLResponse", "AudioFormat", "Pricing"]
8
+
9
+
10
+ class AudioFormat(BaseModel):
11
+ channels: Optional[int] = None
12
+ """Number of audio channels"""
13
+
14
+ encoding: Optional[str] = None
15
+ """Required audio encoding format"""
16
+
17
+ sample_rate: Optional[int] = None
18
+ """Required audio sample rate in Hz"""
19
+
20
+
21
+ class Pricing(BaseModel):
22
+ currency: Optional[str] = None
23
+ """Currency for pricing"""
24
+
25
+ per_hour: Optional[float] = None
26
+ """Cost per hour of transcription"""
27
+
28
+ per_minute: Optional[float] = None
29
+ """Cost per minute of transcription"""
30
+
31
+
32
+ class StreamingGetURLResponse(BaseModel):
33
+ audio_format: Optional[AudioFormat] = None
34
+
35
+ connect_url: Optional[str] = None
36
+ """Complete WebSocket URL with authentication token"""
37
+
38
+ pricing: Optional[Pricing] = None
39
+
40
+ protocol: Optional[str] = None
41
+ """Connection protocol"""
42
+
43
+ url: Optional[str] = None
44
+ """Base WebSocket URL for streaming transcription"""
@@ -2,21 +2,29 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing_extensions import Required, TypedDict
5
+ from typing_extensions import Literal, TypedDict
6
+
7
+ from ..._types import SequenceNotStr
6
8
 
7
9
  __all__ = ["TranscriptionCreateParams"]
8
10
 
9
11
 
10
12
  class TranscriptionCreateParams(TypedDict, total=False):
11
- audio_url: Required[str]
12
- """URL of the audio file to transcribe"""
13
+ audio_url: str
14
+ """URL of the audio file to transcribe (legacy mode, no auto-storage)"""
13
15
 
14
16
  auto_highlights: bool
15
17
  """Automatically extract key phrases and topics"""
16
18
 
19
+ boost_param: Literal["low", "default", "high"]
20
+ """How much to boost custom vocabulary"""
21
+
17
22
  content_safety_labels: bool
18
23
  """Enable content moderation and safety labeling"""
19
24
 
25
+ format: Literal["json", "text"]
26
+ """Output format for the transcript when using vault mode"""
27
+
20
28
  format_text: bool
21
29
  """Format text with proper capitalization"""
22
30
 
@@ -29,8 +37,20 @@ class TranscriptionCreateParams(TypedDict, total=False):
29
37
  language_detection: bool
30
38
  """Enable automatic language detection"""
31
39
 
40
+ object_id: str
41
+ """Object ID of the audio file in the vault (use with vault_id)"""
42
+
32
43
  punctuate: bool
33
44
  """Add punctuation to the transcript"""
34
45
 
35
46
  speaker_labels: bool
36
47
  """Enable speaker identification and labeling"""
48
+
49
+ speakers_expected: int
50
+ """Expected number of speakers (improves accuracy when known)"""
51
+
52
+ vault_id: str
53
+ """Vault ID containing the audio file (use with object_id)"""
54
+
55
+ word_boost: SequenceNotStr[str]
56
+ """Custom vocabulary words to boost (e.g., legal terms)"""
@@ -0,0 +1,22 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Optional
4
+ from typing_extensions import Literal
5
+
6
+ from ..._models import BaseModel
7
+
8
+ __all__ = ["TranscriptionCreateResponse"]
9
+
10
+
11
+ class TranscriptionCreateResponse(BaseModel):
12
+ id: Optional[str] = None
13
+ """Unique transcription job ID"""
14
+
15
+ source_object_id: Optional[str] = None
16
+ """Source audio object ID (only for vault-based transcription)"""
17
+
18
+ status: Optional[Literal["queued", "processing", "completed", "error"]] = None
19
+ """Current status of the transcription job"""
20
+
21
+ vault_id: Optional[str] = None
22
+ """Vault ID (only for vault-based transcription)"""
@@ -5,37 +5,39 @@ from typing_extensions import Literal
5
5
 
6
6
  from ..._models import BaseModel
7
7
 
8
- __all__ = ["TranscriptionRetrieveResponse", "Word"]
9
-
10
-
11
- class Word(BaseModel):
12
- confidence: Optional[float] = None
13
-
14
- end: Optional[float] = None
15
-
16
- start: Optional[float] = None
17
-
18
- text: Optional[str] = None
8
+ __all__ = ["TranscriptionRetrieveResponse"]
19
9
 
20
10
 
21
11
  class TranscriptionRetrieveResponse(BaseModel):
22
12
  id: str
23
13
  """Unique transcription job ID"""
24
14
 
25
- status: Literal["queued", "processing", "completed", "error"]
15
+ status: Literal["queued", "processing", "completed", "failed"]
26
16
  """Current status of the transcription job"""
27
17
 
28
18
  audio_duration: Optional[float] = None
29
19
  """Duration of the audio file in seconds"""
30
20
 
31
21
  confidence: Optional[float] = None
32
- """Overall confidence score for the transcription"""
22
+ """Overall confidence score (0-100)"""
33
23
 
34
24
  error: Optional[str] = None
35
- """Error message (only present when status is error)"""
25
+ """Error message (only present when status is failed)"""
26
+
27
+ result_object_id: Optional[str] = None
28
+ """Result transcript object ID (vault-based jobs, when completed)"""
29
+
30
+ source_object_id: Optional[str] = None
31
+ """Source audio object ID (vault-based jobs only)"""
36
32
 
37
33
  text: Optional[str] = None
38
- """Full transcription text (only present when status is completed)"""
34
+ """Full transcription text (legacy direct URL jobs only)"""
35
+
36
+ vault_id: Optional[str] = None
37
+ """Vault ID (vault-based jobs only)"""
38
+
39
+ word_count: Optional[int] = None
40
+ """Number of words in the transcript"""
39
41
 
40
- words: Optional[List[Word]] = None
41
- """Word-level timestamps and confidence scores"""
42
+ words: Optional[List[object]] = None
43
+ """Word-level timestamps (legacy direct URL jobs only)"""
@@ -3,4 +3,3 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  from .speak_create_params import SpeakCreateParams as SpeakCreateParams
6
- from .speak_stream_params import SpeakStreamParams as SpeakStreamParams
@@ -46,6 +46,8 @@ class SpeakCreateParams(TypedDict, total=False):
46
46
 
47
47
 
48
48
  class VoiceSettings(TypedDict, total=False):
49
+ """Voice customization settings"""
50
+
49
51
  similarity_boost: float
50
52
  """Similarity boost (0-1)"""
51
53
 
@@ -0,0 +1,40 @@
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__ = ["V1ListVoicesResponse", "Voice"]
8
+
9
+
10
+ class Voice(BaseModel):
11
+ available_for_tiers: Optional[List[str]] = None
12
+ """Available subscription tiers"""
13
+
14
+ category: Optional[str] = None
15
+ """Voice category"""
16
+
17
+ description: Optional[str] = None
18
+ """Voice description"""
19
+
20
+ labels: Optional[object] = None
21
+ """Voice characteristics and metadata"""
22
+
23
+ name: Optional[str] = None
24
+ """Voice name"""
25
+
26
+ preview_url: Optional[str] = None
27
+ """URL to preview audio sample"""
28
+
29
+ voice_id: Optional[str] = None
30
+ """Unique voice identifier"""
31
+
32
+
33
+ class V1ListVoicesResponse(BaseModel):
34
+ next_page_token: Optional[str] = None
35
+ """Token for next page of results"""
36
+
37
+ total_count: Optional[int] = None
38
+ """Total number of voices (if requested)"""
39
+
40
+ voices: Optional[List[Voice]] = None
@@ -1,6 +1,3 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  from __future__ import annotations
4
-
5
- from .v1_create_params import V1CreateParams as V1CreateParams
6
- from .v1_create_response import V1CreateResponse as V1CreateResponse
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: casedev
3
- Version: 0.1.0
3
+ Version: 0.2.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
@@ -51,13 +51,10 @@ The REST API documentation can be found on [docs.case.dev](https://docs.case.dev
51
51
  ## Installation
52
52
 
53
53
  ```sh
54
- # install from the production repo
55
- pip install git+ssh://git@github.com/CaseMark/casedev-python.git
54
+ # install from PyPI
55
+ pip install casedev
56
56
  ```
57
57
 
58
- > [!NOTE]
59
- > Once this package is [published to PyPI](https://www.stainless.com/docs/guides/publish), this will become: `pip install casedev`
60
-
61
58
  ## Usage
62
59
 
63
60
  The full API of this library can be found in [api.md](https://github.com/CaseMark/casedev-python/tree/main/api.md).
@@ -128,8 +125,8 @@ By default, the async client uses `httpx` for HTTP requests. However, for improv
128
125
  You can enable this by installing `aiohttp`:
129
126
 
130
127
  ```sh
131
- # install from the production repo
132
- pip install 'casedev[aiohttp] @ git+ssh://git@github.com/CaseMark/casedev-python.git'
128
+ # install from PyPI
129
+ pip install casedev[aiohttp]
133
130
  ```
134
131
 
135
132
  Then you can enable it by instantiating the client with `http_client=DefaultAioHttpClient()`:
@@ -178,12 +175,12 @@ from casedev import Casedev
178
175
 
179
176
  client = Casedev()
180
177
 
181
- response = client.compute.v1.deploy(
182
- entrypoint_name="entrypointName",
183
- type="task",
184
- config={},
178
+ response = client.format.v1.create_document(
179
+ content="content",
180
+ output_format="pdf",
181
+ options={},
185
182
  )
186
- print(response.config)
183
+ print(response.options)
187
184
  ```
188
185
 
189
186
  ## Handling errors