# management/urls.py # -*- coding: utf-8 -*- from django.urls import path, include from rest_framework_simplejwt.views import TokenRefreshView from rest_framework.routers import DefaultRouter from .views import ( CustomTokenObtainPairView, LogoutAPIView, TelegramWebhookView, PushSubscriptionAPIView, GenerateTelegramTokenAPIView, VerifyTelegramTokenAPIView, PanelViewSet, LicenseViewSet, MarzbanAdminViewSet, PlanViewSet, EndUserViewSet, SubscriptionViewSet, PaymentViewSet, PaymentReceiptUploadAPIView, # New views for payment system PaymentMethodViewSet, PaymentDetailAPIView, EndUserPaymentOptionsAPIView, # New views that were recently added AdminLevel3SubscriptionViewSet, PurchaseSubscriptionForUserAPIView, ) # Create a router and register our viewsets with it. router = DefaultRouter() router.register(r'panels', PanelViewSet, basename='panel') router.register(r'licenses', LicenseViewSet, basename='license') router.register(r'plans', PlanViewSet, basename='plan') router.register(r'endusers', EndUserViewSet, basename='enduser') router.register(r'subscriptions', SubscriptionViewSet, basename='subscription') router.register(r'payments', PaymentViewSet, basename='payment') # New: ViewSet for managing payment methods by Admin Level 2 router.register(r'payment-methods', PaymentMethodViewSet, basename='payment-method') # New: ViewSet for Admin Level 3 to manage subscriptions router.register(r'admin/subscriptions', AdminLevel3SubscriptionViewSet, basename='admin-subscription') # The MarzbanAdminViewSet is a custom ViewSet, so we define its paths manually. marzban_admin_list = MarzbanAdminViewSet.as_view({ 'get': 'list', 'post': 'create' }) marzban_admin_detail = MarzbanAdminViewSet.as_view({ 'delete': 'destroy' }) urlpatterns = [ # API endpoints path('api/token/', CustomTokenObtainPairView.as_view(), name='token_obtain_pair'), path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'), path('api/logout/', LogoutAPIView.as_view(), name='logout'), # Use the router to handle all ViewSet API endpoints path('api/', include(router.urls)), # Marzban Admin Management (manual routing for a custom ViewSet) path('api/marzban-admins/', marzban_admin_list, name='api_marzban_admin_list'), path('api/marzban-admins//', marzban_admin_detail, name='api_marzban_admin_detail'), # Telegram & Push notifications path('telegram-webhook//', TelegramWebhookView.as_view(), name='telegram_webhook'), path('api/push-subscription/', PushSubscriptionAPIView.as_view(), name='push_subscription'), path('api/telegram-token/', GenerateTelegramTokenAPIView.as_view(), name='generate_telegram_token'), path('api/verify-telegram-token/', VerifyTelegramTokenAPIView.as_view(), name='verify_telegram_token'), path('api/upload-receipt/', PaymentReceiptUploadAPIView.as_view(), name='upload_receipt'), # New: Payment System URLs path('api/admin/payment-details/', PaymentDetailAPIView.as_view(), name='admin_payment_details'), path('api/enduser/payment-options/', EndUserPaymentOptionsAPIView.as_view(), name='enduser_payment_options'), # New: URL for EndUser to purchase subscriptions for other users path('api/purchase-subscription/', PurchaseSubscriptionForUserAPIView.as_view(), name='purchase_subscription'), ]