MCPcopy Index your code
hub / github.com/apiman/apiman

github.com/apiman/apiman @3.1.3.Final

Chat with this repo
repository ↗ · DeepWiki ↗ · release 3.1.3.Final ↗ · + Follow
12,288 symbols 38,977 edges 1,731 files 6,749 documented · 55%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Verify Build Workflow Apiman Cypress

Apiman (Open Source API Management)

Apiman is a flexible and open source API Management platform.

With just a few clicks you can get Apiman running, putting a platform at your fingertips that covers the whole API Management lifecycle. Whether you want to offer existing APIs to external consumers in a secure way, or have a centralised location to discover and govern APIs, Apiman has you covered.

But that's not all. Apiman is designed to be easy to customise, and you can implement your own functionality by writing simple Java plugins.

🗞️ Apiman Newsletter

Did you know, we have an Apiman newsletter now! We'll inform you of the latest Apiman releases as soon as they happen, along with great Apiman-related content. The latest Apiman news, blogs, tutorials, software engineering topics, and more. No spam, no nonsense.

⚡️ Quick links

🐒 Monorepo

⚠️ We may move stuff around as we settle on a finalised monorepo structure post-merge.

📖 Requirements

  • Java 11+
  • To build Apiman with tests: Docker or an equivalent container engine. This is for running tests with testcontainers.
  • Naturally, if you're using an Apiman container, you'll need it for runtime too!

🏃‍♂️ Quickstart

You can look at the Apiman quickstarts on apiman.io.

Or, you can build and run our 'server-all' quickstart to try everything out immediately.

Here's what you need to do:

echo "Cloning Apiman"
git clone https://github.com/apiman/apiman.git && cd apiman

echo "Building Apiman"
./fastbuild.sh

echo "Starting a Keycloak container with a demo Apiman realm"
cd tools/server-all/target/docker
docker compose up -d

echo "Starting Apiman WildFly Quickstart" && cd ../
./wildfly-dev-server/bin/standalone.sh

Once Apiman has started up, and if all went well, you can point your browser to the API Manager via http://localhost:8080/apimanui/ and log in (either register a new user or log in as the admin):

  • Username: admin
  • Password: admin123!

You can log into the Keycloak admin console via http://localhost:8085/admin (same credentials as above).

This quickstart seeds a bunch of content into apiman. This is not strictly necessary, but it does populate the API Manager with some data so that it doesn't feel so lonely the first time you log in.

There's also a handy echo service available at http://localhost:8080/services/echo - it's useful for demos. You're welcome!

⚠️ Please don't use Apiman's default usernames, passwords, keys, certificates, etc., in production.

⚒️ Build Apiman

Fast and easy

The easiest way to build quickly (without tests) is to run our fastbuild script. It's in the root of the project. If you have mvnd the build will be faster.

git clone https://github.com/apiman/apiman.git && cd apiman
./fastbuild.sh 

I want to run the tests

