"""Comprehensive URL routes for Parks domain (API v1). This file exposes a maximal set of "full-fat" endpoints implemented in `apps.api.v1.parks.park_views` and `apps.api.v1.parks.views`. Endpoints are intentionally expansive to match the rides API functionality and provide complete feature parity for parks management. """ from django.urls import path, include from rest_framework.routers import DefaultRouter from .park_views import ( ParkListCreateAPIView, ParkDetailAPIView, FilterOptionsAPIView, CompanySearchAPIView, ParkSearchSuggestionsAPIView, ParkImageSettingsAPIView, ) from .park_rides_views import ( ParkRidesListAPIView, ParkRideDetailAPIView, ParkComprehensiveDetailAPIView, ) from .views import ParkPhotoViewSet, HybridParkAPIView, ParkFilterMetadataAPIView from .ride_photos_views import RidePhotoViewSet from .ride_reviews_views import RideReviewViewSet # Create router for nested photo endpoints router = DefaultRouter() router.register(r"", ParkPhotoViewSet, basename="park-photo") # Create routers for nested ride endpoints ride_photos_router = DefaultRouter() ride_photos_router.register(r"", RidePhotoViewSet, basename="ride-photo") ride_reviews_router = DefaultRouter() ride_reviews_router.register(r"", RideReviewViewSet, basename="ride-review") app_name = "api_v1_parks" urlpatterns = [ # Core list/create endpoints path("", ParkListCreateAPIView.as_view(), name="park-list-create"), # Hybrid filtering endpoints path("hybrid/", HybridParkAPIView.as_view(), name="park-hybrid-list"), path("hybrid/filter-metadata/", ParkFilterMetadataAPIView.as_view(), name="park-hybrid-filter-metadata"), # Filter options path("filter-options/", FilterOptionsAPIView.as_view(), name="park-filter-options"), # Autocomplete / suggestion endpoints path( "search/companies/", CompanySearchAPIView.as_view(), name="park-search-companies", ), path( "search-suggestions/", ParkSearchSuggestionsAPIView.as_view(), name="park-search-suggestions", ), # Detail and action endpoints - supports both ID and slug path("/", ParkDetailAPIView.as_view(), name="park-detail"), # Park rides endpoints path("/rides/", ParkRidesListAPIView.as_view(), name="park-rides-list"), path("/rides//", ParkRideDetailAPIView.as_view(), name="park-ride-detail"), # Comprehensive park detail endpoint with rides summary path("/detail/", ParkComprehensiveDetailAPIView.as_view(), name="park-comprehensive-detail"), # Park image settings endpoint path( "/image-settings/", ParkImageSettingsAPIView.as_view(), name="park-image-settings", ), # Park photo endpoints - domain-specific photo management path("/photos/", include(router.urls)), # Nested ride photo endpoints - photos for specific rides within parks path("/rides//photos/", include(ride_photos_router.urls)), # Nested ride review endpoints - reviews for specific rides within parks path("/rides//reviews/", include(ride_reviews_router.urls)), ]