pypresscart.models

Pydantic models for Presscart API requests and responses.

class pypresscart.models.ApproveDraftRequest(*, draft_google_doc_url=None, **extra_data)[source]

Bases: PresscartModel

Body for PATCH /articles/{id}/approve-draft.

Parameters:
  • draft_google_doc_url (str | None)

  • extra_data (Any)

draft_google_doc_url: str | None
class pypresscart.models.Article(*, id, name=None, brief_google_doc_url=None, draft_google_doc_url=None, live_url=None, campaign_id=None, product_id=None, profile_id=None, updated_at=None, writer=None, support_agent=None, status=None, files=[], expected_completion_date=None, expected_completion_date_title=None, **extra_data)[source]

Bases: PresscartModel

Response from GET /articles/{article_id}.

Parameters:
id: str
name: str | None
brief_google_doc_url: str | None
draft_google_doc_url: str | None
live_url: str | None
campaign_id: str | None
product_id: str | None
profile_id: str | None
updated_at: datetime | None
writer: ArticleWriter | None
support_agent: dict[str, Any] | None
status: ArticleStatusRef | None
files: list[dict[str, Any]]
expected_completion_date: datetime | None
expected_completion_date_title: str | None
class pypresscart.models.ArticleOrderItem(*, name=None, outlet=None, addons=[], includes=[], **extra_data)[source]

Bases: PresscartModel

Parameters:
name: str | None
outlet: OutletRef | None
addons: list[dict[str, Any]]
includes: list[IncludeItem]
class pypresscart.models.ArticleStatus(*, effective_at=None, notes=None, name=None, prefix=None, color=None, **extra_data)[source]

Bases: PresscartModel

Parameters:
  • effective_at (datetime | None)

  • notes (str | None)

  • name (str | None)

  • prefix (str | None)

  • color (str | None)

  • extra_data (Any)

effective_at: datetime | None
notes: str | None
name: str | None
prefix: str | None
color: str | None
class pypresscart.models.ArticleStatusCount(*, name=None, prefix=None, id=None, count=None, **extra_data)[source]

Bases: PresscartModel

Entry in GET /campaigns/{id}/articles/status-count.

Parameters:
  • name (str | None)

  • prefix (str | None)

  • id (str | None)

  • count (int | None)

  • extra_data (Any)

name: str | None
prefix: str | None
id: str | None
count: int | None
class pypresscart.models.ArticleStatusRef(*, name=None, prefix=None, color=None, **extra_data)[source]

Bases: PresscartModel

Parameters:
  • name (str | None)

  • prefix (str | None)

  • color (str | None)

  • extra_data (Any)

name: str | None
prefix: str | None
color: str | None
class pypresscart.models.ArticleUpdateRequest(*, brief_google_doc_url=None, name=None, **extra_data)[source]

Bases: PresscartModel

Body for PUT /articles/{id}.

Parameters:
  • brief_google_doc_url (str | None)

  • name (str | None)

  • extra_data (Any)

brief_google_doc_url: str | None
name: str | None
class pypresscart.models.ArticleWriter(*, id=None, first_name=None, last_name=None, **extra_data)[source]

Bases: PresscartModel

Parameters:
  • id (str | None)

  • first_name (str | None)

  • last_name (str | None)

  • extra_data (Any)

id: str | None
first_name: str | None
last_name: str | None
class pypresscart.models.AssignOrderItemsRecord(*, id, campaign_id=None, **extra_data)[source]

Bases: PresscartModel

Parameters:
  • id (str)

  • campaign_id (str | None)

  • extra_data (Any)

id: str
campaign_id: str | None
class pypresscart.models.AssignOrderItemsRequest(*, order_item_ids, **extra_data)[source]

Bases: PresscartModel

Body for POST /campaigns/{id}/order-items.

Parameters:
order_item_ids: list[str]
class pypresscart.models.Campaign(*, id, name=None, description=None, reference=None, profile_id=None, v1_campaign_id=None, status=None, goals=None, target_date=None, budget=None, created_at=None, updated_at=None, deleted_at=None, questionnaire_id=None, keywords=None, objectives=None, target_audience=None, tone=None, writing_samples=None, file_id=None, total_articles=None, profile=None, questionnaire=None, articles=[], **extra_data)[source]

Bases: PresscartModel

Response for GET /campaigns/{id} / POST /campaigns etc.

