"""YesCaptcha / AntiCaptcha compatible API models.""" from __future__ import annotations from typing import Any from pydantic import BaseModel, ConfigDict, Field # ── createTask ────────────────────────────────────────────── class TaskObject(BaseModel): model_config = ConfigDict(populate_by_name=True) type: str websiteURL: str | None = None websiteKey: str | None = None pageAction: str | None = None minScore: float | None = None isInvisible: bool | None = None isSession: bool | None = None apiDomain: str | None = None enterprisePayload: dict[str, Any] | None = None # Image captcha / classification fields body: str | None = None image: str | None = None images: list[str] | None = None examples: list[str] | None = None question: str | None = None queries: list[str] | str | None = None project_name: str | None = None class CreateTaskRequest(BaseModel): clientKey: str task: TaskObject class CreateTaskResponse(BaseModel): errorId: int = 0 taskId: str | None = None errorCode: str | None = None errorDescription: str | None = None # ── getTaskResult ─────────────────────────────────────────── class GetTaskResultRequest(BaseModel): clientKey: str taskId: str class SolutionObject(BaseModel): model_config = ConfigDict(populate_by_name=True) gRecaptchaResponse: str | None = None respKey: str | None = None text: str | None = None token: str | None = None objects: list[int] | None = None answer: bool | list[int] | None = None userAgent: str | None = None acceptLanguage: str | None = None secChUa: str | None = None secChUaMobile: str | None = None secChUaPlatform: str | None = None recaptchaCaT: str | None = Field(default=None, alias="recaptcha-ca-t") recaptchaCaE: str | None = Field(default=None, alias="recaptcha-ca-e") createTime: int | None = None runtimeKind: str | None = None class GetTaskResultResponse(BaseModel): errorId: int = 0 status: str | None = None solution: SolutionObject | None = None errorCode: str | None = None errorDescription: str | None = None # ── getBalance ────────────────────────────────────────────── class GetBalanceRequest(BaseModel): clientKey: str class GetBalanceResponse(BaseModel): errorId: int = 0 balance: float = 99999.0