Spaces:
Sleeping
Sleeping
File size: 2,907 Bytes
4b3843b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
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]
|