Eziwan REST-API

Met de REST-API van Eziwan kunt u het platform integreren in uw bestaande systemen — SCADA, ERP, ITSM, BI — of uw eigen monitoringapplicaties ontwikkelen.


Basis-URL en authenticatie

Eindpunt

https://api.eziwan.com/v1

Bearer-authenticatie

Voor alle verzoeken is een Bearer-API-token vereist:

Authorization: Bearer np_api_xxxxxxxxxxxxxxxxxxxxxxxx

Genereer een token via Instellingen → API → Een token aanmaken.

Beschikbare machtigingsniveaus per token:

  • Alleen lezen: uitsluitend GET — dashboard, gegevens, status
  • Lezen/schrijven: GET + POST/PUT — waarschuwingen, herstart, configuratie
  • Beheerder: volledige toegang, inclusief gebruikersbeheer en facturering

Belangrijkste eindpunten

Maatregelen

# Alle apparaten weergeven
GET /v1/devices

# Detail van een apparaat
GET /v1/devices/{device_id}

# Realtime status (signaal, VPN, actieve simkaart)
GET /v1/devices/{device_id}/status

# Verbindingsgeschiedenis
GET /v1/devices/{device_id}/connectivity?from=2026-01-01&to=2026-06-01

Sensorgegevens

# Laatste waarden van alle variabelen van een apparaat
GET /v1/devices/{device_id}/data/latest

# Tijdreeks voor één variabele
GET /v1/devices/{device_id}/data?metric=active_power&from=2026-06-01T00:00:00Z&to=2026-06-01T23:59:59Z&interval=5m

# Export CSV
GET /v1/devices/{device_id}/data/export?format=csv&from=2026-01-01&to=2026-06-30

Waarschuwingen

# Actieve waarschuwingen over de organisatie
GET /v1/organization/alarms/active

# Historique des alertes
GET /v1/organization/alarms?from=2026-06-01&severity=critical

# Een waarschuwing afsluiten
POST /v1/alarms/{alarm_id}/acknowledge
Body: { "comment": "Technicien en route" }

# Een waarschuwing oplossen
POST /v1/alarms/{alarm_id}/resolve
Body: { "comment": "Pompe réparée, retour à la normale" }

Maatregelen

# Een apparaat opnieuw opstarten (lees-/schrijfrechten vereist)
POST /v1/devices/{device_id}/reboot

# Forcer un failover SIM
POST /v1/devices/{device_id}/failover
Body: { "target_sim": 2 }

# Logs d'audit
GET /v1/audit-logs?from=2026-01-01&to=2026-06-30&format=csv

Praktische voorbeelden

Python — Offline apparaten ophalen

import requests

API_TOKEN = "np_api_xxxxxxxxxxxxxxxxxxxxxxxx"
BASE_URL = "https://api.eziwan.com/v1"

headers = {"Authorization": f"Bearer {API_TOKEN}"}

# Offline apparaten weergeven
response = requests.get(f"{BASE_URL}/devices", headers=headers)
devices = response.json()["data"]

offline = [d for d in devices if d["status"] == "offline"]
print(f"{len(offline)} dispositifs hors ligne :")
for d in offline:
print(f" - {d['name']} ({d['id']}) — hors ligne depuis {d['last_seen']}")

Python — Gegevens van een sensor ophalen

import requests
from datetime import datetime, timedelta

API_TOKEN = "np_api_xxxxxxxxxxxxxxxxxxxxxxxx"
DEVICE_ID = "d_a1b2c3d4"

headers = {"Authorization": f"Bearer {API_TOKEN}"}

# Laatste 24 uur — actief vermogen
response = requests.get(
f"https://api.eziwan.com/v1/devices/{DEVICE_ID}/data",
headers=headers,
params={
"metric": "active_power",
"from": (datetime.utcnow() - timedelta(days=1)).isoformat() + "Z",
"to": datetime.utcnow().isoformat() + "Z",
"interval": "5m"
}
)

data = response.json()["data"]
print(f"{len(data)} points retournés")
for point in data[:5]:
print(f" {point['timestamp']}: {point['value']} {point['unit']}")

curl — CSV-export voor maandelijks rapport

curl -H "Authorization: Bearer np_api_xxxx" \
"https://api.eziwan.com/v1/devices/d_a1b2c3d4/data/export?format=csv&from=2026-06-01&to=2026-06-30" \
-o donnees_juin_2026.csv

Webhooks

Webhooks sturen gebeurtenissen via een pushbericht naar uw HTTP-eindpunt.

Configuratie

Dashboard → Waarschuwingen → Webhooks → Een webhook toevoegen

