CODEX_ADK/BACKEND/export-openapi.sh
Svrnty 229a0698a3 Initial commit: CODEX_ADK monorepo
Multi-agent AI laboratory with ASP.NET Core 8.0 backend and Flutter frontend.
Implements CQRS architecture, OpenAPI contract-first API design.

BACKEND: Agent management, conversations, executions with PostgreSQL + Ollama
FRONTEND: Cross-platform UI with strict typing and Result-based error handling

Co-Authored-By: Jean-Philippe Brule <jp@svrnty.io>
2025-10-26 23:12:32 -04:00

72 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
# Export OpenAPI specification from running API
# This script starts the API, exports the Swagger JSON, and cleans up
set -e # Exit on error
echo "Starting Codex API..."
# Start the API in background
cd "$(dirname "$0")"
dotnet run --project Codex.Api/Codex.Api.csproj > /dev/null 2>&1 &
API_PID=$!
echo "Waiting for API to start (PID: $API_PID)..."
# Wait for API to be ready (max 30 seconds)
MAX_ATTEMPTS=30
ATTEMPT=0
while [ $ATTEMPT -lt $MAX_ATTEMPTS ]; do
if curl -f -s http://localhost:5246/swagger/v1/swagger.json > /dev/null 2>&1; then
echo "API is ready!"
break
fi
ATTEMPT=$((ATTEMPT + 1))
echo " Attempt $ATTEMPT/$MAX_ATTEMPTS..."
sleep 1
done
# Check if process is still running
if ! kill -0 $API_PID 2>/dev/null; then
echo "ERROR: API failed to start"
exit 1
fi
# Check if we timed out
if [ $ATTEMPT -eq $MAX_ATTEMPTS ]; then
echo "ERROR: API did not respond within 30 seconds"
kill $API_PID 2>/dev/null || true
exit 1
fi
echo "Downloading OpenAPI specification..."
# Export the swagger.json from HTTP endpoint (HTTPS not enabled in development)
if curl -f -s http://localhost:5246/swagger/v1/swagger.json -o docs/openapi.json; then
echo "OpenAPI spec exported to docs/openapi.json"
# Pretty print some stats
ENDPOINTS=$(grep -o '"paths"' docs/openapi.json | wc -l)
FILE_SIZE=$(du -h docs/openapi.json | cut -f1)
echo "Specification size: $FILE_SIZE"
echo "Documented: $(grep -o '"/api/' docs/openapi.json | wc -l | tr -d ' ') endpoint(s)"
else
echo "ERROR: Failed to download OpenAPI spec"
kill $API_PID 2>/dev/null || true
exit 1
fi
echo "Stopping API..."
kill $API_PID 2>/dev/null || true
# Wait for process to terminate
wait $API_PID 2>/dev/null || true
echo "Done! OpenAPI specification is ready at docs/openapi.json"
echo ""
echo "Remember to:"
echo " 1. Review the generated openapi.json"
echo " 2. Update CHANGELOG.md if there are breaking changes"
echo " 3. Notify frontend teams of API updates"