diff --git a/remnawave/controllers/users_bulk_actions.py b/remnawave/controllers/users_bulk_actions.py index 702ad09..a8006da 100644 --- a/remnawave/controllers/users_bulk_actions.py +++ b/remnawave/controllers/users_bulk_actions.py @@ -9,7 +9,7 @@ from remnawave.models import ( BulkAllUpdateUsersRequestDto, BulkAllUpdateUsersResponseDto, BulkResponseDto, - BulkUpdateUsersInboundsRequestDto, + BulkUpdateUsersInternalSquadsRequestDto, UpdateUserFields, ) from remnawave.rapid import AttributeBody, BaseController, patch, post @@ -62,12 +62,12 @@ class UsersBulkActionsController(BaseController): """Bulk Update Users""" ... - @post("/users/bulk/update-inbounds", response_class=BulkResponseDto) - async def bulk_update_users_inbounds( + @post("/users/bulk/update-squads", response_class=BulkResponseDto) + async def bulk_update_users_internal_squads( self, - body: Annotated[BulkUpdateUsersInboundsRequestDto, PydanticBody()], + body: Annotated[BulkUpdateUsersInternalSquadsRequestDto, PydanticBody()], ) -> BulkResponseDto: - """Bulk Update Users Inbounds""" + """Bulk Update Users Internal Squads""" ... @post("/users/bulk/all/update", response_class=BulkAllUpdateUsersResponseDto) diff --git a/remnawave/models/__init__.py b/remnawave/models/__init__.py index 71d35c1..a2b7c55 100644 --- a/remnawave/models/__init__.py +++ b/remnawave/models/__init__.py @@ -220,7 +220,7 @@ from .users_bulk_actions import ( BulkAllUpdateUsersRequestDto, BulkAllUpdateUsersResponseDto, BulkResponseDto, - BulkUpdateUsersInboundsRequestDto, + BulkUpdateUsersInternalSquadsRequestDto, UpdateUserFields, ) from .users_stats import UserUsageByRange, UserUsageByRangeResponseDto @@ -401,7 +401,7 @@ __all__ = [ "BulkAllUpdateUsersRequestDto", "BulkAllUpdateUsersResponseDto", "BulkResponseDto", - "BulkUpdateUsersInboundsRequestDto", + "BulkUpdateUsersInternalSquadsRequestDto", "UpdateUserFields", # Users stats models "UserUsageByRange", diff --git a/remnawave/models/users.py b/remnawave/models/users.py index bc6b4a7..3ef85f7 100644 --- a/remnawave/models/users.py +++ b/remnawave/models/users.py @@ -35,9 +35,11 @@ class HappCrypto(BaseModel): class CreateUserRequestDto(BaseModel): + expire_at: datetime = Field(..., serialization_alias="expireAt") username: Annotated[ str, StringConstraints(pattern=r"^[a-zA-Z0-9_-]+$", min_length=3, max_length=36) ] + created_at: Optional[datetime] = Field(None, serialization_alias="createdAt") status: Optional[UserStatus] = None subscription_uuid: Optional[str] = Field( None, serialization_alias="subscriptionUuid" @@ -56,11 +58,6 @@ class CreateUserRequestDto(BaseModel): traffic_limit_strategy: Optional[TrafficLimitStrategy] = Field( None, serialization_alias="trafficLimitStrategy" ) - active_user_inbounds: Optional[List[str]] = Field( - None, serialization_alias="activeUserInbounds" - ) - expire_at: datetime = Field(..., serialization_alias="expireAt") - created_at: Optional[datetime] = Field(None, serialization_alias="createdAt") last_traffic_reset_at: Optional[datetime] = Field( None, serialization_alias="lastTrafficResetAt" ) @@ -78,30 +75,24 @@ class CreateUserRequestDto(BaseModel): class UpdateUserRequestDto(BaseModel): uuid: UUID + active_internal_squads: Optional[List[str]] = Field( + None, serialization_alias="activeInternalSquads" + ) + description: Optional[str] = None + email: Optional[str] = None + expire_at: Optional[datetime] = Field(None, serialization_alias="expireAt") + hwidDeviceLimit: Optional[int] = Field( + None, serialization_alias="hwidDeviceLimit", strict=True, ge=0 + ) status: Optional[UserStatus] = None + tag: Optional[str] = None + telegram_id: Optional[int] = Field(None, serialization_alias="telegramId") traffic_limit_bytes: Optional[int] = Field( None, serialization_alias="trafficLimitBytes", strict=True, ge=0 ) traffic_limit_strategy: Optional[TrafficLimitStrategy] = Field( None, serialization_alias="trafficLimitStrategy" ) - active_user_inbounds: Optional[List[str]] = Field( - None, serialization_alias="activeUserInbounds" - ) - expire_at: Optional[datetime] = Field(None, serialization_alias="expireAt") - last_traffic_reset_at: Optional[datetime] = Field( - None, serialization_alias="lastTrafficResetAt" - ) - description: Optional[str] = None - tag: 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 - ) - active_internal_squads: Optional[List[str]] = Field( - None, serialization_alias="activeInternalSquads" - ) class UserResponseDto(BaseModel): @@ -129,9 +120,6 @@ class UserResponseDto(BaseModel): hwidDeviceLimit: Optional[int] = Field( None, serialization_alias="hwidDeviceLimit", strict=True, ge=0 ) - active_user_inbounds: Optional[List[UserActiveInboundsDto]] = Field( - None, alias="activeUserInbounds" - ) active_internal_squads: Optional[List[ActiveInternalSquadDto]] = Field( None, alias="activeInternalSquads" ) diff --git a/remnawave/models/users_bulk_actions.py b/remnawave/models/users_bulk_actions.py index 0f41baa..b76fe93 100644 --- a/remnawave/models/users_bulk_actions.py +++ b/remnawave/models/users_bulk_actions.py @@ -8,9 +8,9 @@ from remnawave.enums import UserStatus from remnawave.enums.users import TrafficLimitStrategy -class BulkUpdateUsersInboundsRequestDto(BaseModel): +class BulkUpdateUsersInternalSquadsRequestDto(BaseModel): uuids: List[UUID] - active_user_inbounds: List[UUID] = Field(serialization_alias="activeUserInbounds") + active_internal_squads: List[UUID] = Field(serialization_alias="activeInternalSquads") TagStr = Annotated[ str,