WERBAS REST API — Suchparameter

WERBAS REST API — Suchparameter q

Dieses Dokument beschreibt, wie der q-Parameter der WERBAS REST API für die Endpunkte GET /vehicle und GET /workorder verwendet wird.


Kurzübersicht

Endpunkt Suchart Hinweis
GET /vehicle Fahrzeugsuche Liefert standardmäßig nur aktive Fahrzeuge
GET /workorder Auftragssuche Liefert nur offene Aufträge

Alle Parameter sind optional. Wird q weggelassen, liefert der Endpunkt alle verfügbaren Datensätze (paginiert gemäß limit/skip).


Alle Abfrageparameter

Parameter Beschreibung Standard
q Suchbegriff (Syntax s. u.)
limit Anzahl Ergebnisse pro Abfrage. Muss größer 0 sein, damit q wirkt — s. Hinweis unten. 0
skip Anzahl Datensätze, die übersprungen werden (für Paging) 0
sort Feldname, nach dem sortiert wird. Vorangestelltes ! kehrt die Sortierung um.
showinactive Nur /vehicle: true schließt inaktive Fahrzeuge ein false

Wichtig: Der q-Parameter funktioniert nur in Kombination mit einem positiven limit. Bei limit=0 oder einem negativen Wert wird q ignoriert oder die Anfrage schlägt mit einem Fehler fehl — je nach Endpunkt. Wird limit weggelassen, gilt der Default 10 und q funktioniert korrekt. limit immer auf einen positiven Wert setzen.


Wie funktioniert q?

Der Wert von q kann aus zwei Teilen bestehen, die beliebig kombiniert werden können:

  1. Freitext — Suche über viele Felder gleichzeitig
  2. Gezielte Feldsuche — Suche auf einem bestimmten Feld mit optionalem Vergleichsoperator

Mehrere Suchbedingungen werden durch Komma (,) getrennt. Alle Bedingungen müssen zutreffen (AND-Verknüpfung).


1. Freitextsuche

Ein Suchbegriff ohne : wird als Freitext über viele Felder des Datensatzes gesucht. Mehrere Wörter können angegeben werden — alle müssen vorkommen.

Felder der Freitextsuche bei /vehicle

Welche Daten werden durchsucht?
Kennzeichen (alle Varianten)
Fahrgestellnummer
Inventarnummer
Fahrzeugtyp, Modell
Marke und Hersteller
Erstzulassung
Bemerkungsfelder am Fahrzeug
Name und Adresse des Fahrzeughalters

Felder der Freitextsuche bei /workorder

Welche Daten werden durchsucht?
Auftragsnummer
Bemerkung des Auftrags
Kundennummer
Kundenname (Vor- und Nachname)
Kunden-E-Mail (am Auftrag hinterlegt)
Externer Auftragsbezug
Vollständige Kundenadresse (Adresszeilen, Straße, Ort)
Auftragsstatus-Kürzel
Kennzeichen, Fahrgestellnummer und Inventarnummer des Fahrzeugs
Fahrzeugtyp, Modell, Marke
Bemerkung des Fahrzeugs
Name von Sachbearbeiter und Verkäufer
Auftragsart
Fertigstellungs- und Annahmedatum

Nicht in der Freitextsuche enthalten: Telefonnummer/PLZ des Kunden, Auftragspositionstexte, Arbeitsgänge, Artikel.

Beispiele Freitextsuche

# Fahrzeuge, bei denen "Mustermann" vorkommt (Halter, Bemerkung, etc.) — erste 25 Treffer
GET /vehicle?limit=25&q=Mustermann

# Aufträge mit "BMW" (im Fahrzeug, in Bemerkungen, etc.) — erste 25 Treffer
GET /workorder?limit=25&q=BMW

# Aufträge mit "Mustermann" UND "Golf" (beide Begriffe müssen vorkommen)
GET /workorder?limit=25&q=Mustermann,Golf

2. Gezielte Feldsuche

Mit der Syntax feldname:wert wird gezielt auf einem bestimmten Feld gesucht.

q=feldname:wert
q=feldname:[operator]wert

Vergleichsoperatoren

