74 Zeilen
1.8 KiB
Python
74 Zeilen
1.8 KiB
Python
from pydantic import BaseModel, EmailStr
|
|
from datetime import datetime
|
|
from typing import Optional, Dict, Any
|
|
|
|
class LicenseActivationRequest(BaseModel):
|
|
license_key: str
|
|
machine_id: str
|
|
hardware_hash: str
|
|
os_info: Optional[Dict[str, Any]] = None
|
|
app_version: Optional[str] = None
|
|
|
|
class LicenseActivationResponse(BaseModel):
|
|
success: bool
|
|
message: str
|
|
activation_id: Optional[int] = None
|
|
expires_at: Optional[datetime] = None
|
|
features: Optional[Dict[str, Any]] = None
|
|
|
|
class LicenseVerificationRequest(BaseModel):
|
|
license_key: str
|
|
machine_id: str
|
|
hardware_hash: str
|
|
activation_id: int
|
|
|
|
class LicenseVerificationResponse(BaseModel):
|
|
valid: bool
|
|
message: str
|
|
expires_at: Optional[datetime] = None
|
|
features: Optional[Dict[str, Any]] = None
|
|
requires_update: bool = False
|
|
update_url: Optional[str] = None
|
|
|
|
class VersionCheckRequest(BaseModel):
|
|
current_version: str
|
|
license_key: str
|
|
|
|
class VersionCheckResponse(BaseModel):
|
|
latest_version: str
|
|
current_version: str
|
|
update_available: bool
|
|
is_mandatory: bool
|
|
download_url: Optional[str] = None
|
|
release_notes: Optional[str] = None
|
|
|
|
class SessionStartRequest(BaseModel):
|
|
license_key: str
|
|
machine_id: str
|
|
hardware_id: str
|
|
hardware_hash: str
|
|
version: str
|
|
ip_address: Optional[str] = None
|
|
|
|
class SessionStartResponse(BaseModel):
|
|
success: bool
|
|
message: str
|
|
session_token: Optional[str] = None
|
|
requires_update: bool = False
|
|
update_url: Optional[str] = None
|
|
whats_new: Optional[str] = None
|
|
|
|
class SessionHeartbeatRequest(BaseModel):
|
|
session_token: str
|
|
license_key: str
|
|
|
|
class SessionHeartbeatResponse(BaseModel):
|
|
success: bool
|
|
message: str
|
|
|
|
class SessionEndRequest(BaseModel):
|
|
session_token: str
|
|
|
|
class SessionEndResponse(BaseModel):
|
|
success: bool
|
|
message: str |