Skip to content

Commit 9a4f19a

Browse files
feat(api): api update
1 parent 8a3b727 commit 9a4f19a

File tree

8 files changed

+190
-12
lines changed

8 files changed

+190
-12
lines changed

.stats.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
configured_endpoints: 104
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/datamini%2Fasktable-9163f5842399579d20b8596b655b2541786e1617518d1f355b1271eaed748957.yml
3-
openapi_spec_hash: d0bf5baef02c8a42196d38d17a0ecb2c
1+
configured_endpoints: 105
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/datamini%2Fasktable-e8e0ca3c2227f7c025606512b4b2fcda710140ce142874bdd589f4d8a0608ec0.yml
3+
openapi_spec_hash: aafc59854d2fce22c22edf404572fcf4
44
config_hash: acdf4142177ed1932c2d82372693f811

api.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ from asktable.types import Policy
1111
Types:
1212

1313
```python
14-
from asktable.types.sys import APIKey, Project
14+
from asktable.types.sys import APIKey, Project, ProjectModelGroupsResponse
1515
```
1616

1717
Methods:
@@ -23,6 +23,7 @@ Methods:
2323
- <code title="delete /v1/sys/projects/{project_id}">client.sys.projects.<a href="./src/asktable/resources/sys/projects/projects.py">delete</a>(project_id) -> object</code>
2424
- <code title="post /v1/sys/projects/{project_id}/export">client.sys.projects.<a href="./src/asktable/resources/sys/projects/projects.py">export</a>(project_id) -> object</code>
2525
- <code title="post /v1/sys/projects/import">client.sys.projects.<a href="./src/asktable/resources/sys/projects/projects.py">import\_</a>(\*\*<a href="src/asktable/types/sys/project_import_params.py">params</a>) -> object</code>
26+
- <code title="get /v1/sys/projects/model-groups">client.sys.projects.<a href="./src/asktable/resources/sys/projects/projects.py">model_groups</a>() -> <a href="./src/asktable/types/sys/project_model_groups_response.py">ProjectModelGroupsResponse</a></code>
2627

2728
### APIKeys
2829

src/asktable/resources/sys/projects/projects.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
from ....pagination import SyncPage, AsyncPage
2929
from ...._base_client import AsyncPaginator, make_request_options
3030
from ....types.sys.project import Project
31+
from ....types.sys.project_model_groups_response import ProjectModelGroupsResponse
3132

3233
__all__ = ["ProjectsResource", "AsyncProjectsResource"]
3334

@@ -322,6 +323,25 @@ def import_(
322323
cast_to=object,
323324
)
324325

326+
def model_groups(
327+
self,
328+
*,
329+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
330+
# The extra values given here take precedence over values defined on the client or passed to this method.
331+
extra_headers: Headers | None = None,
332+
extra_query: Query | None = None,
333+
extra_body: Body | None = None,
334+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
335+
) -> ProjectModelGroupsResponse:
336+
"""Get Model Groups"""
337+
return self._get(
338+
"/v1/sys/projects/model-groups",
339+
options=make_request_options(
340+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
341+
),
342+
cast_to=ProjectModelGroupsResponse,
343+
)
344+
325345

326346
class AsyncProjectsResource(AsyncAPIResource):
327347
@cached_property
@@ -613,6 +633,25 @@ async def import_(
613633
cast_to=object,
614634
)
615635

636+
async def model_groups(
637+
self,
638+
*,
639+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
640+
# The extra values given here take precedence over values defined on the client or passed to this method.
641+
extra_headers: Headers | None = None,
642+
extra_query: Query | None = None,
643+
extra_body: Body | None = None,
644+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
645+
) -> ProjectModelGroupsResponse:
646+
"""Get Model Groups"""
647+
return await self._get(
648+
"/v1/sys/projects/model-groups",
649+
options=make_request_options(
650+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
651+
),
652+
cast_to=ProjectModelGroupsResponse,
653+
)
654+
616655

617656
class ProjectsResourceWithRawResponse:
618657
def __init__(self, projects: ProjectsResource) -> None:
@@ -639,6 +678,9 @@ def __init__(self, projects: ProjectsResource) -> None:
639678
self.import_ = to_raw_response_wrapper(
640679
projects.import_,
641680
)
681+
self.model_groups = to_raw_response_wrapper(
682+
projects.model_groups,
683+
)
642684

