Skip to main content

SDK для удобной работы с API Yandex Delivery

Project description

Yandex.Delivery API Client

Клиентская библиотека для работы с API Яндекс.Доставки.

Описание

Данная библиотека предоставляет удобный интерфейс для взаимодействия с API Яндекс.Доставки v2. Она позволяет создавать заявки на доставку, проверять стоимость доставки и управлять процессом доставки.

Основные возможности

  • Проверка стоимости доставки
  • Создание заявок на доставку
  • Подтверждение заявок
  • Поддержка различных типов транспорта (курьер, экспресс, грузовой)
  • Обработка ошибок API

Использование

Инициализация клиента

from yandex_delivery.client import YandexDeliveryClient

client = YandexDeliveryClient(api_key="ваш_api_ключ")

Проверка стоимости доставки

from yandex_delivery.objects import RoutePointWithAddress, ClientRequirements
from yandex_delivery.enums import TaxiClasses

# Создание точек маршрута
route_points = [
    RoutePointWithAddress(
        id=1,
        coordinates=[74.635061, 42.856681],
        fullname="Бишкек, ул. Горького, 1/2"
    ),
    RoutePointWithAddress(
        id=2,
        coordinates=[74.590261, 42.874537],
        fullname="Бишкек, ул. Горького, 1/2"
    )
]

# Требования к доставке
requirements = ClientRequirements(
    taxi_class=TaxiClasses.EXPRESS
)

# Получение стоимости
price = client.check_price(
    route_points=route_points,
    client_requirements=requirements
)
print(f"Стоимость доставки: {price} сом.")

Создание заявки на доставку

from uuid import uuid4

from yandex_delivery.objects import (
    Item, RoutePoint, Contact, Address, 
    ClientRequirements
)
from yandex_delivery.enums import RoutePointType, TaxiClasses


# Создание товара
item = Item(
    extra_id="ORDER-123",
    pickup_point=1,
    droppof_point=2,
    title="Товар 1",
    cost_value="1000",
    cost_currency="KGS",
    quantity=1
)

# Создание точек маршрута
route_points = [
    RoutePoint(
        point_id=1,
        visit_order=1,
        contact=Contact(
            name="Yryskeldi",
            phone="+996999999999"
        ),
        address=Address(
            coordinates=[74.635061, 42.856681],
            fullname="Бишкек, ул. Горького, 1/2"
        ),
        type=RoutePointType.SOURCE.value
    ),
    RoutePoint(
        point_id=2,
        visit_order=2,
        contact=Contact(
            name="Eldos",
            phone="+996999999999"
        ),
        address=Address(
            coordinates=[74.590261, 42.874537],
            fullname="Бишкек, ул. Горького, 1/2"
        ),
        type=RoutePointType.DESTINATION.value
    )
]

# Создание заявки
claim_id = client.create_claim(
    request_id=uuid4(),
    items=[item],
    route_points=route_points,
    client_requirements=ClientRequirements(
        taxi_class=TaxiClasses.EXPRESS
    ),
    comment="Комментарий к заказу",
    skip_door_to_door=False
)

Статусы заявок

Библиотека поддерживает все статусы заявок Яндекс.Доставки:

  • new - новая заявка
  • estimating - расчет стоимости
  • accepted - заявка принята
  • performer_lookup - поиск исполнителя
  • performer_found - исполнитель найден
  • pickuped - груз забран
  • delivered - доставлено
  • И другие (полный список в ClaimStatuses)

Обработка ошибок

Библиотека предоставляет специальный класс APIError для обработки ошибок API:

from yandex_delivery.exceptions import APIError

try:
    price = client.check_price(route_points, requirements)
except APIError as e:
    print(f"Ошибка API: {e.code} - {e.message}")
    if e.response:
        print(f"Детали ответа: {e.response}")

Типы данных

RoutePointWithAddress

Используется для описания точек маршрута при проверке стоимости:

Детали адреса не обязательны и могут быть пустыми. Подробнее в RoutePointWithAddress

route_point = RoutePointWithAddress(
    id=1,
    coordinates=[74.635061, 42.856681],
    building="1",
    city="Бишкек",
    country="Кыргызстан",
    fullname="Бишкек ул. Горького 1/2",
    street="Горького",
)

ClientRequirements

Определяет требования к доставке:

requirements = ClientRequirements(
    taxi_class=TaxiClasses.EXPRESS,
    cargo_type=CargoType.VAN,
    cargo_options=[CargoOptions.THERMOBAG],
    cargo_loaders=1
)

Ограничения

Габариты груза

  • Курьер (courier): до 0.80 м × 0.50 м × 0.50 м
  • Экспресс (express): до 1.00 м × 0.60 м × 0.50 м
  • Грузовой (cargo):
    • Маленький кузов: до 1.70 м × 0.96 м × 0.90 м
    • Средний кузов: до 2.60 м × 1.30 м × 1.50 м
    • Большой кузов: до 3.80 м × 1.80 м × 1.80 м

Лицензия

MIT

Поддержка

При возникновении проблем или вопросов создавайте issue в репозитории проекта.

Частые вопросы

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

yandex_delivery_sdk-0.1.4.tar.gz (13.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

yandex_delivery_sdk-0.1.4-py3-none-any.whl (14.5 kB view details)

Uploaded Python 3

File details

Details for the file yandex_delivery_sdk-0.1.4.tar.gz.

File metadata

  • Download URL: yandex_delivery_sdk-0.1.4.tar.gz
  • Upload date:
  • Size: 13.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.6

File hashes

Hashes for yandex_delivery_sdk-0.1.4.tar.gz
Algorithm Hash digest
SHA256 36ad9f19d08ea9fedfd7ebd94ee7da93cc129ec9bd734611f534634d6c493da9
MD5 c61f641323b6b12be06226c797b462ba
BLAKE2b-256 2f408a6cd014641c40ef0e0620226e4a553ef99f7533371fc25871e25a4567e7

See more details on using hashes here.

File details

Details for the file yandex_delivery_sdk-0.1.4-py3-none-any.whl.

File metadata

File hashes

Hashes for yandex_delivery_sdk-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 4e8ef247a68d8a58e4db173ed00d9c3a09b22a7af88979c9f1fa518edb79e414
MD5 82ac288322143a6909305e6f1ef65a15
BLAKE2b-256 a136960151781208852d8e8a2db4562d8d2599057da22cac60bdeb86bc7e20e2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page