mirror of
https://github.com/remnawave/python-sdk.git
synced 2026-08-27 11:51:50 +00:00
feat: Обновить модели для поддержки новых типов данных и улучшить валидацию полей
This commit is contained in:
parent
641d70a495
commit
060b2f2d70
3 changed files with 44 additions and 12 deletions
|
|
@ -38,7 +38,8 @@ pip install git+https://github.com/sm1ky/remnawave-api.git@development
|
|||
|
||||
| Contract Version | Remnawave Panel Version |
|
||||
| ---------------- | ----------------------- |
|
||||
| 1.1.2 | >=1.6.3,<=1.6.8 |
|
||||
| 1.1.3 | >=1.6.12 |
|
||||
| 1.1.2 | >=1.6.3,<=1.6.11 |
|
||||
| 1.1.1 | 1.6.1, 1.6.2 |
|
||||
| 1.1.0 | 1.6.0 |
|
||||
| 1.0.8 | 1.5.7 |
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
[project]
|
||||
name = "remnawave-api"
|
||||
version = "1.1.2"
|
||||
version = "1.1.3"
|
||||
description = "A Python SDK for interacting with the Remnawave API."
|
||||
authors = [
|
||||
{name = "Artem",email = "sm1ky@forestsnet.com"}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
from datetime import datetime
|
||||
from typing import List, Optional
|
||||
from typing import Annotated, List, Literal, Optional
|
||||
from uuid import UUID
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
from pydantic import BaseModel, EmailStr, Field, constr
|
||||
|
||||
from remnawave_api.enums import UserStatus
|
||||
from remnawave_api.enums.users import TrafficLimitStrategy
|
||||
|
|
@ -12,6 +12,10 @@ class BulkUpdateUsersInboundsRequestDto(BaseModel):
|
|||
uuids: List[UUID]
|
||||
active_user_inbounds: List[UUID] = Field(serialization_alias="activeUserInbounds")
|
||||
|
||||
TagStr = Annotated[
|
||||
str,
|
||||
Field(min_length=1, max_length=16, pattern=r"^[A-Z0-9_]+$")
|
||||
]
|
||||
|
||||
class UpdateUserFields(BaseModel):
|
||||
status: Optional[UserStatus] = None
|
||||
|
|
@ -23,25 +27,52 @@ class UpdateUserFields(BaseModel):
|
|||
)
|
||||
expire_at: Optional[datetime] = Field(None, serialization_alias="expireAt")
|
||||
description: Optional[str] = None
|
||||
tag: Optional[str] = None
|
||||
tag: Optional[TagStr] = Field(
|
||||
None,
|
||||
description="Tag for user. Must be uppercase, alphanumeric, and can include underscores. Max length 16 characters."
|
||||
)
|
||||
telegram_id: Optional[int] = Field(None, serialization_alias="telegramId")
|
||||
email: Optional[str] = None
|
||||
|
||||
|
||||
class BulkAllUpdateUsersRequestDto(BaseModel):
|
||||
status: Optional[str] = None
|
||||
status: Optional[Literal["ACTIVE", "DISABLED", "LIMITED", "EXPIRED"]] = Field(
|
||||
"ACTIVE"
|
||||
)
|
||||
|
||||
traffic_limit_bytes: Optional[int] = Field(
|
||||
None, serialization_alias="trafficLimitBytes", strict=True, ge=0
|
||||
None,
|
||||
serialization_alias="trafficLimitBytes",
|
||||
ge=0,
|
||||
description="Traffic limit in bytes. 0 - unlimited"
|
||||
)
|
||||
traffic_limit_strategy: Optional[str] = Field(
|
||||
None, serialization_alias="trafficLimitStrategy"
|
||||
|
||||
traffic_limit_strategy: Optional[Literal["NO_RESET", "DAY", "WEEK", "MONTH"]] = Field(
|
||||
None,
|
||||
serialization_alias="trafficLimitStrategy",
|
||||
description="Traffic limit reset strategy"
|
||||
)
|
||||
expire_at: Optional[datetime] = Field(None, serialization_alias="expireAt")
|
||||
|
||||
expire_at: Optional[datetime] = Field(
|
||||
None,
|
||||
serialization_alias="expireAt",
|
||||
description="Expiration date"
|
||||
)
|
||||
|
||||
description: Optional[str] = None
|
||||
tag: Optional[str] = None
|
||||
telegram_id: Optional[int] = Field(None, serialization_alias="telegramId")
|
||||
|
||||
telegram_id: Optional[int] = Field(
|
||||
None,
|
||||
serialization_alias="telegramId"
|
||||
)
|
||||
|
||||
email: Optional[str] = None
|
||||
|
||||
tag: Optional[TagStr] = Field(
|
||||
None,
|
||||
description="Tag for user. Must be uppercase, alphanumeric, and can include underscores. Max length 16 characters."
|
||||
)
|
||||
|
||||
|
||||
class BulkResponseDto(BaseModel):
|
||||
affected_rows: int = Field(alias="affectedRows")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue