pypresscart.resources

Resource classes for the presscart client.

class pypresscart.resources.ArticlesResource(client)[source]

Bases: ResourceBase

Endpoints for articles produced by campaigns.

Parameters:

client (PresscartClient)

approve_brief(article_id, *, as_json=None)[source]

Approve the brief for an article. Required scope: campaigns.update.

Parameters:
  • article_id (str)

  • as_json (bool | None)

Return type:

Article | dict[str, Any]

approve_draft(article_id, body=None, *, as_json=None)[source]

Approve the draft for an article. Required scope: campaigns.update.

Parameters:
Return type:

Article | dict[str, Any]

get(article_id, *, as_json=None)[source]

Get an article by id. Required scope: campaigns.read.

Parameters:
  • article_id (str)

  • as_json (bool | None)

Return type:

Article | dict[str, Any]

update(article_id, body, *, as_json=None)[source]

Update an article. Required scope: campaigns.update.

Parameters:
Return type:

Article | dict[str, Any]

class pypresscart.resources.AuthResource(client)[source]

Bases: ResourceBase

Authentication endpoints.

Parameters:

client (PresscartClient)

whoami(*, as_json=None)[source]

Verify the current API token. Required scope: any valid token.

See: https://docs.presscart.com/getting-started/authentication

Parameters:

as_json (bool | None)

Return type:

TokenInfo | dict[str, Any]

class pypresscart.resources.CampaignsResource(client)[source]

Bases: ResourceBase

Campaign, article listing, and questionnaire endpoints.

Parameters:

client (PresscartClient)

article_status_counts(campaign_id, *, as_json=None)[source]

Counts of articles by status for a campaign. Required scope: campaigns.read.

Returns the raw envelope {"records": [...]}. Individual entries are parsed as presscart.models.ArticleStatusCount when accessed.

Parameters:
  • campaign_id (str)

  • as_json (bool | None)

Return type:

dict[str, Any]

assign_order_items(campaign_id, body, *, as_json=None)[source]

Attach order items to a campaign. Required scope: campaigns.update.

Parameters:
Return type:

dict[str, Any]

create(body, *, as_json=None)[source]

Create a campaign. Required scope: campaigns.create.

Parameters:
Return type:

Campaign | dict[str, Any]

get(campaign_id, *, as_json=None)[source]

Get a campaign by id. Required scope: campaigns.read.

Parameters:
  • campaign_id (str)

  • as_json (bool | None)

Return type:

Campaign | dict[str, Any]

Link an uploaded file to a campaign’s questionnaire. Scope: campaigns.update.

Parameters:
Return type:

Questionnaire | dict[str, Any]

list(*, limit=25, page=1, sort_by=None, order_by=None, filters=None, as_json=None)[source]

List campaigns. Required scope: campaigns.lists.

Parameters:
Return type:

Paginated[Campaign] | dict[str, Any]

list_articles(campaign_id, *, limit=25, page=1, sort_by=None, order_by=None, as_json=None)[source]

List articles for a campaign. Required scope: campaigns.read.

Parameters:
  • campaign_id (str)

  • limit (int)

  • page (int)

  • sort_by (str | None)

  • order_by (str | None)

  • as_json (bool | None)

Return type:

Paginated[CampaignArticleRow] | dict[str, Any]

update(campaign_id, body, *, as_json=None)[source]

Update a campaign. Required scope: campaigns.update.

Parameters:
Return type:

Campaign | dict[str, Any]

class pypresscart.resources.FilesResource(client)[source]

Bases: ResourceBase

File upload and management.

Parameters:

client (PresscartClient)

delete(file_id, *, as_json=None)[source]

Delete a file. Required scope: files.delete.

Parameters:
  • file_id (str)

  • as_json (bool | None)

Return type:

DeleteFileResponse | dict[str, Any]

download(file_id)[source]

Download the raw bytes of a file. Required scope: files.read.

Parameters:

file_id (str)

Return type:

bytes

get(file_id, *, as_json=None)[source]

Get a single file record. Required scope: files.read.

Parameters:
  • file_id (str)

  • as_json (bool | None)

Return type:

File | dict[str, Any]

