VILLASframework
Modular co-simulation framework
API

VILLASnode can be controlled remotely with an Application Programming Interface (API). Using this API VILLASnode can be completly remote controlled.

There are two components which provide dedicated APIs:

  • VILLASnode daemon: villas-node
  • VILLASnode relay: villas-relay

API specification

Security

IMPORTANT NOTICE: The VILLASnode API currently has no support for authentication an authorization.

Do not expose the API endpoint unprotected to untrusted users or the public internet as attackers can exploit the API to gain access to the system running VILLASnode by crafting malicious configurations.

We recommend to hide the VILLASnode API behind an API gateway or authentication reverse proxy like OAuth Proxy 2.

CURL Examples

VILLASnode daemon

$ villas-node &
$ curl http://localhost:8080/api/v2/status
{
"state": "running",
"version": "v0.10.0",
"release": "1.docker_multiplatform_release.20201112gitf9ca0f9",
"build_id": "v0.10.0-f9ca0f9-release",
"build_date": "20201112",
"hostname": "ernie",
"uuid": "c9d64cc7-c6e1-4dd4-8873-126318e9d42c",
"time_now": 1605194136.9059792,
"time_started": 1605194127.0170822,
"timezone": {
"name": "CEST",
"offset": -3600,
"dst": true
},
"kernel": {
"sysname": "Linux",
"nodename": "ernie",
"release": "5.6.17-rt10",
"version": "#5 SMP Fri Jul 10 14:02:33 CEST 2020",
"machine": "x86_64",
"domainname": "(none)"
},
"system": {
"cores_configured": 28,
"cores": 28,
"procecces": 620,
"uptime": 1481743,
"load": [
3.4453125,
1.15478515625,
0.40673828125
],
"ram": {
"total": 269994606592,
"free": 253992665088,
"shared": 44187648,
16:15:36 "buffer": 565727232
},
"swap": {
"total": 4294963200,
"free": 4294963200
},
"highmem": {
"total": 0,
"free": 0
}
}
}

VILLASnode relay

$ villas-relay &
$ curl localhost:8088/api/v1
{
"sessions": [],
"version": "v0.10.0",
"hostname": "ernie",
"uuid": "c9d64cc7-c6e1-4dd4-8873-126318e9d42c",
"options": {
"loopback": false,
"port": 8088,
"protocol": "live"
}
}