RESTHeart Platform works out-of-the-box by merely installing it and requires no coding. On the other side real applications often need the API to be extended in some way.

RESTHeart Platform can be extended via Plugins.

Both restheart-platform-core and restheart-platform-security make use of Plugins.

The Plugins of restheart-platform-core are intended for extending the API, while the plugins of restheart-platform-security allow customizing security, for instance by implementing a custom Authentication Mechanism that integrates with your Enterprise IDM.

This section focuses on extending restheart-platform-core through the Plugins. The Plugins for restheart-platform-security are described on Develop Security Plugins.

Types of Plugins

The following table lists the different types of Plugins of restheart-platform-core.

Plugin Use for Example Use Case
Transformer Manipulate the request or the response Filter out sensitive properties from the response, such as password
Checker Verify the request Enforce that the write requests on users collection contains email and password properties
Hook Execute code after a request completes Send a verification email when a document is created in the users collection
Service Extend the API with a custom Web Service Add a web service /verify to handle the link in the verification email in the user registration process
Initializer Perform initialization logic Initialize the db creating required collection if not existing

Available Plugins

RESTHeart Platform is shipped with some general purpose Plugins. For a complete list of available Plugins please refer to Available Plugins.

You can also develop and add your own Plugins. For more information refer to Develop Core Plugins

Developing a Plugins is done in java programming language and it is as easy as implementing a simple interface.

Note that RESTHeart logs out the registered plugins at startup time.

Registered initializer commLicense: Activates the commercial license
Registered initializer rhPlatformActivator: Activates RESTHeart Platform
Registered service istatus: Internal service that allows querying for server status
Registered service cacheInvalidator: Invalidates the db and collection metadata cache
Registered service csvLoader: Uploads a csv file in a collection
Registered service pingService: Ping service
Registered transformer filterProperties: Filters out a the properties specified by the args property of the transformer metadata object.
Registered transformer oidsToStrings: Replaces ObjectId with strings.
Registered transformer addRequestProperties: Adds properties to the request body
Registered transformer stringsToOids: Replaces strings that are valid ObjectIds with ObjectIds.
Registered transformer writeResult: Adds a body to write responses with updated and old version of the written document.
Registered hook snooper: An example hook that logs request and response info
Registered checker checkContentSize: Checks the request content length
Registered checker checkContent: Checks the request content by using conditions  based on json path expressions
Registered checker jsonSchema: Checks the request according to the specified JSON schema

Apply Plugins to Requests

While Services and Initializers add logic that gets executed when the service URL is requested and at startup time respectively, the other Plugins can be applied to any request.

This is achieved by defining the Plugin(s) to apply in the metadata of databases and collections. This process is further described in detail on Apply Plugins