Remnawave_python-sdk/remnawave/controllers/nodes_usage_history.py
Artem 950a7ffab3
Add Pydantic models for nodes usage history, subscriptions, and user management
- Implemented models for nodes usage history including NodeInfoDto, GetUserAccessibleNodesResponse, and usage statistics.
- Created subscription-related models such as UserSubscription, SubscriptionInfoData, and various response DTOs for subscription information.
- Developed models for subscription settings, templates, and system statistics, enhancing the API's capability to manage and retrieve subscription configurations.
- Introduced user management models including CreateUserRequestDto, UpdateUserRequestDto, and various response DTOs for user actions.
- Added bulk actions for user updates and statistics tracking, improving the efficiency of user management operations.
- Established a base controller for handling API requests and responses, along with decorators for HTTP methods to streamline API interactions.
- Included utility functions for serialization using orjson for better performance with Pydantic models.
2025-07-03 12:22:16 +02:00

32 lines
1.2 KiB
Python

from typing import Annotated
from rapid_api_client import Path, Query
from remnawave.models import (
GetNodeUserUsageByRangeResponseDto,
GetNodesUsageByRangeResponseDto,
)
from remnawave.rapid import BaseController, get
class NodesUsageHistoryController(BaseController):
@get("/nodes/usage/range", response_class=GetNodesUsageByRangeResponseDto)
async def get_nodes_usage_by_range(
self,
start: Annotated[str, Query(description="Start date", format="date-time")],
end: Annotated[str, Query(description="End date", format="date-time")],
) -> GetNodesUsageByRangeResponseDto:
"""Get nodes usage by range"""
...
class NodesUserUsageHistoryController(BaseController):
@get("/nodes/usage/{uuid}/users/range", response_class=GetNodeUserUsageByRangeResponseDto)
async def get_node_user_usage_by_range(
self,
uuid: Annotated[str, Path(description="UUID of the node")],
start: Annotated[str, Query(description="Start date", format="date-time")],
end: Annotated[str, Query(description="End date", format="date-time")],
) -> GetNodeUserUsageByRangeResponseDto:
"""Get nodes user usage by range"""
...