Nagesh Muralidhar
Initial commit of PodCraft application
fd52f31
raw
history blame
2.44 kB
from pydantic import BaseModel, Field
from typing import Optional, List, Dict, Union, Any
from datetime import datetime
class UserCreate(BaseModel):
username: str
password: str
class UserLogin(BaseModel):
username: str
password: str
class Token(BaseModel):
access_token: str
token_type: str
class UserUpdate(BaseModel):
password: str
class UserResponse(BaseModel):
username: str
class AgentCreate(BaseModel):
name: str
voice_id: str
voice_name: str
voice_description: str
speed: float
pitch: float
volume: float
output_format: str
personality: str = None # Optional field for agent personality
class AgentResponse(BaseModel):
agent_id: str
name: str
voice_id: str
voice_name: str
voice_description: str
speed: float
pitch: float
volume: float
output_format: str
user_id: str
personality: str = None # Optional field for agent personality
class PodcastRequest(BaseModel):
topic: str
believer_voice_id: str
skeptic_voice_id: str
class ConversationBlock(BaseModel):
name: str
input: str
silence_before: int
voice_id: str
emotion: str
model: str
speed: float
duration: int
class PodcastResponse(BaseModel):
podcast_id: str
audio_url: Optional[str]
topic: str
error: Optional[str]
# Models for structured debate transcript and insights
class TranscriptEntry(BaseModel):
agentId: str
agentName: str
turn: int
content: str
class InsightsData(BaseModel):
topic: str
research: str
transcript: List[TranscriptEntry]
keyInsights: List[str]
conclusion: str
# New Workflow Models
class WorkflowCreate(BaseModel):
name: str
description: str
nodes: List[Dict]
edges: List[Dict]
insights: Optional[Union[InsightsData, str]] = None
class WorkflowResponse(BaseModel):
id: str
name: str
description: str
nodes: List[Dict]
edges: List[Dict]
insights: Optional[Union[InsightsData, str]] = None
user_id: str
created_at: Optional[str]
updated_at: Optional[str]
class TextPodcastRequest(BaseModel):
text: str
voice_id: str = "alloy"
emotion: str = "neutral"
speed: float = 1.0
title: Optional[str] = None
class TextPodcastResponse(BaseModel):
audio_url: str
duration: Optional[float]
status: str
error: Optional[str]
updated_at: Optional[str]