Remnawave_python-sdk/remnawave/models/subscriptions_settings.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

77 lines
No EOL
3.2 KiB
Python

from datetime import datetime
from typing import Annotated, Dict, List, Optional
from uuid import UUID
from pydantic import BaseModel, Field, StringConstraints
class SubscriptionSettingsResponseDto(BaseModel):
uuid: UUID
profile_title: str = Field(alias="profileTitle")
support_link: str = Field(alias="supportLink")
profile_update_interval: int = Field(
alias="profileUpdateInterval", strict=True, ge=1
)
is_profile_webpage_url_enabled: bool = Field(alias="isProfileWebpageUrlEnabled")
serve_json_at_base_subscription: bool = Field(alias="serveJsonAtBaseSubscription")
add_username_to_base_subscription: bool = Field(
alias="addUsernameToBaseSubscription"
)
show_custom_remarks: bool = Field(alias="isShowCustomRemarks")
happ_announce: Optional[str] = Field(None, alias="happAnnounce")
happ_routing: Optional[str] = Field(None, alias="happRouting")
expired_users_remarks: List[str] = Field(alias="expiredUsersRemarks")
limited_users_remarks: List[str] = Field(alias="limitedUsersRemarks")
disabled_users_remarks: List[str] = Field(alias="disabledUsersRemarks")
custom_response_headers: Optional[Dict[str, str]] = Field(
None, alias="customResponseHeaders"
)
randomize_hosts: bool = Field(alias="randomizeHosts")
created_at: datetime = Field(alias="createdAt")
updated_at: datetime = Field(alias="updatedAt")
class GetSubscriptionSettingsResponseDto(SubscriptionSettingsResponseDto):
pass
class UpdateSubscriptionSettingsResponseDto(SubscriptionSettingsResponseDto):
pass
class UpdateSubscriptionSettingsRequestDto(BaseModel):
uuid: UUID
profile_title: Optional[str] = Field(None, serialization_alias="profileTitle")
support_link: Optional[str] = Field(None, serialization_alias="supportLink")
profile_update_interval: Optional[int] = Field(
None, serialization_alias="profileUpdateInterval"
)
is_profile_webpage_url_enabled: Optional[bool] = Field(
None, serialization_alias="isProfileWebpageUrlEnabled"
)
serve_json_at_base_subscription: Optional[bool] = Field(
None, serialization_alias="serveJsonAtBaseSubscription"
)
add_username_to_base_subscription: Optional[bool] = Field(
None, serialization_alias="addUsernameToBaseSubscription"
)
is_show_custom_remarks: Optional[bool] = Field(
None, serialization_alias="isShowCustomRemarks"
)
happ_announce: Annotated[Optional[str], StringConstraints(max_length=200)] = Field(
None, serialization_alias="happAnnounce"
)
happ_routing: Optional[str] = Field(None, serialization_alias="happRouting")
expired_users_remarks: Optional[List[str]] = Field(
None, serialization_alias="expiredUsersRemarks"
)
limited_users_remarks: Optional[List[str]] = Field(
None, serialization_alias="limitedUsersRemarks"
)
disabled_users_remarks: Optional[List[str]] = Field(
None, serialization_alias="disabledUsersRemarks"
)
custom_response_headers: Optional[Dict[str, str]] = Field(
None, serialization_alias="customResponseHeaders"
)
randomize_hosts: Optional[bool] = Field(None, serialization_alias="randomizeHosts")