feat: Update user models with new fields and types; add support for hwidDeviceLimit and HappCrypto

This commit is contained in:
Artem 2025-04-29 23:51:20 +02:00
parent 15ae9e6a20
commit 2b29f74087
No known key found for this signature in database
GPG key ID: 833485276B7902CE
4 changed files with 21 additions and 5 deletions

3
.gitignore vendored
View file

@ -175,4 +175,5 @@ cython_debug/
.pypirc
test.py
.DS_Store
docs/
docs/
openapi/

View file

@ -1,6 +1,6 @@
[project]
name = "remnawave-api"
version = "1.0.7"
version = "1.0.8"
description = "A Python SDK for interacting with the Remnawave API."
authors = [
{name = "Artem",email = "sm1ky@forestsnet.com"}
@ -12,6 +12,8 @@ dependencies = [
"rapid-api-client (==0.6.0)",
"orjson (>=3.10.15,<4.0.0)",
"httpx (>=0.27.2,<0.28.0)",
"pydantic-core (==2.33.1)",
"pydantic[email]",
]
keywords = ["remnawave", "api", "sdk", "proxy", "httpx", "async", "xray"]
classifiers = [

View file

@ -21,6 +21,8 @@ class UserLastConnectedNodeDto(BaseModel):
connected_at: datetime = Field(alias="connectedAt")
node_name: str = Field(alias="nodeName")
class HappCrypto(BaseModel):
cryptoLink: str
class CreateUserRequestDto(BaseModel):
username: Annotated[
@ -55,6 +57,9 @@ class CreateUserRequestDto(BaseModel):
description: Optional[str] = None
telegram_id: Optional[int] = Field(None, serialization_alias="telegramId")
email: Optional[str] = None
hwidDeviceLimit: Optional[int] = Field(
None, serialization_alias="hwidDeviceLimit", strict=True, ge=0
)
activate_all_inbounds: Optional[bool] = Field(
None, serialization_alias="activateAllInbounds"
)
@ -79,6 +84,9 @@ class UpdateUserRequestDto(BaseModel):
description: Optional[str] = None
telegram_id: Optional[int] = Field(None, serialization_alias="telegramId")
email: Optional[str] = None
hwidDeviceLimit: Optional[int] = Field(
None, serialization_alias="hwidDeviceLimit", strict=True, ge=0
)
class UserResponseDto(BaseModel):
@ -103,15 +111,19 @@ class UserResponseDto(BaseModel):
description: Optional[str] = None
telegram_id: Optional[int] = Field(None, alias="telegramId")
email: Optional[str] = None
created_at: datetime = Field(alias="createdAt")
updated_at: datetime = Field(alias="updatedAt")
hwidDeviceLimit: Optional[int] = Field(
None, serialization_alias="hwidDeviceLimit", strict=True, ge=0
)
active_user_inbounds: List[UserActiveInboundsDto] = Field(
alias="activeUserInbounds"
)
created_at: datetime = Field(alias="createdAt")
updated_at: datetime = Field(alias="updatedAt")
subscription_url: str = Field(alias="subscriptionUrl")
last_connected_node: Optional[UserLastConnectedNodeDto] = Field(
None, alias="lastConnectedNode"
)
happ: Optional[HappCrypto] = Field(None, alias="happ")
class EmailUserResponseDto(BaseModel):

View file

@ -5,6 +5,7 @@ from uuid import UUID
from pydantic import BaseModel, Field
from remnawave_api.enums import UserStatus
from remnawave_api.enums.users import TrafficLimitStrategy
class BulkUpdateUsersInboundsRequestDto(BaseModel):
@ -17,7 +18,7 @@ class UpdateUserFields(BaseModel):
traffic_limit_bytes: Optional[int] = Field(
None, serialization_alias="trafficLimitBytes", strict=True, ge=0
)
traffic_limit_strategy: Optional[str] = Field(
traffic_limit_strategy: Optional[TrafficLimitStrategy] = Field(
None, serialization_alias="trafficLimitStrategy"
)
expire_at: Optional[datetime] = Field(None, serialization_alias="expireAt")