Source code for scapi.client.models

from datetime import datetime
from typing import Any, Dict, Optional, TypeAlias

from pydantic import BaseModel, Field

from scapi import enums


Additional: TypeAlias = Dict[str, Any]


[docs] class ClientModel(BaseModel): """Base model for API response.""" pass
[docs] class RegionInfo(ClientModel): """ Game server region information. Endpoint: https://eapi.stalcraft.net/reference#/paths/regions/get """ id: str name: str
[docs] class EmissionState(ClientModel): """ Current and previous emission status. Reference: https://eapi.stalcraft.net/reference#/schemas/EmissionResponse """ current_start: Optional[datetime] = Field(None, alias="currentStart") previous_start: Optional[datetime] = Field(None, alias="previousStart") previous_end: Optional[datetime] = Field(None, alias="previousEnd")
[docs] class ClanInfo(ClientModel): """ Clan details and statistics. Reference: https://eapi.stalcraft.net/reference#/schemas/ClanInfo """ name: str uuid: str = Field(..., alias="id") tag: str level: int level_points: int = Field(..., alias="levelPoints") registration_time: datetime = Field(..., alias="registrationTime") alliance: Optional[enums.Alliance] = Field(None) description: str leader: str member_count: int = Field(..., alias="memberCount")
[docs] class ClanMember(ClientModel): """ Clan member details. Reference: https://eapi.stalcraft.net/reference#/schemas/ClanMember """ name: str rank: enums.ClanRank join_time: datetime = Field(..., alias="joinTime")
[docs] class ClanAffiliation(ClientModel): """ Character clan affiliation. Reference: https://eapi.stalcraft.net/reference#/schemas/CharacterClanInfo """ info: ClanInfo member: ClanMember
[docs] class CharacterInfo(ClientModel): """Basic character metadata.""" name: str uuid: str = Field(..., alias="id") creation_time: datetime = Field(..., alias="creationTime")
[docs] class Character(ClientModel): """ User Character details. Endpoint: https://eapi.stalcraft.net/reference#/paths/region--characters/get """ info: CharacterInfo = Field(..., alias="information") clan: Optional[ClanAffiliation] = Field(None)
[docs] class Statistic(ClientModel): """ Character statistic. Reference: https://eapi.stalcraft.net/reference#/schemas/CharacterStatValue """ id: str type: enums.StatType value: Any
[docs] class CharacterProfile(ClientModel): """ Public character profile. Reference: https://eapi.stalcraft.net/reference#/schemas/CharacterProfileData """ name: str = Field(..., alias="username") uuid: str status: str alliance: Optional[enums.Alliance] = Field(None) last_login: Optional[datetime] = Field(None, alias="lastLogin") displayed_achievements: list[str] = Field(..., alias="displayedAchievements") clan: Optional[ClanAffiliation] = Field(None) stats: list[Statistic]
[docs] class AuctionLot(ClientModel): """ Actual auction item lot. Reference: https://eapi.stalcraft.net/reference#/schemas/Lot """ item_id: str = Field(..., alias="itemId") amount: int start_price: int = Field(..., alias="startPrice") current_price: Optional[int] = Field(None, alias="currentPrice") buyout_price: int = Field(..., alias="buyoutPrice") start_time: datetime = Field(..., alias="startTime") end_time: datetime = Field(..., alias="endTime") additional: Optional[Additional] = Field(None)
[docs] class AuctionPrice(ClientModel): """ Historical auction price entry. Reference: https://eapi.stalcraft.net/reference#/schemas/PriceEntry """ amount: int price: int time: datetime additional: Optional[Additional] = Field(None)
[docs] class OperationParticipant(ClientModel): """ Player statistics in an operation session. Reference: https://eapi.stalcraft.net/reference#/schemas/OperationSessionParticipant """ username: str death: int mob_kills: int = Field(..., alias="mobKills") damage_received: float = Field(..., alias="damageReceived") damage_dealt: float = Field(..., alias="damageDealt") armor_class: str = Field(..., alias="armorClass") armor_item_id: Optional[str] = Field(None, alias="armorItemId") armor_level: int = Field(..., alias="armorLevel") primary_weapon_item_id: Optional[str] = Field(None, alias="primaryWeaponItemId") primary_weapon_level: int = Field(..., alias="primaryWeaponLevel") secondary_weapon_item_id: Optional[str] = Field(None, alias="secondaryWeaponItemId") secondary_weapon_level: int = Field(..., alias="secondaryWeaponLevel")
[docs] class OperationSession(ClientModel): """ Operation session details. Reference: https://eapi.stalcraft.net/reference#/schemas/OperationSession """ id: int map: str start_time: datetime = Field(..., alias="startTime") end_time: datetime = Field(..., alias="endTime") difficulty: int duration_seconds: float = Field(..., alias="sessionDurationSeconds") reward: int = Field(..., alias="difficultyReward") participants: list[OperationParticipant]