Schreibweise Bedeutung Beispiel
feldname:wert Enthält / ist gleich (automatisch) vehicle.brand:BMW
feldname:=wert Exakt gleich workorder.workorderStatus:=AIA
feldname:!=wert Ungleich workorder.workorderStatus:!=STO
feldname:<wert Kleiner als vehicle.dateOfFirstRegistration:<2010-01-01
feldname:<=wert Kleiner oder gleich workorder.workorderid:<=5000
feldname:>wert Größer als vehicle.dateOfFirstRegistration:>2020-01-01
feldname:>=wert Größer oder gleich workorder.workorderid:>=1000
feldname:*wert* Enthält (Wildcard) vehicle.model:*Kombi*
feldname:~wert Klingt ähnlich (phonetisch) workorder.contact.familyName:~Mayer

Mehrere erlaubte Werte (IN-Liste)

Mehrere Werte, von denen einer zutreffen soll, werden mit | (Pipe-Zeichen) getrennt:

q=feldname:wert1|wert2|wert3

Besonderheiten bei Datumsfeldern

Eingabe Bedeutung
today Heute
today+1 Morgen
today-7 Vor 7 Tagen
2024-12-31 Konkretes Datum (ISO 8601)
2024-12-31T08:30 Konkretes Datum mit Uhrzeit

Bei Datumsfeldern sucht eine einfache Gleichheitsangabe automatisch nach dem gesamten Tag (unabhängig von der Uhrzeit).

Besonderheit: Wert 0

Bei Nicht-Datumsfeldern schließt der Wert 0 auch Datensätze ein, bei denen das Feld leer ist.


Durchsuchbare Felder

/vehicle — Fahrzeuge

Feldname Art Beschreibung
id Zahl Interne Fahrzeug-ID
vehicle.registration Text Kennzeichen
vehicle.registrationMinified Text Kennzeichen ohne Sonderzeichen/Leerzeichen
vehicle.vin Text Fahrgestellnummer
vehicle.inventoryCode Text Eigene Inventarnummer
vehicle.modelType Text Fahrzeugtyp
vehicle.brand Text Marke
vehicle.model Text Modell
vehicle.dateOfFirstRegistration Datum Erstzulassung
vehicle.lastModified Datum Zuletzt geändert
vehicle.createdAt Datum Angelegt am
vehicle.active Bool Aktiv (true/false)
vehicle.subsidiaryid Zahl Filial-ID

/workorder — Aufträge

Feldname Art Beschreibung
id Zahl Interne Auftrag-ID
workorder.workorderid Zahl Auftragsnummer
workorder.remark Text Bemerkung
workorder.contact.customerId Zahl Kunden-ID
workorder.contact.debitorId Zahl Debitor-ID
workorder.contact.customerReference Zahl Kundennummer
workorder.contact.givenName Text Vorname
workorder.contact.familyName Text Nachname
workorder.contact.adress.street Text Straße
workorder.contact.adress.city Text Ort
workorder.vehicle.id Zahl Fahrzeug-ID
workorder.vehicle.registration Text Kennzeichen des Fahrzeugs
workorder.vehicle.vin Text Fahrgestellnummer des Fahrzeugs
workorder.vehicle.modelType Text Fahrzeugtyp
workorder.vehicle.brand Text Marke
workorder.vehicle.model Text Modell
workorder.pickUpDateTime Datum Fertigstellungsdatum/-zeit
workorder.bringInDateTime Datum Annahmedatum/-zeit
workorder.workorderStatus Text Auftragsstatus (Kürzel)
workorder.lastModified Datum Zuletzt geändert
workorder.createdAt Datum Angelegt am
workorder.workorderTypeIsInactive Bool Auftragsart inaktiv
workorder.customStatuses.status1.id Text Benutzerdefinierter Status 1 — ID
workorder.customStatuses.status2.id Text Benutzerdefinierter Status 2 — ID
workorder.customStatuses.status3.id Text Benutzerdefinierter Status 3 — ID
workorder.customStatuses.status4.id Text Benutzerdefinierter Status 4 — ID
workorder.customStatuses.status5.id Text Benutzerdefinierter Status 5 — ID
workorder.customStatuses.status1.text Text Benutzerdefinierter Status 1 — Text
workorder.customStatuses.status2.text Text Benutzerdefinierter Status 2 — Text
workorder.customStatuses.status3.text Text Benutzerdefinierter Status 3 — Text
workorder.customStatuses.status4.text Text Benutzerdefinierter Status 4 — Text
workorder.customStatuses.status5.text Text Benutzerdefinierter Status 5 — Text
workorder.subsidiaryid Zahl Filial-ID