643685
@cached_property
644686
def api_keys(self) -> APIKeysResourceWithRawResponse:
@@ -670,6 +712,9 @@ def __init__(self, projects: AsyncProjectsResource) -> None:
670712
self.import_ = async_to_raw_response_wrapper(
671713
projects.import_,
672714
)
715+
self.model_groups = async_to_raw_response_wrapper(
716+
projects.model_groups,
717+
)
673718

674719
@cached_property
675720
def api_keys(self) -> AsyncAPIKeysResourceWithRawResponse:
@@ -701,6 +746,9 @@ def __init__(self, projects: ProjectsResource) -> None:
701746
self.import_ = to_streamed_response_wrapper(
702747
projects.import_,
703748
)
749+
self.model_groups = to_streamed_response_wrapper(
750+
projects.model_groups,
751+
)
704752

705753
@cached_property
706754
def api_keys(self) -> APIKeysResourceWithStreamingResponse:
@@ -732,6 +780,9 @@ def __init__(self, projects: AsyncProjectsResource) -> None:
732780
self.import_ = async_to_streamed_response_wrapper(
733781
projects.import_,
734782
)
783+
self.model_groups = async_to_streamed_response_wrapper(
784+
projects.model_groups,
785+
)
735786

736787
@cached_property
737788
def api_keys(self) -> AsyncAPIKeysResourceWithStreamingResponse:

src/asktable/types/project_list_model_groups_response.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
22

3-
from typing import List, Optional
3+
from typing import Dict, List, Optional
44
from datetime import datetime
55
from typing_extensions import TypeAlias
66

@@ -35,9 +35,6 @@ class ProjectListModelGroupsResponseItem(BaseModel):
3535
id: str
3636
"""模型组 ID"""
3737

38-
api_key: str
39-
"""解密后的 API 密钥"""
40-
4138
available_models: List[str]
4239
"""可用模型列表"""
4340

@@ -47,6 +44,9 @@ class ProjectListModelGroupsResponseItem(BaseModel):
4744
created_at: datetime
4845
"""创建时间"""
4946

47+
extra_headers: Dict[str, str]
48+
"""额外请求头"""
49+
5050
models: ProjectListModelGroupsResponseItemModels
5151
"""角色 → 模型映射"""
5252

@@ -56,5 +56,11 @@ class ProjectListModelGroupsResponseItem(BaseModel):
5656
name: str
5757
"""模型组名称"""
5858

59+
display_name: Optional[str] = None
60+
"""展示名称"""
61+
62+
is_default: Optional[bool] = None
63+
"""是否为默认组"""
64+
5965

6066
ProjectListModelGroupsResponse: TypeAlias = List[ProjectListModelGroupsResponseItem]

src/asktable/types/sys/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@
88
from .project_create_params import ProjectCreateParams as ProjectCreateParams
99
from .project_import_params import ProjectImportParams as ProjectImportParams
1010
from .project_update_params import ProjectUpdateParams as ProjectUpdateParams
11+
from .project_model_groups_response import ProjectModelGroupsResponse as ProjectModelGroupsResponse
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2+
3+
from typing import Dict, List, Optional
4+
from datetime import datetime
5+
from typing_extensions import TypeAlias
6+
7+
from ..._models import BaseModel
8+
9+
__all__ = ["ProjectModelGroupsResponse", "ProjectModelGroupsResponseItem", "ProjectModelGroupsResponseItemModels"]
10+
11+
12+
class ProjectModelGroupsResponseItemModels(BaseModel):
13+
"""角色→模型映射"""
14+
15+
agent: Optional[str] = None
16+
17+
canvas: Optional[str] = None
18+
19+
fast: Optional[str] = None
20+
21+
image: Optional[str] = None
22+
23+
omni: Optional[str] = None
24+
25+
report: Optional[str] = None
26+
27+
sql: Optional[str] = None
28+
29+
30+
class ProjectModelGroupsResponseItem(BaseModel):
31+
id: str
32+
"""模型组 ID"""
33+
34+
available_models: List[str]
35+
"""可用模型列表"""
36+
37+
base_url: str
38+
"""OpenAI 兼容 API 端点"""
39+
40+
created_at: datetime
41+
"""创建时间"""
42+
43+
extra_headers: Dict[str, str]
44+
"""额外请求头"""
45+
46+
models: ProjectModelGroupsResponseItemModels
47+
"""角色 → 模型映射"""
48+
49+
modified_at: datetime
50+
"""修改时间"""
51+
52+
name: str
53+
"""模型组名称"""
54+
55+
display_name: Optional[str] = None
56+
"""展示名称"""
57+
58+
is_default: Optional[bool] = None
59+
"""是否为默认组"""
60+
61+
62+
ProjectModelGroupsResponse: TypeAlias = List[ProjectModelGroupsResponseItem]