Parameters:
id: str
name: str | None
description: str | None
reference: str | None
profile_id: str | None
v1_campaign_id: str | None
status: str | None
goals: str | None
target_date: datetime | None
budget: float | None
created_at: datetime | None
updated_at: datetime | None
deleted_at: datetime | None
questionnaire_id: str | None
keywords: str | None
objectives: str | None
target_audience: str | None
tone: str | None
writing_samples: str | None
file_id: str | None
total_articles: int | None
profile: ProfileRef | None
questionnaire: Questionnaire | None
articles: list[CampaignArticleRef]
class pypresscart.models.CampaignArticleRef(*, id=None, name=None, campaign_id=None, live_url=None, order_item=None, **extra_data)[source]

Bases: PresscartModel

Parameters:
id: str | None
name: str | None
campaign_id: str | None
live_url: str | None
order_item: dict[str, object] | None
class pypresscart.models.CampaignArticleRow(*, id, name=None, live_url=None, brief_google_doc_url=None, draft_google_doc_url=None, campaign_id=None, order_item_id=None, created_at=None, updated_at=None, deleted_at=None, total_images=None, writer=None, status=[], order_item=None, **extra_data)[source]

Bases: PresscartModel

Entry in GET /campaigns/{id}/articles.

Parameters:
id: str
name: str | None
live_url: str | None
brief_google_doc_url: str | None
draft_google_doc_url: str | None
campaign_id: str | None
order_item_id: str | None
created_at: datetime | None
updated_at: datetime | None
deleted_at: datetime | None
total_images: int | None
writer: ArticleWriter | None
status: list[ArticleStatus]
order_item: ArticleOrderItem | None
class pypresscart.models.CampaignCreateRequest(*, name, description=None, profile_id, objectives, keywords=None, target_audience=None, tone=None, writing_samples=None, file_id=None, **extra_data)[source]

Bases: PresscartModel

Body for POST /campaigns.

All fields are required by the API; send None for ones that don’t apply.

Parameters:
  • name (str)

  • description (str | None)

  • profile_id (str)

  • objectives (str)

  • keywords (str | None)

  • target_audience (str | None)

  • tone (str | None)

  • writing_samples (str | None)

  • file_id (str | None)

  • extra_data (Any)

name: str
description: str | None
profile_id: str
objectives: str
keywords: str | None
target_audience: str | None
tone: str | None
writing_samples: str | None
file_id: str | None
class pypresscart.models.CampaignUpdateRequest(*, name=None, description=None, keywords=None, objectives=None, target_audience=None, tone=None, writing_samples=None, file_id=None, **extra_data)[source]

Bases: PresscartModel

Body for PUT /campaigns/{id} (all fields optional).

Parameters:
  • name (str | None)

  • description (str | None)

  • keywords (str | None)

  • objectives (str | None)

  • target_audience (str | None)

  • tone (str | None)

  • writing_samples (str | None)

  • file_id (str | None)

  • extra_data (Any)

name: str | None
description: str | None
keywords: str | None
objectives: str | None
target_audience: str | None
tone: str | None
writing_samples: str | None
file_id: str | None
class pypresscart.models.ChannelType(*values)[source]

Bases: str, Enum

WEBSITE = 'WEBSITE'
NEWSLETTER = 'NEWSLETTER'
INSTAGRAM = 'INSTAGRAM'
LINKEDIN = 'LINKEDIN'
YOUTUBE = 'YOUTUBE'
TIKTOK = 'TIKTOK'
TWITTER_X = 'TWITTER_X'
PODCAST = 'PODCAST'
OTHER = 'OTHER'
class pypresscart.models.CheckoutLineItem(*, product_id, quantity=1, is_add_on=False, linked_order_line_item_id=None, **extra_data)[source]

Bases: PresscartModel

A line item in a checkout request.

Parameters:
  • product_id (str)

  • quantity (int)

  • is_add_on (bool)

  • linked_order_line_item_id (str | None)

  • extra_data (Any)

product_id: str
quantity: int
is_add_on: bool
linked_order_line_item_id: str | None
class pypresscart.models.CheckoutRequest(*, profile_id, line_items, discount=0, **extra_data)[source]

Bases: PresscartModel

Body for POST /orders/checkout.

Parameters:
profile_id: str
line_items: list[CheckoutLineItem]
discount: float | None
class pypresscart.models.CitiesResponse(*, cities=[], **extra_data)[source]

Bases: PresscartModel

Parameters:
cities: list[str]
class pypresscart.models.CountriesResponse(*, countries=[], **extra_data)[source]

