{"id":18830155,"url":"https://github.com/gravitee-io/gravitee-plugin","last_synced_at":"2025-08-31T08:33:15.831Z","repository":{"id":36650566,"uuid":"40956859","full_name":"gravitee-io/gravitee-plugin","owner":"gravitee-io","description":"Gravitee Plugin - Core Framework","archived":false,"fork":false,"pushed_at":"2025-08-25T18:38:27.000Z","size":4217,"stargazers_count":4,"open_issues_count":7,"forks_count":11,"subscribers_count":27,"default_branch":"master","last_synced_at":"2025-08-25T20:40:44.639Z","etag":null,"topics":["security-scan"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gravitee-io.png","metadata":{"files":{"readme":"README.adoc","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.adoc","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2015-08-18T07:16:25.000Z","updated_at":"2025-05-27T13:28:49.000Z","dependencies_parsed_at":"2023-02-10T11:32:27.389Z","dependency_job_id":"9af91056-a7d8-4d59-af57-92b2312cc8e0","html_url":"https://github.com/gravitee-io/gravitee-plugin","commit_stats":null,"previous_names":[],"tags_count":97,"template":false,"template_full_name":null,"purl":"pkg:github/gravitee-io/gravitee-plugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gravitee-io%2Fgravitee-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gravitee-io%2Fgravitee-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gravitee-io%2Fgravitee-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gravitee-io%2Fgravitee-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gravitee-io","download_url":"https://codeload.github.com/gravitee-io/gravitee-plugin/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gravitee-io%2Fgravitee-plugin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272958362,"owners_count":25022051,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-31T02:00:09.071Z","response_time":79,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["security-scan"],"created_at":"2024-11-08T01:47:57.834Z","updated_at":"2025-08-31T08:33:15.794Z","avatar_url":"https://github.com/gravitee-io.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n= Gravitee-io - Plugin system\n\nimage:https://img.shields.io/badge/License-Apache%202.0-blue.svg[\"License\", link=\"https://github.com/gravitee-io/gravitee-plugin/blob/master/LICENSE.txt\"]\nimage:https://img.shields.io/badge/semantic--release-conventional%20commits-e10079?logo=semantic-release[\"Releases\", link=\"https://github.com/gravitee-io/gravitee-plugin/releases\"]\nimage:https://circleci.com/gh/gravitee-io/gravitee-plugin.svg?style=svg[\"CircleCI\", link=\"https://circleci.com/gh/gravitee-io/gravitee-plugin\"]\nimage:https://f.hubspotusercontent40.net/hubfs/7600448/gravitee-github-button.jpg[\"Join the community forum\", link=\"https://community.gravitee.io?utm_source=readme\", height=20]\n\n\n== Description\nThe Gravitee.io plugin project contains a set of classes that are used in Gravitee.io products (APIM, AM, ...) to load and manage plugins. Several type of plugins are supported:\n\n* Repositories\n* Services\n* Policies\n* Identity Providers\n* Notifiers\n* Reporters\n* ...\n\nAdditionally, the plugin project offer handy annotation processors that are helpful when developing policies.\n\n== Modules\n\n=== Alert\n\nThe Gravitee Plugin Alert module provides a plugin handler that detects and loads the alert plugin. It also regroups all the interfaces needed for declaring alert triggers (kind of alert definition) and sending alert event.\nIt allows working seamlessly with Alert Engine but can be used for any custom external system.\n\n=== Annotation Processors\n\nThe Gravitee Plugin Annotation Processors module aims to provide useful set of annotations that can be used when developing new plugins such as policies.\nFor now, it provides a `@ConfigurationEvaluator` that is useful for any plugin that needs to support dynamic configuration based on context attributes and wants to do it in a conventional ways. See the https://github.com/gravitee-io/gravitee-plugin/blob/master/gravitee-plugin-annotation-processors/README.adoc[dedicated README] for details.\n\n=== Api\n\nThe Gravitee Plugin Api module exposes some handy interfaces that can be implemented to influence the plugin deployments.\n\n=== Cockpit\n\nThe Gravitee Plugin Cockpit module provides a plugin handler capable to load and start a https://github.com/gravitee-io/gravitee-cockpit-connectors[Cockpit Connector plugin].\n\n=== Connector (_deprecated_)\n\nThe Gravitee Plugin Connector module provides a specific plugin handler that loads Gravitee APIM v3 connector plugins.\nThis module is now *_deprecated_* in favor of new Entrypoint and Endpoint Connector concept that are specific to Gravitee APIM and offer support for Event Native capabilities.\n\nThese new concepts come with new plugin handlers. The specific https://github.com/gravitee-io/gravitee-api-management/tree/master/gravitee-apim-plugin/gravitee-apim-plugin-entrypoint/gravitee-apim-plugin-entrypoint-handler[Entrypoint plugin handler] and https://github.com/gravitee-io/gravitee-api-management/tree/master/gravitee-apim-plugin/gravitee-apim-plugin-endpoint/gravitee-apim-plugin-endpoint-handler[Endpoint plugin handler] are now located in the APIM repository.\n\nHere are some concrete examples of the kind of plugins that can be loaded by the new plugin endpoint and entrypoint handlers:\n\n * https://github.com/gravitee-io/gravitee-api-management/tree/master/gravitee-apim-plugin/gravitee-apim-plugin-entrypoint/gravitee-apim-plugin-entrypoint-http-proxy[Http Proxy entrypoint]\n * https://github.com/gravitee-io/gravitee-api-management/tree/master/gravitee-apim-plugin/gravitee-apim-plugin-endpoint[Http Proxy endpoint]\n * https://github.com/gravitee-io/gravitee-api-management/tree/master/gravitee-apim-plugin/gravitee-apim-plugin-endpoint/gravitee-apim-plugin-endpoint-mock[Mock endpoint]\n * Kafka endpoint\n * Mqtt5 endpoint\n * SSE entrypoint\n * Websocket entrypoint\n\n=== Core\n\nThe Gravitee Plugin Core module offers all the core capabilities needed to load and register the plugins.\n\n=== Fetcher\n\nThe Gravitee Plugin Fetcher module provides a plugin handler capable to load and start a fetcher plugin. A fetcher allows retrieving content from an external source. It is mainly intended for use on management side and is not supposed to be used by gateways.\n\nHere are some examples of concrete fetcher plugins the plugin handler can load:\n\n * https://github.com/gravitee-io/gravitee-fetcher-git[Git fetcher]\n * https://github.com/gravitee-io/gravitee-fetcher-github[GitHub fetcher]\n * https://github.com/gravitee-io/gravitee-fetcher-http[HTTP fetcher]\n * https://github.com/gravitee-io/gravitee-fetcher-gitlab[GitLab fetcher]\n * https://github.com/gravitee-io/gravitee-fetcher-bitbucket[BitBucket fetcher]\n\nNOTE: A concrete example on how fetchers are used in Gravitee API Management is accessible in the https://documentation.gravitee.io/apim/guides/developer-portal/advanced-developer-portal-configuration/documentation#configure-a-fetcher[online documentation].\n\n=== Identity Provider\n\nThe Gravitee Plugin Identity Provider module brings the ability to load identity provider plugins that can be used to implement authentication.\n\n=== Notifier\n\nThe Gravitee Plugin Notifier module provides a handler to load notifier plugins. Notifier are used to send notification to a remote system.\n\nHere are some examples of notifier plugins that can be loaded by the notifier plugin handler:\n\n * https://github.com/gravitee-io/gravitee-notifier-email[Email]\n * https://github.com/gravitee-io/gravitee-notifier-slack[Slack]\n * https://github.com/gravitee-io/gravitee-notifier-webhook[Webhook]\n\nNOTE: You can find how to use notifiers with Gravitee APIM in the https://documentation.gravitee.io/apim/getting-started/configuration/configure-alerts-and-notifications[online documentation].\n\n=== Policy\n\nThe Gravitee Plugin Policy module provides a specific handler capable of loading all the policy plugin that are detected.\n\nThere a many policy plugins that are implemented and can be loaded by the policy plugin handler.\n\nNOTE: You can find a list of all the policies available for APIM https://documentation.gravitee.io/apim/reference/policy-reference[in the online documentation].\n\n=== Repository\n\nThe Gravitee Plugin Repository module implement a plugin handler that aims to detect and load repository plugins.\n\nGravitee products rely on a repository layer to store all the necessary data. They are implemented as repository plugin that allows for implementing support for different database technologies such as MongoDB or JDBC.\n\n=== Resource\n\nThe Gravitee Plugin Resource module provides a resource plugin handler in charge of detecting and loading all the resource plugins.\n\nA resource plugin is a generic concept that can be implemented by each product. For example, APIM makes use of cache resources or oauth2 resources. There can be several implementations for each type of resource. For example, oauth2 resource can have a generic implementation as well as a Gravitee AM implementation or a KeyCloack implementation.\n\n=== Service Discovery\n\nThe Gravitee Plugin Service Discovery module allows for loading service discovery plugin by providing a specific plugin handler.\n\nService discovery plugins are useful to dynamically register or deregister endpoints. There is currently one implementation supporting Consul.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgravitee-io%2Fgravitee-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgravitee-io%2Fgravitee-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgravitee-io%2Fgravitee-plugin/lists"}