Instellingen:

  • URL: uw HTTPS-eindpunt (bijv.: https://your-app.com/eziwan-events)
  • Secret: HMAC-SHA256-sleutel om de handtekening te verifiëren (optioneel, maar aanbevolen)
  • Gebeurtenissen: selecteer de typen (device.offline, alarm.triggered, failover, enz.)

Payload-formaat

{
"event": "device.offline",
"severity": "critical",
"timestamp": "2026-06-15T02:14:33.412Z",
"device": {
"id": "d_a1b2c3d4",
"name": "GW-Valenciennes-03",
"group": "Région Nord / Site Valenciennes",
"tags": ["env:production", "criticite:haute"]
},
"detail": {
"last_seen": "2026-06-15T02:12:01.000Z",
"sim_active": 2,
"rsrp_dbm": -108
},
"dashboard_url": "https://app.eziwan.com/devices/d_a1b2c3d4"
}

Controle van de handtekening

import hmac, hashlib

def verify_eziwan_webhook(payload: bytes, signature: str, secret: str) -> bool:
expected = "hmac-sha256=" + hmac.new(
secret.encode(), payload, hashlib.sha256
).hexdigest()
return hmac.compare_digest(expected, signature)

# In je Flask/FastAPI-handler:
# signature = request.headers.get("X-Eziwan-Signature")
# valid = verify_eziwan_webhook(request.body, signature, WEBHOOK_SECRET)

Beschikbare evenementen

GebeurtenisTrigger
device.offlineApparaat offline
device.onlineWeer online
alarm.triggeredAlarmdrempel overschreden
alarm.resolvedAlarm opgeheven
failover.activatedOmschakeling SIM1 → SIM2
failover.recoveredTerug naar SIM1
firmware.updatedFirmware-update geslaagd
provisioning.completedZTP voltooid — gateway online

ITSM-integraties via webhooks

ServiceNow

// Transformatiescript voor ServiceNow Integration Hub
(function process(/*RESTAPIRequest*/ request) {
var body = JSON.parse(request.body.dataString);

if (body.event === "device.offline" && body.severity === "critical") {
var incident = new GlideRecord("incident");
incident.short_description = "Gateway Eziwan hors ligne : " + body.device.name;
incident.description = "Site : " + body.device.group + "\nDernier vu : " + body.detail.last_seen;
incident.urgency = "1"; // Haute
incident.impact = "2"; // Moyen
incident.insert();
}
})(request);

Jira Service Management

# Automatisch een ticket aanmaken via de Jira-API
curl -X POST \
-H "Authorization: Bearer JIRA_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"fields": {
"project": { "key": "OPS" },
"summary": "Gateway hors ligne : GW-Valenciennes-03",
"description": "Site : Région Nord\nDernier contact : 2026-06-15T02:12:01Z",
"issuetype": { "name": "Incident" },
"priority": { "name": "High" }
}
}' \
"https://uw-instantie.atlassian.net/rest/api/3/issue"

Limieten en quota

PakketAPI-verzoeken/dagWebhooksCSV-export
Starter1 0002 endpoints90 dagen
Growth10.00010 endpoints1 jaar
Scale100.00050 endpoints3 jaar
EnterpriseOnbeperktOnbeperktOnbeperkt

Volledige documentatie

De volledige OpenAPI-referentie (Swagger) is beschikbaar op api.eziwan.com/docs.

Neem contact op met het technische team → | Snelstartgids →

Veelgestelde vragen

Hoe log je in op de API?

Via een Bearer-token dat vanuit de console wordt gegenereerd (bereik en vervaldatum kunnen worden geconfigureerd). De tokens worden onmiddellijk ingetrokken en elke aanroep wordt samen met de afzender gelogd.

Welke gegevens zijn via de API beschikbaar?

De inventaris van de apparatuur en de status daarvan (signaal, SIM, VPN, firmware), de verzamelde meetgegevens (Modbus, sensoren), de geschiedenis van de waarschuwingen en de beheersacties (herstart, configuratie doorsturen).

Is het mogelijk om via pushmeldingen te worden geïnformeerd in plaats van via polling?

Ja, via webhooks: het platform roept bij elke geselecteerde gebeurtenis (waarschuwing, verbroken verbinding, overschrijding van een drempelwaarde) uw HTTP-eindpunt aan, ideaal voor het aanmaken van ITSM-tickets of het voeden van uw bestaande monitoring.

Zijn er snelheidsbeperkingen?

Ja, rate-limiting beschermt het platform; de standaardquota’s zijn ruim voldoende voor de gebruikelijke integraties en kunnen op verzoek worden aangepast voor intensief gebruik.

Gerelateerde bronnen