Bases: PresscartModel

Parameters:
countries: list[str]
class pypresscart.models.DeleteFileResponse(*, success, **extra_data)[source]

Bases: PresscartModel

Parameters:
success: bool
class pypresscart.models.DeleteFolderResponse(*, success, **extra_data)[source]

Bases: PresscartModel

Parameters:
success: bool
class pypresscart.models.Disclaimer(*, id=None, name=None, description=None, **extra_data)[source]

Bases: PresscartModel

Parameters:
  • id (str | None)

  • name (str | None)

  • description (str | None)

  • extra_data (Any)

id: str | None
name: str | None
description: str | None
class pypresscart.models.DisclaimerRecord(*, id, name=None, description=None, **extra_data)[source]

Bases: PresscartModel

Parameters:
  • id (str)

  • name (str | None)

  • description (str | None)

  • extra_data (Any)

id: str
name: str | None
description: str | None
class pypresscart.models.File(*, id, name=None, file_key=None, file_url=None, size=None, mime_type=None, team_id=None, folder_id=None, uploaded_by=None, created_at=None, updated_at=None, deleted_at=None, **extra_data)[source]

Bases: PresscartModel

Record returned by GET /files / GET /files/{id}.

Parameters:
  • id (str)

  • name (str | None)

  • file_key (str | None)

  • file_url (str | None)

  • size (int | None)

  • mime_type (str | None)

  • team_id (str | None)

  • folder_id (str | None)

  • uploaded_by (str | None)

  • created_at (datetime | None)

  • updated_at (datetime | None)

  • deleted_at (datetime | None)

  • extra_data (Any)

id: str
name: str | None
file_key: str | None
file_url: str | None
size: int | None
mime_type: str | None
team_id: str | None
folder_id: str | None
uploaded_by: str | None
created_at: datetime | None
updated_at: datetime | None
deleted_at: datetime | None
class pypresscart.models.Folder(*, id, name=None, team_id=None, created_by=None, created_at=None, updated_at=None, deleted_at=None, **extra_data)[source]

Bases: PresscartModel

Record returned by GET /folders.

Parameters:
id: str
name: str | None
team_id: str | None
created_by: str | None
created_at: datetime | None
updated_at: datetime | None
deleted_at: datetime | None
class pypresscart.models.FolderCreateRequest(*, name, **extra_data)[source]

Bases: PresscartModel

Body for POST /folders.

Parameters:
name: str
class pypresscart.models.FolderRenameRequest(*, name, **extra_data)[source]

Bases: PresscartModel

Body for PATCH /folders/{id}.

Parameters:
name: str
class pypresscart.models.IncludeItem(*, channel_type=None, placement_type=None, **extra_data)[source]

Bases: PresscartModel

Parameters:
channel_type: ChannelType | str | None
placement_type: PlacementType | str | None
class pypresscart.models.LineItem(*, id=None, order_id=None, product_id, quantity, price=None, is_add_on=None, linked_order_line_item_id=None, name=None, product_type_name=None, type_id=None, product_type_prefix=None, outlet=None, includes=None, created_at=None, updated_at=None, deleted_at=None, **extra_data)[source]

Bases: PresscartModel

A line item on a returned order.

The Presscart API does not populate id on the line items returned by POST /orders/checkout (the order has been created but the line items haven’t been persisted as OrderItem records yet — those are surfaced by GET /order-items after payment). Both id and order_id are therefore optional so unpaid checkout responses parse cleanly.

Parameters:
id: str | None
order_id: str | None
product_id: str
quantity: int
price: float | None
is_add_on: bool | None
linked_order_line_item_id: str | None
name: str | None
product_type_name: str | None
type_id: str | None
product_type_prefix: str | None
outlet: OutletRef | None
includes: list[IncludeItem] | None
created_at: datetime | None
updated_at: datetime | None
deleted_at: datetime | None
class pypresscart.models.MoveFilesRequest(*, file_ids, folder_id=None, **extra_data)[source]

Bases: PresscartModel

Body for POST /files/move.

Parameters:
file_ids: list[str]
folder_id: str | None
class pypresscart.models.MoveFilesResponse(*, moved_count, **extra_data)[source]

Bases: PresscartModel

Parameters:
  • moved_count (int)

  • extra_data (Any)