src/asktable/types/user/project_retrieve_model_groups_response.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
22

3-
from typing import List, Optional
3+
from typing import Dict, List, Optional
44
from datetime import datetime
55
from typing_extensions import TypeAlias
66

@@ -35,9 +35,6 @@ class ProjectRetrieveModelGroupsResponseItem(BaseModel):
3535
id: str
3636
"""模型组 ID"""
3737

38-
api_key: str
39-
"""解密后的 API 密钥"""
40-
4138
available_models: List[str]
4239
"""可用模型列表"""
4340

@@ -47,6 +44,9 @@ class ProjectRetrieveModelGroupsResponseItem(BaseModel):
4744
created_at: datetime
4845
"""创建时间"""
4946

47+
extra_headers: Dict[str, str]
48+
"""额外请求头"""
49+
5050
models: ProjectRetrieveModelGroupsResponseItemModels
5151
"""角色 → 模型映射"""
5252

@@ -56,5 +56,11 @@ class ProjectRetrieveModelGroupsResponseItem(BaseModel):
5656
name: str
5757
"""模型组名称"""
5858

59+
display_name: Optional[str] = None
60+
"""展示名称"""
61+
62+
is_default: Optional[bool] = None
63+
"""是否为默认组"""
64+
5965

6066
ProjectRetrieveModelGroupsResponse: TypeAlias = List[ProjectRetrieveModelGroupsResponseItem]

tests/api_resources/sys/test_projects.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from tests.utils import assert_matches_type
1212
from asktable.types.sys import (
1313
Project,
14+
ProjectModelGroupsResponse,
1415
)
1516
from asktable.pagination import SyncPage, AsyncPage
1617

@@ -278,6 +279,31 @@ def test_streaming_response_import(self, client: Asktable) -> None:
278279

279280
assert cast(Any, response.is_closed) is True
280281

282+
@parametrize
283+
def test_method_model_groups(self, client: Asktable) -> None:
284+
project = client.sys.projects.model_groups()
285+
assert_matches_type(ProjectModelGroupsResponse, project, path=["response"])
286+
287+
@parametrize
288+
def test_raw_response_model_groups(self, client: Asktable) -> None:
289+
response = client.sys.projects.with_raw_response.model_groups()
290+
291+
assert response.is_closed is True
292+
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
293+
project = response.parse()
294+
assert_matches_type(ProjectModelGroupsResponse, project, path=["response"])
295+
296+
@parametrize
297+
def test_streaming_response_model_groups(self, client: Asktable) -> None:
298+
with client.sys.projects.with_streaming_response.model_groups() as response:
299+
assert not response.is_closed
300+
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
301+
302+
project = response.parse()
303+
assert_matches_type(ProjectModelGroupsResponse, project, path=["response"])
304+
305+
assert cast(Any, response.is_closed) is True
306+
281307

282308
class TestAsyncProjects:
283309
parametrize = pytest.mark.parametrize(
@@ -541,3 +567,28 @@ async def test_streaming_response_import(self, async_client: AsyncAsktable) -> N
541567
assert_matches_type(object, project, path=["response"])
542568

543569
assert cast(Any, response.is_closed) is True
570+
571+
@parametrize
572+
async def test_method_model_groups(self, async_client: AsyncAsktable) -> None:
573+
project = await async_client.sys.projects.model_groups()
574+
assert_matches_type(ProjectModelGroupsResponse, project, path=["response"])
575+
576+
@parametrize
577+
async def test_raw_response_model_groups(self, async_client: AsyncAsktable) -> None:
578+
response = await async_client.sys.projects.with_raw_response.model_groups()
579+
580+
assert response.is_closed is True
581+
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
582+
project = await response.parse()
583+
assert_matches_type(ProjectModelGroupsResponse, project, path=["response"])
584+
585+
@parametrize
586+
async def test_streaming_response_model_groups(self, async_client: AsyncAsktable) -> None:
587+
async with async_client.sys.projects.with_streaming_response.model_groups() as response:
588+
assert not response.is_closed
589+
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
590+
591+
project = await response.parse()
592+
assert_matches_type(ProjectModelGroupsResponse, project, path=["response"])
593+
594+
assert cast(Any, response.is_closed) is True

0 commit comments

Comments
 (0)