#!/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"