moved_count: int
class pypresscart.models.Order(*, id, profile_id=None, client_id=None, checkout_by_id=None, team_id=None, total=None, subtotal=None, processing_fee=None, discount=None, credits_applied=None, coupon=None, client_secret=None, date_paid=None, status=None, reference_number=None, external_reference_number=None, customer_invoice_id=None, customer_invoice_source=None, customer_invoice_date=None, customer_invoice_url=None, is_guest_order=None, guest_email=None, account_owner_email=None, guest_stripe_customer_id=None, metadata=None, created_at=None, updated_at=None, deleted_at=None, team=None, name=None, email=None, checkout_link=None, line_items=[], **extra_data)[source]

Bases: PresscartModel

Order returned by GET /orders / /orders/{id} and POST /orders/checkout.

Team info is encoded differently per endpoint: GET /orders (list) returns a nested team: { name, contact_email } block, while GET /orders/{id} flattens it to top-level name and email. Both shapes are modeled; whichever the endpoint emits will be populated and the other will be None.

Parameters:
  • id (str)

  • profile_id (str | None)

  • client_id (str | None)

  • checkout_by_id (str | None)

  • team_id (str | None)

  • total (float | None)

  • subtotal (float | None)

  • processing_fee (float | None)

  • discount (float | None)

  • credits_applied (float | None)

  • coupon (str | None)

  • client_secret (str | None)

  • date_paid (datetime | None)

  • status (str | None)

  • reference_number (str | None)

  • external_reference_number (str | None)

  • customer_invoice_id (str | None)

  • customer_invoice_source (str | None)

  • customer_invoice_date (datetime | None)

  • customer_invoice_url (str | None)

  • is_guest_order (bool | None)

  • guest_email (str | None)

  • account_owner_email (str | None)

  • guest_stripe_customer_id (str | None)

  • metadata (dict[str, Any] | None)

  • created_at (datetime | None)

  • updated_at (datetime | None)

  • deleted_at (datetime | None)

  • team (TeamRef | None)

  • name (str | None)

  • email (str | None)

  • checkout_link (str | None)

  • line_items (list[LineItem])

  • extra_data (Any)

id: str
profile_id: str | None
client_id: str | None
checkout_by_id: str | None
team_id: str | None
total: float | None
subtotal: float | None
processing_fee: float | None
discount: float | None
credits_applied: float | None
coupon: str | None
client_secret: str | None
date_paid: datetime | None
status: str | None
reference_number: str | None
external_reference_number: str | None
customer_invoice_id: str | None
customer_invoice_source: str | None
customer_invoice_date: datetime | None
customer_invoice_url: str | None
is_guest_order: bool | None
guest_email: str | None
account_owner_email: str | None
guest_stripe_customer_id: str | None
metadata: dict[str, Any] | None
created_at: datetime | None
updated_at: datetime | None
deleted_at: datetime | None
team: TeamRef | None
name: str | None
email: str | None
line_items: list[LineItem]
class pypresscart.models.OrderItem(*, id, referrer_id=None, referrer_team_id=None, product_id=None, commission_amount=None, commission_date_paid=None, commission_status=None, is_accounting_completed=None, is_publisher_paid=None, is_reseller_paid=None, refund_required=None, is_refunded=None, refund_date=None, refund_method=None, refund_reference=None, vendor_invoice_id=None, vendor_cost=None, vendor_invoice_date=None, vendor_paid_date=None, vendor_invoice_url=None, accounting_completion_date=None, publisher_paid_date=None, reseller_paid_date=None, created_at=None, updated_at=None, deleted_at=None, order_id=None, client_id=None, date_paid=None, sale_price=None, product_name=None, product_price=None, product_type=None, article_id=None, article=None, internal_cost=None, reseller_price=None, client=None, outlet=None, **extra_data)[source]

Bases: PresscartModel

Record returned by GET /order-items.

