$ show wso2/product-apim
WSO2 API Manager is an enterprise-grade API management platform. In production, it provides API publishing, a developer portal, a gateway for request mediation/security enforcement (authentication, rate limiting, threat protection), a key manager (OAuth2, JWT, API keys), and a traffic manager for analytics and throttling. The architecture is modular, with deployable profiles (all-in-one, control-plane, gateway, traffic-manager) built on the WSO2 Carbon kernel with Apache Synapse mediation. The codebase is primarily Java/Maven with Python-based recommendation engine components, extensive integration tests (both legacy TestNG and a modern Cucumber/Testcontainers parallel framework), and sample scenarios. Key entry points include REST APIs (Publisher, Developer Portal, Admin, Gateway), startup scripts (api-manager.sh), and deployment configuration (deployment.toml). External dependencies include WSO2 Identity Server for key management, databases (H2/PostgreSQL), MongoDB for recommendations, and various protocols (REST, GraphQL, WebSocket, SSE, WebSub, SOAP, MCP).
The LLM identified 3 files worth highlighting for reuse:
A reusable Testcontainers wrapper that bootstraps a WSO2 API Manager instance with dynamic port mapping, configuration overlay (deployment.toml), health checks, and cleanup. It handles container lifecycle independently of specific test scenarios. Another engineer could extract this pattern to embed any JVM-based service in test containers with custom configuration.
A singleton Testcontainers-based Squid proxy server for testing forward proxy scenarios (both anonymous and authenticated). It manages container lifecycle, port detection, and authentication configuration. The pattern of wrapping a general-purpose proxy container for integration tests is reusable across projects needing proxy testing.
A singleton that manages a Node.js container exposing multiple mock backends (customer, graphql, websub, etc.) on separate ports. It bundles ready-to-use test stubs and handles health checks. The pattern of a shared container with multiple backend stubs is reusable for microservices integration testing.