# CLNRest CLNRest is a lightweight Python-based core lightning plugin that transforms RPC calls into a REST service. By generating REST API endpoints, it enables the execution of Core Lightning's RPC methods behind the scenes and provides responses in JSON format. ## Installation Install required packages with `pip install json5 flask flask_restx gunicorn pyln-client` or `pip install -r requirements.txt`. ## Configuration - --rest-protocol: Specifies the REST server protocol. Default is HTTPS. - --rest-host: Defines the REST server host. Default is 127.0.0.1. - --rest-port: Sets the REST server port to listen to. Default is 3010. - --rest-certs: Defines the path for HTTPS cert & key. Default path is same as RPC file path to utilize gRPC's client certificate. If it is missing at the configured location, new identity (`client.pem` and `client-key.pem`) will be generated. ## Plugin - It can be configured by adding `plugin=//clnrest/clnrest.py` to the Core Lightning's config file. ## Server With the default configurations, the Swagger user interface will be available at https://127.0.0.1:3010/. The POST method requires `rune` and `nodeid` headers for authorization. ### cURL Example curl command for GET: `curl -k https://127.0.0.1:3010/v1/notifications` Example curl command for POST will also require `rune` and `nodeid` headers like below: `curl -k -X POST 'https://127.0.0.1:3010/v1/getinfo' -H 'Rune: ' -H 'Nodeid: '` With `-k` or `--insecure` option curl proceeds with the connection even if the SSL certificate cannot be verified. This option should be used only when testing with self signed certificate. ### Swagger

Swagger Dashboard Swagger Authorize Swagger GET List Methods Swagger POST RPC Method

### Postman

Postman Headers Postman with JSON body Postman bkpr plugin RPC