Parameters:
  • id (str)

  • referrer_id (str | None)

  • referrer_team_id (str | None)

  • product_id (str | None)

  • commission_amount (float | None)

  • commission_date_paid (datetime | None)

  • commission_status (str | None)

  • is_accounting_completed (bool | None)

  • is_publisher_paid (bool | None)

  • is_reseller_paid (bool | None)

  • refund_required (bool | None)

  • is_refunded (bool | None)

  • refund_date (datetime | None)

  • refund_method (str | None)

  • refund_reference (str | None)

  • vendor_invoice_id (str | None)

  • vendor_cost (float | None)

  • vendor_invoice_date (datetime | None)

  • vendor_paid_date (datetime | None)

  • vendor_invoice_url (str | None)

  • accounting_completion_date (datetime | None)

  • publisher_paid_date (datetime | None)

  • reseller_paid_date (datetime | None)

  • created_at (datetime | None)

  • updated_at (datetime | None)

  • deleted_at (datetime | None)

  • order_id (str | None)

  • client_id (str | None)

  • date_paid (datetime | None)

  • sale_price (float | None)

  • product_name (str | None)

  • product_price (float | None)

  • product_type (str | None)

  • article_id (str | None)

  • article (OrderItemArticle | None)

  • internal_cost (float | None)

  • reseller_price (float | None)

  • client (OrderItemClient | None)

  • outlet (OutletRef | None)

  • extra_data (Any)

id: str
referrer_id: str | None
referrer_team_id: str | None
product_id: str | None
commission_amount: float | None
commission_date_paid: datetime | None
commission_status: str | None
is_accounting_completed: bool | None
is_publisher_paid: bool | None
is_reseller_paid: bool | None
refund_required: bool | None
is_refunded: bool | None
refund_date: datetime | None
refund_method: str | None
refund_reference: str | None
vendor_invoice_id: str | None
vendor_cost: float | None
vendor_invoice_date: datetime | None
vendor_paid_date: datetime | None
vendor_invoice_url: str | None
accounting_completion_date: datetime | None
publisher_paid_date: datetime | None
reseller_paid_date: datetime | None
created_at: datetime | None
updated_at: datetime | None
deleted_at: datetime | None
order_id: str | None
client_id: str | None
date_paid: datetime | None
sale_price: float | None
product_name: str | None
product_price: float | None
product_type: str | None
article_id: str | None
article: OrderItemArticle | None
internal_cost: float | None
reseller_price: float | None
client: OrderItemClient | None
outlet: OutletRef | None
class pypresscart.models.OrderItemArticle(*, id=None, name=None, campaign=None, writer=None, **extra_data)[source]

Bases: PresscartModel

Parameters:
id: str | None
name: str | None
campaign: OrderItemCampaignRef | None
writer: OrderItemWriter | None
class pypresscart.models.OrderItemCampaignRef(*, id=None, name=None, profile_id=None, **extra_data)[source]

Bases: PresscartModel

Parameters:
  • id (str | None)

  • name (str | None)

  • profile_id (str | None)

  • extra_data (Any)

id: str | None
name: str | None
profile_id: str | None
class pypresscart.models.OrderItemClient(*, first_name=None, last_name=None, **extra_data)[source]

Bases: PresscartModel

Parameters:
  • first_name (str | None)

  • last_name (str | None)

  • extra_data (Any)

first_name: str | None
last_name: str | None
class pypresscart.models.OrderItemWriter(*, id=None, first_name=None, last_name=None, **extra_data)[source]

Bases: PresscartModel

Parameters:
  • id (str | None)

  • first_name (str | None)

  • last_name (str | None)

  • extra_data (Any)

id: str | None
first_name: str | None
last_name: str | None
class pypresscart.models.Outlet(*, id, name, description=None, website_url=None, logo=None, country=None, state=None, city=None, is_indexed=None, tags=[], outlet_channels=[], created_at=None, updated_at=None, **extra_data)[source]

Bases: PresscartModel

Response from GET /outlets/{outlet_id}.

Parameters:
id: str
name: str
description: str | None
website_url: str | None
country: str | None
state: str | None
city: str | None
is_indexed: bool | None
tags: list[Tag]
outlet_channels: list[OutletChannel]
created_at: datetime | None
updated_at: datetime | None
class pypresscart.models.OutletChannel(*, id, outlet_id=None, channel_type=None, placement_type=None, channel_handle=None, channel_url=None, social_links=[], is_do_follow=None, domain_authority=None, domain_ranking=None, do_follow_links_allowed=None, disclaimer_name=None, disclaimer_description=None, **extra_data)[source]

Bases: PresscartModel

Full outlet channel (from GET /outlets/{id}).

Parameters:
  • id (str)

  • outlet_id (str | None)

  • channel_type (ChannelType | str | None)

  • placement_type (PlacementType | str | None)

  • channel_handle (str | None)

  • channel_url (str | None)

  • social_links (list[str])

  • is_do_follow (bool | None)

  • domain_authority (int | None)

  • domain_ranking (int | None)

  • do_follow_links_allowed (bool | str | None)

  • disclaimer_name (str | None)

  • disclaimer_description (str | None)

  • extra_data (Any)

