Source code for pypresscart.resources.orders

"""Orders resource: ``/orders`` endpoints."""

from __future__ import annotations

from typing import Any

from pydantic import BaseModel

from pypresscart.models._common import Paginated
from pypresscart.models.orders import CheckoutRequest, Order
from pypresscart.resources._base import ResourceBase


[docs] class OrdersResource(ResourceBase): """Order endpoints (list, get, create checkout)."""
[docs] def list( self, *, limit: int = 25, page: int = 1, sort_by: str | None = None, order_by: str | None = None, as_json: bool | None = None, ) -> Paginated[Order] | dict[str, Any]: """List orders for the team. Required scope: ``orders.lists``.""" params = { "limit": limit, "page": page, "sort_by": sort_by, "order_by": order_by, } payload = self._client._request("GET", "/orders", params=params) return self._parse_paginated(payload, Order, as_json)
[docs] def get( self, order_id: str, *, include_outlets_data: bool | None = None, as_json: bool | None = None, ) -> Order | dict[str, Any]: """Get a single order by id. Required scope: ``orders.read``.""" params = {"include_outlets_data": include_outlets_data} payload = self._client._request("GET", f"/orders/{order_id}", params=params) return self._parse(payload, Order, as_json)
[docs] def create_checkout( self, body: CheckoutRequest | BaseModel | dict[str, Any], *, as_json: bool | None = None, ) -> Order | dict[str, Any]: """Create a checkout order. Required scope: ``orders.create``.""" payload = self._client._request("POST", "/orders/checkout", json=self._serialize(body)) return self._parse(payload, Order, as_json)