✨ feat(api_key.py): add GET and POST routes for retrieving and creating API keys
🐛 fix(api_key.py): fix delete_api_key route to use correct dependencies and handle exceptions properly
This commit is contained in:
parent
8d1e1b8710
commit
eb02220aad
1 changed files with 48 additions and 39 deletions
|
|
@ -1,49 +1,58 @@
|
||||||
from fastapi import APIRouter
|
from fastapi import APIRouter, HTTPException, Depends
|
||||||
|
from langflow.api.v1.schemas import ApiKeysResponse, CreateApiKeyRequest
|
||||||
|
from langflow.services.auth.utils import get_current_active_user
|
||||||
|
from langflow.services.database.models.api_key.api_key import UnmaskedApiKeyRead
|
||||||
|
|
||||||
|
# Assuming you have these methods in your service layer
|
||||||
|
from langflow.services.database.models.api_key.crud import (
|
||||||
|
get_api_keys,
|
||||||
|
create_api_key,
|
||||||
|
delete_api_key,
|
||||||
|
)
|
||||||
|
from langflow.services.database.models.user.user import User
|
||||||
|
from langflow.services.utils import get_session
|
||||||
|
from sqlmodel import Session
|
||||||
|
|
||||||
|
|
||||||
router = APIRouter(tags=["APIKey"])
|
router = APIRouter(tags=["APIKey"])
|
||||||
|
|
||||||
|
|
||||||
@router.get("/api_key/{user_id}")
|
@router.get("/api_key", response_model=ApiKeysResponse)
|
||||||
def get_api_key(user_id: str):
|
def get_api_keys_route(
|
||||||
return {
|
db: Session = Depends(get_session),
|
||||||
"total_count": 3,
|
current_user: User = Depends(get_current_active_user),
|
||||||
"user_id": user_id,
|
):
|
||||||
"api_keys": [
|
try:
|
||||||
{
|
user_id = current_user.id
|
||||||
"id": "4425707e-cce4-4d1b-a54e-bd2632064657",
|
keys = get_api_keys(db, user_id)
|
||||||
"api_key": "lf-...abcd",
|
|
||||||
"name": "my api_key name - 01",
|
result = {"total_count": len(keys), "user_id": user_id, "api_keys": keys}
|
||||||
"created_at": "2023-08-15T19:28:40.019613",
|
return ApiKeysResponse(**result)
|
||||||
"last_used_at": "2023-08-16T18:38:20.875210",
|
except Exception as e:
|
||||||
},
|
raise HTTPException(status_code=400, detail=str(e))
|
||||||
{
|
|
||||||
"id": "6fb7282b-9f2e-4efe-9bda-0c3d8f899473",
|
|
||||||
"api_key": "lf-...abcd",
|
|
||||||
"name": "my api_key name - 02",
|
|
||||||
"created_at": "2023-08-15T19:41:30.077942",
|
|
||||||
"last_used_at": "2023-08-15T19:45:32.067899",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "c55f3b32-4920-42b6-a5cd-698b4251806e",
|
|
||||||
"api_key": "lf-...abcd",
|
|
||||||
"name": "my api_key name - 03",
|
|
||||||
"created_at": "2023-08-15T20:29:40.577808",
|
|
||||||
"last_used_at": "2023-08-15T20:29:40.577816",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/api_key/{user_id}")
|
@router.post("/api_key", response_model=UnmaskedApiKeyRead)
|
||||||
def create_api_key(user_id: str):
|
def create_api_key_route(
|
||||||
return {
|
req: CreateApiKeyRequest,
|
||||||
"user_id": user_id,
|
current_user: User = Depends(get_current_active_user),
|
||||||
"name": "my api-key 01",
|
db: Session = Depends(get_session),
|
||||||
"api_key": "lf-eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI1YTBmODM1ZS0yMTQxLTQ2YWItYmQ4NS0yMWEzMjQ1MTE2ZDAiLCJleHAiOjE2OTIyMTUwMTN9.c_s0ZPRtjSI9yUrhi8ACIwyXf0feRLYfaeIZEbRVKQg", # noqa
|
):
|
||||||
}
|
try:
|
||||||
|
user_id = current_user.id
|
||||||
|
return create_api_key(db, req, user_id=user_id)
|
||||||
|
except Exception as e:
|
||||||
|
raise HTTPException(status_code=400, detail=str(e)) from e
|
||||||
|
|
||||||
|
|
||||||
@router.delete("/api_key/{api_key_id}")
|
@router.delete("/api_key/{api_key_id}")
|
||||||
def delete_api_key(api_key_id: str):
|
def delete_api_key_route(
|
||||||
return {"detail": "API Key deleted"}
|
api_key_id: str,
|
||||||
|
current_user=Depends(get_current_active_user),
|
||||||
|
db: Session = Depends(get_session),
|
||||||
|
):
|
||||||
|
try:
|
||||||
|
delete_api_key(db, api_key_id)
|
||||||
|
return {"detail": "API Key deleted"}
|
||||||
|
except Exception as e:
|
||||||
|
raise HTTPException(status_code=400, detail=str(e))
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue