mirror of
https://github.com/remnawave/python-sdk.git
synced 2026-09-02 07:10:27 +00:00
91 lines
No EOL
2.7 KiB
Python
91 lines
No EOL
2.7 KiB
Python
from typing import Annotated, Any, List, Optional
|
|
from uuid import UUID
|
|
|
|
from pydantic import BaseModel, Field, StringConstraints
|
|
|
|
from remnawave.enums import TemplateType
|
|
|
|
|
|
class TemplateResponseDto(BaseModel):
|
|
uuid: UUID
|
|
name: str
|
|
view_position: int = Field(alias="viewPosition")
|
|
template_type: TemplateType = Field(alias="templateType")
|
|
template_json: Any | None = Field(alias="templateJson")
|
|
encoded_template_yaml: str | None = Field(alias="encodedTemplateYaml")
|
|
|
|
|
|
class TemplateInfoDto(BaseModel):
|
|
"""Template info without content - used in list responses"""
|
|
uuid: UUID
|
|
name: str
|
|
view_position: int = Field(alias="viewPosition")
|
|
template_type: TemplateType = Field(alias="templateType")
|
|
template_json: Optional[Any] = Field(None, alias="templateJson")
|
|
encoded_template_yaml: Optional[str] = Field(None, alias="encodedTemplateYaml")
|
|
|
|
|
|
class GetTemplateResponseDto(TemplateResponseDto):
|
|
pass
|
|
|
|
class GetTemplatesData(BaseModel):
|
|
total: float
|
|
templates: List[TemplateInfoDto]
|
|
|
|
class GetTemplatesResponseDto(GetTemplatesData):
|
|
pass
|
|
|
|
|
|
class CreateSubscriptionTemplateRequestDto(BaseModel):
|
|
name: Annotated[str, StringConstraints(min_length=2, max_length=255, pattern=r"^[A-Za-z0-9_\s-]+$")]
|
|
template_type: TemplateType = Field(serialization_alias="templateType")
|
|
|
|
|
|
class CreateSubscriptionTemplateResponseDto(TemplateResponseDto):
|
|
pass
|
|
|
|
|
|
class UpdateTemplateRequestDto(BaseModel):
|
|
uuid: UUID
|
|
name: Optional[Annotated[str, StringConstraints(min_length=2, max_length=255, pattern=r"^[A-Za-z0-9_\s-]+$")]] = None
|
|
template_json: Optional[dict] = Field(None, serialization_alias="templateJson")
|
|
encoded_template_yaml: Optional[str] = Field(
|
|
None, serialization_alias="encodedTemplateYaml"
|
|
)
|
|
|
|
|
|
class UpdateTemplateResponseDto(TemplateResponseDto):
|
|
pass
|
|
|
|
class DeleteTemplateData(BaseModel):
|
|
is_deleted: bool = Field(alias="isDeleted")
|
|
|
|
|
|
class DeleteSubscriptionTemplateResponseDto(DeleteTemplateData):
|
|
pass
|
|
|
|
|
|
class ReorderTemplateItem(BaseModel):
|
|
view_position: int = Field(serialization_alias="viewPosition")
|
|
uuid: UUID
|
|
|
|
|
|
class ReorderSubscriptionTemplatesRequestDto(BaseModel):
|
|
items: List[ReorderTemplateItem]
|
|
|
|
|
|
class ReorderSubscriptionTemplatesResponseDto(GetTemplatesData):
|
|
pass
|
|
|
|
|
|
# Legacy aliases for backward compatibility
|
|
class UpdateTemplateRequestDtoLegacy(BaseModel):
|
|
template_type: TemplateType = Field(serialization_alias="templateType")
|
|
template_json: Optional[dict] = Field(None, serialization_alias="templateJson")
|
|
encoded_template_yaml: Optional[str] = Field(
|
|
None, serialization_alias="encodedTemplateYaml"
|
|
)
|
|
|
|
|
|
class UpdateTemplateResponseDtoLegacy(TemplateResponseDto):
|
|
pass |