id: str
outlet_id: str | None
channel_type: ChannelType | str | None
placement_type: PlacementType | str | None
channel_handle: str | None
channel_url: str | None
is_do_follow: bool | None
domain_authority: int | None
domain_ranking: int | None
disclaimer_name: str | None
disclaimer_description: str | None
class pypresscart.models.OutletChannelSummary(*, channel_type=None, placement_type=None, is_do_follow=None, domain_authority=None, domain_ranking=None, disclaimer_name=None, disclaimer_description=None, **extra_data)[source]

Bases: PresscartModel

Channel summary included in outlet listings.

Parameters:
  • channel_type (ChannelType | str | None)

  • placement_type (PlacementType | str | None)

  • is_do_follow (bool | None)

  • domain_authority (int | None)

  • domain_ranking (int | None)

  • disclaimer_name (str | None)

  • disclaimer_description (str | None)

  • extra_data (Any)

channel_type: ChannelType | str | None
placement_type: PlacementType | str | None
is_do_follow: bool | None
domain_authority: int | None
domain_ranking: int | None
disclaimer_name: str | None
disclaimer_description: str | None
class pypresscart.models.OutletListing(*, id, outlet_id=None, name, description=None, requirements=None, min_delivery_days=None, max_delivery_days=None, is_featured=None, created_at=None, outlet_name=None, website_url=None, logo=None, city=None, state=None, country=None, channels=[], tags=[], prices=[], **extra_data)[source]

Bases: PresscartModel

An item in the GET /outlets list.

Note: id here is a product id (what you pass to checkout). outlet_id is what you pass to GET /outlets/{outlet_id}.

Parameters:
id: str
outlet_id: str | None
name: str
description: str | None
requirements: str | None
min_delivery_days: int | None
max_delivery_days: int | None
created_at: datetime | None
outlet_name: str | None
website_url: str | None
city: str | None
state: str | None
country: str | None
channels: list[OutletChannelSummary]
tags: list[Tag]
prices: list[Price]
class pypresscart.models.OutletRef(*, id=None, name=None, logo=None, website_url=None, **extra_data)[source]

Bases: PresscartModel

Minimal outlet reference embedded in line items.

Parameters:
  • id (str | None)

  • name (str | None)

  • logo (str | None)

  • website_url (str | None)

  • extra_data (Any)

id: str | None
name: str | None
website_url: str | None
class pypresscart.models.OutletStatus(*values)[source]

Bases: str, Enum

ACTIVE = 'ACTIVE'
INACTIVE = 'INACTIVE'
DRAFT = 'DRAFT'
PENDING_REVIEW = 'PENDING_REVIEW'
PENDING_AGREEMENT = 'PENDING_AGREEMENT'
REJECTED = 'REJECTED'
ARCHIVED = 'ARCHIVED'
SUSPENDED = 'SUSPENDED'
class pypresscart.models.Paginated(*, records=<factory>, total_records=None, total_pages=None, current_page=None, next_page=None, previous_page=None, **extra_data)[source]

Bases: PresscartModel, Generic[T]

Standard Presscart paginated envelope.

Parameters:
  • records (Sequence[T])

  • total_records (int | None)

  • total_pages (int | None)

  • current_page (int | None)

  • next_page (int | None)

  • previous_page (int | None)

  • extra_data (Any)

records: Sequence[T]
total_records: int | None
total_pages: int | None
current_page: int | None
next_page: int | None
previous_page: int | None
class pypresscart.models.PlacementType(*values)[source]

Bases: str, Enum

FULL_FEATURE = 'FULL_FEATURE'
PRESS_RELEASE = 'PRESS_RELEASE'
MENTION = 'MENTION'
QUOTE = 'QUOTE'
LISTICLE = 'LISTICLE'
class pypresscart.models.PresscartModel(**extra_data)[source]

Bases: BaseModel

Base for all models in this package. Permissive on unknown fields for forward compat.

Parameters:

extra_data (Any)

class pypresscart.models.Price(*, unit_amount, currency=None, pricing_tier=None, **extra_data)[source]

Bases: PresscartModel

Parameters:
  • unit_amount (float)

  • currency (str | None)

  • pricing_tier (str | None)

  • extra_data (Any)