list(*, limit=25, page=1, sort_by=None, order_by=None, q=None, folder_id=None, as_json=None)[source]

List files. Required scope: files.lists.

Parameters:
  • limit (int)

  • page (int)

  • sort_by (str | None)

  • order_by (str | None)

  • q (str | None)

  • folder_id (str | None)

  • as_json (bool | None)

Return type:

Paginated[File] | dict[str, Any]

move(body, *, as_json=None)[source]

Move files into a folder (or to root with folder_id=None). Scope: files.update.

Parameters:
Return type:

MoveFilesResponse | dict[str, Any]

upload(files, *, folder_id=None, as_json=None)[source]

Upload 1-5 files. Required scope: files.create.

Accepts:
  • a path (str or pathlib.Path)

  • an open binary file handle

  • a (filename, fileobj, content_type) tuple

  • a list mixing any of the above

Parameters:
Return type:

UploadFilesResponse | dict[str, Any]

class pypresscart.resources.FoldersResource(client)[source]

Bases: ResourceBase

Folder management.

Parameters:

client (PresscartClient)

create(body, *, as_json=None)[source]

Create a folder. Required scope: folders.create.

Parameters:
Return type:

Folder | dict[str, Any]

delete(folder_id, *, as_json=None)[source]

Delete a folder (files within lose their folder association). Scope: folders.delete.

Parameters:
  • folder_id (str)

  • as_json (bool | None)

Return type:

DeleteFolderResponse | dict[str, Any]

list(*, q=None, as_json=None)[source]

List folders. Required scope: folders.lists.

Parameters:
  • q (str | None)

  • as_json (bool | None)

Return type:

Paginated[Folder] | dict[str, Any]

rename(folder_id, body, *, as_json=None)[source]

Rename a folder. Required scope: folders.update.

Parameters:
Return type:

Folder | dict[str, Any]

class pypresscart.resources.OrderItemsResource(client)[source]

Bases: ResourceBase

Order item endpoints.

Parameters:

client (PresscartClient)

list(*, limit=25, page=1, sort_by=None, order_by=None, as_json=None)[source]

List order items for the team. Required scope: orders.lists.

Parameters:
  • limit (int)

  • page (int)

  • sort_by (str | None)

  • order_by (str | None)

  • as_json (bool | None)

Return type:

Paginated[OrderItem] | dict[str, Any]

class pypresscart.resources.OrdersResource(client)[source]

Bases: ResourceBase

Order endpoints (list, get, create checkout).

Parameters:

client (PresscartClient)

create_checkout(body, *, as_json=None)[source]

Create a checkout order. Required scope: orders.create.

Parameters:
Return type:

Order | dict[str, Any]

get(order_id, *, include_outlets_data=None, as_json=None)[source]

Get a single order by id. Required scope: orders.read.

Parameters:
  • order_id (str)

  • include_outlets_data (bool | None)

  • as_json (bool | None)

Return type:

Order | dict[str, Any]

list(*, limit=25, page=1, sort_by=None, order_by=None, as_json=None)[source]

List orders for the team. Required scope: orders.lists.

Parameters:
  • limit (int)

  • page (int)

  • sort_by (str | None)

  • order_by (str | None)

  • as_json (bool | None)

Return type:

Paginated[Order] | dict[str, Any]

class pypresscart.resources.OutletsResource(client)[source]

Bases: ResourceBase

Endpoints for browsing outlets and their metadata.

Parameters:

client (PresscartClient)

get(outlet_id, *, as_json=None)[source]

Get a single outlet by id. Required scope: outlets.read.

Parameters:
  • outlet_id (str)

  • as_json (bool | None)

Return type:

Outlet | dict[str, Any]

list(*, limit=25, page=1, sort_by=None, order_by=None, filters=None, as_json=None)[source]

List outlets. Required scope: outlets.lists.

Parameters:
Return type:

Paginated[OutletListing] | dict[str, Any]

list_cities(*, country=None, state=None, as_json=None)[source]

List available outlet cities. Required scope: outlets.read.

Parameters:
  • country (str | None)

  • state (str | None)

  • as_json (bool | None)

Return type:

