""" URL configuration for ThrillWiki API v1. This module provides unified API routing following RESTful conventions and DRF Router patterns for automatic URL generation. """ from django.urls import include, path from rest_framework.routers import DefaultRouter # Import other views from the views directory from .views import ( HealthCheckAPIView, NewContentAPIView, PerformanceMetricsAPIView, SimpleHealthAPIView, # Trending system views TrendingAPIView, TriggerTrendingCalculationAPIView, ) from .views.discovery import DiscoveryAPIView from .views.leaderboard import leaderboard from .views.reviews import LatestReviewsAPIView from .views.stats import StatsAPIView, StatsRecalculateAPIView from .viewsets_rankings import RideRankingViewSet, TriggerRankingCalculationView # Create the main API router router = DefaultRouter() # Register ranking endpoints router.register(r"rankings", RideRankingViewSet, basename="ranking") app_name = "api_v1" urlpatterns = [ # API Documentation endpoints are handled by main Django URLs # See backend/thrillwiki/urls.py for documentation endpoints # Authentication endpoints path("auth/", include("apps.api.v1.auth.urls")), # Health check endpoints path("health/", HealthCheckAPIView.as_view(), name="health-check"), path("health/simple/", SimpleHealthAPIView.as_view(), name="simple-health"), path( "health/performance/", PerformanceMetricsAPIView.as_view(), name="performance-metrics", ), # Trending system endpoints path("trending/", TrendingAPIView.as_view(), name="trending"), path("discovery/", DiscoveryAPIView.as_view(), name="discovery"), path("new-content/", NewContentAPIView.as_view(), name="new-content"), path( "trending/calculate/", TriggerTrendingCalculationAPIView.as_view(), name="trigger-trending-calculation", ), # Statistics endpoints path("stats/", StatsAPIView.as_view(), name="stats"), path( "stats/recalculate/", StatsRecalculateAPIView.as_view(), name="stats-recalculate", ), # Reviews endpoints path("reviews/latest/", LatestReviewsAPIView.as_view(), name="latest-reviews"), # Leaderboard endpoint path("leaderboard/", leaderboard, name="leaderboard"), # Ranking system endpoints path( "rankings/calculate/", TriggerRankingCalculationView.as_view(), name="trigger-ranking-calculation", ), # Domain-specific API endpoints path("parks/", include("apps.api.v1.parks.urls")), path("rides/", include("apps.api.v1.rides.urls")), path("accounts/", include("apps.api.v1.accounts.urls")), path("history/", include("apps.api.v1.history.urls")), path("email/", include("apps.api.v1.email.urls")), path("core/", include("apps.api.v1.core.urls")), path("maps/", include("apps.api.v1.maps.urls")), path("lists/", include("apps.lists.urls")), path("companies/", include("apps.api.v1.rides.company_urls")), path("moderation/", include("apps.moderation.urls")), path("reviews/", include("apps.reviews.urls")), path("media/", include("apps.media.urls")), path("blog/", include("apps.blog.urls")), path("support/", include("apps.support.urls")), path("images/", include("apps.api.v1.images.urls")), # Cloudflare Images Toolkit API endpoints path("cloudflare-images/", include("django_cloudflareimages_toolkit.urls")), # Include router URLs (for rankings and any other router-registered endpoints) path("", include(router.urls)), ]