# Add a northbound interface Now that you [downloaded and installed](../setup.md) sensiNact, you need to add a [northbound interface](../northbound/_index.md) for users to communicate with the sensiNact gateway. To achieve this we need to configure the [feature manager](../distribution/Launcher.md#configuring-the-feature-manager) to include the necessary feature(s). ## The sensiNact configuration file The sensiNact configuration file format is described [in detail here](../distribution/Launcher.md#the-configuration-file), but the important facts are that: 1. The configuration file lives in the `configuration` folder 2. The configuration file is `JSON` and uses the OSGi® [Configuration Resource Format](https://docs.osgi.org/specification/osgi.cmpn/8.0.0/service.configurator.html#d0e132453) 3. The configuration file is *live* and will be reloaded by the gateway whenever you save changes ## Add a simple rest Northbound interface After you [downloaded and installed](../setup.md) sensiNact, the `configuration/configuration.json` file contains something similar to the following: ```json { ":configurator:resource-version": 1, ":configurator:symbolic-name": "org.eclipse.sensinact.gateway.feature.northbound.rest.example", ":configurator:version": "0.0.1", "sensinact.launcher": { "features": [ "core-feature" ], "repository": "repository", "featureDir": "features" } } ``` This defines the `sensinact.launcher` configuration dictionary with an array of `features` and the locations to search when installing bundles and features. We need to add the following features to install the REST northbound interface: 1. `jakarta-servlet-whiteboard-feature` - A web container implementing the OSGi® servlet whiteboard 2. `jakarta-rest-whiteboard-feature` - A Jakarta RESTful Web Services whiteboard which uses the servlet whiteboard 3. `northbound-rest-feature` - The [northbound REST interface](../northbound/RestDataAccess.md) for Eclipse sensiNact. We will also configure the REST northbound interface with anonymous access and the local 8082 port. Update the `configuration/configuration.json` file to match: ```json { ":configurator:resource-version": 1, ":configurator:symbolic-name": "org.eclipse.sensinact.gateway.feature.northbound.rest.example", ":configurator:version": "0.0.1", "sensinact.launcher": { "features": [ "core-feature", "jakarta-servlet-whiteboard-feature", "jakarta-rest-whiteboard-feature", "northbound-rest-feature" ], "repository": "repository", "featureDir": "features" }, "org.apache.felix.http": { "org.osgi.service.http.port": 8082, "org.apache.felix.http.name": "sensiNact" }, "JakartarsServletWhiteboardRuntimeComponent": { "osgi.jakartars.name": "sensiNact.rest" }, "sensinact.session.manager": { "auth.policy": "ALLOW_ALL" }, "sensinact.northbound.rest": { "allow.anonymous": true } } ``` ## Start sensiNact The configuration file is *live* and will be reloaded by the gateway whenever you save changes, so the gateway will automatically install and configure the new features. Still, you may stop sensiNact and restart it: ```bash ./start.sh ``` ## Test the Northbound REST API You may use your browser at `http://localhost:8082/sensinact/providers/sensiNact`, or use curl to query sensinact. ``` curl http://localhost:8082/sensinact/providers/sensiNact ``` Expected response ```json { "type": "DESCRIBE_PROVIDER", "uri": "/sensiNact", "statusCode": 200, "response": { "name": "sensiNact", "services": [ "system", "admin" ] } } ``` You may want to read the [documentation for the northbound REST interface](../northbound/RestDataAccess.md#available-endpoints), or a [guide to using the REST interface](../examples/Interacting.md). In the next section, you will [add a southbound interface](Southbound.md) to your sensiNact gateway.