from __future__ import annotations from pydantic import BaseModel, Field class CreateServerRequest(BaseModel): name: str description: str | None = None game_type: str = "arma3" exe_path: str game_port: int = Field(ge=1024, le=65535) rcon_port: int | None = Field(default=None, ge=1024, le=65535) auto_restart: bool = False max_restarts: int = Field(default=3, ge=0, le=20) class UpdateServerRequest(BaseModel): name: str | None = None description: str | None = None exe_path: str | None = None game_port: int | None = Field(default=None, ge=1024, le=65535) rcon_port: int | None = Field(default=None, ge=1024, le=65535) auto_restart: bool | None = None max_restarts: int | None = None class StopServerRequest(BaseModel): force: bool = False reason: str | None = None class UpdateConfigSectionRequest(BaseModel): config_version: int | None = None # Required for optimistic locking on PUT # All other fields come from the adapter's JSON Schema — passed through as-is model_config = {"extra": "allow"}