#!/bin/bash # ThrillWiki API Endpoints - Complete Curl Commands # Generated from comprehensive URL analysis # Base URL - adjust as needed for your environment BASE_URL="http://localhost:8000" # Command line options SKIP_AUTH=false ONLY_AUTH=false SKIP_DOCS=false HELP=false # Parse command line arguments while [[ $# -gt 0 ]]; do case $1 in --skip-auth) SKIP_AUTH=true shift ;; --only-auth) ONLY_AUTH=true shift ;; --skip-docs) SKIP_DOCS=true shift ;; --base-url) BASE_URL="$2" shift 2 ;; --help|-h) HELP=true shift ;; *) echo "Unknown option: $1" echo "Use --help for usage information" exit 1 ;; esac done # Show help if [ "$HELP" = true ]; then echo "ThrillWiki API Endpoints Test Suite" echo "" echo "Usage: $0 [OPTIONS]" echo "" echo "Options:" echo " --skip-auth Skip endpoints that require authentication" echo " --only-auth Only test endpoints that require authentication" echo " --skip-docs Skip API documentation endpoints (schema, swagger, redoc)" echo " --base-url URL Set custom base URL (default: http://localhost:8000)" echo " --help, -h Show this help message" echo "" echo "Examples:" echo " $0 # Test all endpoints" echo " $0 --skip-auth # Test only public endpoints" echo " $0 --only-auth # Test only authenticated endpoints" echo " $0 --skip-docs --skip-auth # Test only public non-documentation endpoints" echo " $0 --base-url https://api.example.com # Use custom base URL" exit 0 fi # Validate conflicting options if [ "$SKIP_AUTH" = true ] && [ "$ONLY_AUTH" = true ]; then echo "Error: --skip-auth and --only-auth cannot be used together" exit 1 fi echo "=== ThrillWiki API Endpoints Test Suite ===" echo "Base URL: $BASE_URL" if [ "$SKIP_AUTH" = true ]; then echo "Mode: Public endpoints only (skipping authentication required)" elif [ "$ONLY_AUTH" = true ]; then echo "Mode: Authenticated endpoints only" else echo "Mode: All endpoints" fi if [ "$SKIP_DOCS" = true ]; then echo "Skipping: API documentation endpoints" fi echo "" # Helper function to check if we should run an endpoint should_run_endpoint() { local requires_auth=$1 local is_docs=$2 # Skip docs if requested if [ "$SKIP_DOCS" = true ] && [ "$is_docs" = true ]; then return 1 fi # Skip auth endpoints if requested if [ "$SKIP_AUTH" = true ] && [ "$requires_auth" = true ]; then return 1 fi # Only run auth endpoints if requested if [ "$ONLY_AUTH" = true ] && [ "$requires_auth" = false ]; then return 1 fi return 0 } # Counter for endpoint numbering ENDPOINT_NUM=1 # ============================================================================ # AUTHENTICATION ENDPOINTS (/api/v1/auth/) # ============================================================================ if should_run_endpoint false false || should_run_endpoint true false; then echo "=== AUTHENTICATION ENDPOINTS ===" fi if should_run_endpoint false false; then echo "$ENDPOINT_NUM. Login" curl -X POST "$BASE_URL/api/v1/auth/login/" \ -H "Content-Type: application/json" \ -d '{"username": "testuser", "password": "testpass"}' ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Signup" curl -X POST "$BASE_URL/api/v1/auth/signup/" \ -H "Content-Type: application/json" \ -d '{"username": "newuser", "email": "test@example.com", "password": "newpass123"}' ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Logout" curl -X POST "$BASE_URL/api/v1/auth/logout/" \ -H "Content-Type: application/json" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Password Reset" curl -X POST "$BASE_URL/api/v1/auth/password/reset/" \ -H "Content-Type: application/json" \ -d '{"email": "user@example.com"}' ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Social Providers" curl -X GET "$BASE_URL/api/v1/auth/providers/" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Auth Status" curl -X GET "$BASE_URL/api/v1/auth/status/" ((ENDPOINT_NUM++)) fi if should_run_endpoint true false; then echo -e "\n$ENDPOINT_NUM. Current User" curl -X GET "$BASE_URL/api/v1/auth/user/" \ -H "Authorization: Bearer YOUR_TOKEN_HERE" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Password Change" curl -X POST "$BASE_URL/api/v1/auth/password/change/" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN_HERE" \ -d '{"old_password": "oldpass", "new_password": "newpass123"}' ((ENDPOINT_NUM++)) fi # ============================================================================ # HEALTH CHECK ENDPOINTS (/api/v1/health/) # ============================================================================ if should_run_endpoint false false; then echo -e "\n\n=== HEALTH CHECK ENDPOINTS ===" echo "$ENDPOINT_NUM. Health Check" curl -X GET "$BASE_URL/api/v1/health/" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Simple Health" curl -X GET "$BASE_URL/api/v1/health/simple/" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Performance Metrics" curl -X GET "$BASE_URL/api/v1/health/performance/" ((ENDPOINT_NUM++)) fi # ============================================================================ # TRENDING SYSTEM ENDPOINTS (/api/v1/trending/) # ============================================================================ if should_run_endpoint false false; then echo -e "\n\n=== TRENDING SYSTEM ENDPOINTS ===" echo "$ENDPOINT_NUM. Trending Content" curl -X GET "$BASE_URL/api/v1/trending/content/" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. New Content" curl -X GET "$BASE_URL/api/v1/trending/new/" ((ENDPOINT_NUM++)) fi # ============================================================================ # STATISTICS ENDPOINTS (/api/v1/stats/) # ============================================================================ if should_run_endpoint false false || should_run_endpoint true false; then echo -e "\n\n=== STATISTICS ENDPOINTS ===" fi if should_run_endpoint false false; then echo "$ENDPOINT_NUM. Statistics" curl -X GET "$BASE_URL/api/v1/stats/" ((ENDPOINT_NUM++)) fi if should_run_endpoint true false; then echo -e "\n$ENDPOINT_NUM. Recalculate Statistics" curl -X POST "$BASE_URL/api/v1/stats/recalculate/" \ -H "Authorization: Bearer YOUR_TOKEN_HERE" ((ENDPOINT_NUM++)) fi # ============================================================================ # RANKING SYSTEM ENDPOINTS (/api/v1/rankings/) # ============================================================================ if should_run_endpoint false false || should_run_endpoint true false; then echo -e "\n\n=== RANKING SYSTEM ENDPOINTS ===" fi if should_run_endpoint false false; then echo "$ENDPOINT_NUM. List Rankings" curl -X GET "$BASE_URL/api/v1/rankings/" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. List Rankings with Filters" curl -X GET "$BASE_URL/api/v1/rankings/?category=RC&min_riders=10&ordering=rank" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Ranking Detail" curl -X GET "$BASE_URL/api/v1/rankings/ride-slug-here/" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Ranking History" curl -X GET "$BASE_URL/api/v1/rankings/ride-slug-here/history/" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Ranking Statistics" curl -X GET "$BASE_URL/api/v1/rankings/statistics/" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Ranking Comparisons" curl -X GET "$BASE_URL/api/v1/rankings/ride-slug-here/comparisons/" ((ENDPOINT_NUM++)) fi if should_run_endpoint true false; then echo -e "\n$ENDPOINT_NUM. Trigger Ranking Calculation" curl -X POST "$BASE_URL/api/v1/rankings/calculate/" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN_HERE" \ -d '{"category": "RC"}' ((ENDPOINT_NUM++)) fi # ============================================================================ # PARKS API ENDPOINTS (/api/v1/parks/) # ============================================================================ if should_run_endpoint false false || should_run_endpoint true false; then echo -e "\n\n=== PARKS API ENDPOINTS ===" fi if should_run_endpoint false false; then echo "$ENDPOINT_NUM. List Parks" curl -X GET "$BASE_URL/api/v1/parks/" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Park Filter Options" curl -X GET "$BASE_URL/api/v1/parks/filter-options/" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Park Company Search" curl -X GET "$BASE_URL/api/v1/parks/search/companies/?q=disney" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Park Search Suggestions" curl -X GET "$BASE_URL/api/v1/parks/search-suggestions/?q=magic" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Park Detail" curl -X GET "$BASE_URL/api/v1/parks/1/" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. List Park Photos" curl -X GET "$BASE_URL/api/v1/parks/1/photos/" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Park Photo Detail" curl -X GET "$BASE_URL/api/v1/parks/1/photos/1/" ((ENDPOINT_NUM++)) fi if should_run_endpoint true false; then echo -e "\n$ENDPOINT_NUM. Create Park" curl -X POST "$BASE_URL/api/v1/parks/" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN_HERE" \ -d '{"name": "Test Park", "location": "Test City"}' ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Update Park" curl -X PUT "$BASE_URL/api/v1/parks/1/" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN_HERE" \ -d '{"name": "Updated Park Name"}' ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Delete Park" curl -X DELETE "$BASE_URL/api/v1/parks/1/" \ -H "Authorization: Bearer YOUR_TOKEN_HERE" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Create Park Photo" curl -X POST "$BASE_URL/api/v1/parks/1/photos/" \ -H "Authorization: Bearer YOUR_TOKEN_HERE" \ -F "image=@/path/to/photo.jpg" \ -F "caption=Test photo" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Update Park Photo" curl -X PUT "$BASE_URL/api/v1/parks/1/photos/1/" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN_HERE" \ -d '{"caption": "Updated caption"}' ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Delete Park Photo" curl -X DELETE "$BASE_URL/api/v1/parks/1/photos/1/" \ -H "Authorization: Bearer YOUR_TOKEN_HERE" ((ENDPOINT_NUM++)) fi # ============================================================================ # RIDES API ENDPOINTS (/api/v1/rides/) # ============================================================================ if should_run_endpoint false false || should_run_endpoint true false; then echo -e "\n\n=== RIDES API ENDPOINTS ===" fi if should_run_endpoint false false; then echo "$ENDPOINT_NUM. List Rides" curl -X GET "$BASE_URL/api/v1/rides/" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Ride Filter Options" curl -X GET "$BASE_URL/api/v1/rides/filter-options/" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Ride Company Search" curl -X GET "$BASE_URL/api/v1/rides/search/companies/?q=intamin" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Ride Model Search" curl -X GET "$BASE_URL/api/v1/rides/search/ride-models/?q=giga" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Ride Search Suggestions" curl -X GET "$BASE_URL/api/v1/rides/search-suggestions/?q=millennium" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Ride Detail" curl -X GET "$BASE_URL/api/v1/rides/1/" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. List Ride Photos" curl -X GET "$BASE_URL/api/v1/rides/1/photos/" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Ride Photo Detail" curl -X GET "$BASE_URL/api/v1/rides/1/photos/1/" ((ENDPOINT_NUM++)) fi if should_run_endpoint true false; then echo -e "\n$ENDPOINT_NUM. Create Ride" curl -X POST "$BASE_URL/api/v1/rides/" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN_HERE" \ -d '{"name": "Test Coaster", "category": "RC", "park": 1}' ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Update Ride" curl -X PUT "$BASE_URL/api/v1/rides/1/" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN_HERE" \ -d '{"name": "Updated Ride Name"}' ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Delete Ride" curl -X DELETE "$BASE_URL/api/v1/rides/1/" \ -H "Authorization: Bearer YOUR_TOKEN_HERE" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Create Ride Photo" curl -X POST "$BASE_URL/api/v1/rides/1/photos/" \ -H "Authorization: Bearer YOUR_TOKEN_HERE" \ -F "image=@/path/to/photo.jpg" \ -F "caption=Test ride photo" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Update Ride Photo" curl -X PUT "$BASE_URL/api/v1/rides/1/photos/1/" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN_HERE" \ -d '{"caption": "Updated ride photo caption"}' ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Delete Ride Photo" curl -X DELETE "$BASE_URL/api/v1/rides/1/photos/1/" \ -H "Authorization: Bearer YOUR_TOKEN_HERE" ((ENDPOINT_NUM++)) fi # ============================================================================ # ACCOUNTS API ENDPOINTS (/api/v1/accounts/) # ============================================================================ if should_run_endpoint false false || should_run_endpoint true false; then echo -e "\n\n=== ACCOUNTS API ENDPOINTS ===" fi if should_run_endpoint false false; then echo "$ENDPOINT_NUM. List User Profiles" curl -X GET "$BASE_URL/api/v1/accounts/profiles/" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. User Profile Detail" curl -X GET "$BASE_URL/api/v1/accounts/profiles/1/" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. List Top Lists" curl -X GET "$BASE_URL/api/v1/accounts/toplists/" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Top List Detail" curl -X GET "$BASE_URL/api/v1/accounts/toplists/1/" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. List Top List Items" curl -X GET "$BASE_URL/api/v1/accounts/toplist-items/" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Top List Item Detail" curl -X GET "$BASE_URL/api/v1/accounts/toplist-items/1/" ((ENDPOINT_NUM++)) fi if should_run_endpoint true false; then echo -e "\n$ENDPOINT_NUM. Update User Profile" curl -X PUT "$BASE_URL/api/v1/accounts/profiles/1/" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN_HERE" \ -d '{"bio": "Updated bio"}' ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Create Top List" curl -X POST "$BASE_URL/api/v1/accounts/toplists/" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN_HERE" \ -d '{"name": "My Top Coasters", "description": "My favorite roller coasters"}' ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Update Top List" curl -X PUT "$BASE_URL/api/v1/accounts/toplists/1/" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN_HERE" \ -d '{"name": "Updated Top List Name"}' ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Delete Top List" curl -X DELETE "$BASE_URL/api/v1/accounts/toplists/1/" \ -H "Authorization: Bearer YOUR_TOKEN_HERE" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Create Top List Item" curl -X POST "$BASE_URL/api/v1/accounts/toplist-items/" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN_HERE" \ -d '{"toplist": 1, "ride": 1, "position": 1}' ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Update Top List Item" curl -X PUT "$BASE_URL/api/v1/accounts/toplist-items/1/" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN_HERE" \ -d '{"position": 2}' ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Delete Top List Item" curl -X DELETE "$BASE_URL/api/v1/accounts/toplist-items/1/" \ -H "Authorization: Bearer YOUR_TOKEN_HERE" ((ENDPOINT_NUM++)) fi # ============================================================================ # HISTORY API ENDPOINTS (/api/v1/history/) # ============================================================================ if should_run_endpoint false false; then echo -e "\n\n=== HISTORY API ENDPOINTS ===" echo "$ENDPOINT_NUM. Park History List" curl -X GET "$BASE_URL/api/v1/history/parks/park-slug/" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Park History Detail" curl -X GET "$BASE_URL/api/v1/history/parks/park-slug/detail/" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Ride History List" curl -X GET "$BASE_URL/api/v1/history/parks/park-slug/rides/ride-slug/" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Ride History Detail" curl -X GET "$BASE_URL/api/v1/history/parks/park-slug/rides/ride-slug/detail/" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Unified Timeline" curl -X GET "$BASE_URL/api/v1/history/timeline/" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Unified Timeline Detail" curl -X GET "$BASE_URL/api/v1/history/timeline/1/" ((ENDPOINT_NUM++)) fi # ============================================================================ # EMAIL API ENDPOINTS (/api/v1/email/) # ============================================================================ if should_run_endpoint true false; then echo -e "\n\n=== EMAIL API ENDPOINTS ===" echo "$ENDPOINT_NUM. Send Email" curl -X POST "$BASE_URL/api/v1/email/send/" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN_HERE" \ -d '{"to": "recipient@example.com", "subject": "Test", "message": "Test message"}' ((ENDPOINT_NUM++)) fi # ============================================================================ # CORE API ENDPOINTS (/api/v1/core/) # ============================================================================ if should_run_endpoint false false; then echo -e "\n\n=== CORE API ENDPOINTS ===" echo "$ENDPOINT_NUM. Entity Fuzzy Search" curl -X GET "$BASE_URL/api/v1/core/entities/search/?q=disney" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Entity Not Found" curl -X POST "$BASE_URL/api/v1/core/entities/not-found/" \ -H "Content-Type: application/json" \ -d '{"query": "nonexistent park", "type": "park"}' ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Entity Suggestions" curl -X GET "$BASE_URL/api/v1/core/entities/suggestions/?q=magic" ((ENDPOINT_NUM++)) fi # ============================================================================ # MAPS API ENDPOINTS (/api/v1/maps/) # ============================================================================ if should_run_endpoint false false || should_run_endpoint true false; then echo -e "\n\n=== MAPS API ENDPOINTS ===" fi if should_run_endpoint false false; then echo "$ENDPOINT_NUM. Map Locations" curl -X GET "$BASE_URL/api/v1/maps/locations/" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Map Location Detail" curl -X GET "$BASE_URL/api/v1/maps/locations/park/1/" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Map Search" curl -X GET "$BASE_URL/api/v1/maps/search/?q=disney" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Map Bounds Query" curl -X GET "$BASE_URL/api/v1/maps/bounds/?north=40.7&south=40.6&east=-73.9&west=-74.0" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Map Statistics" curl -X GET "$BASE_URL/api/v1/maps/stats/" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Map Cache Status" curl -X GET "$BASE_URL/api/v1/maps/cache/" ((ENDPOINT_NUM++)) fi if should_run_endpoint true false; then echo -e "\n$ENDPOINT_NUM. Invalidate Map Cache" curl -X POST "$BASE_URL/api/v1/maps/cache/invalidate/" \ -H "Authorization: Bearer YOUR_TOKEN_HERE" ((ENDPOINT_NUM++)) fi # ============================================================================ # API DOCUMENTATION ENDPOINTS # ============================================================================ if should_run_endpoint false true; then echo -e "\n\n=== API DOCUMENTATION ENDPOINTS ===" echo "$ENDPOINT_NUM. OpenAPI Schema" curl -X GET "$BASE_URL/api/schema/" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. Swagger UI" curl -X GET "$BASE_URL/api/docs/" ((ENDPOINT_NUM++)) echo -e "\n$ENDPOINT_NUM. ReDoc" curl -X GET "$BASE_URL/api/redoc/" ((ENDPOINT_NUM++)) fi # ============================================================================ # HEALTH CHECK (Django Health Check) # ============================================================================ if should_run_endpoint false false; then echo -e "\n\n=== DJANGO HEALTH CHECK ===" echo "$ENDPOINT_NUM. Django Health Check" curl -X GET "$BASE_URL/health/" ((ENDPOINT_NUM++)) fi echo -e "\n\n=== END OF API ENDPOINTS TEST SUITE ===" echo "Total endpoints tested: $((ENDPOINT_NUM - 1))" echo "" echo "Notes:" echo "- Replace YOUR_TOKEN_HERE with actual authentication tokens" echo "- Replace /path/to/photo.jpg with actual file paths for photo uploads" echo "- Replace numeric IDs (1, 2, etc.) with actual resource IDs" echo "- Replace slug placeholders (park-slug, ride-slug) with actual slugs" echo "- Adjust BASE_URL for your environment (localhost:8000, staging, production)" echo "" echo "Authentication required endpoints are marked with Authorization header" echo "File upload endpoints use multipart/form-data (-F flag)" echo "JSON endpoints use application/json content type"