Skip to content

Commit 1c9e0b9

Browse files
refactor(api): align API key audit surface with browser sibling (KERNEL-1350)
1 parent b5cff48 commit 1c9e0b9

5 files changed

Lines changed: 31 additions & 17 deletions

File tree

.stats.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
configured_endpoints: 120
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel/kernel-1f10598afa01d76d22b0ed63685248f482f74c9353cffe1d3e4a3d38da7716cf.yml
3-
openapi_spec_hash: 8936f458bfa681b709e459ca1cc76fb5
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel/kernel-e8afdbeac9332cf79200c2eb873e532104fd0a7472b08e63cde6c857a87cf0c3.yml
3+
openapi_spec_hash: 2525caf30dffbdd83c83948201f11a52
44
config_hash: 03c7e57f268c750e2415831662e95969

src/kernel/resources/api_keys.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,7 @@ def list(
192192
query: str | Omit = omit,
193193
sort_by: Literal["created_at", "name", "expires_at"] | Omit = omit,
194194
sort_direction: Literal["asc", "desc"] | Omit = omit,
195+
status: Literal["active", "deleted", "all"] | Omit = omit,
195196
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
196197
# The extra values given here take precedence over values defined on the client or passed to this method.
197198
extra_headers: Headers | None = None,
@@ -204,8 +205,8 @@ def list(
204205
API keys are masked.
205206
206207
Args:
207-
include_deleted: When true, include deleted (soft-deleted) API keys in the results for audit
208-
purposes. Defaults to false, which returns only live keys.
208+
include_deleted: Deprecated: use status=all instead. When true, include deleted (soft-deleted)
209+
API keys in the results for audit purposes.
209210
210211
limit: Maximum number of results to return
211212
@@ -218,6 +219,10 @@ def list(
218219
219220
sort_direction: Sort direction for API keys.
220221
222+
status: Filter API keys by status. "active" returns keys that are not deleted (default;
223+
expired-but-not-deleted keys are still included), "deleted" returns only
224+
soft-deleted keys, "all" returns both.
225+
221226
extra_headers: Send extra headers
222227
223228
extra_query: Add additional query parameters to the request
@@ -242,6 +247,7 @@ def list(
242247
"query": query,
243248
"sort_by": sort_by,
244249
"sort_direction": sort_direction,
250+
"status": status,
245251
},
246252
api_key_list_params.APIKeyListParams,
247253
),
@@ -495,6 +501,7 @@ def list(
495501
query: str | Omit = omit,
496502
sort_by: Literal["created_at", "name", "expires_at"] | Omit = omit,
497503
sort_direction: Literal["asc", "desc"] | Omit = omit,
504+
status: Literal["active", "deleted", "all"] | Omit = omit,
498505
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
499506
# The extra values given here take precedence over values defined on the client or passed to this method.
500507
extra_headers: Headers | None = None,
@@ -507,8 +514,8 @@ def list(
507514
API keys are masked.
508515
509516
Args:
510-
include_deleted: When true, include deleted (soft-deleted) API keys in the results for audit
511-
purposes. Defaults to false, which returns only live keys.
517+
include_deleted: Deprecated: use status=all instead. When true, include deleted (soft-deleted)
518+
API keys in the results for audit purposes.
512519
513520
limit: Maximum number of results to return
514521
@@ -521,6 +528,10 @@ def list(
521528
522529
sort_direction: Sort direction for API keys.
523530
531+
status: Filter API keys by status. "active" returns keys that are not deleted (default;
532+
expired-but-not-deleted keys are still included), "deleted" returns only
533+
soft-deleted keys, "all" returns both.
534+
524535
extra_headers: Send extra headers
525536
526537
extra_query: Add additional query parameters to the request
@@ -545,6 +556,7 @@ def list(
545556
"query": query,
546557
"sort_by": sort_by,
547558
"sort_direction": sort_direction,
559+
"status": status,
548560
},
549561
api_key_list_params.APIKeyListParams,
550562
),

src/kernel/types/api_key.py

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
from typing import Optional
44
from datetime import datetime
5-
from typing_extensions import Literal
65

76
from .._models import BaseModel
87

@@ -52,11 +51,3 @@ class APIKey(BaseModel):
5251
5352
Null means the key is org-wide or the project name is unavailable.
5453
"""
55-
56-
status: Literal["active", "expired", "deleted"]
57-
"""Derived lifecycle status of the API key.
58-
59-
`active` means usable. `expired` means past its expires_at. `deleted` means it
60-
was deleted (soft-deleted) and can no longer authenticate. Deleted takes
61-
precedence over expired.
62-
"""

src/kernel/types/api_key_list_params.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@
99

1010
class APIKeyListParams(TypedDict, total=False):
1111
include_deleted: bool
12-
"""
12+
"""Deprecated: use status=all instead.
13+
1314
When true, include deleted (soft-deleted) API keys in the results for audit
14-
purposes. Defaults to false, which returns only live keys.
15+
purposes.
1516
"""
1617

1718
limit: int
@@ -31,3 +32,11 @@ class APIKeyListParams(TypedDict, total=False):
3132

3233
sort_direction: Literal["asc", "desc"]
3334
"""Sort direction for API keys."""
35+
36+
status: Literal["active", "deleted", "all"]
37+
"""Filter API keys by status.
38+
39+
"active" returns keys that are not deleted (default; expired-but-not-deleted
40+
keys are still included), "deleted" returns only soft-deleted keys, "all"
41+
returns both.
42+
"""

tests/api_resources/test_api_keys.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,7 @@ def test_method_list_with_all_params(self, client: Kernel) -> None:
178178
query="query",
179179
sort_by="created_at",
180180
sort_direction="asc",
181+
status="active",
181182
)
182183
assert_matches_type(SyncOffsetPagination[APIKey], api_key, path=["response"])
183184

@@ -460,6 +461,7 @@ async def test_method_list_with_all_params(self, async_client: AsyncKernel) -> N
460461
query="query",
461462
sort_by="created_at",
462463
sort_direction="asc",
464+
status="active",
463465
)
464466
assert_matches_type(AsyncOffsetPagination[APIKey], api_key, path=["response"])
465467

0 commit comments

Comments
 (0)