# AutoSEO Engine - API Layer from fastapi import FastAPI, HTTPException, Depends from pydantic import BaseModel from typing import Dict, List, Optional from core.monetization import MonetizationEngine from core.models import Task import asyncio import logging logger = logging.getLogger(__name__) app = FastAPI(title="AutoSEO Engine API", version="0.1.0") # Global instance of monetization engine monetization_engine = MonetizationEngine() class CustomerCreateRequest(BaseModel): name: str tier: str # starter, professional, enterprise class TaskCreateRequest(BaseModel): agent: str task_type: str description: str priority: int = 1 @app.on_event('startup') async def startup_event(): """Initialize the monetization engine with sample data""" global monetization_engine await monetization_engine.add_customer({"name": "Acme Corp", "tier": "professional"}) await monetization_engine.add_customer({"name": "Globex Inc", "tier": "enterprise"}) await monetization_engine.add_customer({"name": "Wayne Enterprises", "tier": "starter"}) logger.info("AutoSEO Engine API started") @app.get("/") async def root(): return {"message": "Welcome to AutoSEO Engine API"} @app.get("/stats") async def get_system_stats(): """Get overall system statistics""" dashboard_data = await monetization_engine.get_monetization_dashboard() return dashboard_data @app.post("/customers") async def create_customer(customer: CustomerCreateRequest): """Create a new customer""" customer_dict = customer.dict() await monetization_engine.add_customer(customer_dict) return {"message": f"Customer {customer.name} added successfully", "id": f"cust_{len(monetization_engine.customers)}"} @app.get("/customers") async def get_customers(): """Get all customers""" return {"customers": monetization_engine.customers} @app.get("/revenue/projection") async def get_revenue_projection(months: int = 12): """Get revenue projection for the next N months""" projection = await monetization_engine.get_revenue_projection(months) return {"projection": projection} @app.get("/revenue/dashboard") async def get_revenue_dashboard(): """Get comprehensive revenue dashboard""" dashboard = await monetization_engine.get_monetization_dashboard() return dashboard @app.post("/tasks") async def create_task(task: TaskCreateRequest): """Create a new task for an agent (placeholder - actual task execution would be more complex)""" # In a real implementation, this would add the task to the appropriate agent's queue task_obj = Task( type=task.task_type, description=task.description, priority=task.priority ) return { "message": f"Task '{task.description}' created for agent {task.agent}", "task_id": task_obj.id, "status": "created" # In real implementation, would be queued/running/completed } @app.get("/tasks/{agent_name}") async def get_agent_tasks(agent_name: str): """Get tasks for a specific agent (placeholder)""" # In a real implementation, this would fetch tasks from the agent's queue return { "agent": agent_name, "tasks": [], "message": "This endpoint would return actual tasks in a full implementation" } @app.get("/health") async def health_check(): """Health check endpoint""" return { "status": "healthy", "monetization_engine_ready": True, "customers_count": len(monetization_engine.customers) }