A system to support API management. It provides the following features:
- Onboarding (REST/Async/SOAP/GraphQL)
- Registry
- Catalog
- Scoring
- Monitoring
- Discovery
- Mocking
- MCP wrapping
- MCP registry
- Documentation (Design guidelines, Use cases, Change management)
The system is supported by a micro-services architecture where every service is accountable for one feature.
This component provides a REST API to submit API specifications for onboarding. Every candidate is validated and scored before its effective registration.
This component provides a REST API to evaluate API specifications against a set of design rules. It is based on well known scoring engines like Spectral and Jentic.
This component provides a REST API to persist validated and scored API specifications. It is based on Strapi.
This component provides a web catalog view with list and search capabilities. It is based on Astro.js.
This component observes deployments and then inject metadata about endpoint metrics and implementing component into the registered API specifications.
It provides both a REST API and a web view to administrate the registered API specifications. It alerts subscribers about new versions and supports change management.
This component hooks commits done on registered codebase repositories where API specifications are stored, and then orders the onboarding of new revisions.
This component launches containerized API mocks on-demand which behavior is driven by their underlying contract and based on static or ai-powered dynamic examples. It is based on Microcks.
This component produces an MCP wrapper around registered API specifications exposing them as agents. It is based on reShapr.
This component is an Agent registry of wrapped API specifications. It is based on Solo.
This component provides a web documentation about onboarding, design guidelines, use cases, change management. It is based on Astro.js.
Contract-driven and Test-driven practices are first citizens for the implementation of API controllers, API integrations, and functional scenarios.
The project is organised as a mono-repository of project modules with their own deployment workflow. The application framworks are SpringBoot, NodeJs, Angular. Communication is done synchronoulsy and asynchronously, and mainly involving REST APIs and messaging. Observability involve metrics and tracing, and is based on OpenTelemetry. The infrastructure as code applies to a local machine, a corporate cluster, or any cloud provider.
- One commit done on one registered codebase should trigger an event consumed by Discovery, then Discovery submit URI to Onboarding.
- Onboarding registers validated specifications revisions into Registry.
- One deployment should trigger an event consumed by Monitoring, then Monitoring submit the implementation to Onboarding.
- One new revision registered by Onboarding should trigger an event consumed by Monitoring, then Monitoring alerts the subscribers.
- One revision deprecated by Monitoring should be reflected inside Registry, and then Monitoring alerts the subscribers.
- Onboarding -rest-> Registry: register
- Onboarding -rest-> Scoring: score
- Monitoring -rest-> Registry: read
- Monitoring -rest-> Onboarding: implement
- Monitoring -rest-> Onboarding: deprecate
- Discovery -rest-> Onboarding: submit
- Discovery -http-> Git
- Git -http-> Discovery: discover
- Catalog -rest-> Registry: read
- Onboarding -event-> Monitoring: RevisionRegistered
- Platform -event-> Monitoring: ComponentDeployed
- RevisionRegistered
- RevisionDeprecated
- RevisionImplemented
- ComponentDeployed
- SpecificationDiscovered
The testing strategy includes every test taxonomy. Testing activity is present before, during, and after the realisation.
- Contract conformance tests (Controllers and Listeners layer)
- Functional acceptance tests (Application service layer)
- Integration tests (Application service layer, Adapters with external systems)
- Unit tests (Any internal component)
- Solution integration tests (System level, All or parts of the micro-service crowd)
- Non-functional acceptance tests (Security, load, stress, resilience)
Testing activity includes test-oriented thinking for better component testability and design, test scenarios identification, test writing, test-driven development, validation, and regression testing.