Skip to main content
Glama
nesirat

MCP Vulnerability Management System

by nesirat
api_keys.py3.44 kB
from fastapi import APIRouter, Depends, HTTPException, status from sqlalchemy.orm import Session from typing import List from app.api import deps from app.schemas.api_key import ( APIKeyCreate, APIKeyUpdate, APIKeyInDB, APIKeyUsageStats ) from app.services.api_key import APIKeyService from app.models.user import User router = APIRouter() @router.post("/", response_model=APIKeyInDB) async def create_api_key( api_key_data: APIKeyCreate, current_user: User = Depends(deps.get_current_user), db: Session = Depends(deps.get_db) ): """Create a new API key""" api_key_service = APIKeyService(db) return api_key_service.create_api_key(current_user.id, api_key_data) @router.get("/", response_model=List[APIKeyInDB]) async def list_api_keys( current_user: User = Depends(deps.get_current_user), db: Session = Depends(deps.get_db) ): """List all API keys for the current user""" api_key_service = APIKeyService(db) return api_key_service.get_user_api_keys(current_user.id) @router.get("/{key_id}", response_model=APIKeyInDB) async def get_api_key( key_id: int, current_user: User = Depends(deps.get_current_user), db: Session = Depends(deps.get_db) ): """Get a specific API key""" api_key_service = APIKeyService(db) api_key = api_key_service.get_api_key(key_id) if not api_key or api_key.user_id != current_user.id: raise HTTPException( status_code=status.HTTP_404_NOT_FOUND, detail="API key not found" ) return api_key @router.put("/{key_id}", response_model=APIKeyInDB) async def update_api_key( key_id: int, api_key_data: APIKeyUpdate, current_user: User = Depends(deps.get_current_user), db: Session = Depends(deps.get_db) ): """Update an API key""" api_key_service = APIKeyService(db) api_key = api_key_service.get_api_key(key_id) if not api_key or api_key.user_id != current_user.id: raise HTTPException( status_code=status.HTTP_404_NOT_FOUND, detail="API key not found" ) return api_key_service.update_api_key(key_id, api_key_data) @router.delete("/{key_id}") async def delete_api_key( key_id: int, current_user: User = Depends(deps.get_current_user), db: Session = Depends(deps.get_db) ): """Delete an API key""" api_key_service = APIKeyService(db) api_key = api_key_service.get_api_key(key_id) if not api_key or api_key.user_id != current_user.id: raise HTTPException( status_code=status.HTTP_404_NOT_FOUND, detail="API key not found" ) if api_key_service.delete_api_key(key_id): return {"message": "API key deleted successfully"} raise HTTPException( status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail="Failed to delete API key" ) @router.get("/{key_id}/usage", response_model=APIKeyUsageStats) async def get_api_key_usage( key_id: int, current_user: User = Depends(deps.get_current_user), db: Session = Depends(deps.get_db) ): """Get usage statistics for an API key""" api_key_service = APIKeyService(db) api_key = api_key_service.get_api_key(key_id) if not api_key or api_key.user_id != current_user.id: raise HTTPException( status_code=status.HTTP_404_NOT_FOUND, detail="API key not found" ) return api_key_service.get_usage_stats(key_id)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/nesirat/MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server