From 4366a33b208749e531b93932d2e92b0245456c0a Mon Sep 17 00:00:00 2001 From: masasibata Date: Wed, 1 Jul 2026 12:11:59 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20HWID=20=D0=B8=20subscription=20request?= =?UTF-8?q?=20history=20=E2=80=94=20userUuid=20=D0=B7=D0=B0=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D1=91=D0=BD=20=D0=BD=D0=B0=20userId=20(API=20v2.8.0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Панель Remnawave v2.8.0 в ответах HWID-устройств и истории запросов подписки убрала userUuid и отдаёт userId (number), а также добавила requestIp у HWID-устройств. Webhook/REST-модели SDK не обновили, из-за чего парсинг вебхука user_hwid_devices.* падал с ValidationError: 1 validation error for HwidUserDeviceDto — userUuid Field required. - models/webhook.py: HwidUserDeviceDto — user_uuid -> user_id (Optional), добавлен request_ip; вебхук больше не роняет WebhookUtility.parse_webhook - models/hwid.py: HwidDeviceDto (response) — userUuid -> userId, + requestIp - models/subscription_request_history.py, models/users.py: SubscriptionRequest*Record — userUuid -> userId Request-DTO (Create/Delete...RequestDto) не тронуты — там userUuid остаётся параметром запроса, изменение затрагивает только response-объекты. --- remnawave/models/hwid.py | 3 ++- remnawave/models/subscription_request_history.py | 3 +-- remnawave/models/users.py | 2 +- remnawave/models/webhook.py | 3 ++- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/remnawave/models/hwid.py b/remnawave/models/hwid.py index 8ff3ee1..5223ac9 100644 --- a/remnawave/models/hwid.py +++ b/remnawave/models/hwid.py @@ -22,7 +22,8 @@ class DeleteUserHwidDeviceRequestDto(BaseModel): class HwidDeviceDto(BaseModel): hwid: str - user_uuid: UUID = Field(alias="userUuid") + user_id: int = Field(alias="userId") + request_ip: Optional[str] = Field(None, alias="requestIp") platform: Optional[str] = None os_version: Optional[str] = Field(None, alias="osVersion") device_model: Optional[str] = Field(None, alias="deviceModel") diff --git a/remnawave/models/subscription_request_history.py b/remnawave/models/subscription_request_history.py index 3987304..4fa9dee 100644 --- a/remnawave/models/subscription_request_history.py +++ b/remnawave/models/subscription_request_history.py @@ -1,13 +1,12 @@ from datetime import datetime from typing import List, Optional -from uuid import UUID from pydantic import BaseModel, Field class SubscriptionRequestHistoryRecord(BaseModel): id: int - user_uuid: UUID = Field(alias="userUuid") + user_id: int = Field(alias="userId") request_ip: Optional[str] = Field(alias="requestIp") user_agent: Optional[str] = Field(alias="userAgent") request_at: datetime = Field(alias="requestAt") diff --git a/remnawave/models/users.py b/remnawave/models/users.py index 18bff5b..02746bf 100644 --- a/remnawave/models/users.py +++ b/remnawave/models/users.py @@ -222,7 +222,7 @@ class ResolveUserResponseDto(BaseModel): class SubscriptionRequestRecord(BaseModel): """Subscription request history record""" id: int - user_uuid: UUID = Field(alias="userUuid") + user_id: int = Field(alias="userId") request_at: datetime = Field(alias="requestAt") request_ip: Optional[str] = Field(alias="requestIp") user_agent: Optional[str] = Field(alias="userAgent") diff --git a/remnawave/models/webhook.py b/remnawave/models/webhook.py index 1a539bd..618aee2 100644 --- a/remnawave/models/webhook.py +++ b/remnawave/models/webhook.py @@ -119,7 +119,8 @@ class UserEventDto(BaseModel): class HwidUserDeviceDto(BaseModel): hwid: str - user_uuid: UUID + user_id: Optional[int] = None + request_ip: Optional[str] = None platform: Optional[str] = None os_version: Optional[str] = None device_model: Optional[str] = None