API: Aufträge

Aufträge über die API abfragen, anlegen und ihren Status ändern, mit Filtern, Feldern, erlaubten Statuswechseln und Beispielen.

Stand:

Methode Pfad Berechtigung Inhalt
GET /orders read:orders Auftragsliste, blätterbar
GET /orders/{id} read:orders ein Auftrag mit Notizen und Berichten
POST /orders write:orders Auftrag anlegen
POST /orders/{id}/status write:orders Status ändern

Aufträge abfragen#

Filter für GET /orders:

Parameter Bedeutung
status ein oder mehrere Status, mit Komma getrennt, z. B. open,in_progress
customer_id, site_id Aufträge eines Kunden oder Objekts
asset_id Aufträge, die diese Anlage enthalten
scheduled_from, scheduled_to geplanter Beginn ab (einschließlich) bzw. vor (ausschließlich) diesem Zeitpunkt
limit, cursor, updated_since siehe Blättern

Beispiel: alle offenen und laufenden Aufträge der kommenden Woche.

curl -G "https://app.revisio-app.net/api/public/v1/orders" \
  --data-urlencode "status=open,in_progress" \
  --data-urlencode "scheduled_from=2026-11-02T00:00:00+01:00" \
  --data-urlencode "scheduled_to=2026-11-09T00:00:00+01:00" \
  -H "Authorization: Bearer rvs_IhrToken"

Ein Auftrag aus GET /orders/{id}:

{
  "data": {
    "id": "01k7b2c4d6e8f0g2h4j6k8m0n2",
    "number": "A-2026-00012",
    "title": null,
    "display_title": "Wartung",
    "status": "open",
    "priority": "normal",
    "type": { "id": "01k79z8y7x6w5v4t3s2r1q0p9n", "name": "Wartung" },
    "customer_id": "01k7a3m9x2c4d5e6f7g8h9j0k1",
    "site_id": "01k7a3n4q8r2s6t0v4w8x2y6z0",
    "fault_id": null,
    "asset_ids": ["01k7a3p1b5c9d3e7f1g5h9j3k7"],
    "assignees": [
      { "user_id": "01k6z1a2b3c4d5e6f7g8h9j0k1", "name": "Jonas Beispiel", "is_lead": true }
    ],
    "scheduled_start": "2026-11-03T07:00:00+00:00",
    "scheduled_end": "2026-11-03T09:00:00+00:00",
    "actual_start": null,
    "actual_end": null,
    "completed_at": null,
    "overall_result": null,
    "cancel_reason": null,
    "notes_technician": "Schlüssel beim Hausmeister.",
    "result_notes": null,
    "reports": [],
    "created_at": "2026-10-16T10:04:12+00:00",
    "updated_at": "2026-10-16T10:04:12+00:00"
  }
}

notes_technician, result_notes und reports stehen nur in der Einzelabfrage, nicht in der Liste.

Feld Werte
status draft (Entwurf), open (offen), in_progress (in Arbeit), paused (pausiert), completed (abgeschlossen), reviewed (geprüft), report_sent (Bericht versendet), billed (abgerechnet), cancelled (storniert)
priority low, normal, high, critical
overall_result nach Abschluss: operational (betriebsbereit), operational_with_defects (betriebsbereit mit Mängeln), not_operational (nicht betriebsbereit)
display_title Titel wie in Revisio angezeigt, auch wenn title leer ist
assignees zugewiesene Techniker, is_lead kennzeichnet die Leitung
actual_start, actual_end tatsächlicher Arbeitsbeginn und -ende laut Techniker-App
reports Berichte mit id, number (inkl. Version), version, status

Auftrag anlegen#

POST /orders legt einen Auftrag im Status open an. Kunde und Objekt ergeben sich aus den Anlagen.

Feld Pflicht Regel
order_type_id ja aktiver Auftragstyp aus GET /order-types
asset_ids ja 1 bis 50 Anlagen, alle vom selben Objekt, keine doppelt
title nein bis 255 Zeichen; ohne Titel zeigt Revisio den Namen des Auftragstyps
priority nein low, normal (Standard), high, critical
scheduled_start nein geplanter Beginn; Pflicht, wenn scheduled_end gesetzt ist
scheduled_end nein geplantes Ende, nach scheduled_start
notes_technician nein Hinweis für die Techniker, bis 10.000 Zeichen
fault_id nein Störung desselben Objekts, die mit diesem Einsatz behoben wird
curl -X POST "https://app.revisio-app.net/api/public/v1/orders" \
  -H "Authorization: Bearer rvs_IhrToken" \
  -H "Content-Type: application/json" \
  -d '{
    "order_type_id": "01k79z8y7x6w5v4t3s2r1q0p9n",
    "asset_ids": ["01k7a3p1b5c9d3e7f1g5h9j3k7"],
    "priority": "high",
    "scheduled_start": "2026-11-03T08:00:00+01:00",
    "scheduled_end": "2026-11-03T10:00:00+01:00",
    "notes_technician": "Zugang über Hof, Schlüssel beim Hausmeister."
  }'

Die Antwort ist 201 Created mit dem Auftrag in data und der Adresse im Header Location.

  • Techniker lassen sich über die API nicht zuweisen. Die Disposition plant den Auftrag in Revisio ein; danach erscheint er in der Techniker-App.
  • Mit fault_id wird die Störung dem Auftrag zugeordnet. Ist sie noch offen, wechselt sie auf „eingeplant“.
  • Der neue Auftrag löst den Webhook order.created aus.

Typische Fehler (422 validation_failed):

Feld in details Meldung
order_type_id Bitte einen aktiven Auftragstyp wählen.
asset_ids Mindestens eine Anlage wurde nicht gefunden.
asset_ids Alle Anlagen eines Auftrags müssen zum selben Objekt gehören.
fault_id Die Störung gehört nicht zum gewählten Objekt.
scheduled_end Ende vor dem Beginn

Status ändern#

POST /orders/{id}/status mit status und optional reason (bis 1.000 Zeichen).

curl -X POST "https://app.revisio-app.net/api/public/v1/orders/01k7b2c4d6e8f0g2h4j6k8m0n2/status" \
  -H "Authorization: Bearer rvs_IhrToken" \
  -H "Content-Type: application/json" \
  -d '{ "status": "cancelled", "reason": "Kunde hat den Termin abgesagt." }'

Über die API sind nur diese Wechsel möglich:

von nach
draft open, cancelled
open in_progress, cancelled
in_progress paused
paused in_progress
  • cancelled braucht einen reason.
  • in_progress setzt voraus, dass mindestens ein Techniker zugewiesen ist.
  • Ist der Auftrag bereits im gewünschten Status, antwortet die API mit 200 und ändert nichts. Wiederholte Anfragen sind damit unschädlich.
  • Abschluss, Prüfung, Berichtsversand und Abrechnung laufen nur in Revisio, weil sie Prüfprotokoll und Unterschrift voraussetzen.

Ein nicht erlaubter Wechsel ergibt 422 invalid_transition mit dem aktuellen Status und den erlaubten Zielen:

{
  "error": {
    "code": "invalid_transition",
    "message": "Statuswechsel von „completed“ nach „cancelled“ ist über die API nicht erlaubt.",
    "details": { "status": "completed", "allowed": [] }
  }
}

Jeder Statuswechsel steht im Statusverlauf des Auftrags und im Protokoll mit dem Namen des API-Zugangs und löst den Webhook order.status_changed aus.

Schnittstelle (API und Webhooks)

  • API und Webhooks im Überblick

    Was die Schnittstelle kann, wie ein Fremdsystem angebunden wird und wo die technischen Einzelheiten stehen.

  • Grundlagen: Anmeldung, Formate, Blättern, Fehler

    Anmeldung mit Token, Berechtigungen, Datenformate, Blättern mit Cursor, Abgleich mit updated_since, Rate-Limit und Fehlercodes der API.

  • API: Stammdaten

    Kunden, Objekte, Anlagen mit SW-Nummer und Auftragstypen über die API lesen, mit Filtern und allen Feldern.

  • API: Aufträge

    Aufträge über die API abfragen, anlegen und ihren Status ändern, mit Filtern, Feldern, erlaubten Statuswechseln und Beispielen.

  • API: Berichte

    Prüfberichte über die API abfragen und das PDF über einen zeitlich begrenzten, signierten Link laden, zum Beispiel für ERP oder Dokumentenablage.

  • API: Störungen

    Störungen über die API abfragen und melden, mit Statuswerten, Prioritäten, Störungskategorien und Reaktionszeit.

  • Webhooks empfangen und prüfen

    Aufbau einer Webhook-Nachricht, Header, Prüfung der Signatur mit Beispielen für PHP, Node.js und Python, Wiederholungen, Duplikate und Reihenfolge.

  • Webhook-Ereignisse

    Alle Ereignisse, die Revisio per Webhook meldet, wann sie ausgelöst werden und welche Daten sie enthalten.

  • Anwendungsbeispiele

    Typische Anbindungen Schritt für Schritt – ERP-Abrechnung, Berichtsablage im DMS, Störungsmeldung aus einer Leitstelle, Stammdatenabgleich und Wartungsplanung im ERP.

Verwandte Artikel

  • Aufträge verwalten: Liste, Auftragsseite und Status

    Aufträge finden und filtern, die Auftragsseite lesen und verstehen, was die Status von Offen bis Abgerechnet bedeuten.

  • Rechnungen

    Rechnungsentwürfe aus Aufträgen und Vertragspauschalen bearbeiten, festschreiben, als PDF und XRechnung ausgeben, korrigieren, stornieren oder an Lexware Office und sevDesk übergeben.

  • Export für die Buchhaltung

    Abgerechnete Aufträge als DATEV-Buchungsstapel, DATEV-Debitoren oder Rechnungspositionen für lexoffice und sevDesk exportieren und die Konten einstellen.

  • Störung bearbeiten und Status ändern

    Die Detailseite einer Störung mit Beschreibung, Fotos, Verlauf und Zuordnung – Störung bearbeiten, Status ändern und Kommentare erfassen.