unit_amount: float
currency: str | None
pricing_tier: str | None
class pypresscart.models.Product(*, id, name, description=None, requirements=None, min_delivery_days=None, max_delivery_days=None, is_featured=None, active=None, example_links=[], image=None, logo=None, example_screenshot=None, type_id=None, created_at=None, updated_at=None, deleted_at=None, prices=[], **extra_data)[source]

Bases: PresscartModel

Response from GET /products/{product_id}.

Parameters:
  • id (str)

  • name (str)

  • description (str | None)

  • requirements (str | None)

  • min_delivery_days (int | None)

  • max_delivery_days (int | None)

  • is_featured (bool | None)

  • active (bool | None)

  • example_links (list[str])

  • image (str | None)

  • logo (str | None)

  • example_screenshot (str | None)

  • type_id (str | None)

  • created_at (datetime | None)

  • updated_at (datetime | None)

  • deleted_at (datetime | None)

  • prices (list[Price])

  • extra_data (Any)

id: str
name: str
description: str | None
requirements: str | None
min_delivery_days: int | None
max_delivery_days: int | None
active: bool | None
image: str | None
example_screenshot: str | None
type_id: str | None
created_at: datetime | None
updated_at: datetime | None
deleted_at: datetime | None
prices: list[Price]
class pypresscart.models.ProductCategoryCount(*, type, count, **extra_data)[source]

Bases: PresscartModel

An entry in GET /products/categories.

Parameters:
type: str
count: int
class pypresscart.models.ProductListing(*, id, name, description=None, requirements=None, min_delivery_days=None, max_delivery_days=None, is_featured=None, example_links=[], created_at=None, outlet_id=None, outlet_name=None, website_url=None, logo=None, country=None, state=None, city=None, is_indexed=None, channel_id=None, channel_type=None, placement_type=None, domain_authority=None, domain_ranking=None, is_do_follow=None, disclaimer=None, prices=[], tags=[], includes=[], **extra_data)[source]

Bases: PresscartModel

An item in GET /products/listings.

Parameters:
id: str
name: str
description: str | None
requirements: str | None
min_delivery_days: int | None
max_delivery_days: int | None
created_at: datetime | None
outlet_id: str | None
outlet_name: str | None
website_url: str | None
country: str | None
state: str | None
city: str | None
is_indexed: bool | None
channel_id: str | None
channel_type: ChannelType | str | None
placement_type: PlacementType | str | None
domain_authority: int | None
domain_ranking: int | None
is_do_follow: bool | None
disclaimer: str | None
prices: list[Price]
tags: list[Tag]
includes: list[IncludeItem]
class pypresscart.models.Profile(*, id, name=None, legal_company_name=None, type=None, logo=None, location=None, overview=None, products_and_services=None, google_drive_link=None, writing_samples=None, primary_goals=[], website_url=None, team_id=None, brand_tone_and_voice_id=None, last_generated_at=None, created_at=None, updated_at=None, deleted_at=None, **extra_data)[source]

Bases: PresscartModel

Record returned by GET /teams/{team_id}/profiles.

Parameters:
  • id (str)

  • name (str | None)

  • legal_company_name (str | None)

  • type (str | None)

  • logo (str | None)

  • location (str | None)

  • overview (str | None)

  • products_and_services (str | None)

  • google_drive_link (str | None)

  • writing_samples (str | None)

  • primary_goals (list[str])

  • website_url (str | None)

  • team_id (str | None)

  • brand_tone_and_voice_id (str | None)

  • last_generated_at (datetime | None)

  • created_at (datetime | None)

  • updated_at (datetime | None)

  • deleted_at (datetime | None)

  • extra_data (Any)

id: str
name: str | None
legal_company_name: str | None
type: str | None
location: str | None
overview: str | None
products_and_services: str | None
writing_samples: str | None
primary_goals: list[str]
website_url: str | None
team_id: str | None
brand_tone_and_voice_id: str | None
last_generated_at: datetime | None
created_at: datetime | None
updated_at: datetime | None
deleted_at: datetime | None
class pypresscart.models.ProfileOrderItem(*, id, name=None, description=None, is_add_on=None, profile_id=None, type=None, campaign_id=None, product_id=None, min_delivery_days=None, max_delivery_days=None, outlet=None, includes=[], **extra_data)[source]

Bases: PresscartModel

Item returned by GET /profiles/{profile_id}/order-items (non-paginated list).

