Skip to content

Commit c042496

Browse files
feat(api): update via SDK Studio
1 parent 5ebec81 commit c042496

File tree

7 files changed

+218
-17
lines changed

7 files changed

+218
-17
lines changed

.stats.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
configured_endpoints: 59
1+
configured_endpoints: 58
22
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/digitalocean%2Fdigitalocean-genai-sdk-6e449984986e066baea73af5c2726811e74a284f0d68d49926ec5c7821c7ed31.yml
33
openapi_spec_hash: 78f43f68f46df0d81891ae2ff66bf3a0
4-
config_hash: 3e04a2c7a4b0b9b16bd2956a3208b942
4+
config_hash: 84ba29fbded3618d3cc3994639c82547

api.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -332,4 +332,4 @@ from gradientai.types import Model, ModelListResponse
332332
Methods:
333333

334334
- <code title="get /models/{model}">client.models.<a href="./src/gradientai/resources/models.py">retrieve</a>(model) -> <a href="./src/gradientai/types/model.py">Model</a></code>
335-
- <code title="get /models">client.models.<a href="./src/gradientai/resources/models.py">list</a>() -> <a href="./src/gradientai/types/model_list_response.py">ModelListResponse</a></code>
335+
- <code title="get /v2/gen-ai/models">client.models.<a href="./src/gradientai/resources/models.py">list</a>(\*\*<a href="src/gradientai/types/model_list_params.py">params</a>) -> <a href="./src/gradientai/types/model_list_response.py">ModelListResponse</a></code>

src/gradientai/resources/models.py

Lines changed: 117 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,14 @@
22

33
from __future__ import annotations
44

5+
from typing import List
6+
from typing_extensions import Literal
7+
58
import httpx
69

