diff --git a/src/backend/langflow/api/v1/schemas.py b/src/backend/langflow/api/v1/schemas.py index 65bf64dca..d188e5c7a 100644 --- a/src/backend/langflow/api/v1/schemas.py +++ b/src/backend/langflow/api/v1/schemas.py @@ -1,6 +1,7 @@ from enum import Enum from pathlib import Path from typing import Any, Dict, List, Optional, Union +from langflow.services.database.models.api_key import ApiKeyRead from langflow.services.database.models.flow import FlowCreate, FlowRead from pydantic import BaseModel, Field, validator import json @@ -134,3 +135,9 @@ class ComponentListCreate(BaseModel): class ComponentListRead(BaseModel): flows: List[FlowRead] + + +class ApiKeyResponse(BaseModel): + total_count: int + user_id: str + api_keys: List[ApiKeyRead] diff --git a/src/backend/langflow/services/database/models/__init__.py b/src/backend/langflow/services/database/models/__init__.py index 28d2b4af8..01e81e277 100644 --- a/src/backend/langflow/services/database/models/__init__.py +++ b/src/backend/langflow/services/database/models/__init__.py @@ -1,5 +1,6 @@ from .flow import Flow from .user import User from .token import Token +from .api_key import ApiKey -__all__ = ["Flow", "User", "Token"] +__all__ = ["Flow", "User", "Token", "ApiKey"] diff --git a/src/backend/langflow/services/database/models/api_key.py b/src/backend/langflow/services/database/models/api_key.py new file mode 100644 index 000000000..3549c10c4 --- /dev/null +++ b/src/backend/langflow/services/database/models/api_key.py @@ -0,0 +1,28 @@ +from sqlmodel import Field +from uuid import UUID, uuid4 +from typing import Optional +from datetime import datetime +from langflow.services.database.models.base import SQLModelSerializable, SQLModel + + +class ApiKeyBase(SQLModelSerializable): + api_key: str = Field(index=True, unique=True) + name: str = Field() + create_at: datetime = Field(default_factory=datetime.utcnow) + last_used_at: Optional[datetime] = Field() + + +class ApiKey(ApiKeyBase, table=True): + id: UUID = Field(default_factory=uuid4, primary_key=True, unique=True) + + +class ApiKeyCreate(SQLModel): + name: str = Field() + + +class ApiKeyRead(SQLModel): + id: UUID = Field(default_factory=uuid4, primary_key=True, unique=True) + api_key: str = Field(index=True, unique=True) + name: str = Field() + create_at: datetime = Field(default_factory=datetime.utcnow) + last_used_at: Optional[datetime] = Field()