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 positivenlimit. Beilimit=0oder einem negativen Wert wirdqignoriert oder die Anfrage schlägt mit einem Fehler fehl — je nach Endpunkt. Wirdlimitweggelassen, gilt der Default10undqfunktioniert korrekt.limitimmer auf einen positiven Wert setzen.
Wie funktioniert q?
Der Wert von q kann aus zwei Teilen bestehen, die beliebig kombiniert werden können:
- Freitext — Suche über viele Felder gleichzeitig
- 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 10 — q 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.