10+
from ..types import model_list_params
711
from .._types import NOT_GIVEN, Body, Query, Headers, NotGiven
12+
from .._utils import maybe_transform, async_maybe_transform
813
from .._compat import cached_property
914
from .._resource import SyncAPIResource, AsyncAPIResource
1015
from .._response import (
@@ -77,6 +82,21 @@ def retrieve(
7782
def list(
7883
self,
7984
*,
85+
page: int | NotGiven = NOT_GIVEN,
86+
per_page: int | NotGiven = NOT_GIVEN,
87+
public_only: bool | NotGiven = NOT_GIVEN,
88+
usecases: List[
89+
Literal[
90+
"MODEL_USECASE_UNKNOWN",
91+
"MODEL_USECASE_AGENT",
92+
"MODEL_USECASE_FINETUNED",
93+
"MODEL_USECASE_KNOWLEDGEBASE",
94+
"MODEL_USECASE_GUARDRAIL",
95+
"MODEL_USECASE_REASONING",
96+
"MODEL_USECASE_SERVERLESS",
97+
]
98+
]
99+
| NotGiven = NOT_GIVEN,
80100
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
81101
# The extra values given here take precedence over values defined on the client or passed to this method.
82102
extra_headers: Headers | None = None,
@@ -85,13 +105,50 @@ def list(
85105
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
86106
) -> ModelListResponse:
87107
"""
88-
Lists the currently available models, and provides basic information about each
89-
one such as the owner and availability.
108+
To list all models, send a GET request to `/v2/gen-ai/models`.
109+
110+
Args:
111+
page: page number.
112+
113+
per_page: items per page.
114+
115+
public_only: only include models that are publicly available.
116+
117+
usecases: include only models defined for the listed usecases.
118+
119+
- MODEL_USECASE_UNKNOWN: The use case of the model is unknown
120+
- MODEL_USECASE_AGENT: The model maybe used in an agent
121+
- MODEL_USECASE_FINETUNED: The model maybe used for fine tuning
122+
- MODEL_USECASE_KNOWLEDGEBASE: The model maybe used for knowledge bases
123+
(embedding models)
124+
- MODEL_USECASE_GUARDRAIL: The model maybe used for guardrails
125+
- MODEL_USECASE_REASONING: The model usecase for reasoning
126+
- MODEL_USECASE_SERVERLESS: The model usecase for serverless inference
127+
128+
extra_headers: Send extra headers
129+
130+
extra_query: Add additional query parameters to the request
131+
132+
extra_body: Add additional JSON properties to the request
133+
134+
timeout: Override the client-level default timeout for this request, in seconds
90135
"""
91136
return self._get(
92-
"/models",
137+
"/v2/gen-ai/models",
93138
options=make_request_options(
94-
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
139+
extra_headers=extra_headers,
140+
extra_query=extra_query,
141+
extra_body=extra_body,
142+
timeout=timeout,
143+
query=maybe_transform(
144+
{
145+
"page": page,
146+
"per_page": per_page,
147+
"public_only": public_only,
148+
"usecases": usecases,
149+
},
150+
model_list_params.ModelListParams,
151+
),
95152
),
96153
cast_to=ModelListResponse,
97154
)
@@ -154,6 +211,21 @@ async def retrieve(
154211
async def list(
155212
self,
156213
*,
214+
page: int | NotGiven = NOT_GIVEN,
215+
per_page: int | NotGiven = NOT_GIVEN,
216+
public_only: bool | NotGiven = NOT_GIVEN,
217+
usecases: List[
218+
Literal[
219+
"MODEL_USECASE_UNKNOWN",
220+
"MODEL_USECASE_AGENT",
221+
"MODEL_USECASE_FINETUNED",
222+
"MODEL_USECASE_KNOWLEDGEBASE",
223+
"MODEL_USECASE_GUARDRAIL",
224+
"MODEL_USECASE_REASONING",
225+
"MODEL_USECASE_SERVERLESS",
226+
]
227+
]
228+
| NotGiven = NOT_GIVEN,
157229
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
158230
# The extra values given here take precedence over values defined on the client or passed to this method.
159231
extra_headers: Headers | None = None,
@@ -162,13 +234,50 @@ async def list(
162234
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
163235
) -> ModelListResponse:
164236
"""
165-
Lists the currently available models, and provides basic information about each
166-
one such as the owner and availability.
237+
To list all models, send a GET request to `/v2/gen-ai/models`.
238+
239+
Args:
240+
page: page number.
241+
242+
per_page: items per page.
243+
244+
public_only: only include models that are publicly available.
245+
246+
usecases: include only models defined for the listed usecases.
247+
248+
- MODEL_USECASE_UNKNOWN: The use case of the model is unknown
249+
- MODEL_USECASE_AGENT: The model maybe used in an agent
250+
- MODEL_USECASE_FINETUNED: The model maybe used for fine tuning
251+
- MODEL_USECASE_KNOWLEDGEBASE: The model maybe used for knowledge bases
252+
(embedding models)
253+
- MODEL_USECASE_GUARDRAIL: The model maybe used for guardrails
254+
- MODEL_USECASE_REASONING: The model usecase for reasoning
255+
- MODEL_USECASE_SERVERLESS: The model usecase for serverless inference
256+
257+
extra_headers: Send extra headers
258+
259+
extra_query: Add additional query parameters to the request
260+
261+
extra_body: Add additional JSON properties to the request
262+
263+
timeout: Override the client-level default timeout for this request, in seconds
167264
"""
168265
return await self._get(
169-
"/models",
266+
"/v2/gen-ai/models",
170267
options=make_request_options(
171-
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
268+
extra_headers=extra_headers,
269+
extra_query=extra_query,
270+
extra_body=extra_body,
271+
timeout=timeout,
272+
query=await async_maybe_transform(
273+
{
274+
"page": page,
275+
"per_page": per_page,
276+
"public_only": public_only,
277+
"usecases": usecases,
278+
},
279+
model_list_params.ModelListParams,
280+
),
172281
),
173282
cast_to=ModelListResponse,
174283
)

src/gradientai/types/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from .api_indexing_job import APIIndexingJob as APIIndexingJob
1010
from .agent_list_params import AgentListParams as AgentListParams
1111
from .api_model_version import APIModelVersion as APIModelVersion
12+
from .model_list_params import ModelListParams as ModelListParams
1213
from .api_knowledge_base import APIKnowledgeBase as APIKnowledgeBase
1314
from .region_list_params import RegionListParams as RegionListParams
1415
from .agent_create_params import AgentCreateParams as AgentCreateParams
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
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 List
6+
from typing_extensions import Literal, TypedDict
7+
8+
__all__ = ["ModelListParams"]
9+
10+
11+
class ModelListParams(TypedDict, total=False):
12+
page: int
13+
"""page number."""
14+
15+
per_page: int
16+
"""items per page."""
17+
18+
public_only: bool
19+
"""only include models that are publicly available."""
20+
21+
usecases: List[
22+
Literal[
23+
"MODEL_USECASE_UNKNOWN",
24+
"MODEL_USECASE_AGENT",
25+
"MODEL_USECASE_FINETUNED",
26+
"MODEL_USECASE_KNOWLEDGEBASE",
27+
"MODEL_USECASE_GUARDRAIL",
28+
"MODEL_USECASE_REASONING",
29+
"MODEL_USECASE_SERVERLESS",
30+
]
31+
]
32+
"""include only models defined for the listed usecases.
33+
34+
- MODEL_USECASE_UNKNOWN: The use case of the model is unknown
35+
- MODEL_USECASE_AGENT: The model maybe used in an agent
36+
- MODEL_USECASE_FINETUNED: The model maybe used for fine tuning
37+
- MODEL_USECASE_KNOWLEDGEBASE: The model maybe used for knowledge bases
38+
(embedding models)
39+
- MODEL_USECASE_GUARDRAIL: The model maybe used for guardrails
40+
- MODEL_USECASE_REASONING: The model usecase for reasoning
41+
- MODEL_USECASE_SERVERLESS: The model usecase for serverless inference
42+
"""
Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,42 @@
11
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
22

3-
from typing import List
4-
from typing_extensions import Literal
3+
from typing import List, Optional
4+
from datetime import datetime
55

6-
from .model import Model
76
from .._models import BaseModel
7+
from .api_agreement import APIAgreement
8+
from .agents.api_meta import APIMeta
9+
from .agents.api_links import APILinks
10+
from .api_model_version import APIModelVersion
811

9-
__all__ = ["ModelListResponse"]
12+
__all__ = ["ModelListResponse", "Model"]
13+
14+
15+
class Model(BaseModel):
16+
agreement: Optional[APIAgreement] = None
17+
18+
created_at: Optional[datetime] = None
19+
20+
is_foundational: Optional[bool] = None
21+
22+
name: Optional[str] = None
23+
24+
parent_uuid: Optional[str] = None
25+
26+
updated_at: Optional[datetime] = None
27+
28+
upload_complete: Optional[bool] = None
29+
30+
url: Optional[str] = None
31+
32+
uuid: Optional[str] = None
33+
34+
version: Optional[APIModelVersion] = None
1035

1136

1237
class ModelListResponse(BaseModel):
13-
data: List[Model]
38+
links: Optional[APILinks] = None
39+
40+
meta: Optional[APIMeta] = None
1441

15-
object: Literal["list"]
42+
models: Optional[List[Model]] = None

tests/api_resources/test_models.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,17 @@ def test_method_list(self, client: GradientAI) -> None:
6565
model = client.models.list()
6666
assert_matches_type(ModelListResponse, model, path=["response"])
6767

68+
@pytest.mark.skip()
69+
@parametrize
70+
def test_method_list_with_all_params(self, client: GradientAI) -> None:
71+
model = client.models.list(
72+
page=0,
73+
per_page=0,
74+
public_only=True,
75+
usecases=["MODEL_USECASE_UNKNOWN"],
76+
)
77+
assert_matches_type(ModelListResponse, model, path=["response"])
78+
6879
@pytest.mark.skip()
6980
@parametrize
7081
def test_raw_response_list(self, client: GradientAI) -> None:
@@ -139,6 +150,17 @@ async def test_method_list(self, async_client: AsyncGradientAI) -> None:
139150
model = await async_client.models.list()
140151
assert_matches_type(ModelListResponse, model, path=["response"])
141152

153+
@pytest.mark.skip()
154+
@parametrize
155+
async def test_method_list_with_all_params(self, async_client: AsyncGradientAI) -> None:
156+
model = await async_client.models.list(
157+
page=0,
158+
per_page=0,
159+
public_only=True,
160+
usecases=["MODEL_USECASE_UNKNOWN"],
161+
)
162+
assert_matches_type(ModelListResponse, model, path=["response"])
163+
142164
@pytest.mark.skip()
143165
@parametrize
144166
async def test_raw_response_list(self, async_client: AsyncGradientAI) -> None:

0 commit comments

Comments
 (0)