API Guide

Server-Export-API für IPMI IP, MAC-Adressen und IPMI IPv6 aus Burn-in Reports.

Authentifizierung

Alle /api/v1/*-Endpunkte erfordern einen API-Token aus /opt/burnin/.env (API_TOKEN).

API_TOKEN konfiguriert

Header (eine Variante reicht):

Authorization: Bearer <API_TOKEN>
X-API-Key: <API_TOKEN>

Endpunkte

Methode URL Beschreibung
GET /api/v1/servers Alle Server (je neuester Report pro IPMI-IP)
GET /api/v1/servers?fetched=false Nur noch nicht abgerufene Datensätze
GET /api/v1/servers?fetched=true Nur bereits abgerufene Datensätze
GET /api/v1/servers?mark_fetched=true Datensätze liefern und direkt als abgerufen markieren
GET /api/v1/servers/{ipmi_ip} Einzelner Server
PATCH /api/v1/servers/{ipmi_ip} Abruf-Status setzen ({"fetched": true|false})
POST /api/v1/servers/mark-fetched Mehrere IPMI-IPs auf einmal markieren

OpenAPI-Dokumentation: https://dev.anebeling.de/docs

Antwort-Felder

Beispiel-Antwort

{
  "ipmi_ip": "92.204.179.46",
  "ipmi_ipv6": "2a01:7a7:2:1000:f0f1:8d4d:c630:f69b/64",
  "ipmi_mac": "4c:d9:8f:25:4f:50",
  "mac_addresses": [
    {"source": "ipmi", "interface": "ipmi", "mac": "4c:d9:8f:25:4f:50"},
    {"source": "nic", "interface": "eno1", "mac": "e4:43:4b:56:05:34"}
  ],
  "macs": ["4c:d9:8f:25:4f:50", "e4:43:4b:56:05:34"],
  "report_id": "live__2026-05-28_09-54-19",
  "report_url": "https://dev.anebeling.de/reports/live__2026-05-28_09-54-19",
  "hostname": "live",
  "test_timestamp": "2026-05-28T09:54:19+02:00",
  "fetched": false,
  "fetched_at": null
}

Beispiel-Aufrufe

Alle offenen Datensätze abholen

curl -s -H "Authorization: Bearer $API_TOKEN" \
  "https://dev.anebeling.de/api/v1/servers?fetched=false"

Abholen und als gelesen markieren

curl -s -H "Authorization: Bearer $API_TOKEN" \
  "https://dev.anebeling.de/api/v1/servers?fetched=false&mark_fetched=true"

Einzelnen Server markieren

curl -s -X PATCH -H "Authorization: Bearer $API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"fetched": true}' \
  "https://dev.anebeling.de/api/v1/servers/92.204.179.46"

Bulk-Markierung

curl -s -X POST -H "Authorization: Bearer $API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"ipmi_ips": ["92.204.179.46", "85.25.186.109"], "fetched": true}' \
  "https://dev.anebeling.de/api/v1/servers/mark-fetched"

Abruf-Status im Dashboard

Im Dashboard siehst du pro Report den Status Offen oder Fetched. Dort kannst du den Status auch manuell umschalten — ohne API-Token.

Ein neuer Burn-in-Report für dieselbe IPMI-IP setzt den Status automatisch wieder auf Offen, damit neue Daten erneut abgeholt werden können.