models.py: - KworkUser, KworkCategory, Kwork, KworkDetails - PaginationInfo, CatalogResponse - Project, ProjectsResponse - Review, ReviewsResponse - Notification, NotificationsResponse - Dialog, AuthResponse - ErrorDetail, APIErrorResponse - City, Country, TimeZone - Feature, Badge - DataResponse errors.py: - KworkError (базовое) - KworkAuthError - KworkApiError - KworkNotFoundError - KworkRateLimitError - KworkValidationError - KworkNetworkError Все классы задокументированы с описанием атрибутов и примерами.
60 KiB
Table of Contents
- kwork_api
- kwork_api.client
- logging
- Any
- Optional
- httpx
- HttpUrl
- KworkApiError
- KworkAuthError
- KworkError
- KworkNetworkError
- KworkNotFoundError
- KworkRateLimitError
- KworkValidationError
- APIErrorResponse
- AuthResponse
- Badge
- CatalogResponse
- City
- Country
- DataResponse
- Dialog
- Feature
- Kwork
- KworkDetails
- NotificationsResponse
- Project
- ProjectsResponse
- Review
- ReviewsResponse
- TimeZone
- logger
- KworkClient
- kwork_api.models
- kwork_api.errors
Module kwork_api
Kwork.ru API Client
Unofficial Python client for Kwork.ru API.
Example:
from kwork_api import KworkClient
Login with credentials
client = await KworkClient.login("username", "password")
Or restore from token
client = KworkClient(token="your_web_auth_token")
Get catalog
catalog = await client.catalog.get_list(page=1)
KworkClient
KworkError
KworkAuthError
KworkApiError
__version__
__all__
Module kwork_api.client
Kwork API Client.
Main client class with authentication and all API endpoints.
logging
Any
Optional
httpx
HttpUrl
KworkApiError
KworkAuthError
KworkError
KworkNetworkError
KworkNotFoundError
KworkRateLimitError
KworkValidationError
APIErrorResponse
AuthResponse
Badge
CatalogResponse
City
Country
DataResponse
Dialog
Feature
Kwork
KworkDetails
NotificationsResponse
Project
ProjectsResponse
Review
ReviewsResponse
TimeZone
logger
KworkClient
class KworkClient()
Асинхронный клиент для Kwork.ru API.
Предоставляет доступ ко всем основным эндпоинтам Kwork API:
- Каталог кворков и поиск
- Биржа проектов (фриланс заказы)
- Пользовательские данные и отзывы
- Уведомления и сообщения
- Справочные данные (города, страны, категории)
Аутентификация: Клиент использует двухэтапную аутентификацию Kwork:
- POST /signIn — получение session cookies
- POST /getWebAuthToken — получение web_auth_token
Примеры использования:
Вход по логину/паролю
async with await KworkClient.login("username", "password") as client: catalog = await client.catalog.get_list(page=1)
Восстановление сессии по токену
client = KworkClient(token="saved_web_auth_token") user_info = await client.user.get_info()
Работа с проектами
projects = await client.projects.get_list(page=1) my_orders = await client.projects.get_payer_orders()
Attributes:
catalog- Доступ к каталогу кворковprojects- Доступ к бирже проектовuser- Пользовательские эндпоинтыreference- Справочные данныеnotifications- Уведомления и сообщенияother- Прочие эндпоинты
Notes:
Клиент поддерживает context manager для автоматического закрытия соединения.
Рекомендуется использовать async with для корректного освобождения ресурсов.
BASE_URL
LOGIN_URL
TOKEN_URL
KworkClient.__init__
def __init__(token: Optional[str] = None,
cookies: Optional[dict[str, str]] = None,
timeout: float = 30.0,
base_url: Optional[str] = None)
Инициализация клиента.
Создаёт неаутентифицированный клиент или восстанавливает сессию по ранее полученному токену.
Arguments:
token- Web auth token, полученный черезgetWebAuthTokenилиlogin(). Если указан, автоматически добавляется в cookies.cookies- Session cookies из предыдущей аутентификации. Обычно не требуется — устанавливаются автоматически из token.timeout- Таймаут HTTP запросов в секундах. По умолчанию 30 секунд.base_url- Кастомный базовый URL. Используется только для тестирования.
Example:
Новый клиент без аутентификации
client = KworkClient()
Восстановление сессии
client = KworkClient(token="eyJ0eXAiOiJKV1QiLCJhbGc...")
Клиент с кастомным таймаутом
client = KworkClient(timeout=60.0)
Notes:
Для полноценной работы API требуется аутентификация.
Используйте login() или передайте сохранённый token.
KworkClient.login
@classmethod
async def login(cls,
username: str,
password: str,
timeout: float = 30.0) -> "KworkClient"
Аутентификация по логину и паролю.
Выполняет двухэтапный процесс аутентификации Kwork:
- POST /signIn — проверка учётных данных, получение session cookies
- POST /getWebAuthToken — обмен cookies на web_auth_token
Полученный токен и cookies сохраняются в клиенте для последующих запросов.
Arguments:
username- Логин или email аккаунта Kwork.password- Пароль аккаунта Kwork.timeout- Таймаут запросов в секундах. Применяется к каждому этапу.
Returns:
Полностью аутентифицированный экземпляр KworkClient, готовый к работе с API.
Raises:
KworkAuthError- Если логин/пароль неверны или токен не получен.KworkNetworkError- Если произошла ошибка сети.
Example:
Базовое использование
client = await KworkClient.login("myuser", "mypassword")
С кастомным таймаутом
client = await KworkClient.login("user", "pass", timeout=60.0)
Сохранение токена для повторного использования
token = client._token
Позже: client = KworkClient(token=token)
Security: Пароль не сохраняется в клиенте. Только token и cookies. Рекомендуется сохранять token для повторного использования вместо хранения пароля.
Notes:
Токен имеет ограниченное время жизни. При получении 401 ошибки необходимо выполнить повторный login().
KworkClient.close
async def close() -> None
Close HTTP client.
KworkClient.__aenter__
async def __aenter__() -> "KworkClient"
KworkClient.__aexit__
async def __aexit__(*args: Any) -> None
CatalogAPI
class CatalogAPI()
API каталога кворков.
Предоставляет доступ к каталогу услуг Kwork:
- Поиск и фильтрация кворков
- Получение детальной информации
- Категории и сортировка
Example:
Получить первую страницу каталога
catalog = await client.catalog.get_list(page=1)
Фильтрация по категории
catalog = await client.catalog.get_list(category_id=5)
Детали конкретного кворка
details = await client.catalog.get_details(kwork_id=12345)
CatalogAPI.__init__
def __init__(client: "KworkClient")
CatalogAPI.get_list
async def get_list(page: int = 1,
category_id: Optional[int] = None,
sort: str = "recommend") -> CatalogResponse
Получить список кворков из каталога.
Основной эндпоинт для поиска и просмотра кворков. Возвращает пагинированный список с возможностью фильтрации.
Arguments:
page- Номер страницы для пагинации (начиная с 1).category_id- ID категории для фильтрации. Если None — все категории.sort- Опция сортировки. Варианты:- "recommend" — по рекомендации (по умолчанию)
- "price_asc" — по возрастанию цены
- "price_desc" — по убыванию цены
- "rating" — по рейтингу
- "reviews" — по количеству отзывов
- "newest" — по дате создания
Returns:
CatalogResponse содержащий:
- kworks: список кворков на странице
- pagination: информация о пагинации
- filters: доступные фильтры
- sort_options: доступные опции сортировки
Example:
Первая страница, сортировка по цене
response = await client.catalog.get_list( page=1, sort="price_asc" )
for kwork in response.kworks:
-
print(f"{kwork.title}- {kwork.price} RUB")Пагинация
if response.pagination and response.pagination.has_next: next_page = await client.catalog.get_list(page=2)
CatalogAPI.get_details
async def get_details(kwork_id: int) -> KworkDetails
Получить полную информацию о кворке.
Возвращает расширенную информацию о кворке включая:
- Полное описание и требования
- Сроки выполнения и количество правок
- Дополнительные опции (features)
- FAQ от продавца
Arguments:
kwork_id- Уникальный идентификатор кворка.
Returns:
KworkDetails с полной информацией о кворке.
Raises:
KworkNotFoundError- Если кворк с таким ID не найден.
Example:
details = await client.catalog.get_details(12345)
print(f"Название- {details.title}")print(f"Цена- {details.price} {details.currency}")print(f"Срок- {details.delivery_time} дней")print(f"Правки- {details.revisions}")
CatalogAPI.get_details_extra
async def get_details_extra(kwork_id: int) -> dict[str, Any]
Получить дополнительные детали кворка.
Возвращает расширенную информацию, которая не включена в основной ответ get_details(). Может содержать:
- Дополнительные изображения
- Видео обзоры
- Детали пакетов услуг
- Статистику продаж
Arguments:
kwork_id- Уникальный идентификатор кворка.
Returns:
Словарь с дополнительными данными. Структура зависит от конкретного кворка и не гарантируется стабильной.
Notes:
Этот эндпоинт возвращает "сырые" данные без валидации. Структура ответа может измениться без предупреждения.
ProjectsAPI
class ProjectsAPI()
API биржи проектов (фриланс заказы).
Предоставляет доступ к заказам на фриланс:
- Просмотр открытых проектов
- Заказы где вы заказчик (payer)
- Заказы где вы исполнитель (worker)
Example:
Новые проекты
projects = await client.projects.get_list(page=1)
Мои заказы как заказчика
my_orders = await client.projects.get_payer_orders()
Мои заказы как исполнителя
my_work = await client.projects.get_worker_orders()
ProjectsAPI.__init__
def __init__(client: "KworkClient")
ProjectsAPI.get_list
async def get_list(page: int = 1,
category_id: Optional[int] = None) -> ProjectsResponse
Получить список проектов с биржи.
Основной эндпоинт для просмотра доступных заказов. Возвращает пагинированный список проектов.
Arguments:
page- Номер страницы (начиная с 1).category_id- ID категории для фильтрации. Если None — все категории.
Returns:
ProjectsResponse содержащий:
- projects: список проектов на странице
- pagination: информация о пагинации
Example:
Все новые проекты
response = await client.projects.get_list(page=1)
for project in response.projects:
-
print(f"{project.title}- {project.budget} {project.budget_type}")Только категория "Разработка"
dev_projects = await client.projects.get_list( page=1, category_id=5 )
ProjectsAPI.get_payer_orders
async def get_payer_orders() -> list[Project]
Получить заказы где вы являетесь заказчиком.
Возвращает все проекты, созданные текущим пользователем, независимо от их статуса (открыт, в работе, завершён).
Returns:
Список проектов где текущий пользователь — заказчик.
Example:
orders = await client.projects.get_payer_orders() for order in orders: print(f"Заказ #{order.id}: {order.status}")
ProjectsAPI.get_worker_orders
async def get_worker_orders() -> list[Project]
Получить заказы где вы являетесь исполнителем.
Возвращает все проекты, где текущий пользователь назначен исполнителем.
Returns:
Список проектов где текущий пользователь — исполнитель.
Example:
work = await client.projects.get_worker_orders() active = [p for p in work if p.status == "in_progress"] print(f"Активных заказов: {len(active)}")
UserAPI
class UserAPI()
Пользовательское API.
Предоставляет доступ к данным текущего пользователя:
- Профиль и информация об аккаунте
- Отзывы (полученные и оставленные)
- Избранные кворки
Example:
Информация о пользователе
info = await client.user.get_info()
Мои отзывы
reviews = await client.user.get_reviews()
Избранные кворки
favorites = await client.user.get_favorite_kworks()
UserAPI.__init__
def __init__(client: "KworkClient")
UserAPI.get_info
async def get_info() -> dict[str, Any]
Получить информацию о текущем пользователе.
Возвращает основные данные аккаунта:
- ID, username, email
- Баланс, рейтинг
- Статус верификации
- Настройки профиля
Returns:
Словарь с информацией о пользователе. Структура зависит от ответа API.
Example:
info = await client.user.get_info()
print(f"User- {info.get('username')}")print(f"Balance- {info.get('balance')} RUB")
UserAPI.get_reviews
async def get_reviews(user_id: Optional[int] = None,
page: int = 1) -> ReviewsResponse
Получить отзывы пользователя.
Если user_id не указан — возвращает отзывы текущего пользователя. Если указан — отзывы другого пользователя по ID.
Arguments:
user_id- ID пользователя. Если None — текущий пользователь.page- Номер страницы для пагинации (начиная с 1).
Returns:
ReviewsResponse содержащий:
- reviews: список отзывов на странице
- pagination: информация о пагинации
- average_rating: средний рейтинг
Example:
Мои отзывы
my_reviews = await client.user.get_reviews()
Отзывы другого пользователя
user_reviews = await client.user.get_reviews(user_id=12345)
С пагинацией
page2 = await client.user.get_reviews(page=2)
UserAPI.get_favorite_kworks
async def get_favorite_kworks() -> list[Kwork]
Получить список избранных кворков.
Возвращает все кворки, добавленные пользователем в избранное.
Returns:
Список избранных кворков.
Example:
favorites = await client.user.get_favorite_kworks() for kwork in favorites:
print(f"{kwork.title}- {kwork.price} RUB")
ReferenceAPI
class ReferenceAPI()
Справочное API.
Предоставляет доступ к справочным данным Kwork:
- Города, страны, часовые пояса
- Доступные функции и дополнения
- Значки пользователей
Эти данные редко меняются и могут быть закэшированы.
Example:
Все страны
countries = await client.reference.get_countries()
Все города
cities = await client.reference.get_cities()
Доступные фичи
features = await client.reference.get_features()
ReferenceAPI.__init__
def __init__(client: "KworkClient")
ReferenceAPI.get_cities
async def get_cities() -> list[City]
Получить список всех городов.
Returns:
Список всех городов из справочника Kwork.
Example:
cities = await client.reference.get_cities() moscow = next(c for c in cities if c.name == "Москва")
ReferenceAPI.get_countries
async def get_countries() -> list[Country]
Получить список всех стран.
Returns:
Список всех стран с кодами и городами.
Example:
countries = await client.reference.get_countries() russia = next(c for c in countries if c.code == "RU")
ReferenceAPI.get_timezones
async def get_timezones() -> list[TimeZone]
Получить список всех часовых поясов.
Returns:
Список часовых поясов с названиями и смещениями.
Example:
timezones = await client.reference.get_timezones() msks = next(tz for tz in timezones if "Moscow" in tz.name)
ReferenceAPI.get_features
async def get_features() -> list[Feature]
Получить доступные дополнительные функции (features).
Features — это платные дополнения к кворкам:
- Увеличенные сроки
- Дополнительные правки
- Приоритетная поддержка
- и т.д.
Returns:
Список доступных features с названиями и ценами.
Example:
features = await client.reference.get_features() for f in features:
print(f"{f.name}- {f.price} RUB")
ReferenceAPI.get_public_features
async def get_public_features() -> list[Feature]
Получить публичные функции.
Аналогично get_features(), но возвращает только публично доступные опции.
Returns:
Список публичных features.
ReferenceAPI.get_badges_info
async def get_badges_info() -> list[Badge]
Получить информацию о значках пользователей.
Значки (badges) отображают достижения и статусы:
- "Профессионал"
- "Быстрый ответ"
- "Надёжный продавец"
- и т.д.
Returns:
Список значков с описаниями и иконками.
Example:
badges = await client.reference.get_badges_info() for badge in badges:
print(f"{badge.name}- {badge.description}")
NotificationsAPI
class NotificationsAPI()
API уведомлений и сообщений.
Предоставляет доступ к системе уведомлений Kwork:
- Список уведомлений
- Получение новых уведомлений
- Диалоги с пользователями
- Заблокированные диалоги
Example:
Все уведомления
notifications = await client.notifications.get_list()
Новые уведомления
new = await client.notifications.fetch()
Диалоги
dialogs = await client.notifications.get_dialogs()
NotificationsAPI.__init__
def __init__(client: "KworkClient")
NotificationsAPI.get_list
async def get_list() -> NotificationsResponse
Получить список всех уведомлений.
Возвращает все уведомления пользователя с информацией о прочтении.
Returns:
NotificationsResponse содержащий:
- notifications: список уведомлений
- unread_count: количество непрочитанных
Example:
notifs = await client.notifications.get_list()
-
print(f"Непрочитанных- {notifs.unread_count}")for n in notifs.notifications: if not n.is_read:
-
print(f"Новое- {n.title}")
NotificationsAPI.fetch
async def fetch() -> NotificationsResponse
Получить новые уведомления.
Отличается от get_list() тем, что возвращает только уведомления, появившиеся с момента последнего запроса. Также может обновлять счётчик непрочитанных.
Returns:
NotificationsResponse с новыми уведомлениями.
Example:
new_notifs = await client.notifications.fetch() if new_notifs.unread_count > 0: print(f"У вас {new_notifs.unread_count} новых уведомлений!")
NotificationsAPI.get_dialogs
async def get_dialogs() -> list[Dialog]
Получить список диалогов (чатов).
Возвращает все активные диалоги пользователя с другими пользователями Kwork.
Returns:
Список диалогов с последней перепиской.
Example:
dialogs = await client.notifications.get_dialogs() for d in dialogs: print(f"С {d.participant.username}: {d.last_message}")
NotificationsAPI.get_blocked_dialogs
async def get_blocked_dialogs() -> list[Dialog]
Получить список заблокированных диалогов.
Возвращает диалоги с пользователями, которые были заблокированы текущим пользователем.
Returns:
Список заблокированных диалогов.
Example:
blocked = await client.notifications.get_blocked_dialogs()
print(f"Заблокировано- {len(blocked)} пользователей")
OtherAPI
class OtherAPI()
Прочее API.
Вспомогательные эндпоинты которые не вошли в другие категории:
- Пользовательские настройки и предпочтения (wants)
- Статусы кворков и заказов
- Персональные предложения (offers)
- Настройки профиля
- Статус онлайн/оффлайн
Example:
Пользовательские предпочтения
wants = await client.other.get_wants()
Статус кворков
status = await client.other.get_kworks_status()
Установить статус оффлайн
await client.other.go_offline()
OtherAPI.__init__
def __init__(client: "KworkClient")
OtherAPI.get_wants
async def get_wants() -> dict[str, Any]
Получить пользовательские предпочтения (wants).
Wants — это настройки интересов пользователя:
- Предпочитаемые категории
- Ключевые слова для мониторинга
- Фильтры для поиска
Returns:
Словарь с настройками предпочтений.
Example:
wants = await client.other.get_wants() print(wants)
OtherAPI.get_wants_status
async def get_wants_status() -> dict[str, Any]
Получить статус предпочтений.
Returns:
Статус wants с метаданными.
OtherAPI.get_kworks_status
async def get_kworks_status() -> dict[str, Any]
Получить статусы кворков пользователя.
Возвращает информацию о статусах всех кворков текущего пользователя (активен, на модерации, и т.д.).
Returns:
Словарь со статусами кворков.
Example:
status = await client.other.get_kworks_status() print(status)
OtherAPI.get_offers
async def get_offers() -> dict[str, Any]
Получить персональные предложения.
Returns:
Список персональных предложений от Kwork.
OtherAPI.get_exchange_info
async def get_exchange_info() -> dict[str, Any]
Получить информацию об обмене валюты.
Returns:
Информация о курсах валют и обмене.
OtherAPI.get_channel
async def get_channel() -> dict[str, Any]
Получить информацию о канале пользователя.
Returns:
Данные канала (если есть).
OtherAPI.get_in_app_notification
async def get_in_app_notification() -> dict[str, Any]
Получить внутриприложенное уведомление.
Returns:
Данные in-app уведомления.
OtherAPI.get_security_user_data
async def get_security_user_data() -> dict[str, Any]
Получить данные безопасности пользователя.
Returns:
Информация о безопасности аккаунта.
OtherAPI.is_dialog_allow
async def is_dialog_allow(user_id: int) -> bool
Проверить возможность начала диалога с пользователем.
Arguments:
user_id- ID пользователя для проверки.
Returns:
True если диалог разрешён, False иначе.
Example:
allowed = await client.other.is_dialog_allow(12345) if allowed: print("Можно написать сообщение")
OtherAPI.get_viewed_kworks
async def get_viewed_kworks() -> list[Kwork]
Получить просмотренные кворки.
Возвращает список кворков, которые пользователь просматривал ранее.
Returns:
Список просмотренных кворков.
Example:
viewed = await client.other.get_viewed_kworks()
print(f"Просмотрено- {len(viewed)} кворков")
OtherAPI.get_favorite_categories
async def get_favorite_categories() -> list[int]
Получить ID избранных категорий.
Returns:
Список ID категорий, добавленных в избранное.
Example:
cats = await client.other.get_favorite_categories() print(f"Избранные категории: {cats}")
OtherAPI.update_settings
async def update_settings(settings: dict[str, Any]) -> dict[str, Any]
Обновить настройки пользователя.
Arguments:
settings- Словарь с настройками для обновления. Структура зависит от конкретных настроек.
Returns:
Ответ API с подтверждением обновления.
Example:
await client.other.update_settings({
"email_notifications"- True,"language"- "ru" })
OtherAPI.go_offline
async def go_offline() -> dict[str, Any]
Установить статус пользователя "оффлайн".
Скрывает онлайн-статус от других пользователей.
Returns:
Подтверждение изменения статуса.
Example:
await client.other.go_offline()
OtherAPI.get_actor
async def get_actor() -> dict[str, Any]
Получить информацию об актёре (текущем пользователе).
Returns:
Данные актёра/пользователя.
KworkClient.catalog
@property
def catalog() -> CatalogAPI
API каталога кворков.
Returns:
CatalogAPI для работы с каталогом.
KworkClient.projects
@property
def projects() -> ProjectsAPI
API биржи проектов.
Returns:
ProjectsAPI для работы с проектами.
KworkClient.user
@property
def user() -> UserAPI
Пользовательское API.
Returns:
UserAPI для работы с профилем.
KworkClient.reference
@property
def reference() -> ReferenceAPI
Справочное API.
Returns:
ReferenceAPI для справочных данных.
KworkClient.notifications
@property
def notifications() -> NotificationsAPI
API уведомлений.
Returns:
NotificationsAPI для уведомлений и сообщений.
KworkClient.other
@property
def other() -> OtherAPI
Прочее API.
Returns:
OtherAPI для вспомогательных эндпоинтов.
Module kwork_api.models
Pydantic models for Kwork API responses.
All models follow the structure found in the HAR dump analysis.
datetime
Any
Optional
BaseModel
Field
KworkUser
class KworkUser(BaseModel)
User information.
id
username
avatar_url
is_online
rating
KworkCategory
class KworkCategory(BaseModel)
Category information.
id
name
slug
parent_id
Kwork
class Kwork(BaseModel)
Kwork (service) information.
id
title
description
price
currency
category_id
seller
images
rating
reviews_count
created_at
updated_at
KworkDetails
class KworkDetails(Kwork)
Extended kwork details.
full_description
requirements
delivery_time
in days
revisions
features
faq
PaginationInfo
class PaginationInfo(BaseModel)
Pagination metadata.
current_page
total_pages
total_items
items_per_page
has_next
has_prev
CatalogResponse
class CatalogResponse(BaseModel)
Catalog response with kworks and pagination.
kworks
pagination
filters
sort_options
Project
class Project(BaseModel)
Project (freelance order) information.
id
title
description
budget
budget_type
fixed, hourly
category_id
customer
status
open, in_progress, completed, cancelled
created_at
updated_at
bids_count
skills
ProjectsResponse
class ProjectsResponse(BaseModel)
Projects list response.
projects
pagination
Review
class Review(BaseModel)
Review information.
id
rating
comment
author
kwork_id
created_at
ReviewsResponse
class ReviewsResponse(BaseModel)
Reviews list response.
reviews
pagination
average_rating
Notification
class Notification(BaseModel)
Notification information.
id
type
message, order, system, etc.
title
message
is_read
created_at
link
NotificationsResponse
class NotificationsResponse(BaseModel)
Notifications list response.
notifications
unread_count
Dialog
class Dialog(BaseModel)
Dialog (chat) information.
id
participant
last_message
unread_count
updated_at
AuthResponse
class AuthResponse(BaseModel)
Authentication response.
success
user_id
username
web_auth_token
message
ErrorDetail
class ErrorDetail(BaseModel)
Error detail from API.
code
message
field
APIErrorResponse
class APIErrorResponse(BaseModel)
Standard API error response.
success
errors
message
City
class City(BaseModel)
City information.
id
name
country_id
Country
class Country(BaseModel)
Country information.
id
name
code
cities
TimeZone
class TimeZone(BaseModel)
Timezone information.
id
name
offset
e.g., "+03:00"
Feature
class Feature(BaseModel)
Feature/addon information.
id
name
description
price
type
extra, premium, etc.
Badge
class Badge(BaseModel)
User badge information.
id
name
description
icon_url
DataResponse
class DataResponse(BaseModel)
Generic data response wrapper.
success
data
message
Module kwork_api.errors
Kwork API exceptions.
All exceptions provide clear error messages for debugging.
Any
Optional
KworkError
class KworkError(Exception)
Base exception for all Kwork API errors.
KworkError.__init__
def __init__(message: str, response: Optional[Any] = None)
KworkError.__str__
def __str__() -> str
KworkAuthError
class KworkAuthError(KworkError)
Authentication/authorization error.
KworkAuthError.__init__
def __init__(message: str = "Authentication failed",
response: Optional[Any] = None)
KworkAuthError.__str__
def __str__() -> str
KworkApiError
class KworkApiError(KworkError)
API request error (4xx, 5xx).
KworkApiError.__init__
def __init__(message: str,
status_code: Optional[int] = None,
response: Optional[Any] = None)
KworkApiError.__str__
def __str__() -> str
KworkNotFoundError
class KworkNotFoundError(KworkApiError)
Resource not found (404).
KworkNotFoundError.__init__
def __init__(resource: str, response: Optional[Any] = None)
KworkRateLimitError
class KworkRateLimitError(KworkApiError)
Rate limit exceeded (429).
KworkRateLimitError.__init__
def __init__(message: str = "Rate limit exceeded",
response: Optional[Any] = None)
KworkValidationError
class KworkValidationError(KworkApiError)
Validation error (400).
KworkValidationError.__init__
def __init__(message: str = "Validation failed",
fields: Optional[dict[str, list[str]]] = None,
response: Optional[Any] = None)
KworkValidationError.__str__
def __str__() -> str
KworkNetworkError
class KworkNetworkError(KworkError)
Network/connection error.
KworkNetworkError.__init__
def __init__(message: str = "Network error", response: Optional[Any] = None)
KworkNetworkError.__str__
def __str__() -> str