Source code for pypresscart.models.campaigns

"""Campaign models."""

from __future__ import annotations

from datetime import datetime

from pypresscart.models._common import PresscartModel


[docs] class ProfileRef(PresscartModel): id: str | None = None name: str | None = None logo: str | None = None
[docs] class Questionnaire(PresscartModel): id: str | None = None campaign_id: str | None = None objectives: str | None = None keywords: str | None = None target_audience: str | None = None tone: str | None = None writing_samples: str | None = None file_id: str | None = None file_name: str | None = None file_size: int | None = None file_url: str | None = None created_at: datetime | None = None updated_at: datetime | None = None deleted_at: datetime | None = None
[docs] class CampaignArticleRef(PresscartModel): id: str | None = None name: str | None = None campaign_id: str | None = None live_url: str | None = None order_item: dict[str, object] | None = None
[docs] class Campaign(PresscartModel): """Response for ``GET /campaigns/{id}`` / ``POST /campaigns`` etc.""" id: str name: str | None = None description: str | None = None reference: str | None = None profile_id: str | None = None v1_campaign_id: str | None = None status: str | None = None goals: str | None = None target_date: datetime | None = None budget: float | None = None created_at: datetime | None = None updated_at: datetime | None = None deleted_at: datetime | None = None questionnaire_id: str | None = None keywords: str | None = None objectives: str | None = None target_audience: str | None = None tone: str | None = None writing_samples: str | None = None file_id: str | None = None total_articles: int | None = None profile: ProfileRef | None = None questionnaire: Questionnaire | None = None articles: list[CampaignArticleRef] = []
[docs] class CampaignCreateRequest(PresscartModel): """Body for ``POST /campaigns``. All fields are required by the API; send ``None`` for ones that don't apply. """ name: str description: str | None = None profile_id: str objectives: str keywords: str | None = None target_audience: str | None = None tone: str | None = None writing_samples: str | None = None file_id: str | None = None
[docs] class CampaignUpdateRequest(PresscartModel): """Body for ``PUT /campaigns/{id}`` (all fields optional).""" name: str | None = None description: str | None = None keywords: str | None = None objectives: str | None = None target_audience: str | None = None tone: str | None = None writing_samples: str | None = None file_id: str | None = None
[docs] class AssignOrderItemsRequest(PresscartModel): """Body for ``POST /campaigns/{id}/order-items``.""" order_item_ids: list[str]
[docs] class AssignOrderItemsRecord(PresscartModel): id: str campaign_id: str | None = None
[docs] class QuestionnaireLinkRequest(PresscartModel): """Body for ``POST /questionnaires/{campaign_id}/link``.""" file_id: str file_url: str file_name: str file_size: int
[docs] class ArticleStatus(PresscartModel): effective_at: datetime | None = None notes: str | None = None name: str | None = None prefix: str | None = None color: str | None = None
[docs] class ArticleStatusCount(PresscartModel): """Entry in ``GET /campaigns/{id}/articles/status-count``.""" name: str | None = None prefix: str | None = None id: str | None = None count: int | None = None
__all__ = [ "ArticleStatus", "ArticleStatusCount", "AssignOrderItemsRecord", "AssignOrderItemsRequest", "Campaign", "CampaignArticleRef", "CampaignCreateRequest", "CampaignUpdateRequest", "ProfileRef", "Questionnaire", "QuestionnaireLinkRequest", ]