Исходный код cdek.apps.agreement.agreement

from typing import Any

from ..app import App
from ..models.entity_response import EntityResponse
from .requests import DeliveryIntervalRequest, RegisterDeliveryRequest
from .responses import AgreementInfoResponse, AvailableDeliveryIntervalsResponse


[документация] class AgreementApp(App): """Класс для работы с договоренностями о доставке""" def _get_interval( self, params: dict[str, Any] ) -> AvailableDeliveryIntervalsResponse: """Получение интервалов доставки Args: params (Any): параметры для получения интервалов доставки Returns: AvailableDeliveryIntervalsResponse: объект с информацией о интервалах доставки """ response = self._get("delivery/intervals", params) return AvailableDeliveryIntervalsResponse.model_validate(response)
[документация] def get_interval_number( self, cdek_number: str ) -> AvailableDeliveryIntervalsResponse: """Получить интервалы доставки по номеру заказа Args: cdek_number (str): номер заказа Returns: AvailableDeliveryIntervalsResponse: объект с информацией о интервалах доставки """ return self._get_interval({"cdek_number": cdek_number})
[документация] def get_interval_uuid(self, uuid: str) -> AvailableDeliveryIntervalsResponse: """Получение интервалов доставки по UUID заказа Args: uuid (str): UUID заказа Returns: AvailableDeliveryIntervalsResponse: объект с информацией о интервалах доставки """ return self._get_interval({"order_uuid": uuid})
[документация] def create(self, agreement: RegisterDeliveryRequest) -> EntityResponse: """Регистрация договоренности о доставке Args: agreement (RegisterDeliveryRequest): объект с информацией о договоренности о доставке Returns: EntityResponse: объект с информацией о регистрации договоренности о доставке Raises: ValueError: если agreement не является объектом RegisterDeliveryRequest """ if not isinstance(agreement, RegisterDeliveryRequest): raise ValueError("agreement must be a RegisterDeliveryRequest") response = self._post("delivery", json=agreement) return EntityResponse.model_validate(response)
[документация] def get(self, uuid: str) -> AgreementInfoResponse: """Получение договоренностей для курьера Args: uuid (str): UUID договора Returns: AgreementInfoResponse: объект с информацией о договорах """ response = self._get(f"delivery/{uuid}") return AgreementInfoResponse.model_validate(response)
[документация] def get_intervals_before_create_order( self, request: "DeliveryIntervalRequest" ) -> AvailableDeliveryIntervalsResponse: """Получение интервалов доставки до создания заказа Args: request (DeliveryIntervalRequest): объект с информацией о запросе на получение интервалов доставки до создания заказа Returns: AvailableDeliveryIntervalsResponse: объект с информацией о интервалах доставки до создания заказа Raises: ValueError: если request не является объектом DeliveryIntervalRequest """ if not isinstance(request, DeliveryIntervalRequest): raise ValueError("request must be a DeliveryIntervalRequest") response = self._post("delivery/estimatedIntervals", json=request) return AvailableDeliveryIntervalsResponse.model_validate(response)