11"""API Key routes."""
22
3- from typing import List , Union
3+ from typing import Annotated
44from uuid import UUID
55
66from fastapi import APIRouter , Depends , HTTPException , status
1717router = APIRouter (tags = ["api-keys" ], prefix = "/api/keys" )
1818
1919
20- @router .post ("" , response_model = ApiKeyCreateResponse )
20+ @router .post ("" )
2121async def create_api_key (
2222 request : ApiKeyCreate ,
23- user : User = Depends (get_current_user ),
24- db : AsyncSession = Depends (get_database ),
23+ user : Annotated [ User , Depends (get_current_user )] ,
24+ db : Annotated [ AsyncSession , Depends (get_database )] ,
2525) -> ApiKeyCreateResponse :
2626 """Create a new API key for the authenticated user."""
2727 api_key , raw_key = await ApiKeyManager .create_key (
@@ -36,25 +36,24 @@ async def create_api_key(
3636 "scopes" : api_key .scopes ,
3737 "key" : raw_key ,
3838 }
39- response = ApiKeyCreateResponse .model_validate (response_data )
40- return response
39+ return ApiKeyCreateResponse .model_validate (response_data )
4140
4241
43- @router .get ("" , response_model = List [ ApiKeyResponse ] )
42+ @router .get ("" )
4443async def list_api_keys (
45- user : User = Depends (get_current_user ),
46- db : AsyncSession = Depends (get_database ),
47- ) -> List [ApiKeyResponse ]:
44+ user : Annotated [ User , Depends (get_current_user )] ,
45+ db : Annotated [ AsyncSession , Depends (get_database )] ,
46+ ) -> list [ApiKeyResponse ]:
4847 """List all API keys for the authenticated user."""
4948 keys = await ApiKeyManager .get_user_keys (user .id , db )
5049 return [ApiKeyResponse .model_validate (key .__dict__ ) for key in keys ]
5150
5251
53- @router .get ("/{key_id}" , response_model = ApiKeyResponse )
52+ @router .get ("/{key_id}" )
5453async def get_api_key (
5554 key_id : UUID ,
56- user : User = Depends (get_current_user ),
57- db : AsyncSession = Depends (get_database ),
55+ user : Annotated [ User , Depends (get_current_user )] ,
56+ db : Annotated [ AsyncSession , Depends (get_database )] ,
5857) -> ApiKeyResponse :
5958 """Get a specific API key by ID."""
6059 key = await ApiKeyManager .get_key (key_id , db )
@@ -66,12 +65,12 @@ async def get_api_key(
6665 return ApiKeyResponse .model_validate (key .__dict__ )
6766
6867
69- @router .patch ("/{key_id}" , response_model = ApiKeyResponse )
68+ @router .patch ("/{key_id}" )
7069async def update_api_key (
7170 key_id : UUID ,
7271 request : ApiKeyUpdate ,
73- user : User = Depends (get_current_user ),
74- db : AsyncSession = Depends (get_database ),
72+ user : Annotated [ User , Depends (get_current_user )] ,
73+ db : Annotated [ AsyncSession , Depends (get_database )] ,
7574) -> ApiKeyResponse :
7675 """Update an API key's name or active status."""
7776 key = await ApiKeyManager .get_key (key_id , db )
@@ -82,7 +81,7 @@ async def update_api_key(
8281 )
8382
8483 # Build update data
85- update_data = {} # type : dict[str, Union[ str, bool]]
84+ update_data : dict [str , str | bool ] = {}
8685 if request .name is not None :
8786 update_data ["name" ] = request .name
8887 if request .is_active is not None :
@@ -101,8 +100,8 @@ async def update_api_key(
101100@router .delete ("/{key_id}" , status_code = status .HTTP_204_NO_CONTENT )
102101async def delete_api_key (
103102 key_id : UUID ,
104- user : User = Depends (get_current_user ),
105- db : AsyncSession = Depends (get_database ),
103+ user : Annotated [ User , Depends (get_current_user )] ,
104+ db : Annotated [ AsyncSession , Depends (get_database )] ,
106105) -> None :
107106 """Delete an API key."""
108107 key = await ApiKeyManager .get_key (key_id , db )
0 commit comments