Files
igny8/backend/igny8_core/plugins/urls.py
2026-01-09 21:38:14 +00:00

63 lines
2.6 KiB
Python

"""
Plugin Distribution System URL Routes
"""
from django.urls import path
from . import views
app_name = 'plugins'
urlpatterns = [
# ============================================================================
# Public Endpoints (No Auth Required)
# ============================================================================
# Download latest version of a plugin
path('<slug:slug>/download/', views.download_plugin, name='download'),
# Check for updates (called by installed plugins)
path('<slug:slug>/check-update/', views.check_update, name='check-update'),
# Get plugin information (WordPress compatible)
path('<slug:slug>/info/', views.plugin_info, name='info'),
# Get latest plugin for a platform
path('<str:platform>/latest/', views.get_latest_plugin, name='latest-by-platform'),
# ============================================================================
# Authenticated Endpoints
# ============================================================================
# Register plugin installation
path('<slug:slug>/register-installation/', views.register_installation, name='register-installation'),
# Report health status
path('<slug:slug>/health-check/', views.health_check, name='health-check'),
# Track download (for analytics)
path('<slug:slug>/track-download/', views.track_download, name='track-download'),
]
# Admin URL patterns (to be included under /api/admin/plugins/)
admin_urlpatterns = [
# List all plugins / Create new plugin
path('', views.AdminPluginListView.as_view(), name='admin-plugin-list'),
# Plugin versions management
path('<slug:slug>/versions/', views.AdminPluginVersionsView.as_view(), name='admin-versions'),
path('<slug:slug>/versions/<str:version>/', views.AdminPluginVersionDetailView.as_view(), name='admin-version-detail'),
# Release a version
path('<slug:slug>/versions/<str:version>/release/', views.admin_release_version, name='admin-release'),
# Push update to installations
path('<slug:slug>/versions/<str:version>/push-update/', views.admin_push_update, name='admin-push-update'),
# View installations
path('installations/', views.AdminPluginInstallationsView.as_view(), name='admin-all-installations'),
path('<slug:slug>/installations/', views.AdminPluginInstallationsView.as_view(), name='admin-installations'),
# Statistics
path('stats/', views.AdminPluginStatsView.as_view(), name='admin-all-stats'),
path('<slug:slug>/stats/', views.AdminPluginStatsView.as_view(), name='admin-stats'),
]