Source code for pypresscart.resources.articles

"""Articles resource: ``/articles/{id}`` endpoints."""

from __future__ import annotations

from typing import Any

from pydantic import BaseModel

from pypresscart.models.articles import (
    ApproveDraftRequest,
    Article,
    ArticleUpdateRequest,
)
from pypresscart.resources._base import ResourceBase


[docs] class ArticlesResource(ResourceBase): """Endpoints for articles produced by campaigns."""
[docs] def get( self, article_id: str, *, as_json: bool | None = None, ) -> Article | dict[str, Any]: """Get an article by id. Required scope: ``campaigns.read``.""" payload = self._client._request("GET", f"/articles/{article_id}") return self._parse(payload, Article, as_json)
[docs] def update( self, article_id: str, body: ArticleUpdateRequest | BaseModel | dict[str, Any], *, as_json: bool | None = None, ) -> Article | dict[str, Any]: """Update an article. Required scope: ``campaigns.update``.""" payload = self._client._request( "PUT", f"/articles/{article_id}", json=self._serialize(body) ) return self._parse(payload, Article, as_json)
[docs] def approve_brief( self, article_id: str, *, as_json: bool | None = None, ) -> Article | dict[str, Any]: """Approve the brief for an article. Required scope: ``campaigns.update``.""" payload = self._client._request("PATCH", f"/articles/{article_id}/approve-brief") return self._parse(payload, Article, as_json)
[docs] def approve_draft( self, article_id: str, body: ApproveDraftRequest | BaseModel | dict[str, Any] | None = None, *, as_json: bool | None = None, ) -> Article | dict[str, Any]: """Approve the draft for an article. Required scope: ``campaigns.update``.""" payload = self._client._request( "PATCH", f"/articles/{article_id}/approve-draft", json=self._serialize(body), ) return self._parse(payload, Article, as_json)