core-lightning/plugins/clnrest
Rusty Russell a6701bf180 plugins/clnrest: fail gracefully if dependencies not installed.
json and sys are Python built-in packages, so we can do this.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2023-07-25 19:20:16 +09:30
..
.github/screenshots plugin: clnrest 2023-07-25 19:20:16 +09:30
utilities plugin: clnrest 2023-07-25 19:20:16 +09:30
clnrest.py plugins/clnrest: fail gracefully if dependencies not installed. 2023-07-25 19:20:16 +09:30
README.md plugin: clnrest 2023-07-25 19:20:16 +09:30
requirements.txt plugin: clnrest 2023-07-25 19:20:16 +09:30

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=/<path>/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: <node-rune>' -H 'Nodeid: <node-id>'

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