Spaces:
Sleeping
Sleeping
| from pydantic import BaseModel, EmailStr | |
| from datetime import datetime | |
| from typing import Optional, List, Dict, Any | |
| class IntegrationCreate(BaseModel): | |
| provider: str | |
| access_token: str | |
| refresh_token: Optional[str] = None | |
| expires_at: Optional[datetime] = None | |
| account_info: Optional[Dict[str, Any]] = None | |
| class IntegrationResponse(BaseModel): | |
| id: int | |
| provider: str | |
| connected: bool | |
| account_info: Optional[Dict[str, Any]] = None | |
| created_at: datetime | |
| class Config: | |
| from_attributes = True | |
| class AssetCreate(BaseModel): | |
| name: str | |
| file_type: str | |
| product_category: str | |
| sub_category: Optional[str] = None | |
| size: int | |
| metadata: Optional[Dict[str, Any]] = None | |
| class AssetResponse(BaseModel): | |
| id: str # Changed to str to preserve precision for large CockroachDB IDs (bigint) | |
| name: str | |
| file_type: str | |
| product_category: str | |
| sub_category: Optional[str] = None | |
| size: int | |
| extracted_content: Optional[Dict[str, Any]] = None | |
| analysis_status: Optional[str] = None | |
| analyzed_at: Optional[datetime] = None | |
| created_at: datetime | |
| class Config: | |
| from_attributes = True | |
| class PostCreate(BaseModel): | |
| title: str | |
| content: str | |
| post_type: str | |
| product_category: str | |
| scheduled_date: datetime | |
| assets: Optional[List[int]] = None | |
| class PostResponse(BaseModel): | |
| id: int | |
| title: str | |
| content: str | |
| post_type: str | |
| product_category: str | |
| scheduled_date: datetime | |
| status: str | |
| created_at: datetime | |
| class Config: | |
| from_attributes = True | |
| class CampaignCreate(BaseModel): | |
| name: str | |
| date_range_start: datetime | |
| date_range_end: datetime | |
| products: List[str] | |
| post_types: List[str] | |
| posts_per_week: int | |
| class CampaignResponse(BaseModel): | |
| id: int | |
| name: str | |
| date_range_start: datetime | |
| date_range_end: datetime | |
| products: List[str] | |
| post_types: List[str] | |
| posts_per_week: int | |
| status: str | |
| created_at: datetime | |
| class Config: | |
| from_attributes = True | |
| class CanvaBrandTemplate(BaseModel): | |
| id: str | |
| title: str | |
| view_url: str | |
| create_url: str | |
| thumbnail: Optional[Dict[str, Any]] = None | |
| class CanvaAutofillRequest(BaseModel): | |
| brand_template_id: str | |
| title: str | |
| data: Dict[str, Any] | |
| class CanvaAutofillResponse(BaseModel): | |
| job_id: str | |
| status: str | |
| class LinkedInPostRequest(BaseModel): | |
| text: str | |
| media_uris: Optional[List[str]] = None | |
| scheduled_time: Optional[datetime] = None | |
| class AIContentRequest(BaseModel): | |
| product_category: str | |
| post_type: str | |
| context: Optional[str] = None | |
| assets: Optional[List[int]] = None | |
| class AIContentResponse(BaseModel): | |
| content: str | |
| suggested_hashtags: List[str] | |