# gravitee-io/gravitee-api-management architecture

> Architecture diagram of the GitHub repository gravitee-io/gravitee-api-management, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-10-01). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/gravitee-io/gravitee-api-management
- Repository: https://github.com/gravitee-io/gravitee-api-management

## Overview

Gravitee APIM is a platform for managing APIs and exposing them through a gateway, with an administrative console and a developer portal. The principal user workflow is to manage and publish APIs in the console, then let developers discover APIs in the portal and subscribe to them; the gateway handles API access. The graph includes the sampled portal routing and service/query layers, plus documented product surfaces. Many server-side and gateway relationships are not established by the excerpts, so those connections are left out rather than inferred.

Main entry points: [`gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/core/api/model/Api.java`](https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/core/api/model/Api.java) (API domain model), [`gravitee-apim-console-webui/src/app.module.ts`](https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-console-webui/src/app.module.ts) (Management console), [`gravitee-apim-portal-webui-next/src/app/app.routes.ts`](https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-portal-webui-next/src/app/app.routes.ts) (Developer portal), [`gravitee-apim-console-webui/src/entities/application/Application.ts`](https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-console-webui/src/entities/application/Application.ts) (Application model)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_admin["Administration"]
  node_console["Management console<br/>[app.module.ts]"]
  node_console_app["Application client"]
  node_console_legacy_app["Legacy app client"]
  node_analytics["Analytics dashboards"]
  node_alerts["Alert management"]
end

subgraph group_portal["Developer Portal"]
  node_portal["Developer portal<br/>[app.routes.ts]"]
  node_portal_catalog["API catalog<br/>[app.routes.ts]"]
  node_api_details["API details"]
  node_subscribe["API subscription"]
  node_portal_sdk["Portal API client"]
end

subgraph group_management["Management Services"]
  node_rest_api["Management API"]
  node_api_search["API search"]
  node_nav_query["Portal navigation queries"]
  node_auto_nav["Automation navigation"]
end

subgraph group_gateway["API Runtime"]
  node_gateway["API gateway"]
end

subgraph group_shared["Domain Model"]
  node_api_domain["API domain model<br/>[Api.java]"]
  node_application_model["Application model<br/>[Application.ts]"]
  node_paging_model["Paged results<br/>[pagedResult.ts]"]
  node_definition["API definitions"]
  node_native_api["Native API model<br/>[NativeApi.java]"]
  node_organization["Organization model<br/>[Organization.java]"]
  node_domain_service["Domain service marker<br/>[DomainService.java]"]
end

node_admin_user(("API administrator"))
node_portal_user(("API developer"))

node_admin_user -->|"manages APIs"| node_console
node_portal_user -->|"discovers APIs"| node_portal
node_console -->|"manages APIs"| node_rest_api
node_portal -->|"routes API views"| node_api_details
node_portal_catalog -->|"routes API details"| node_api_details
node_portal_user -->|"requests subscription"| node_subscribe
node_console_app -->|"uses model"| node_application_model
node_console_legacy_app -->|"returns pages"| node_paging_model
node_portal_sdk -->|"uses model"| node_application_model
node_api_search -->|"returns APIs"| node_api_domain
node_auto_nav -->|"queries navigation"| node_nav_query
node_gateway -.->|"serves managed APIs"| node_api_domain
node_api_domain -.->|"has definition version"| node_definition
node_native_api -.->|"uses definition model"| node_definition

