backend_apis/app/body_schema.py (152 lines of code) (raw):

# Copyright 2023 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from pydantic import BaseModel class TextGenerateRequest(BaseModel): model: str = "latest" prompt: str temperature: float = 0.2 top_k: int = 40 top_p: float = 0.8 max_output_tokens: int = 1024 class TextGenerateResponse(BaseModel): text: str safety_attributes: dict class ImageGenerateRequest(BaseModel): prompt: str number_of_images: int = 1 negative_prompt: str | None = None class ImageResponse(BaseModel): id: int images_base64_string: str image_size: tuple images_parameters: dict class ImageGenerateResponse(BaseModel): generated_images: list[ImageResponse] class ImageEditRequest(BaseModel): prompt: str base_image_base64: str mask_base64: str | None = None number_of_images: int = 3 negative_prompt: str | None = None class TrendTopRequest(BaseModel): trends_date: str class TrendTopReponse(BaseModel): top_search_terms: list[dict] class NewsSummaryRequest(BaseModel): keywords: list[str] max_records: int max_days: int = 10 class NewsSummaryResponse(BaseModel): summaries: list[dict[str, str]] class AudiencesRequest(BaseModel): question: str class AudiencesResponse(BaseModel): audiences: dict gen_code: str prompt: str class AudiencesSampleDataRequest(BaseModel): table_name: str class AudiencesSampleDataResponse(BaseModel): data: list table_name: str class ConsumerInsightsRequest(BaseModel): query: str class ConsumerInsightsResponse(BaseModel): results: list llm_summary: str class BriefCreateRequest(BaseModel): campaign_name: str business_name: str brief_scenario: str brand_statement: str primary_message: str comm_channels: str class BriefCreateResponse(BaseModel): new_folder_id: str doc_id: str class SlidesCreateRequest(BaseModel): folder_id: str class SlidesCreateResponse(BaseModel): slide_id: str sheet_id: str class CampaignBrief(BaseModel): gender_select_theme: str age_select_theme: str objective_select_theme: str competitor_select_theme: str class CampaignCreateRequest(BaseModel): campaign_name: str theme: str brief: CampaignBrief class CampaignCreateResponse(BaseModel): id:str campaign_name: str theme: str workspace_assets: BriefCreateResponse class Campaign(BaseModel): name: str theme: str = "" brief: CampaignBrief | None = None emails: dict | None = None website_post: dict | None = None ads_threads: dict | None = None ads_insta: dict | None = None asset_classes_text: dict | None = None asset_classes_images: list | None = None workspace_assets: BriefCreateResponse | None = None trendspotting_summaries: list | None = None audiences: dict | None = None campaign_uploaded_images: dict | None = None status: str = "Active" class CampaignList(BaseModel): id:str data:Campaign class CampaignListResponse(BaseModel): results :list[CampaignList] =[] class TranslateRequest(BaseModel): source_text:str source_language_code:str | None = None target_language_code:str class TranslateResponse(BaseModel): translated_text:str class ContentCreationRequest(BaseModel): type: str theme: str context: str | None = None no_of_char: int = 500 audience_age_range: str = '20-30' audience_gender:str = 'All' image_generate: bool = True class ContentCreationResponse(BaseModel): generated_content:dict images: list = [] class CampaignStatusUpdate(BaseModel): key :str status: str class BulkEmailGenRequest(BaseModel): theme:str audience:list image_context:str = None no_of_emails:int = 10 class PersionalizedEmail(BaseModel): email: str first_name: str text: str translation: str language: str = 'English' generated_image: str = None class BulkEmailGenResponse(BaseModel): persionalized_emails: list[PersionalizedEmail] class ExportGoogleDocRequest(BaseModel): folder_id: str doc_name: str text: str image_prefix: str images: list class ExportGoogleDocResponse(BaseModel): doc_id: str class TexttoSpeechRequest(BaseModel): text: str prefix: str language_code: str = None language_name: str = None class TexttoSpeechResponse(BaseModel): audio_uri: str