First, build the parent pom (it's in /parent), then you can build the main project from the top level.

echo "Building Apiman Parent..."
cd parent
../mvnw clean install

cd ..
echo "Building the main Apiman project..."
./mvnw clean install

👷 Contribute to Apiman

Apiman is open source, and we welcome anybody who wants to participate and contribute!

If you want to fix a bug or make any changes, please log an issue in GitHub Issues describing the bug or new feature.

You can also join our discussion forums if you want help, or to discuss a more complex issue.

There are lots of different workflows for contributing. Feel free to use one that suits you. We're endeavouring to pull together a more detailed contribution document that we'll upload soon 🙌.

🔎 Developer Portal

Apiman also comes with a skinnable developer portal which you can let external developers sign up to your APIs in a streamlined API marketplace experience.

🙋 Looking for support?

Check out Apiman's support page where you can find Apiman experts to help you.

Extension points exported contracts — how you extend this code

IPolicyTestBackEndApi (Interface)
During a policy test, we need something to simulate an invoke to a back end API. This interface is that simulation. Te [20 …
test/policies/src/main/java/io/apiman/test/policies/IPolicyTestBackEndApi.java
IGatewayTestServer (Interface)
Any gateway under test would need to implement this interface, along with standing up an actual gateway instance (with A [7 …
test/common/src/main/java/io/apiman/test/common/resttest/IGatewayTestServer.java
IApimanLogger (Interface)
Simple logging interfaces. Later we'll add the ability to pass context info. @author Marc Savy {@literal <msavy@redhat. [20 …
common/logging/core/src/main/java/io/apiman/common/logging/IApimanLogger.java
IEsClientFactory (Interface)
A factory used to create elasticsearch clients. @author eric.wittmann@gmail.com [12 implementers]
common/es/src/main/java/io/apiman/common/es/util/IEsClientFactory.java
IDataEncrypter (Interface)
Provides a way to encrypt and decrypt data. This is useful when encrypting sensitive data prior to storing it in the dat [7 …
common/util/src/main/java/io/apiman/common/util/crypt/IDataEncrypter.java
Authenticator (Interface)
Authenticator interface. @author Marc Savy {@literal } [8 implementers]
gateway/engine/vertx-polling/src/main/java/io/apiman/gateway/engine/vertx/polling/fetchers/auth/Authenticator.java
Resetter (Interface)
Reset a gateway datastore that is under testing to ensure clean environment between test groups which may not be validly [14 …
gateway/test/src/test/java/io/apiman/gateway/test/junit/vertx3/Resetter.java
IEngineAccessor (Interface)
Simple interface used by the REST implementation layer to get access to the current in-scope API Management runtime engi [9 …
gateway/api/rest-impl/src/main/java/io/apiman/gateway/api/rest/impl/IEngineAccessor.java

Core symbols most depended-on inside this repo

add
called by 1043
gateway/engine/beans/src/main/java/io/apiman/gateway/engine/beans/util/IStringMultiMap.java
put
called by 811
gateway/engine/beans/src/main/java/io/apiman/gateway/engine/beans/util/IStringMultiMap.java
get
called by 701
manager/api/rest/src/main/java/io/apiman/manager/api/rest/IRoleResource.java
append
called by 420
gateway/engine/core/src/main/java/io/apiman/gateway/engine/io/IApimanBuffer.java
handle
called by 361
gateway/engine/core/src/main/java/io/apiman/gateway/engine/async/IAsyncHandler.java
getValue
called by 346
gateway/engine/es/src/main/java/io/apiman/gateway/engine/es/beans/PrimitiveBean.java
get
called by 302
gateway/engine/core/src/main/java/io/apiman/gateway/engine/io/IApimanBuffer.java
toString
called by 299
gateway/engine/core/src/main/java/io/apiman/gateway/engine/io/IApimanBuffer.java

Shape

Method 10,290
Class 1,445
Interface 343
Function 133
Enum 77

Languages

Java94%
TypeScript6%

Modules by API surface

manager/api/jpa/src/main/java/io/apiman/manager/api/jpa/JpaStorage.java150 symbols
portal/ui/src/app/interfaces/ICommunication.ts106 symbols
manager/api/core/src/main/java/io/apiman/manager/api/core/IStorage.java102 symbols
manager/ui/war/src/main/java/io/apiman/manager/ui/server/kc/DeploymentWithLogoutViaBackend.java94 symbols
manager/api/rest-impl/src/main/java/io/apiman/manager/api/rest/impl/OrganizationResourceImpl.java93 symbols
manager/api/rest/src/main/java/io/apiman/manager/api/rest/IOrganizationResource.java91 symbols
manager/api/export-import/src/main/java/io/apiman/manager/api/exportimport/json/JsonExportWriter.java75 symbols
manager/api/export-import/src/main/java/io/apiman/manager/api/exportimport/write/IExportWriter.java71 symbols
gateway/platforms/servlet/src/test/java/io/apiman/gateway/platforms/servlet/MockHttpServletRequest.java70 symbols
gateway/platforms/servlet/src/main/java/io/apiman/gateway/platforms/servlet/connectors/ok/DelegatingHttpsURLConnection.java61 symbols
gateway/engine/core/src/main/java/io/apiman/gateway/engine/metrics/RequestMetric.java59 symbols
manager/api/beans/src/main/java/io/apiman/manager/api/beans/apis/ApiVersionBean.java57 symbols

Datastores touched

apimanDatabase · 1 repos
postgresDatabase · 1 repos

For agents

$ claude mcp add apiman \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact