Vormerk

Handbuch › Anbindung an andere Systeme

Schnittstelle (API)

Zählerstände automatisch melden, Störungen auslösen, Fälligkeiten abfragen, Maschinen aus dem ERP abgleichen: Alles, was Sie dafür brauchen, steht hier. Die technische Beschreibung jedes Abrufs zum Ausprobieren liegt unter /api/v1/docs.

Was ist möglich?

Aufgabe Wie
Zählerstände automatisch melden API, einzeln oder als Sammelabruf
Störungen aus Überwachungssystemen auslösen API, mit Entdoppelung
Fälligkeiten und Wartungen abfragen oder im Kalender abonnieren API, iCal
Maschinen und Standorte aus ERP/CMMS abgleichen API, über die externe Kennung
Ihre Systeme über Ereignisse informieren Webhooks
Bei Zählergrenzen automatisch Aufgaben oder Störungen anlegen Zähler-Regeln

Alles davon ist ein Tarif-Merkmal. Ob es für Ihre Organisation freigeschaltet ist, steht unter Team → Tarif & Nutzung und auf den Seiten selbst („im Tarif nicht enthalten“).

Merkmal Bedeutung
Schnittstelle (API) API und Zugangsschlüssel nutzen
API-Zugangsschlüssel Anzahl gleichzeitig aktiver Schlüssel
API-Abrufe je Abrechnungsperiode Abrufe aller Schlüssel zusammen
Webhooks, Webhook-Empfänger Ereignisse melden, Anzahl der Adressen
Zähler-Regeln Grenzwert-Regeln auf Zählern

Schnellstart: der erste Zählerstand

  1. Unter Team → API auf Neuer Zugangsschlüssel. Dafür brauchen Sie die Rolle Verwaltung oder das Gruppenrecht „API-Zugangsschlüssel verwalten“ (siehe Team, Rollen und Rechte).
  2. Bezeichnung eintragen (z. B. „Kompressor-Gateway Halle 1“), das Recht Zählerstände melden ankreuzen, Bereich und Ablauf nach Bedarf, Schlüssel erzeugen.
  3. Den Schlüssel (vmk_…) jetzt kopieren. Er wird nur einmal angezeigt.
  4. Die Nummer der Maschine steht in der Adresse ihrer Seite (/maschinen/17/). Den Zählerstand melden:
curl -X POST https://vormerk.de/api/v1/machines/17/meter-readings \
  -H "Authorization: Bearer vmk_…" \
  -H "Content-Type: application/json" \
  -d '{"value": 1234.5}'

Antwort: 201 mit dem gespeicherten Stand. Die Maschine muss einen Zähler führen (Maschinenformular: „Zähler führen“).

Zugangsschlüssel

Ein Schlüssel ist ein Dienstkonto der Organisation: Er gehört keiner Person, und niemand muss ihn mit einem Passwort teilen. Vormerk speichert nur einen Fingerabdruck, den Klartext sehen Sie nur beim Anlegen.

Rechte (Scopes). Geben Sie nur, was das Fremdsystem braucht.

Recht Erlaubt
objects:read Objekte, Maschinen, Standorte, Arten lesen
objects:write Standorte, Objekte und Maschinen anlegen und ändern
meters:read / meters:write Zählerstände lesen / melden
incidents:read / incidents:create / incidents:update Störungen lesen / auslösen / kommentieren und Status setzen
tasks:read / tasks:write Aufgaben lesen / anlegen und erledigen
maintenance:read Fälligkeiten, Wartungen, Prüfprotokolle lesen
calendar:read Fälligkeiten als Kalender abonnieren

Bereich. Standorte (inklusive Unterstandorten), Objektarten und einzelne Objekte, beliebig kombinierbar. Ein Objekt gehört zum Bereich, wenn es zu einer der Auswahlen passt. Nichts gewählt bedeutet: die ganze Organisation. Was außerhalb liegt, gibt es für den Schlüssel nicht (Antwort 404, nicht 403). Beispiel: Der Schlüssel „Sensor Presse 4“ darf nur an der einen Maschine Zählerstände melden.

Weitere Einschränkungen. Ablaufdatum (Vorgabe: ein Jahr), Liste erlaubter Adressen (eine Adresse oder ein Netz wie 203.0.113.0/24 je Zeile) und ein eigenes Limit pro Minute.

Pflege. - Widerrufen wirkt sofort. Auf der Seite des Schlüssels sehen Sie letzte Nutzung und Abrufe der letzten Tage. - Rotation: neuen Schlüssel anlegen, im Fremdsystem eintragen, den alten widerrufen. - Bewahren Sie Schlüssel wie Passwörter auf: nicht im Quelltext, nicht in Adressen, nicht in Tickets.

Die Schnittstelle im Alltag

Grundregeln - Adresse: https://vormerk.de/api/v1/…. Anmeldung mit Authorization: Bearer vmk_…. - Daten als JSON. Zeiten nach ISO 8601 mit Zeitzone (2026-10-15T08:30:00+02:00). Dezimalzahlen kommen als Text ("1234.50"), damit nichts gerundet wird. - Listen nehmen limit (höchstens 200) und offset. Antwort: {"count": …, "items": […]}. - Fehler haben immer die Form {"code": "…", "detail": "…"}.

Wiederholen ohne Doppelungen. Schreibende Abrufe nehmen die Kopfzeile Idempotency-Key (bis 64 Zeichen) an. Sendet Ihr System denselben Abruf mit demselben Schlüssel nochmals, zum Beispiel nach einem Netzfehler, liefert Vormerk 24 Stunden lang dieselbe Antwort und führt nichts ein zweites Mal aus. Mit anderen Daten unter demselben Schlüssel: 422 idempotency_conflict.