Parameters:
  • id (str)

  • name (str | None)

  • description (str | None)

  • is_add_on (bool | None)

  • profile_id (str | None)

  • type (str | None)

  • campaign_id (str | None)

  • product_id (str | None)

  • min_delivery_days (int | None)

  • max_delivery_days (int | None)

  • outlet (OutletRef | None)

  • includes (list[IncludeItem])

  • extra_data (Any)

id: str
name: str | None
description: str | None
is_add_on: bool | None
profile_id: str | None
type: str | None
campaign_id: str | None
product_id: str | None
min_delivery_days: int | None
max_delivery_days: int | None
outlet: OutletRef | None
includes: list[IncludeItem]
class pypresscart.models.ProfileRef(*, id=None, name=None, logo=None, **extra_data)[source]

Bases: PresscartModel

Parameters:
  • id (str | None)

  • name (str | None)

  • logo (str | None)

  • extra_data (Any)

id: str | None
name: str | None
class pypresscart.models.Questionnaire(*, id=None, campaign_id=None, objectives=None, keywords=None, target_audience=None, tone=None, writing_samples=None, file_id=None, file_name=None, file_size=None, file_url=None, created_at=None, updated_at=None, deleted_at=None, **extra_data)[source]

Bases: PresscartModel

Parameters:
  • id (str | None)

  • campaign_id (str | None)

  • objectives (str | None)

  • keywords (str | None)

  • target_audience (str | None)

  • tone (str | None)

  • writing_samples (str | None)

  • file_id (str | None)

  • file_name (str | None)

  • file_size (int | None)

  • file_url (str | None)

  • created_at (datetime | None)

  • updated_at (datetime | None)

  • deleted_at (datetime | None)

  • extra_data (Any)

id: str | None
campaign_id: str | None
objectives: str | None
keywords: str | None
target_audience: str | None
tone: str | None
writing_samples: str | None
file_id: str | None
file_name: str | None
file_size: int | None
file_url: str | None
created_at: datetime | None
updated_at: datetime | None
deleted_at: datetime | None
class pypresscart.models.QuestionnaireLinkRequest(*, file_id, file_url, file_name, file_size, **extra_data)[source]

Bases: PresscartModel

Body for POST /questionnaires/{campaign_id}/link.

Parameters:
  • file_id (str)

  • file_url (str)

  • file_name (str)

  • file_size (int)

  • extra_data (Any)

file_id: str
file_url: str
file_name: str
file_size: int
class pypresscart.models.SortOrder(*values)[source]

Bases: str, Enum

ASC = 'asc'
DESC = 'desc'
class pypresscart.models.StatesResponse(*, states=[], **extra_data)[source]

Bases: PresscartModel

Parameters:
states: list[str]
class pypresscart.models.Tag(*, name, **extra_data)[source]

Bases: PresscartModel

Parameters:
name: str
class pypresscart.models.TeamRef(*, name=None, contact_email=None, **extra_data)[source]

Bases: PresscartModel

Parameters:
  • name (str | None)

  • contact_email (str | None)

  • extra_data (Any)

name: str | None
contact_email: str | None
class pypresscart.models.TokenInfo(*, source=None, team_id=None, token_type=None, scopes=[], pro_pricing_enabled=None, **extra_data)[source]

Bases: PresscartModel

Response from GET /auth/token.

Parameters:
source: str | None
team_id: str | None
token_type: TokenType | str | None
scopes: list[str]
pro_pricing_enabled: bool | None
class pypresscart.models.TokenType(*values)[source]

Bases: str, Enum

FULL_ACCESS = 'full_access'
CUSTOM = 'custom'
READ_ONLY = 'read_only'
class pypresscart.models.UploadFilesResponse(*, files=[], **extra_data)[source]

Bases: PresscartModel

Parameters:
files: list[UploadedFile]
class pypresscart.models.UploadedFile(*, id, file_key=None, file_url=None, name=None, size=None, mime_type=None, folder_id=None, **extra_data)[source]

Bases: PresscartModel

Entry in the POST /files/upload response.

Parameters:
  • id (str)

  • file_key (str | None)

  • file_url (str | None)

  • name (str | None)

  • size (int | None)

  • mime_type (str | None)

  • folder_id (str | None)

  • extra_data (Any)

id: str
file_key: str | None
file_url: str | None
name: str | None
size: int | None
mime_type: str | None
folder_id: str | None

Modules

articles

Article models.

auth

Auth models.

campaigns

Campaign models.

files

File models.

folders

Folder models.

order_items

Order item models.

orders

Order models.

outlets

Outlet models.

products

Product models.

profiles

Profile models.