click node_console "https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-console-webui/src/app.module.ts"
click node_console_app "https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-console-webui/src/services-ngx/application.service.ts"
click node_console_legacy_app "https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-console-webui/src/services/application.service.ts"
click node_analytics "https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-console-webui/src/components/dashboard/dashboard.component.ts"
click node_alerts "https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-console-webui/src/components/alerts/alerts.component.ts"
click node_portal "https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-portal-webui-next/src/app/app.routes.ts"
click node_portal_catalog "https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-portal-webui-next/src/app/app.routes.ts"
click node_subscribe "https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-portal-webui-next/src/app/api/subscribe-to-api/subscribe-to-api.component.ts"
click node_portal_sdk "https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-portal-webui/projects/portal-webclient-sdk/src/lib/api/application.service.ts"
click node_rest_api "https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-rest-api/gravitee-apim-rest-api-common/src/main/java/io/gravitee/apim/rest/api/common/apiservices/ManagementApiService.java"
click node_api_search "https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/core/api/query_service/ApiPortalSearchQueryService.java"
click node_nav_query "https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/core/portal_page/query_service/PortalNavigationItemsQueryService.java"
click node_auto_nav "https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/core/portal/query_service/AutomationManagedNavigationItemsQueryService.java"
click node_gateway "https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-gateway/gravitee-apim-gateway-reporting/src/main/java/io/gravitee/gateway/report/ReporterService.java"
click node_api_domain "https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/core/api/model/Api.java"
click node_application_model "https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-console-webui/src/entities/application/Application.ts"
click node_paging_model "https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-console-webui/src/entities/pagedResult.ts"
click node_definition "https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-definition/gravitee-apim-definition-model/src/main/java/io/gravitee/definition/model/DefinitionVersion.java"
click node_native_api "https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-definition/gravitee-apim-definition-model/src/main/java/io/gravitee/definition/model/v4/nativeapi/NativeApi.java"
click node_organization "https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-repository/gravitee-apim-repository-api/src/main/java/io/gravitee/repository/management/model/Organization.java"
click node_domain_service "https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-common/src/main/java/io/gravitee/apim/core/DomainService.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_console,node_console_app,node_console_legacy_app,node_analytics,node_alerts toneBlue
class node_portal,node_portal_catalog,node_api_details,node_subscribe,node_portal_sdk toneAmber
class node_rest_api,node_api_search,node_nav_query,node_auto_nav,node_admin_user,node_portal_user toneMint
class node_gateway toneRose
class node_api_domain,node_application_model,node_paging_model,node_definition,node_native_api,node_organization,node_domain_service toneIndigo
```

## Components

### Administration

- [Management console](https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-console-webui/src/app.module.ts): `gravitee-apim-console-webui/src/app.module.ts`
- [Application client](https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-console-webui/src/services-ngx/application.service.ts): `gravitee-apim-console-webui/src/services-ngx/application.service.ts`
- [Legacy app client](https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-console-webui/src/services/application.service.ts): `gravitee-apim-console-webui/src/services/application.service.ts`
- [Analytics dashboards](https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-console-webui/src/components/dashboard/dashboard.component.ts): `gravitee-apim-console-webui/src/components/dashboard/dashboard.component.ts`
- [Alert management](https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-console-webui/src/components/alerts/alerts.component.ts): `gravitee-apim-console-webui/src/components/alerts/alerts.component.ts`

### Developer Portal

- [Developer portal](https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-portal-webui-next/src/app/app.routes.ts): `gravitee-apim-portal-webui-next/src/app/app.routes.ts`
- [API catalog](https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-portal-webui-next/src/app/app.routes.ts): `gravitee-apim-portal-webui-next/src/app/app.routes.ts`
- **API details**
- [API subscription](https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-portal-webui-next/src/app/api/subscribe-to-api/subscribe-to-api.component.ts): `gravitee-apim-portal-webui-next/src/app/api/subscribe-to-api/subscribe-to-api.component.ts`
- [Portal API client](https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-portal-webui/projects/portal-webclient-sdk/src/lib/api/application.service.ts): `gravitee-apim-portal-webui/projects/portal-webclient-sdk/src/lib/api/application.service.ts`

### Management Services

- [Management API](https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-rest-api/gravitee-apim-rest-api-common/src/main/java/io/gravitee/apim/rest/api/common/apiservices/ManagementApiService.java): `gravitee-apim-rest-api/gravitee-apim-rest-api-common/src/main/java/io/gravitee/apim/rest/api/common/apiservices/ManagementApiService.java`
- [API search](https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/core/api/query_service/ApiPortalSearchQueryService.java): `gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/core/api/query_service/ApiPortalSearchQueryService.java`
- [Portal navigation queries](https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/core/portal_page/query_service/PortalNavigationItemsQueryService.java): `gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/core/portal_page/query_service/PortalNavigationItemsQueryService.java`
- [Automation navigation](https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/core/portal/query_service/AutomationManagedNavigationItemsQueryService.java): `gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/core/portal/query_service/AutomationManagedNavigationItemsQueryService.java`

### API Runtime

- [API gateway](https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-gateway/gravitee-apim-gateway-reporting/src/main/java/io/gravitee/gateway/report/ReporterService.java): `gravitee-apim-gateway/gravitee-apim-gateway-reporting/src/main/java/io/gravitee/gateway/report/ReporterService.java`

### Domain Model

- [API domain model](https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/core/api/model/Api.java): `gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/core/api/model/Api.java`
- [Application model](https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-console-webui/src/entities/application/Application.ts): `gravitee-apim-console-webui/src/entities/application/Application.ts`
- [Paged results](https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-console-webui/src/entities/pagedResult.ts): `gravitee-apim-console-webui/src/entities/pagedResult.ts`
- [API definitions](https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-definition/gravitee-apim-definition-model/src/main/java/io/gravitee/definition/model/DefinitionVersion.java): `gravitee-apim-definition/gravitee-apim-definition-model/src/main/java/io/gravitee/definition/model/DefinitionVersion.java`
- [Native API model](https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-definition/gravitee-apim-definition-model/src/main/java/io/gravitee/definition/model/v4/nativeapi/NativeApi.java): `gravitee-apim-definition/gravitee-apim-definition-model/src/main/java/io/gravitee/definition/model/v4/nativeapi/NativeApi.java`
- [Organization model](https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-repository/gravitee-apim-repository-api/src/main/java/io/gravitee/repository/management/model/Organization.java): `gravitee-apim-repository/gravitee-apim-repository-api/src/main/java/io/gravitee/repository/management/model/Organization.java`
- [Domain service marker](https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-common/src/main/java/io/gravitee/apim/core/DomainService.java): `gravitee-apim-common/src/main/java/io/gravitee/apim/core/DomainService.java`

### Other components

- **API administrator**
- **API developer**

## Connections

- API administrator → Management console: manages APIs
- API developer → Developer portal: discovers APIs
- Management console → Management API: manages APIs
- Developer portal → API details: routes API views (evidence: `gravitee-apim-portal-webui-next/src/app/app.routes.ts`)
- API catalog → API details: routes API details (evidence: `gravitee-apim-portal-webui-next/src/app/app.routes.ts`)
- API developer → API subscription: requests subscription
- Application client → Application model: uses model (evidence: `gravitee-apim-console-webui/src/services-ngx/application.service.ts`)
- Legacy app client → Paged results: returns pages (evidence: `gravitee-apim-console-webui/src/services/application.service.ts`)
- Portal API client → Application model: uses model (evidence: `gravitee-apim-portal-webui/projects/portal-webclient-sdk/src/lib/api/application.service.ts`)
- API search → API domain model: returns APIs (evidence: `gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/core/api/query_service/ApiPortalSearchQueryService.java`)
- Automation navigation → Portal navigation queries: queries navigation (evidence: `gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/core/portal/query_service/AutomationManagedNavigationItemsQueryService.java`)
- API gateway → API domain model: serves managed APIs
- API domain model → API definitions: has definition version (evidence: `gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/core/api/model/Api.java`)
- Native API model → API definitions: uses definition model
