Damit Sie den Web-Service nutzen können muss zunächst ein Suchprofil eingerichtet werden. Beim Speichern des Suchprofils muss darauf geachtet werden, dass dieses mit der Option "Web-Service" angelegt wird:
Dies gilt gleichermassen für Suchprofile vom Typ Projekte wie auch vom Typ Submissionen — legen Sie für jeden Objekttyp ein eigenes Suchprofil an.
Die ID des Suchprofils kann seiner URL entnommen werden, z.B
Um sich mit dem Web-Service zu verbinden, muss zunächst ein Login erfolgen. Dieser kann unter dem Endpunkt POST /login_check erreicht werden. Hier wird eine Anfrage mithilfe des Benutzernamens und Passwortes des zur Verfügung gestellten Benutzers gestellt. Der Login ist identisch — unabhängig davon, ob Sie anschliessend Projekte oder Submissionen abrufen.
Beispiel Login Abfrage:
Beispiel Login Ergebnis:
Ein erfolgreicher Login liefert einen JWT-Token und einen entsprechenden Refresh-Token. Ersteres wird für jeden weiteren Kontakt mit der Schnittstelle benötigt. Letzteres wird benötigt, um sich nach Ablauf des Tokens einen neuen Token ausstellen zu lassen.
Wichtig:
Wenn Sie einen normalen Benutzer haben, welcher sich nicht mehrfach gleichzeitig einloggen kann, bekommen Sie auch einen Security-Cookie. Diesen müssen Sie ebenfalls bei jedem Aufruf mit sich führen.
Hinweis zur Session-Verwaltung: Beim Testen der Schnittstelle ist zu beachten, dass pro Benutzerkonto nur eine aktive Session erlaubt ist. Wenn Sie sich über die Schnittstelle mit Benutzername und Passwort einloggen, wird eine bestehende Browser-Session automatisch beendet. Das gleiche gilt umgekehrt: Sobald Sie sich erneut im Browser anmelden, wird die bestehende API-Session beendet. Dies sollte insbesondere bei Entwicklungs- und Testarbeiten berücksichtigt werden.
Beispiel
Der JWT ist standardmässig eine Stunde lang gültig. Benötigt man eine längere Session, kann man den Token mithilfe des Refresh-Tokens unter POST /token/refresh wie folgt erneuern:
Beispiel Refresh Abfrage:
Das Ergebnis dieser Abfrage ist identisch mit der Login-Abfrage. Der Refresh-Token ist 8 Stunden lang gültig und wird ebenfalls erneuert bei jedem Aufruf.
Abholen der Daten
Es gibt zwei mögliche Endpunkte entsprechend der im Xplorer verfügbaren Produkte.
SearchProfile-IDs sind strikt an den jeweiligen Endpunkt (Objekttyp) gebunden und können nicht zwischen verschiedenen Endpunkten wiederverwendet werden. Wird ein SearchProfile mit einem nicht passenden Endpunkt verwendet, führt dies zu einem „SearchProfile with given id not found"-Fehler, auch wenn die ID grundsätzlich existiert.
Endpunkt-Name
Objekte
all_pn_headers
Ausschreibungen / Tenders
projects
Projekte
Hinweis: Welche Objekte bei Ihnen verfügbar sind, hängt von Ihrem Baublatt- Rahmenvertrag ab.
Das Abholen der Daten findet über einen der o.g. Endpunkte per GET statt, z.B. /web_service/all_pn_headers/. Hierzu wird der bereits erhaltene JWT-Token und die ID von dem zuvor angelegten Suchprofil benötigt. Der Token wird mittels Authorization-Header mitgegeben. Die Suchprofil-ID mithilfe eines GET-Parameters wie folgt:
Beispiel Daten Abholen - Projekte
Beispiel Daten Abholen - Submissionen
Diese Abfrage liefert nun, sofern vorhanden, die neuen Daten Ihres Suchprofils. Das Format der Daten kann mittels des Accept-Headers entschieden werden. Die folgenden Optionen stehen standardmässig zur Verfügung:
Accept: application/xml
Accept: application/json
Accept: application/ld+json
Empfehlung:
Für neue Integrationen empfehlen wir die Nutzung des Formats application/json, da dieses Format in den meisten Programmiersprachen und Integrationsplattformen standardmässig unterstützt wird.
Bestätigung der Abholung
Der Web-Service liefert Ihnen die Daten Ihres Suchprofils und merkt sich dabei, was Sie bereits abgeholt haben. Standardmässig bekommen Sie 10 bzw. 20 Datensätze (Projekte bzw. Tenders) pro Aufruf der oben genannten Endpunkte. Damit eventuelle Fehler behandelt werden können, müssen Sie das Abholen jedoch bestätigen um an die nächsten 20 Datensätze zu kommen. Hierzu bieten wir Ihnen zwei Wege:
Bestätigung per Header
Wenn Sie keinen weiteren Endpunkt aufrufen wollen, können Sie direkt beim Abholen der Daten bestätigten, dass Sie die Daten erhalten haben. So bekommen Sie bei jedem Aufruf des o.g. Endpunktes neue Daten. Dies geschieht mithilfe des Headers X-AUTO-ACK. Dazu das passende Beispiel:
Beispiel Abholen Mit Auto-Ack:
Bestätigung per Endpunkt
Der sicherste Weg keine Daten zu verlieren ist es, uns nach dem Abholen separat mitzuteilen, dass Sie die Daten sauber bekommen haben. Dies geschieht mithilfe des Endpunktes POST /web_service/acknowledge/. Hierzu wird ein JSON-Objekt erwartet, welches sowohl die Suchprofil-ID von Ihnen enthält als auch die IDs der Datensätze, welche Sie uns Bestätigen wollen. Hierzu ein Beispiel:
Beispiel Ack-Endpunkt:
Datenstruktur
Wählen Sie unten aus, ob Sie die Datenstruktur für Projekte oder für Submissionen sehen möchten.
Anmerkung: Immer wenn Sie ein Datenfeld "Code" in der Datenstruktur sehen, können Sie eine entsprechende Liste mit allen verfügbaren Codes zusammen mit den dazugehörigen Namen als CSV über das Download-Symbol herunterladen.
Projekte · /web_service/projects/
Feld
Typ
Beschreibung
Beispiel
externalID
string
Externe ID
3197834
id
int
Eindeutige ID
312885
title
string
Titel
Neubau Reservoir mit Leitungsersatz
subtitle
Nicht für CH verwendet
postcode
int
Postleitzahl
4001
country
string
Land
CHE
town
string
Ort
Basel
area
string
Gebietsbezeichnung
Zwischen der Bahnhofstrasse und der Strasse «Im Sack»
street
string
Strassenname und Hausnummer
Reservoir Häuslersegg
projectValue
double
Bausumme in Währungseinheiten
1340000
valueDescription
string
Bausummen Text
1.34 Mio CHF
startDate
datetime
Baustart
2023-05-21T22:00:00+00:00
startDateAccuracy
Nicht für CH verwendet
startDescription
string
Text zum Baustart
Mai 2023
endDate
datetime
Bauende
2024-06-29T22:00:00+00:00
endDescription
string
Text zum Bauende
Juni 2024
lastPublished
datetime
Letzte Veröffentlichung
2023-05-23T09:13:44+00:00
lastUpdate
datetime
Letzte Aktualisierung
2023-05-23T09:13:44+00:00
projectTexts
Feld
Typ
Beschreibung
Beispiel
content
string
Text Inhalt
Bewerbung erst nach Veröffentlichung der Ausschreibung möglich
projectTextType
Feld
Typ
Beschreibung
Beispiel
code
string
Code
500
name
string
Name
Gewerkebemerkung
sortOrder
int
Sortierung
1
projectDetails
Feld
Typ
Beschreibung
Beispiel
id
int
Eindeutige ID
32502749
value
string
Wert
15
negated
boolean
Typ negiert: Ja/Nein
0
unitType
Nicht für CH verwendet
projectDetailType
Feld
Typ
Beschreibung
Beispiel
id
int
Eindeutige ID
763
code
string
Code
CH_STRUCTURES
name
string
Name
Fenster
sortOrder
int
Sortierung
1
visible
boolean
Typ sichtbar: Ja/Nein
0
parentProjectDetailType
Feld
Typ
Beschreibung
Beispiel
id
int
Eindeutige ID
5
code
string
Code
Bestandteil
name
string
Name
Bestandteile
sortOrder
int
Sortierung
1
visible
boolean
Typ sichtbar: Ja/Nein
0
projectDisplayGroup
Feld
Typ
Beschreibung
Beispiel
id
int
Eindeutige ID
3
code
string
Code
COST_SIZE
filterable
boolean
Typ filterbar: Ja/Nein
1
investmentType
Nicht für CH verwendet
qualityType
Nicht für CH verwendet
labelProjects
Nicht für CH verwendet
projectType
Feld
Typ
Beschreibung
Beispiel
id
int
Eindeutige ID
33
code
string
Code
50
name
string
Name
Technische Anlagen
sortOrder
int
Sortierung
50
projectResearchType
Feld
Typ
Beschreibung
Beispiel
id
int
Eindeutige ID
8
code
string
Code
1
infoText
string
Recherchetyp
Achtung: Dieses Projekt wird aufgrund des schnellen Baufortschritts nicht aktualisiert.