mirror of
https://github.com/BEDOLAGA-DEV/remnawave-bedolaga-telegram-bot.git
synced 2026-01-26 06:40:31 +00:00
- Add JWT authentication for cabinet users - Add Telegram WebApp authentication - Add subscription management endpoints - Add balance and transactions endpoints - Add referral system endpoints - Add tickets support for cabinet - Add webhooks and websocket for real-time updates - Add email verification service 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
82 lines
1.9 KiB
Python
82 lines
1.9 KiB
Python
from __future__ import annotations
|
|
|
|
from datetime import datetime
|
|
from typing import Any, Optional
|
|
|
|
from pydantic import BaseModel, Field, HttpUrl
|
|
|
|
|
|
class WebhookCreateRequest(BaseModel):
|
|
name: str = Field(..., min_length=1, max_length=255)
|
|
url: str = Field(..., min_length=1)
|
|
event_type: str = Field(..., min_length=1, max_length=50)
|
|
secret: Optional[str] = Field(default=None, max_length=128)
|
|
description: Optional[str] = Field(default=None)
|
|
|
|
|
|
class WebhookUpdateRequest(BaseModel):
|
|
name: Optional[str] = Field(default=None, min_length=1, max_length=255)
|
|
url: Optional[str] = Field(default=None, min_length=1)
|
|
secret: Optional[str] = Field(default=None, max_length=128)
|
|
description: Optional[str] = None
|
|
is_active: Optional[bool] = None
|
|
|
|
|
|
class WebhookResponse(BaseModel):
|
|
id: int
|
|
name: str
|
|
url: str
|
|
event_type: str
|
|
is_active: bool
|
|
description: Optional[str]
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
last_triggered_at: Optional[datetime]
|
|
failure_count: int
|
|
success_count: int
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
class WebhookListResponse(BaseModel):
|
|
items: list[WebhookResponse]
|
|
total: int
|
|
limit: int
|
|
offset: int
|
|
|
|
|
|
class WebhookDeliveryResponse(BaseModel):
|
|
id: int
|
|
webhook_id: int
|
|
event_type: str
|
|
payload: dict[str, Any]
|
|
response_status: Optional[int]
|
|
response_body: Optional[str]
|
|
status: str
|
|
error_message: Optional[str]
|
|
attempt_number: int
|
|
created_at: datetime
|
|
delivered_at: Optional[datetime]
|
|
next_retry_at: Optional[datetime]
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
class WebhookDeliveryListResponse(BaseModel):
|
|
items: list[WebhookDeliveryResponse]
|
|
total: int
|
|
limit: int
|
|
offset: int
|
|
|
|
|
|
class WebhookStatsResponse(BaseModel):
|
|
total_webhooks: int
|
|
active_webhooks: int
|
|
total_deliveries: int
|
|
successful_deliveries: int
|
|
failed_deliveries: int
|
|
success_rate: float
|
|
|