together 2.0.0a17__py3-none-any.whl → 2.0.0a19__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. together/_base_client.py +5 -2
  2. together/_client.py +1 -77
  3. together/_compat.py +3 -3
  4. together/_utils/_json.py +35 -0
  5. together/_version.py +1 -1
  6. together/lib/cli/api/beta/__init__.py +2 -0
  7. together/lib/cli/api/beta/jig/__init__.py +52 -0
  8. together/lib/cli/api/beta/jig/_config.py +170 -0
  9. together/lib/cli/api/beta/jig/jig.py +664 -0
  10. together/lib/cli/api/beta/jig/secrets.py +138 -0
  11. together/lib/cli/api/beta/jig/volumes.py +509 -0
  12. together/lib/cli/api/endpoints/create.py +7 -3
  13. together/lib/cli/api/endpoints/hardware.py +38 -7
  14. together/lib/cli/api/models/upload.py +5 -1
  15. together/resources/__init__.py +0 -28
  16. together/resources/beta/__init__.py +14 -0
  17. together/resources/beta/beta.py +32 -0
  18. together/resources/beta/clusters/clusters.py +12 -12
  19. together/resources/beta/clusters/storage.py +10 -10
  20. together/resources/beta/jig/__init__.py +61 -0
  21. together/resources/beta/jig/jig.py +1004 -0
  22. together/resources/beta/jig/queue.py +482 -0
  23. together/resources/beta/jig/secrets.py +548 -0
  24. together/resources/beta/jig/volumes.py +514 -0
  25. together/resources/chat/completions.py +10 -0
  26. together/resources/endpoints.py +103 -1
  27. together/resources/models/__init__.py +33 -0
  28. together/resources/{models.py → models/models.py} +41 -9
  29. together/resources/models/uploads.py +163 -0
  30. together/types/__init__.py +2 -4
  31. together/types/beta/__init__.py +6 -0
  32. together/types/beta/deployment.py +261 -0
  33. together/types/beta/deployment_logs.py +11 -0
  34. together/types/beta/jig/__init__.py +20 -0
  35. together/types/beta/jig/queue_cancel_params.py +13 -0
  36. together/types/beta/jig/queue_cancel_response.py +11 -0
  37. together/types/beta/jig/queue_metrics_params.py +12 -0
  38. together/types/beta/jig/queue_metrics_response.py +8 -0
  39. together/types/beta/jig/queue_retrieve_params.py +15 -0
  40. together/types/beta/jig/queue_retrieve_response.py +35 -0
  41. together/types/beta/jig/queue_submit_params.py +19 -0
  42. together/types/beta/jig/queue_submit_response.py +25 -0
  43. together/types/beta/jig/secret.py +33 -0
  44. together/types/beta/jig/secret_create_params.py +34 -0
  45. together/types/beta/jig/secret_list_response.py +16 -0
  46. together/types/beta/jig/secret_update_params.py +34 -0
  47. together/types/beta/jig/volume.py +47 -0
  48. together/types/beta/jig/volume_create_params.py +34 -0
  49. together/types/beta/jig/volume_list_response.py +16 -0
  50. together/types/beta/jig/volume_update_params.py +34 -0
  51. together/types/beta/jig_deploy_params.py +150 -0
  52. together/types/beta/jig_list_response.py +16 -0
  53. together/types/beta/jig_retrieve_logs_params.py +12 -0
  54. together/types/beta/jig_update_params.py +141 -0
  55. together/types/chat/completion_create_params.py +11 -0
  56. together/types/{hardware_list_params.py → endpoint_list_hardware_params.py} +2 -2
  57. together/types/{hardware_list_response.py → endpoint_list_hardware_response.py} +2 -2
  58. together/types/models/__init__.py +5 -0
  59. together/types/{job_retrieve_response.py → models/upload_status_response.py} +3 -3
  60. {together-2.0.0a17.dist-info → together-2.0.0a19.dist-info}/METADATA +15 -14
  61. {together-2.0.0a17.dist-info → together-2.0.0a19.dist-info}/RECORD +64 -30
  62. together/resources/hardware.py +0 -181
  63. together/resources/jobs.py +0 -214
  64. together/types/job_list_response.py +0 -47
  65. {together-2.0.0a17.dist-info → together-2.0.0a19.dist-info}/WHEEL +0 -0
  66. {together-2.0.0a17.dist-info → together-2.0.0a19.dist-info}/entry_points.txt +0 -0
  67. {together-2.0.0a17.dist-info → together-2.0.0a19.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,261 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Dict, List, Optional
4
+ from typing_extensions import Literal
5
+
6
+ from pydantic import Field as FieldInfo
7
+
8
+ from ..._models import BaseModel
9
+
10
+ __all__ = [
11
+ "Deployment",
12
+ "EnvironmentVariable",
13
+ "ReplicaEvents",
14
+ "ReplicaEventsContainerStatus",
15
+ "ReplicaEventsEvent",
16
+ "Volume",
17
+ ]
18
+
19
+
20
+ class EnvironmentVariable(BaseModel):
21
+ name: str
22
+ """Name is the environment variable name (e.g., "DATABASE_URL").
23
+
24
+ Must start with a letter or underscore, followed by letters, numbers, or
25
+ underscores
26
+ """
27
+
28
+ value: Optional[str] = None
29
+ """Value is the plain text value for the environment variable.
30
+
31
+ Use this for non-sensitive values. Either Value or ValueFromSecret must be set,
32
+ but not both
33
+ """
34
+
35
+ value_from_secret: Optional[str] = None
36
+ """ValueFromSecret references a secret by name or ID to use as the value.
37
+
38
+ Use this for sensitive values like API keys or passwords. Either Value or
39
+ ValueFromSecret must be set, but not both
40
+ """
41
+
42
+
43
+ class ReplicaEventsContainerStatus(BaseModel):
44
+ """
45
+ ContainerStatus provides detailed status information about the container within this replica
46
+ """
47
+
48
+ finished_at: Optional[str] = FieldInfo(alias="finishedAt", default=None)
49
+ """
50
+ FinishedAt is the timestamp when the container finished execution (if
51
+ terminated)
52
+ """
53
+
54
+ message: Optional[str] = None
55
+ """
56
+ Message provides a human-readable message with details about the container's
57
+ status
58
+ """
59
+
60
+ name: Optional[str] = None
61
+ """Name is the name of the container"""
62
+
63
+ reason: Optional[str] = None
64
+ """
65
+ Reason provides a brief machine-readable reason for the container's current
66
+ status
67
+ """
68
+
69
+ started_at: Optional[str] = FieldInfo(alias="startedAt", default=None)
70
+ """StartedAt is the timestamp when the container started execution"""
71
+
72
+ status: Optional[str] = None
73
+ """
74
+ Status is the current state of the container (e.g., "Running", "Terminated",
75
+ "Waiting")
76
+ """
77
+
78
+
79
+ class ReplicaEventsEvent(BaseModel):
80
+ action: Optional[str] = None
81
+ """Action is the action taken or reported by this event"""
82
+
83
+ count: Optional[int] = None
84
+ """Count is the number of times this event has occurred"""
85
+
86
+ first_seen: Optional[str] = None
87
+ """FirstSeen is the timestamp when this event was first observed"""
88
+
89
+ last_seen: Optional[str] = None
90
+ """LastSeen is the timestamp when this event was last observed"""
91
+
92
+ message: Optional[str] = None
93
+ """Message is a human-readable description of the event"""
94
+
95
+ reason: Optional[str] = None
96
+ """
97
+ Reason is a brief machine-readable reason for this event (e.g., "Pulling",
98
+ "Started", "Failed")
99
+ """
100
+
101
+
102
+ class ReplicaEvents(BaseModel):
103
+ container_status: Optional[ReplicaEventsContainerStatus] = None
104
+ """
105
+ ContainerStatus provides detailed status information about the container within
106
+ this replica
107
+ """
108
+
109
+ events: Optional[List[ReplicaEventsEvent]] = None
110
+ """
111
+ Events is a list of Kubernetes events related to this replica for
112
+ troubleshooting
113
+ """
114
+
115
+ replica_completed_at: Optional[str] = None
116
+ """ReplicaCompletedAt is the timestamp when the replica finished execution"""
117
+
118
+ replica_marked_for_termination_at: Optional[str] = None
119
+ """
120
+ ReplicaMarkedForTerminationAt is the timestamp when the replica was marked for
121
+ termination
122
+ """
123
+
124
+ replica_ready_since: Optional[str] = None
125
+ """
126
+ ReplicaReadySince is the timestamp when the replica became ready to serve
127
+ traffic
128
+ """
129
+
130
+ replica_running_since: Optional[str] = None
131
+ """ReplicaRunningSince is the timestamp when the replica entered the running state"""
132
+
133
+ replica_started_at: Optional[str] = None
134
+ """ReplicaStartedAt is the timestamp when the replica was created"""
135
+
136
+ replica_status: Optional[str] = None
137
+ """
138
+ ReplicaStatus is the current status of the replica (e.g., "Running", "Pending",
139
+ "Failed")
140
+ """
141
+
142
+ replica_status_message: Optional[str] = None
143
+ """
144
+ ReplicaStatusMessage provides a human-readable message explaining the replica's
145
+ status
146
+ """
147
+
148
+ replica_status_reason: Optional[str] = None
149
+ """
150
+ ReplicaStatusReason provides a brief machine-readable reason for the replica's
151
+ status
152
+ """
153
+
154
+ scheduled_on_cluster: Optional[str] = None
155
+ """ScheduledOnCluster identifies which cluster this replica is scheduled on"""
156
+
157
+
158
+ class Volume(BaseModel):
159
+ mount_path: str
160
+ """
161
+ MountPath is the path in the container where the volume will be mounted (e.g.,
162
+ "/data")
163
+ """
164
+
165
+ name: str
166
+ """Name is the name of the volume to mount.
167
+
168
+ Must reference an existing volume by name or ID
169
+ """
170
+
171
+
172
+ class Deployment(BaseModel):
173
+ id: Optional[str] = None
174
+ """ID is the unique identifier of the deployment"""
175
+
176
+ args: Optional[List[str]] = None
177
+ """Args are the arguments passed to the container's command"""
178
+
179
+ autoscaling: Optional[Dict[str, str]] = None
180
+ """Autoscaling contains autoscaling configuration parameters for this deployment"""
181
+
182
+ command: Optional[List[str]] = None
183
+ """Command is the entrypoint command run in the container"""
184
+
185
+ cpu: Optional[float] = None
186
+ """
187
+ CPU is the amount of CPU resource allocated to each replica in cores (fractional
188
+ value is allowed)
189
+ """
190
+
191
+ created_at: Optional[str] = None
192
+ """CreatedAt is the ISO8601 timestamp when this deployment was created"""
193
+
194
+ description: Optional[str] = None
195
+ """
196
+ Description provides a human-readable explanation of the deployment's purpose or
197
+ content
198
+ """
199
+
200
+ desired_replicas: Optional[int] = None
201
+ """DesiredReplicas is the number of replicas that the orchestrator is targeting"""
202
+
203
+ environment_variables: Optional[List[EnvironmentVariable]] = None
204
+ """EnvironmentVariables is a list of environment variables set in the container"""
205
+
206
+ gpu_count: Optional[int] = None
207
+ """GPUCount is the number of GPUs allocated to each replica in this deployment"""
208
+
209
+ gpu_type: Optional[Literal["h100-80gb", " a100-80gb"]] = None
210
+ """GPUType specifies the type of GPU requested (if any) for this deployment"""
211
+
212
+ health_check_path: Optional[str] = None
213
+ """HealthCheckPath is the HTTP path used for health checks of the application"""
214
+
215
+ image: Optional[str] = None
216
+ """Image specifies the container image used for this deployment"""
217
+
218
+ max_replicas: Optional[int] = None
219
+ """MaxReplicas is the maximum number of replicas to run for this deployment"""
220
+
221
+ memory: Optional[float] = None
222
+ """
223
+ Memory is the amount of memory allocated to each replica in GiB (fractional
224
+ value is allowed)
225
+ """
226
+
227
+ min_replicas: Optional[int] = None
228
+ """MinReplicas is the minimum number of replicas to run for this deployment"""
229
+
230
+ name: Optional[str] = None
231
+ """Name is the name of the deployment"""
232
+
233
+ object: Optional[str] = None
234
+ """Object is the type identifier for this response (always "deployment")"""
235
+
236
+ port: Optional[int] = None
237
+ """Port is the container port that the deployment exposes"""
238
+
239
+ ready_replicas: Optional[int] = None
240
+ """ReadyReplicas is the current number of replicas that are in the Ready state"""
241
+
242
+ replica_events: Optional[Dict[str, ReplicaEvents]] = None
243
+ """ReplicaEvents is a mapping of replica names or IDs to their status events"""
244
+
245
+ status: Optional[Literal["Updating", "Scaling", "Ready", "Failed"]] = None
246
+ """
247
+ Status represents the overall status of the deployment (e.g., Updating, Scaling,
248
+ Ready, Failed)
249
+ """
250
+
251
+ storage: Optional[int] = None
252
+ """
253
+ Storage is the amount of storage (in MB or units as defined by the platform)
254
+ allocated to each replica
255
+ """
256
+
257
+ updated_at: Optional[str] = None
258
+ """UpdatedAt is the ISO8601 timestamp when this deployment was last updated"""
259
+
260
+ volumes: Optional[List[Volume]] = None
261
+ """Volumes is a list of volume mounts for this deployment"""
@@ -0,0 +1,11 @@
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__ = ["DeploymentLogs"]
8
+
9
+
10
+ class DeploymentLogs(BaseModel):
11
+ lines: Optional[List[str]] = None
@@ -0,0 +1,20 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from .secret import Secret as Secret
6
+ from .volume import Volume as Volume
7
+ from .queue_cancel_params import QueueCancelParams as QueueCancelParams
8
+ from .queue_submit_params import QueueSubmitParams as QueueSubmitParams
9
+ from .queue_metrics_params import QueueMetricsParams as QueueMetricsParams
10
+ from .secret_create_params import SecretCreateParams as SecretCreateParams
11
+ from .secret_list_response import SecretListResponse as SecretListResponse
12
+ from .secret_update_params import SecretUpdateParams as SecretUpdateParams
13
+ from .volume_create_params import VolumeCreateParams as VolumeCreateParams
14
+ from .volume_list_response import VolumeListResponse as VolumeListResponse
15
+ from .volume_update_params import VolumeUpdateParams as VolumeUpdateParams
16
+ from .queue_cancel_response import QueueCancelResponse as QueueCancelResponse
17
+ from .queue_retrieve_params import QueueRetrieveParams as QueueRetrieveParams
18
+ from .queue_submit_response import QueueSubmitResponse as QueueSubmitResponse
19
+ from .queue_metrics_response import QueueMetricsResponse as QueueMetricsResponse
20
+ from .queue_retrieve_response import QueueRetrieveResponse as QueueRetrieveResponse
@@ -0,0 +1,13 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import Required, TypedDict
6
+
7
+ __all__ = ["QueueCancelParams"]
8
+
9
+
10
+ class QueueCancelParams(TypedDict, total=False):
11
+ model: Required[str]
12
+
13
+ request_id: Required[str]
@@ -0,0 +1,11 @@
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__ = ["QueueCancelResponse"]
8
+
9
+
10
+ class QueueCancelResponse(BaseModel):
11
+ status: Optional[str] = None
@@ -0,0 +1,12 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import Required, TypedDict
6
+
7
+ __all__ = ["QueueMetricsParams"]
8
+
9
+
10
+ class QueueMetricsParams(TypedDict, total=False):
11
+ model: Required[str]
12
+ """Model name to get metrics for"""
@@ -0,0 +1,8 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Dict
4
+ from typing_extensions import TypeAlias
5
+
6
+ __all__ = ["QueueMetricsResponse"]
7
+
8
+ QueueMetricsResponse: TypeAlias = Dict[str, object]
@@ -0,0 +1,15 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import Required, TypedDict
6
+
7
+ __all__ = ["QueueRetrieveParams"]
8
+
9
+
10
+ class QueueRetrieveParams(TypedDict, total=False):
11
+ model: Required[str]
12
+ """Model name"""
13
+
14
+ request_id: Required[str]
15
+ """Request ID"""
@@ -0,0 +1,35 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Dict, List, Optional
4
+
5
+ from ...._models import BaseModel
6
+
7
+ __all__ = ["QueueRetrieveResponse"]
8
+
9
+
10
+ class QueueRetrieveResponse(BaseModel):
11
+ claimed_at: Optional[str] = None
12
+
13
+ created_at: Optional[str] = None
14
+
15
+ done_at: Optional[str] = None
16
+
17
+ info: Optional[Dict[str, object]] = None
18
+
19
+ inputs: Optional[Dict[str, object]] = None
20
+
21
+ model: Optional[str] = None
22
+
23
+ outputs: Optional[Dict[str, object]] = None
24
+
25
+ priority: Optional[int] = None
26
+ """Additional fields for test compatibility"""
27
+
28
+ request_id: Optional[str] = None
29
+
30
+ retries: Optional[int] = None
31
+
32
+ status: Optional[str] = None
33
+ """this should be the enum, but isn't for backwards compatability"""
34
+
35
+ warnings: Optional[List[str]] = None
@@ -0,0 +1,19 @@
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 Dict
6
+ from typing_extensions import Required, TypedDict
7
+
8
+ __all__ = ["QueueSubmitParams"]
9
+
10
+
11
+ class QueueSubmitParams(TypedDict, total=False):
12
+ model: Required[str]
13
+ """Required model identifier"""
14
+
15
+ payload: Required[Dict[str, object]]
16
+
17
+ info: Dict[str, object]
18
+
19
+ priority: int
@@ -0,0 +1,25 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Optional
4
+
5
+ from pydantic import Field as FieldInfo
6
+
7
+ from ...._models import BaseModel
8
+
9
+ __all__ = ["QueueSubmitResponse", "Error"]
10
+
11
+
12
+ class Error(BaseModel):
13
+ code: Optional[str] = None
14
+
15
+ message: Optional[str] = None
16
+
17
+ param: Optional[str] = None
18
+
19
+ type: Optional[str] = None
20
+
21
+
22
+ class QueueSubmitResponse(BaseModel):
23
+ error: Optional[Error] = None
24
+
25
+ request_id: Optional[str] = FieldInfo(alias="requestId", default=None)
@@ -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
+
5
+ from ...._models import BaseModel
6
+
7
+ __all__ = ["Secret"]
8
+
9
+
10
+ class Secret(BaseModel):
11
+ id: Optional[str] = None
12
+ """ID is the unique identifier for this secret"""
13
+
14
+ created_at: Optional[str] = None
15
+ """CreatedAt is the ISO8601 timestamp when this secret was created"""
16
+
17
+ created_by: Optional[str] = None
18
+ """CreatedBy is the identifier of the user who created this secret"""
19
+
20
+ description: Optional[str] = None
21
+ """Description is a human-readable description of the secret's purpose"""
22
+
23
+ last_updated_by: Optional[str] = None
24
+ """LastUpdatedBy is the identifier of the user who last updated this secret"""
25
+
26
+ name: Optional[str] = None
27
+ """Name is the name/key of the secret"""
28
+
29
+ object: Optional[str] = None
30
+ """Object is the type identifier for this response (always "secret")"""
31
+
32
+ updated_at: Optional[str] = None
33
+ """UpdatedAt is the ISO8601 timestamp when this secret was last updated"""
@@ -0,0 +1,34 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import Required, TypedDict
6
+
7
+ __all__ = ["SecretCreateParams"]
8
+
9
+
10
+ class SecretCreateParams(TypedDict, total=False):
11
+ name: Required[str]
12
+ """Name is the unique identifier for the secret.
13
+
14
+ Can contain alphanumeric characters, underscores, hyphens, forward slashes, and
15
+ periods (1-100 characters)
16
+ """
17
+
18
+ value: Required[str]
19
+ """
20
+ Value is the sensitive data to store securely (e.g., API keys, passwords,
21
+ tokens). This value will be encrypted at rest
22
+ """
23
+
24
+ description: str
25
+ """
26
+ Description is an optional human-readable description of the secret's purpose
27
+ (max 500 characters)
28
+ """
29
+
30
+ project_id: str
31
+ """
32
+ ProjectID is ignored - the project is automatically determined from your
33
+ authentication
34
+ """
@@ -0,0 +1,16 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import List, Optional
4
+
5
+ from .secret import Secret
6
+ from ...._models import BaseModel
7
+
8
+ __all__ = ["SecretListResponse"]
9
+
10
+
11
+ class SecretListResponse(BaseModel):
12
+ data: Optional[List[Secret]] = None
13
+ """Data is the array of secret items"""
14
+
15
+ object: Optional[str] = None
16
+ """Object is the type identifier for this response (always "list")"""
@@ -0,0 +1,34 @@
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 TypedDict
6
+
7
+ __all__ = ["SecretUpdateParams"]
8
+
9
+
10
+ class SecretUpdateParams(TypedDict, total=False):
11
+ description: str
12
+ """
13
+ Description is an optional human-readable description of the secret's purpose
14
+ (max 500 characters)
15
+ """
16
+
17
+ name: str
18
+ """Name is the new unique identifier for the secret.
19
+
20
+ Can contain alphanumeric characters, underscores, hyphens, forward slashes, and
21
+ periods (1-100 characters)
22
+ """
23
+
24
+ project_id: str
25
+ """
26
+ ProjectID is ignored - the project is automatically determined from your
27
+ authentication
28
+ """
29
+
30
+ value: str
31
+ """Value is the new sensitive data to store securely.
32
+
33
+ Updating this will replace the existing secret value
34
+ """
@@ -0,0 +1,47 @@
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__ = ["Volume", "Content"]
9
+
10
+
11
+ class Content(BaseModel):
12
+ """Content specifies the content that will be preloaded to this volume"""
13
+
14
+ source_prefix: Optional[str] = None
15
+ """
16
+ SourcePrefix is the file path prefix for the content to be preloaded into the
17
+ volume
18
+ """
19
+
20
+ type: Optional[Literal["files"]] = None
21
+ """
22
+ Type is the content type (currently only "files" is supported which allows
23
+ preloading files uploaded via Files API into the volume)
24
+ """
25
+
26
+
27
+ class Volume(BaseModel):
28
+ id: Optional[str] = None
29
+ """ID is the unique identifier for this volume"""
30
+
31
+ content: Optional[Content] = None
32
+ """Content specifies the content that will be preloaded to this volume"""
33
+
34
+ created_at: Optional[str] = None
35
+ """CreatedAt is the ISO8601 timestamp when this volume was created"""
36
+
37
+ name: Optional[str] = None
38
+ """Name is the name of the volume"""
39
+
40
+ object: Optional[str] = None
41
+ """Object is the type identifier for this response (always "volume")"""
42
+
43
+ type: Optional[Literal["readOnly"]] = None
44
+ """Type is the volume type (e.g., "readOnly")"""
45
+
46
+ updated_at: Optional[str] = None
47
+ """UpdatedAt is the ISO8601 timestamp when this volume was last updated"""
@@ -0,0 +1,34 @@
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__ = ["VolumeCreateParams", "Content"]
8
+
9
+
10
+ class VolumeCreateParams(TypedDict, total=False):
11
+ content: Required[Content]
12
+ """Content specifies the content configuration for this volume"""
13
+
14
+ name: Required[str]
15
+ """Name is the unique identifier for the volume within the project"""
16
+
17
+ type: Required[Literal["readOnly"]]
18
+ """Type is the volume type (currently only "readOnly" is supported)"""
19
+
20
+
21
+ class Content(TypedDict, total=False):
22
+ """Content specifies the content configuration for this volume"""
23
+
24
+ source_prefix: str
25
+ """
26
+ SourcePrefix is the file path prefix for the content to be preloaded into the
27
+ volume
28
+ """
29
+
30
+ type: Literal["files"]
31
+ """
32
+ Type is the content type (currently only "files" is supported which allows
33
+ preloading files uploaded via Files API into the volume)
34
+ """
@@ -0,0 +1,16 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import List, Optional
4
+
5
+ from .volume import Volume
6
+ from ...._models import BaseModel
7
+
8
+ __all__ = ["VolumeListResponse"]
9
+
10
+
11
+ class VolumeListResponse(BaseModel):
12
+ data: Optional[List[Volume]] = None
13
+ """Data is the array of volume items"""
14
+
15
+ object: Optional[str] = None
16
+ """Object is the type identifier for this response (always "list")"""