CitiesResponse | dict[str, Any]

list_countries(*, country=None, as_json=None)[source]

List available outlet countries. Required scope: outlets.read.

Parameters:
  • country (str | None)

  • as_json (bool | None)

Return type:

CountriesResponse | dict[str, Any]

list_disclaimers(*, limit=25, page=1, filters=None, as_json=None)[source]

List outlet disclaimers. Required scope: outlet_disclaimers.lists.

Parameters:
Return type:

Paginated[DisclaimerRecord] | dict[str, Any]

list_products(outlet_id, *, limit=25, page=1, sort_by=None, order_by=None, filters=None, as_json=None)[source]

List products for one outlet. Required scope: outlets.read.

Parameters:
Return type:

Paginated[OutletListing] | dict[str, Any]

list_states(*, country=None, as_json=None)[source]

List available outlet states (optionally filtered by country). Scope: outlets.read.

Parameters:
  • country (str | None)

  • as_json (bool | None)

Return type:

StatesResponse | dict[str, Any]

list_tags(*, limit=25, page=1, filters=None, as_json=None)[source]

List available tags. Required scope: tags.lists.

Parameters:
Return type:

Paginated[Tag] | dict[str, Any]

class pypresscart.resources.ProductsResource(client)[source]

Bases: ResourceBase

Product endpoints.

Parameters:

client (PresscartClient)

get(product_id, *, as_json=None)[source]

Get a product by id. Required scope: products.read.

Parameters:
  • product_id (str)

  • as_json (bool | None)

Return type:

Product | dict[str, Any]

list_categories(*, as_json=None)[source]

List product category counts. Required scope: products.read.

Parameters:

as_json (bool | None)

Return type:

list[ProductCategoryCount] | list[dict[str, Any]]

list_listings(*, limit=25, page=1, sort_by=None, order_by=None, filters=None, as_json=None)[source]

List products across outlets. Required scope: products.read.

Parameters:
Return type:

Paginated[ProductListing] | dict[str, Any]

class pypresscart.resources.ProfilesResource(client)[source]

Bases: ResourceBase

Profile-scoped endpoints.

Parameters:

client (PresscartClient)

list_campaigns(profile_id, *, limit=25, page=1, as_json=None)[source]

List campaigns for a profile. Required scope: campaigns.lists.

Parameters:
Return type:

Paginated[Campaign] | dict[str, Any]

list_order_items(profile_id, *, type=None, is_add_on=None, search=None, aggregate_add_ons=None, as_json=None)[source]

List order items for a profile. Required scope: orders.lists.

Note: returns a bare JSON array, not the standard paginated envelope.

Parameters:
  • profile_id (str)

  • type (str | None)

  • is_add_on (bool | None)

  • search (str | None)

  • aggregate_add_ons (bool | None)

  • as_json (bool | None)

Return type:

list[ProfileOrderItem] | list[dict[str, Any]]

list_orders(profile_id, *, start_date=None, end_date=None, paid_orders_only=None, limit=25, page=1, as_json=None)[source]

List orders for a single profile. Required scope: orders.lists.

Parameters:
  • profile_id (str)

  • start_date (str | None)

  • end_date (str | None)

  • paid_orders_only (bool | None)

  • limit (int)

  • page (int)

  • as_json (bool | None)

Return type:

Paginated[Order] | dict[str, Any]

list_team_profiles(team_id, *, limit=25, page=1, as_json=None)[source]

List all profiles for a team. Required scope: profiles.lists.

Parameters:
Return type:

Paginated[Profile] | dict[str, Any]

Modules

articles

Articles resource: /articles/{id} endpoints.

auth

Auth resource: GET /auth/token.

campaigns

Campaigns resource: /campaigns + related questionnaire / article endpoints.

files

Files resource: /files endpoints (list/upload/download/move/delete).

folders

Folders resource: /folders endpoints.

order_items

Order items resource: GET /order-items.

orders

Orders resource: /orders endpoints.

outlets

Outlet resource: /outlets + related location / tag / disclaimer endpoints.

products

Products resource: /products endpoints.

profiles

Profiles resource: team profiles and per-profile listings.