Skip to content

Commit 28d5d4a

Browse files
feat(api): manual updates
1 parent dbe80cc commit 28d5d4a

File tree

6 files changed

+119
-2
lines changed

6 files changed

+119
-2
lines changed

.stats.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
configured_endpoints: 28
1+
configured_endpoints: 29
22
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/cleanlab%2Fcodex-5691cf2ac1617d7acc6532acfb2c08e151b48e6b045cdaf1715ff3843f611eb0.yml

api.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,11 @@ Methods:
9494
Types:
9595

9696
```python
97-
from codex.types.projects import AccessKeySchema, AccessKeyListResponse
97+
from codex.types.projects import (
98+
AccessKeySchema,
99+
AccessKeyListResponse,
100+
AccessKeyRetrieveProjectIDResponse,
101+
)
98102
```
99103

100104
Methods:
@@ -104,6 +108,7 @@ Methods:
104108
- <code title="put /api/projects/{project_id}/access_keys/{access_key_id}">client.projects.access_keys.<a href="./src/codex/resources/projects/access_keys.py">update</a>(access_key_id, \*, project_id, \*\*<a href="src/codex/types/projects/access_key_update_params.py">params</a>) -> <a href="./src/codex/types/projects/access_key_schema.py">AccessKeySchema</a></code>
105109
- <code title="get /api/projects/{project_id}/access_keys/">client.projects.access_keys.<a href="./src/codex/resources/projects/access_keys.py">list</a>(project_id) -> <a href="./src/codex/types/projects/access_key_list_response.py">AccessKeyListResponse</a></code>
106110
- <code title="delete /api/projects/{project_id}/access_keys/{access_key_id}">client.projects.access_keys.<a href="./src/codex/resources/projects/access_keys.py">delete</a>(access_key_id, \*, project_id) -> None</code>
111+
- <code title="get /api/projects/id_from_access_key">client.projects.access_keys.<a href="./src/codex/resources/projects/access_keys.py">retrieve_project_id</a>() -> <a href="./src/codex/types/projects/access_key_retrieve_project_id_response.py">AccessKeyRetrieveProjectIDResponse</a></code>
107112
- <code title="post /api/projects/{project_id}/access_keys/{access_key_id}/revoke">client.projects.access_keys.<a href="./src/codex/resources/projects/access_keys.py">revoke</a>(access_key_id, \*, project_id) -> None</code>
108113

109114
## Knowledge

src/codex/resources/projects/access_keys.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
from ...types.projects import access_key_create_params, access_key_update_params
2525
from ...types.projects.access_key_schema import AccessKeySchema
2626
from ...types.projects.access_key_list_response import AccessKeyListResponse
27+
from ...types.projects.access_key_retrieve_project_id_response import AccessKeyRetrieveProjectIDResponse
2728

2829
__all__ = ["AccessKeysResource", "AsyncAccessKeysResource"]
2930

@@ -229,6 +230,25 @@ def delete(
229230
cast_to=NoneType,
230231
)
231232

