feat: добавить модель GetInternalSquadAccessibleNodesResponseDto и эндпоинт для получения доступных узлов внутренней группы

This commit is contained in:
Artem 2025-08-15 23:11:16 +02:00
parent 08f2146d41
commit a117f61204
3 changed files with 38 additions and 2 deletions

View file

@ -15,6 +15,7 @@ from remnawave.models import (
GetInternalSquadByUuidResponseDto,
UpdateInternalSquadRequestDto,
UpdateInternalSquadResponseDto,
GetInternalSquadAccessibleNodesResponseDto,
)
from remnawave.rapid import BaseController, delete, get, patch, post
@ -57,7 +58,10 @@ class InternalSquadsController(BaseController):
"""Delete internal squad"""
...
@post("/internal-squads/{uuid}/bulk-actions/add-users", response_class=AddUsersToInternalSquadResponseDto)
@post(
"/internal-squads/{uuid}/bulk-actions/add-users",
response_class=AddUsersToInternalSquadResponseDto,
)
async def add_users_to_internal_squad(
self,
uuid: Annotated[str, Path(description="UUID of the internal squad")],
@ -65,10 +69,24 @@ class InternalSquadsController(BaseController):
"""Add users to internal squad"""
...
@delete("/internal-squads/{uuid}/bulk-actions/remove-users", response_class=DeleteUsersFromInternalSquadResponseDto)
@delete(
"/internal-squads/{uuid}/bulk-actions/remove-users",
response_class=DeleteUsersFromInternalSquadResponseDto,
)
async def remove_users_from_internal_squad(
self,
uuid: Annotated[str, Path(description="UUID of the internal squad")],
) -> DeleteUsersFromInternalSquadResponseDto:
"""Delete users from internal squad"""
...
@get(
"/internal-squads/{uuid}/accessible-nodes",
response_class=GetInternalSquadAccessibleNodesResponseDto,
)
async def get_accessible_nodes(
self,
uuid: Annotated[str, Path(description="UUID of the internal squad")],
) -> GetInternalSquadAccessibleNodesResponseDto:
"""Get accessible nodes for internal squad"""
...

View file

@ -129,6 +129,7 @@ from .internal_squads import (
InternalSquadDto,
UpdateInternalSquadRequestDto,
UpdateInternalSquadResponseDto,
GetInternalSquadAccessibleNodesResponseDto,
)
from .keygen import GetPubKeyResponseDto, PubKeyResponseDto # Legacy alias
from .nodes import (
@ -274,6 +275,7 @@ __all__ = [
"GetInboundsResponseDto",
"InboundResponseDto",
"InboundsResponseDto", # Legacy alias
"GetInternalSquadAccessibleNodesResponseDto",
# Keygen models
"GetPubKeyResponseDto",
"PubKeyResponseDto", # Legacy alias

View file

@ -84,3 +84,19 @@ class DeleteUsersFromInternalSquadRequestDto(BaseModel):
class DeleteUsersFromInternalSquadResponseDto(BulkActionsResponseDto):
pass
class AccessibleNodeDto(BaseModel):
uuid: UUID
name: str = Field(alias="nodeName")
country_code: Optional[str] = Field(default=None, alias="countryCode")
config_profile_uuid: Optional[UUID] = Field(default=None, alias="configProfileUuid")
config_profile_name: Optional[str] = Field(default=None, alias="configProfileName")
active_inbounds: List[Optional[UUID]] = Field(
default_factory=list, alias="activeInbounds"
)
class GetInternalSquadAccessibleNodesResponseDto(BaseModel):
squad_uuid: UUID = Field(alias="squadUuid")
accessible_nodes: List[AccessibleNodeDto] = Field(alias="accessibleNodes")