Skip to main content
Glama
chats.py3 kB
from pydantic import BaseModel, Field from enum import Enum from typing import Optional, List from datetime import datetime class MessageRole(str, Enum): USER = "user" ASSISTANT = "assistant" SYSTEM = "system" # Chat Request/Response Schemas class MessageSchema(BaseModel): role: MessageRole content: str file_id: Optional[str] = Field( None, description="File ID to associate with this message for tracking uploaded files" ) class ChatMessageRequest(BaseModel): messages: List[MessageSchema] chat_session_id: Optional[str] = None class UploadMetadata(BaseModel): student_id: str subject: str topic: str difficulty_level: int = Field( ge=1, le=10, description="Level from 1 (easy) to 10 (hard)" ) document_title: Optional[str] = Field( None, description="Custom document title for citations" ) # NEW: Document title field upload_date: Optional[datetime] = Field( None, description="Custom upload date (defaults to current time if not provided)" ) # NEW: Custom upload date field chat_session_id: Optional[str] = Field( None, description="Chat session ID to link this upload to a conversation" ) # NEW: Link upload to chat session # Chat Session Schemas class ChatSessionBase(BaseModel): user_id: Optional[str] = None title: Optional[str] = None class ChatSessionCreate(ChatSessionBase): pass class ChatMessageResponse(BaseModel): role: str content: str message_metadata: Optional[dict] = None created_at: Optional[datetime] = None updated_at: Optional[datetime] = None class Config: from_attributes = True class ChatResponse(BaseModel): chat_session_id: str message: ChatMessageResponse class ChatSessionResponse(ChatSessionBase): id: int chat_session_id: str is_active: bool created_at: datetime updated_at: datetime class Config: from_attributes = True # List Response Schemas class ChatHistoryResponse(BaseModel): messages: List[ChatMessageResponse] total: int class UpdateChatTitleRequest(BaseModel): title: str = Field(..., min_length=1) # File Upload Status Schemas class FileUploadStatusEnum(str, Enum): PENDING = "pending" PROCESSING = "processing" COMPLETED = "completed" FAILED = "failed" class FileUploadStatusResponse(BaseModel): id: str filename: str subject: str topic: str status: FileUploadStatusEnum chunks_processed: int error_message: Optional[str] = None created_at: datetime updated_at: datetime class Config: from_attributes = True class FileInfoResponse(BaseModel): """Simplified file info response for chat context.""" id: str filename: str subject: str topic: str status: FileUploadStatusEnum uploaded_at: datetime = Field(..., alias="created_at") class Config: from_attributes = True populate_by_name = True

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/Chukwuebuka-2003/ebuka_mcps'

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