Sonderzeichen im Suchwert

Einige Zeichen haben in URLs eine besondere Bedeutung und müssen durch Platzhalter ersetzt werden:

Zeichen Platzhalter Beispiel
? *qm* vehicle.registration:M*qm*X
& *and* workorder.remark:Öl *and* Filter
/ *slash* vehicle.registration:M*slash*X
\ *backs*
# *hash*
% *perc*

Sortierung

Der sort-Parameter akzeptiert denselben Feldnamen wie q. Ein vorangestelltes ! kehrt die Sortierreihenfolge um (absteigend).

# Aufträge nach Fertigstellungsdatum absteigend
GET /workorder?sort=!workorder.pickUpDateTime

# Fahrzeuge nach Marke aufsteigend
GET /vehicle?sort=vehicle.brand

Vollständige Beispiele

Fahrzeugsuche

# BMW mit Erstzulassung ab 2020 — erste 25 Treffer
GET /vehicle?limit=25&q=vehicle.brand:BMW,vehicle.dateOfFirstRegistration:>=2020-01-01

# Fahrzeuge mit Kennzeichen, das mit "M-" beginnt
GET /vehicle?limit=25&q=vehicle.registration:M-*

# Fahrzeuge nach Fahrgestellnummer
GET /vehicle?limit=25&q=vehicle.vin:WBA12345678901234

# Auch inaktive Fahrzeuge einschließen
GET /vehicle?limit=25&q=vehicle.brand:BMW&showinactive=true

# Paging: zweite Seite mit je 25 Ergebnissen, sortiert nach Marke
GET /vehicle?limit=25&skip=25&sort=vehicle.brand&q=vehicle.brand:BMW

Auftragssuche

# Offene Aufträge für Kunden "Mustermann"
GET /workorder?limit=25&q=workorder.contact.familyName:Mustermann

# Aufträge im Status "AIA" oder "STO"
GET /workorder?limit=25&q=workorder.workorderStatus:AIA|STO

# Aufträge, die heute fertiggestellt werden sollen
GET /workorder?limit=25&q=workorder.pickUpDateTime:today

# Aufträge der letzten 30 Tage, neueste zuerst
GET /workorder?limit=25&sort=!workorder.createdAt&q=workorder.createdAt:>=today-30

# Aufträge für ein bestimmtes Fahrzeug per Kennzeichen
GET /workorder?limit=25&q=workorder.vehicle.registration:M-AB1234

# Kombination: Aufträge für Kunden "Mustermann" mit BMW, Status nicht "STO"
GET /workorder?limit=25&q=workorder.contact.familyName:Mustermann,workorder.vehicle.brand:BMW,workorder.workorderStatus:!=STO

# Freitext: Aufträge, bei denen irgendwo "Inspektion" vorkommt
GET /workorder?limit=25&q=Inspektion

# Auftragsnummer größer gleich 10000, nach Nummer sortiert, 50 Treffer
GET /workorder?limit=50&sort=workorder.workorderid&q=workorder.workorderid:>=10000

Häufige Fragen

Was passiert bei einem unbekannten Feldnamen?
Der Filter wird stillschweigend ignoriert — es gibt keinen Fehler.

Was passiert, wenn ich bei einem Zahlenfeld einen ungültigen Wert übergebe?
Die API antwortet mit HTTP 400 (Bad Request).

Muss limit gesetzt sein, damit q funktioniert?
Ja. Der q-Filter greift nur bei limit > 0. Wird limit weggelassen, gilt automatisch der Default 10q funktioniert dann korrekt. Wer limit explizit auf 0 oder negativ setzt, um alle Datensätze auf einmal abzurufen, erhält je nach Endpunkt entweder keine Filterung (q wird ignoriert) oder einen Serverfehler. limit deshalb immer auf einen positiven Wert setzen.

Liefert /workorder auch abgeschlossene Aufträge?
Nein. Der Endpunkt liefert ausschließlich offene Aufträge, unabhängig von den Suchparametern.

Wie erhalte ich inaktive Fahrzeuge?
Mit &showinactive=true. Ohne diesen Parameter werden nur aktive Fahrzeuge zurückgegeben.

Artikel ID: 3872580

War dieser Artikel hilfreich?