Авторизация и конфигурация¶
SDK поддерживает три публичных способа создать клиент. Для приложений и CLI обычно удобен AvitoClient.from_env(): секреты остаются вне кода, а конфигурация читается одинаково локально и в CI.
from avito import AvitoClient
with AvitoClient.from_env() as avito:
profile = avito.account().get_self()
print(profile.user_id)
Для коротких скриптов можно передать ключи явно:
from avito import AvitoClient
with AvitoClient(client_id="client-id", client_secret="client-secret") as avito:
info = avito.debug_info()
print(info.base_url)
Для полного контроля используйте AvitoSettings и AuthSettings.
from avito import AuthSettings, AvitoClient, AvitoSettings
settings = AvitoSettings(
user_id=123,
auth=AuthSettings(
client_id="client-id",
client_secret="client-secret",
),
)
with AvitoClient(settings) as avito:
info = avito.debug_info()
print(info.user_id)
Значения из process environment имеют приоритет над .env. Если обязательные ключи отсутствуют, SDK поднимает ConfigurationError при создании клиента, до первого HTTP-запроса. Безопасный снимок debug_info() не содержит client_secret, access token или заголовок Authorization.
Переменные окружения¶
Обязательные¶
Оба значения выдаёт личный кабинет разработчика на avito.ru/professionals/api.
AVITO_CLIENT_ID — идентификатор OAuth-приложения. Публичный, но не должен попадать в клиентский код.
AVITO_CLIENT_SECRET — секрет OAuth-приложения. Храните только в переменных окружения или в vault — не в репозитории. SDK автоматически скрывает это значение из логов и debug_info().
Опциональные — основные¶
AVITO_BASE_URL — базовый URL API, по умолчанию https://api.avito.ru. Переопределяется при работе с sandbox или внутренним proxy.
AVITO_USER_ID — ID пользователя по умолчанию. Если задан, не нужно передавать user_id= в каждый доменный вызов, где он обязателен. Полезно для приложений с одним фиксированным пользователем.
AVITO_USER_AGENT_SUFFIX — суффикс, который добавляется к стандартному User-Agent заголовку. Используйте для идентификации вашего сервиса в логах и поддержке. Не должен содержать секреты, токены или слова password/secret — SDK проверяет это и поднимает ConfigurationError.
AVITO_SCOPE — OAuth scope через пробел. Задаётся, если приложению нужен нестандартный набор разрешений. Большинству приложений не нужен.
AVITO_REFRESH_TOKEN — refresh token для предварительного обмена на access token. Применяется, когда token уже получен внешней системой и передаётся в SDK для однократного использования.
Опциональные — Автотека¶
Автотека — отдельный сервис с собственной OAuth-авторизацией. Эти переменные нужны только при вызовах avito.autoteka_*().
AVITO_AUTOTEKA_CLIENT_ID и AVITO_AUTOTEKA_CLIENT_SECRET — учётные данные для Автотека API. Выдаются отдельно от основных ключей Avito.
AVITO_AUTOTEKA_SCOPE — scope для Автотека API. Уточняйте в документации Автотеки.
AVITO_AUTOTEKA_TOKEN_URL — endpoint токена для Автотеки, по умолчанию /autoteka/token. Меняется только в нестандартных окружениях.
Опциональные — URL-overrides¶
AVITO_TOKEN_URL и AVITO_ALTERNATE_TOKEN_URL — endpoint-ы получения access token. В продакшне менять не нужно. Используются при работе с proxy или staging-окружением.
Опциональные — таймауты и retry¶
Управление таймаутами: AVITO_TIMEOUT_CONNECT (5 с), AVITO_TIMEOUT_READ (15 с), AVITO_TIMEOUT_WRITE (15 с), AVITO_TIMEOUT_POOL (5 с).
Управление retry: AVITO_RETRY_MAX_ATTEMPTS (3), AVITO_RETRY_BACKOFF_FACTOR (0.5), AVITO_RETRY_MAX_DELAY (30 с), AVITO_RETRY_RETRY_ON_RATE_LIMIT (true), AVITO_RETRY_RETRY_ON_SERVER_ERROR (true).
Полная таблица с типами и дефолтами — в справочнике по конфигурации.