Objekte ansprechen. Wo ein Objekt gebraucht wird, genügt eine der Angaben id, inventory_no (Inventarnummer) oder external_id (Kennung in Ihrem System, im Maschinenformular unter „Externe Kennung“).

Abrufe im Überblick

Abruf Recht Zweck
GET /objects, GET /machines, GET /machines/{id} objects:read suchen und lesen (q, inventory_no, external_id, location_id, type_id)
GET /objects/by-qr/{token} objects:read Objekt zu einem QR-Code finden
GET /locations, GET /object-types objects:read Stammdaten lesen
POST /locations, POST /machines, PATCH /machines/{id} objects:write anlegen und ändern
PUT /machines/by-external-id/{kennung} objects:write abgleichen: anlegen oder ändern
GET/POST /machines/{id}/meter-readings meters:read/write Zählerstände
POST /meter-readings/batch meters:write bis 500 Stände auf einmal
GET /incidents, GET /incidents/{id} incidents:read Störungen lesen (status=open, all oder ein Status)
POST /incidents incidents:create Störung auslösen
POST /incidents/{id}/comments, /status incidents:update kommentieren, Status setzen
GET /tasks, POST /tasks, POST /tasks/{id}/complete tasks:read/write Aufgaben
GET /due maintenance:read überfällige und bald fällige Wartungen
GET /maintenance-records, …/{id}/protocol.pdf maintenance:read Wartungen und Prüfprotokolle
GET /calendar.ics?token=… calendar:read Kalender-Abonnement

Zählerstände

Ein Stand darf nicht kleiner sein als der letzte (422 meter_decreased) und nicht in der Zukunft liegen (read_at_in_future). Ohne read_at gilt der Zeitpunkt des Abrufs.

Sammelabruf für Gateways, mit Ergebnis je Zeile:

curl -X POST https://vormerk.de/api/v1/meter-readings/batch \
  -H "Authorization: Bearer vmk_…" -H "Content-Type: application/json" \
  -d '[{"external_id": "PLC-7", "value": 1210.5},
       {"inventory_no": "K-1",  "value": 880}]'
{"ok": 2, "errors": 0, "results": [{"index": 0, "status": "ok", "id": 91}, {"index": 1, "status": "ok", "id": 92}]}

Fehlerhafte Zeilen stehen mit status: "error" und code in der Antwort. Die übrigen werden gespeichert.

Störungen auslösen

curl -X POST https://vormerk.de/api/v1/incidents \
  -H "Authorization: Bearer vmk_…" -H "Content-Type: application/json" \
  -d '{"title": "Druckabfall Kompressor", "priority": "high",
       "object": {"external_id": "PLC-7"}, "external_ref": "ALARM-4711"}'

Mit external_ref (Ihre Alarmnummer) entsteht keine zweite Störung, solange die erste offen ist: Die Antwort ist dann 200 mit "duplicate": true und der vorhandenen Störung. Priorität high und standstill benachrichtigen die Admins wie bei einer Meldung aus der Oberfläche. Der Verlauf der Störung vermerkt den Schlüssel.

Abgleich mit ERP oder CMMS

Der regelmäßige Abgleich läuft über die externe Kennung:

curl -X PUT https://vormerk.de/api/v1/machines/by-external-id/SAP-1000234 \
  -H "Authorization: Bearer vmk_…" -H "Content-Type: application/json" \
  -d '{"name": "Presse 4", "inventory_no": "P-4", "location_id": 3, "serial_no": "A-77"}'

Gibt es die Kennung, wird die Maschine geändert (200), sonst angelegt (201). Beim Anlegen gelten Ihre Tarifgrenze für Maschinen und der Bereich des Schlüssels; Pläne aus den Vorlagen der Objektart entstehen wie bei einer Anlage in der Oberfläche.

Kalender abonnieren

Ein Schlüssel nur mit dem Recht calendar:read genügt. Adresse für Kalender-Apps: https://vormerk.de/api/v1/calendar.ics?token=vmk_…. Weil dieser Schlüssel in der Adresse steht, darf er nichts anderes können.

Grenzen und Fehlercodes

Pro Schlüssel gelten Abrufe je Minute (Vorgabe 120, einstellbar) und für die Organisation das Kontingent des Tarifs je Abrechnungsperiode. Darüber antwortet die Schnittstelle mit 429 und Retry-After.

Status Code Bedeutung
401 invalid_token Schlüssel unbekannt, widerrufen oder abgelaufen
403 feature_not_in_plan Die Schnittstelle (oder der Teil) ist im Tarif nicht enthalten
403 missing_scope Dem Schlüssel fehlt das Recht
403 ip_not_allowed Adresse nicht in der Liste des Schlüssels
403 subscription_locked Konto gesperrt: Lesen geht, Schreiben nicht
403 out_of_scope, limit_reached außerhalb des Bereichs; Tarifgrenze für Maschinen erreicht
404 not_found gibt es nicht, oder liegt außerhalb des Bereichs
409 duplicate_external_id, ambiguous Kennung doppelt / Angabe passt auf mehrere Objekte
422 invalid_reference, meter_decreased, no_meter, … Eingabe unzulässig, detail erklärt es
429 rate_limited, quota_exceeded zu viele Abrufe; Minutenlimit / Monatskontingent

Etwas fehlt oder stimmt nicht? Schreiben Sie uns über das Kontaktformular.