Auch verfügbar in:
DE Deutsch
Custom REST
Inhalt
Any JSON endpoint → Mesh widget. With JSONPath mapping.
What the integration can do
- Tap any HTTP GET endpoint with a JSON response
- JSONPath for value selection
- Display as value + label + status
When to use
- Your data source is not in the Integrations list
- You want to display something quickly without a PR
- Custom cloud API (your smart home bridge, crypto ticker, live bus data, …)
Security allowlist
By default only private networks are allowed (RFC 1918: 10.x, 172.16–31.x, 192.168.x). External hosts must be explicitly allowed.
Admin → Integrations → Custom REST:
allowPrivateNetworks: true(default)allowedHosts— list of external domains, e.g.["api.coingecko.com", "data.example.com"]
Wildcard subdomains: *.example.com (all subdomains).
Using the widget
Admin → Content → Widgets → "Custom REST":
url— e.g.https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=eurvaluePath— e.g.$.bitcoin.eurlabelPath(optional) — e.g. a constant stringstatusPath(optional) — if a field delivers true/false or online/offlineheaders(optional) — auth headers etc.refreshSec— default 60
JSONPath examples
| JSON response | Desired field | Path |
|---|---|---|
{"bitcoin": {"eur": 38000}} |
38000 | $.bitcoin.eur |
{"data": [{"value": 42}]} |
42 | $.data[0].value |
{"status": "ok", "items": [...]} |
"ok" | $.status |
[{"name": "a"}, {"name": "b"}] |
"a" | $[0].name |
Troubleshooting
- "blocked: host not in allowlist" → add the external domain to
allowedHosts - JSONPath no match → test with
curl <url> | jq <path>(jq uses nearly the same syntax) - Auth fails → set
headers: { "Authorization": "Bearer ..." }
Community examples
- Crypto prices:
https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=eur+$.bitcoin.eur - GitHub stars:
https://api.github.com/repos/ITSWEBER-OFFICIAL/itsweber-mesh+$.stargazers_count - Weather detail:
https://api.open-meteo.com/v1/forecast?...+$.current.temperature_2m