11from datetime import datetime
2- from typing import Annotated , List , Optional
2+ from typing import Annotated
33from uuid import UUID
44
55from pydantic import (
@@ -16,8 +16,8 @@ class UserActiveInboundsDto(BaseModel):
1616 uuid : UUID
1717 tag : str
1818 type : str
19- network : Optional [ str ] = None
20- security : Optional [ str ] = None
19+ network : str | None = None
20+ security : str | None = None
2121
2222
2323class UserLastConnectedNodeDto (BaseModel ):
@@ -39,119 +39,115 @@ class CreateUserRequestDto(BaseModel):
3939 username : Annotated [
4040 str , StringConstraints (pattern = r"^[a-zA-Z0-9_-]+$" , min_length = 3 , max_length = 36 )
4141 ]
42- created_at : Optional [datetime ] = Field (None , serialization_alias = "createdAt" )
43- status : Optional [UserStatus ] = None
44- subscription_uuid : Optional [str ] = Field (
45- None , serialization_alias = "subscriptionUuid"
46- )
47- short_uuid : Optional [str ] = Field (None , serialization_alias = "shortUuid" )
42+ created_at : datetime | None = Field (None , serialization_alias = "createdAt" )
43+ status : UserStatus | None = None
44+ short_uuid : str | None = Field (None , serialization_alias = "shortUuid" )
4845 trojan_password : Annotated [
49- Optional [ str ] , StringConstraints (min_length = 8 , max_length = 32 )
46+ str | None , StringConstraints (min_length = 8 , max_length = 32 )
5047 ] = Field (None , serialization_alias = "trojanPassword" )
51- vless_uuid : Optional [ str ] = Field (None , serialization_alias = "vlessUuid" )
48+ vless_uuid : str | None = Field (None , serialization_alias = "vlessUuid" )
5249 ss_password : Annotated [
53- Optional [ str ] , StringConstraints (min_length = 8 , max_length = 32 )
50+ str | None , StringConstraints (min_length = 8 , max_length = 32 )
5451 ] = Field (None , serialization_alias = "ssPassword" )
55- traffic_limit_bytes : Optional [ int ] = Field (
52+ traffic_limit_bytes : int | None = Field (
5653 None , serialization_alias = "trafficLimitBytes" , strict = True , ge = 0
5754 )
58- traffic_limit_strategy : Optional [ TrafficLimitStrategy ] = Field (
55+ traffic_limit_strategy : TrafficLimitStrategy | None = Field (
5956 None , serialization_alias = "trafficLimitStrategy"
6057 )
61- last_traffic_reset_at : Optional [ datetime ] = Field (
58+ last_traffic_reset_at : datetime | None = Field (
6259 None , serialization_alias = "lastTrafficResetAt"
6360 )
64- description : Optional [ str ] = None
65- tag : Optional [ str ] = None
66- telegram_id : Optional [ int ] = Field (None , serialization_alias = "telegramId" )
67- email : Optional [ str ] = None
68- hwidDeviceLimit : Optional [ int ] = Field (
61+ description : str | None = None
62+ tag : str | None = None
63+ telegram_id : int | None = Field (None , serialization_alias = "telegramId" )
64+ email : str | None = None
65+ hwidDeviceLimit : int | None = Field (
6966 None , serialization_alias = "hwidDeviceLimit" , strict = True , ge = 0
7067 )
71- active_internal_squads : Optional [ List [ str ]] = Field (
68+ active_internal_squads : list [ str ] | None = Field (
7269 None , serialization_alias = "activeInternalSquads"
7370 )
7471
7572
7673class UpdateUserRequestDto (BaseModel ):
7774 uuid : UUID
78- active_internal_squads : Optional [ List [ str ]] = Field (
75+ active_internal_squads : list [ str ] | None = Field (
7976 None , serialization_alias = "activeInternalSquads"
8077 )
81- description : Optional [ str ] = None
82- email : Optional [ str ] = None
83- expire_at : Optional [ datetime ] = Field (None , serialization_alias = "expireAt" )
84- hwidDeviceLimit : Optional [ int ] = Field (
78+ description : str | None = None
79+ email : str | None = None
80+ expire_at : datetime | None = Field (None , serialization_alias = "expireAt" )
81+ hwidDeviceLimit : int | None = Field (
8582 None , serialization_alias = "hwidDeviceLimit" , strict = True , ge = 0
8683 )
87- status : Optional [ UserStatus ] = None
88- tag : Optional [ str ] = None
89- telegram_id : Optional [ int ] = Field (None , serialization_alias = "telegramId" )
90- traffic_limit_bytes : Optional [ int ] = Field (
84+ status : UserStatus | None = None
85+ tag : str | None = None
86+ telegram_id : int | None = Field (None , serialization_alias = "telegramId" )
87+ traffic_limit_bytes : int | None = Field (
9188 None , serialization_alias = "trafficLimitBytes" , strict = True , ge = 0
9289 )
93- traffic_limit_strategy : Optional [ TrafficLimitStrategy ] = Field (
90+ traffic_limit_strategy : TrafficLimitStrategy | None = Field (
9491 None , serialization_alias = "trafficLimitStrategy"
9592 )
9693
9794
9895class UserResponseDto (BaseModel ):
9996 uuid : UUID
100- subscription_uuid : Optional [UUID ] = Field (None , alias = "subscriptionUuid" )
10197 short_uuid : str = Field (alias = "shortUuid" )
10298 username : str
103- status : Optional [ UserStatus ] = None
99+ status : UserStatus | None = None
104100 used_traffic_bytes : float = Field (alias = "usedTrafficBytes" )
105101 lifetime_used_traffic_bytes : float = Field (alias = "lifetimeUsedTrafficBytes" )
106- traffic_limit_bytes : Optional [ int ] = Field (None , alias = "trafficLimitBytes" )
107- traffic_limit_strategy : Optional [ str ] = Field (None , alias = "trafficLimitStrategy" )
108- sub_last_user_agent : Optional [ str ] = Field (None , alias = "subLastUserAgent" )
109- sub_last_opened_at : Optional [ datetime ] = Field (None , alias = "subLastOpenedAt" )
110- expire_at : Optional [ datetime ] = Field (None , alias = "expireAt" )
111- online_at : Optional [ datetime ] = Field (None , alias = "onlineAt" )
112- sub_revoked_at : Optional [ datetime ] = Field (None , alias = "subRevokedAt" )
113- last_traffic_reset_at : Optional [ datetime ] = Field (None , alias = "lastTrafficResetAt" )
102+ traffic_limit_bytes : int | None = Field (None , alias = "trafficLimitBytes" )
103+ traffic_limit_strategy : str | None = Field (None , alias = "trafficLimitStrategy" )
104+ sub_last_user_agent : str | None = Field (None , alias = "subLastUserAgent" )
105+ sub_last_opened_at : datetime | None = Field (None , alias = "subLastOpenedAt" )
106+ expire_at : datetime | None = Field (None , alias = "expireAt" )
107+ online_at : datetime | None = Field (None , alias = "onlineAt" )
108+ sub_revoked_at : datetime | None = Field (None , alias = "subRevokedAt" )
109+ last_traffic_reset_at : datetime | None = Field (None , alias = "lastTrafficResetAt" )
114110 trojan_password : str = Field (alias = "trojanPassword" )
115111 vless_uuid : UUID = Field (alias = "vlessUuid" )
116112 ss_password : str = Field (alias = "ssPassword" )
117- description : Optional [ str ] = None
118- telegram_id : Optional [ int ] = Field (None , alias = "telegramId" )
119- email : Optional [ str ] = None
120- hwidDeviceLimit : Optional [ int ] = Field (
113+ description : str | None = None
114+ telegram_id : int | None = Field (None , alias = "telegramId" )
115+ email : str | None = None
116+ hwidDeviceLimit : int | None = Field (
121117 None , serialization_alias = "hwidDeviceLimit" , strict = True , ge = 0
122118 )
123- active_internal_squads : Optional [ List [ ActiveInternalSquadDto ]] = Field (
119+ active_internal_squads : list [ ActiveInternalSquadDto ] | None = Field (
124120 None , alias = "activeInternalSquads"
125121 )
126- subscription_url : str = Field (alias = "subscriptionUrl" )
127- first_connected : Optional [ datetime ] = Field (None , alias = "firstConnectedAt" )
128- last_trigger_threshold : Optional [ int ] = Field (None , alias = "lastTriggeredThreshold" )
129- last_connected_node : Optional [ UserLastConnectedNodeDto ] = Field (
122+ subscription_url : str | None = Field (None , alias = "subscriptionUrl" )
123+ first_connected : datetime | None = Field (None , alias = "firstConnectedAt" )
124+ last_trigger_threshold : int | None = Field (None , alias = "lastTriggeredThreshold" )
125+ last_connected_node : UserLastConnectedNodeDto | None = Field (
130126 None , alias = "lastConnectedNode"
131127 )
132- happ : Optional [ HappCrypto ] = Field (None , alias = "happ" )
133- tag : Optional [ str ] = Field (None , alias = "tag" )
128+ happ : HappCrypto | None = Field (None , alias = "happ" )
129+ tag : str | None = Field (None , alias = "tag" )
134130 created_at : datetime = Field (alias = "createdAt" )
135131 updated_at : datetime = Field (alias = "updatedAt" )
136132
137133
138- class EmailUserResponseDto (RootModel [List [UserResponseDto ]]):
134+ class EmailUserResponseDto (RootModel [list [UserResponseDto ]]):
139135 def __iter__ (self ):
140136 return iter (self .root )
141137
142138 def __getitem__ (self , item ):
143139 return self .root [item ]
144140
145141
146- class TagUserResponseDto (RootModel [List [UserResponseDto ]]):
142+ class TagUserResponseDto (RootModel [list [UserResponseDto ]]):
147143 def __iter__ (self ):
148144 return iter (self .root )
149145
150146 def __getitem__ (self , item ):
151147 return self .root [item ]
152148
153149
154- class TelegramUserResponseDto (RootModel [List [UserResponseDto ]]):
150+ class TelegramUserResponseDto (RootModel [list [UserResponseDto ]]):
155151 def __iter__ (self ):
156152 return iter (self .root )
157153
@@ -160,7 +156,7 @@ def __getitem__(self, item):
160156
161157
162158class UsersResponseDto (BaseModel ):
163- users : List [UserResponseDto ]
159+ users : list [UserResponseDto ]
164160 total : float
165161
166162
@@ -169,7 +165,7 @@ class DeleteUserResponseDto(BaseModel):
169165
170166
171167class TagsResponseDto (BaseModel ):
172- tags : List [str ]
168+ tags : list [str ]
173169
174170
175171class CreateUserResponseDto (UserResponseDto ):
@@ -213,7 +209,7 @@ class GetUserByUsernameResponseDto(UserResponseDto):
213209
214210
215211class RevokeUserRequestDto (BaseModel ):
216- short_uuid : Optional [ str ] = Field (
212+ short_uuid : str | None = Field (
217213 None ,
218214 serialization_alias = "shortUuid" ,
219215 description = "Optional. If not provided, a new short UUID will be generated by Remnawave. Please note that it is strongly recommended to allow Remnawave to generate the short UUID." ,
0 commit comments