233+
def retrieve_project_id(
234+
self,
235+
*,
236+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
237+
# The extra values given here take precedence over values defined on the client or passed to this method.
238+
extra_headers: Headers | None = None,
239+
extra_query: Query | None = None,
240+
extra_body: Body | None = None,
241+
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
242+
) -> AccessKeyRetrieveProjectIDResponse:
243+
"""Get the project ID from an access key."""
244+
return self._get(
245+
"/api/projects/id_from_access_key",
246+
options=make_request_options(
247+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
248+
),
249+
cast_to=int,
250+
)
251+
232252
def revoke(
233253
self,
234254
access_key_id: int,
@@ -464,6 +484,25 @@ async def delete(
464484
cast_to=NoneType,
465485
)
466486

487+
async def retrieve_project_id(
488+
self,
489+
*,
490+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
491+
# The extra values given here take precedence over values defined on the client or passed to this method.
492+
extra_headers: Headers | None = None,
493+
extra_query: Query | None = None,
494+
extra_body: Body | None = None,
495+
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
496+
) -> AccessKeyRetrieveProjectIDResponse:
497+
"""Get the project ID from an access key."""
498+
return await self._get(
499+
"/api/projects/id_from_access_key",
500+
options=make_request_options(
501+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
502+
),
503+
cast_to=int,
504+
)
505+
467506
async def revoke(
468507
self,
469508
access_key_id: int,
@@ -517,6 +556,9 @@ def __init__(self, access_keys: AccessKeysResource) -> None:
517556
self.delete = to_raw_response_wrapper(
518557
access_keys.delete,
519558
)
559+
self.retrieve_project_id = to_raw_response_wrapper(
560+
access_keys.retrieve_project_id,
561+
)
520562
self.revoke = to_raw_response_wrapper(
521563
access_keys.revoke,
522564
)
@@ -541,6 +583,9 @@ def __init__(self, access_keys: AsyncAccessKeysResource) -> None:
541583
self.delete = async_to_raw_response_wrapper(
542584
access_keys.delete,
543585
)
586+
self.retrieve_project_id = async_to_raw_response_wrapper(
587+
access_keys.retrieve_project_id,
588+
)
544589
self.revoke = async_to_raw_response_wrapper(
545590
access_keys.revoke,
546591
)
@@ -565,6 +610,9 @@ def __init__(self, access_keys: AccessKeysResource) -> None:
565610
self.delete = to_streamed_response_wrapper(
566611
access_keys.delete,
567612
)
613+
self.retrieve_project_id = to_streamed_response_wrapper(
614+
access_keys.retrieve_project_id,
615+
)
568616
self.revoke = to_streamed_response_wrapper(
569617
access_keys.revoke,
570618
)
@@ -589,6 +637,9 @@ def __init__(self, access_keys: AsyncAccessKeysResource) -> None:
589637
self.delete = async_to_streamed_response_wrapper(
590638
access_keys.delete,
591639
)
640+
self.retrieve_project_id = async_to_streamed_response_wrapper(
641+
access_keys.retrieve_project_id,
642+
)
592643
self.revoke = async_to_streamed_response_wrapper(
593644
access_keys.revoke,
594645
)

src/codex/types/projects/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,6 @@
1313
from .access_key_list_response import AccessKeyListResponse as AccessKeyListResponse
1414
from .access_key_update_params import AccessKeyUpdateParams as AccessKeyUpdateParams
1515
from .knowledge_add_question_params import KnowledgeAddQuestionParams as KnowledgeAddQuestionParams
16+
from .access_key_retrieve_project_id_response import (
17+
AccessKeyRetrieveProjectIDResponse as AccessKeyRetrieveProjectIDResponse,
18+
)
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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__ = ["AccessKeyRetrieveProjectIDResponse"]
6+
7+
AccessKeyRetrieveProjectIDResponse: TypeAlias = int

tests/api_resources/projects/test_access_keys.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
from codex.types.projects import (
1414
AccessKeySchema,
1515
AccessKeyListResponse,
16+
AccessKeyRetrieveProjectIDResponse,
1617
)
1718

1819
base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
@@ -212,6 +213,31 @@ def test_streaming_response_delete(self, client: Codex) -> None:
212213

213214
assert cast(Any, response.is_closed) is True
214215

216+
@parametrize
217+
def test_method_retrieve_project_id(self, client: Codex) -> None:
218+
access_key = client.projects.access_keys.retrieve_project_id()
219+
assert_matches_type(AccessKeyRetrieveProjectIDResponse, access_key, path=["response"])
220+
221+
@parametrize
222+
def test_raw_response_retrieve_project_id(self, client: Codex) -> None:
223+
response = client.projects.access_keys.with_raw_response.retrieve_project_id()
224+
225+
assert response.is_closed is True
226+
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
227+
access_key = response.parse()
228+
assert_matches_type(AccessKeyRetrieveProjectIDResponse, access_key, path=["response"])
229+
230+
@parametrize
231+
def test_streaming_response_retrieve_project_id(self, client: Codex) -> None:
232+
with client.projects.access_keys.with_streaming_response.retrieve_project_id() as response:
233+
assert not response.is_closed
234+
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
235+
236+
access_key = response.parse()
237+
assert_matches_type(AccessKeyRetrieveProjectIDResponse, access_key, path=["response"])
238+
239+
assert cast(Any, response.is_closed) is True
240+
215241
@parametrize
216242
def test_method_revoke(self, client: Codex) -> None:
217243
access_key = client.projects.access_keys.revoke(
@@ -441,6 +467,31 @@ async def test_streaming_response_delete(self, async_client: AsyncCodex) -> None
441467

442468
assert cast(Any, response.is_closed) is True
443469

470+
@parametrize
471+
async def test_method_retrieve_project_id(self, async_client: AsyncCodex) -> None:
472+
access_key = await async_client.projects.access_keys.retrieve_project_id()
473+
assert_matches_type(AccessKeyRetrieveProjectIDResponse, access_key, path=["response"])
474+
475+
@parametrize
476+
async def test_raw_response_retrieve_project_id(self, async_client: AsyncCodex) -> None:
477+
response = await async_client.projects.access_keys.with_raw_response.retrieve_project_id()
478+
479+
assert response.is_closed is True
480+
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
481+
access_key = await response.parse()
482+
assert_matches_type(AccessKeyRetrieveProjectIDResponse, access_key, path=["response"])
483+
484+
@parametrize
485+
async def test_streaming_response_retrieve_project_id(self, async_client: AsyncCodex) -> None:
486+
async with async_client.projects.access_keys.with_streaming_response.retrieve_project_id() as response:
487+
assert not response.is_closed
488+
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
489+
490+
access_key = await response.parse()
491+
assert_matches_type(AccessKeyRetrieveProjectIDResponse, access_key, path=["response"])
492+
493+
assert cast(Any, response.is_closed) is True
494+
444495
@parametrize
445496
async def test_method_revoke(self, async_client: AsyncCodex) -> None:
446497
access_key = await async_client.projects.access_keys.revoke(

0 commit comments

Comments
 (0)