ttvdrops/chzzk/schemas.py
2026-04-01 04:04:58 +02:00

54 lines
1.9 KiB
Python

from typing import Any
from pydantic import BaseModel
from pydantic import Field
class ChzzkRewardV2(BaseModel):
"""Pydantic schema for api v2 reward object."""
title: str
reward_no: int = Field(..., alias="rewardNo")
image_url: str = Field(..., alias="imageUrl")
reward_type: str = Field(..., alias="rewardType")
condition_type: str = Field(..., alias="conditionType")
condition_for_minutes: int = Field(..., alias="conditionForMinutes")
ios_based_reward: bool = Field(..., alias="iosBasedReward")
code_remaining_count: int = Field(..., alias="codeRemainingCount")
model_config = {"extra": "forbid"}
class ChzzkCampaignV2(BaseModel):
"""Pydantic schema for api v2 campaign object."""
title: str
state: str
description: str
campaign_no: int = Field(..., alias="campaignNo")
image_url: str = Field(..., alias="imageUrl")
category_type: str = Field(..., alias="categoryType")
category_id: str = Field(..., alias="categoryId")
category_value: str = Field(..., alias="categoryValue")
pc_link_url: str = Field(..., alias="pcLinkUrl")
mobile_link_url: str = Field(..., alias="mobileLinkUrl")
service_id: str = Field(..., alias="serviceId")
start_date: str = Field(..., alias="startDate")
end_date: str = Field(..., alias="endDate")
reward_list: list[ChzzkRewardV2] = Field(..., alias="rewardList")
has_ios_based_reward: bool = Field(..., alias="hasIosBasedReward")
drops_campaign_not_started: bool = Field(..., alias="dropsCampaignNotStarted")
reward_type: str | None = Field(None, alias="rewardType")
account_link_url: str = Field(..., alias="accountLinkUrl")
model_config = {"extra": "forbid"}
class ChzzkApiResponseV2(BaseModel):
"""Pydantic schema for api v2 API response."""
code: int
message: Any | None
content: ChzzkCampaignV2
model_config = {"extra": "forbid"}