# Debug API error by capturing console output $ErrorActionPreference = "Stop" Write-Host "=== Debugging API Error ===" -ForegroundColor Cyan Write-Host "" # Stop uvicorn if running Write-Host "[1/4] Stopping existing Python API..." -ForegroundColor Yellow Get-Process -Name "uvicorn" -ErrorAction SilentlyContinue | Stop-Process -Force Start-Sleep -Seconds 2 Write-Host " [OK] Stopped" -ForegroundColor Green Write-Host "" # Start API and capture output to file Write-Host "[2/4] Starting Python API with logging..." -ForegroundColor Yellow $apiPath = "C:\DEV\COPILOT\geutebruck-api\src\api" $uvicorn = "C:\DEV\COPILOT\geutebruck-api\.venv\Scripts\uvicorn.exe" $logFile = "C:\DEV\COPILOT\api_error_debug.log" # Remove old log if (Test-Path $logFile) { Remove-Item $logFile } # Start uvicorn and redirect output $process = Start-Process -FilePath $uvicorn ` -ArgumentList "main:app", "--host", "0.0.0.0", "--port", "8000" ` -WorkingDirectory $apiPath ` -RedirectStandardOutput "$logFile" ` -RedirectStandardError "$logFile" ` -PassThru ` -NoNewWindow Write-Host " [OK] Started (PID: $($process.Id))" -ForegroundColor Green Write-Host " Log file: $logFile" -ForegroundColor Gray Write-Host "" # Wait for API to start Write-Host "[3/4] Waiting for API to initialize..." -NoNewline -ForegroundColor Yellow Start-Sleep -Seconds 5 $elapsed = 0 while ($elapsed -lt 30) { $connection = Get-NetTCPConnection -LocalPort 8000 -State Listen -ErrorAction SilentlyContinue if ($connection) { Write-Host " [OK]" -ForegroundColor Green break } Start-Sleep -Seconds 1 $elapsed += 1 Write-Host "." -NoNewline -ForegroundColor Gray } Write-Host "" # Trigger the error with authenticated request Write-Host "[4/4] Triggering error with action-mappings endpoint..." -ForegroundColor Yellow $token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsImV4cCI6OTk5OTk5OTk5OX0.L8PNFqKLDqPyPpkcVVQcEbWrDh1FJ7BfZ7DsN0F8_jM" try { $response = Invoke-WebRequest -Uri "http://localhost:8000/api/v1/configuration/action-mappings" ` -Headers @{ "Authorization" = "Bearer $token" "Content-Type" = "application/json" } ` -Method GET ` -UseBasicParsing Write-Host " Response: $($response.StatusCode)" -ForegroundColor Green } catch { Write-Host " Error: $($_.Exception.Message)" -ForegroundColor Red Write-Host " Status Code: $($_.Exception.Response.StatusCode.Value__)" -ForegroundColor Red } # Wait a bit for logs to flush Start-Sleep -Seconds 2 Write-Host "" Write-Host "=== Log Output ===" -ForegroundColor Cyan if (Test-Path $logFile) { Get-Content $logFile } else { Write-Host "[ERROR] Log file not found!" -ForegroundColor Red } Write-Host "" Write-Host "=== Debug Complete ===" -ForegroundColor Green Write-Host "API is still running (PID: $($process.Id))" -ForegroundColor Yellow Write-Host "To stop: Stop-Process -Id $($process.Id)" -ForegroundColor Yellow