Weitere Endpunkte
Diese Übersicht listet die Adressen der Jawengo API, die mit einem API-Schlüssel erreichbar sind. Jede Adresse steht auch mit dem Präfix /api/v1/ zur Verfügung. Alle Anfragen senden den Header API_KEY, wie in der Authentifizierung beschrieben. Die Daten stammen aus dem Center; welche Endpunkte verfügbar sind, hängt von den installierten Modulen ab.
Begriffe
| Begriff | Bedeutung | Beispiel Sportcenter Seebach |
|---|---|---|
| Endpunkt | Eine Adresse der API mit fester Aufgabe. | /api/sports liefert alle Sportarten |
| GET | Daten lesen; verändert nichts. | Belegung eines Standorts abfragen |
| POST, DELETE | Daten anlegen, ändern oder stornieren. | Eine Reservierung anlegen oder stornieren |
Antwortformat
Lesende Endpunkte (GET) liefern das JSON direkt. Schreibende Endpunkte (POST, DELETE) antworten immer mit einem JSON-RPC-Umschlag; der HTTP-Status bleibt 200, auch bei Fehlern des Controllers, die im Feld result stehen:
{"jsonrpc": "2.0", "id": null, "result": "cancel"}
Ein fehlender, ungültiger oder gesperrter Schlüssel liefert dagegen den HTTP-Status 403.
Lesende Endpunkte
| Adresse | Liefert | Parameter |
|---|---|---|
GET /api/ping |
Text pong; Verbindungstest |
– |
GET /api/sports |
Sportarten mit Standorten und Plätzen | – |
GET /api/sports/<id> |
Eine Sportart | – |
GET /api/pitches |
Plätze mit Standort und Sportart | – |
GET /api/location/<id>/power |
Belegung je Zeitfenster, siehe Belegungsdaten | date |
GET /api/sports/<id>/availability |
Freie Zeitfenster (time_slots) mit freien Plätzen; Preis nur mit location |
location, date, duration, time_from, time_to |
GET /api/reservation |
Reservierungen des Benutzers und seiner Firma | sport, location, date_from, date_to, state |
Die Suche nach Reservierungen zeigt ohne Datumsangabe die nächsten 30 Tage und blendet stornierte Reservierungen aus.
Schreibende Endpunkte
Diese Endpunkte erwarten einen JSON-Inhalt im Körper der Anfrage und den Header Content-Type: application/json. Senden Sie die Felder flach, ohne JSON-RPC-Umschlag: Ein Umschlag mit jsonrpc und params wird nicht ausgewertet, die Felder gelten dann als fehlend.
| Adresse | Aufgabe | Wichtige Felder |
|---|---|---|
POST /api/pitch/<id>/availability |
Prüft, ob ein Platz frei ist (Antwort true oder false) | date, time_from, time_to |
POST /api/reservation |
Legt eine Reservierung an; mit reservation_id ändert sie eine bestehende |
date, time_from, time_to, pitch_id |
DELETE /api/reservation/<id> |
Storniert eine Reservierung, Antwort ist der neue Status | leerer JSON-Körper {} |
Beim Ändern sind Datum, Zeiten und Platz gesperrt; dafür stornieren Sie und legen neu an.
Beispiele (Zeiten als Dezimalzahl in Stunden, 10.0 steht für 10:00):
# Reservierung anlegen
curl -X POST "https://<jawengo-url>/api/reservation" \
-H "API_KEY: <api-key>" -H "Content-Type: application/json" \
-d '{"date": "2026-10-12", "time_from": 10.0, "time_to": 11.0, "pitch_id": 65}'
# Platz auf Verfügbarkeit prüfen
curl -X POST "https://<jawengo-url>/api/pitch/65/availability" \
-H "API_KEY: <api-key>" -H "Content-Type: application/json" \
-d '{"date": "2026-10-12", "time_from": 10.0, "time_to": 11.0}'
# Reservierung stornieren (auch hier ist ein JSON-Körper nötig)
curl -X DELETE "https://<jawengo-url>/api/reservation/<id>" \
-H "API_KEY: <api-key>" -H "Content-Type: application/json" -d '{}'
Die Antwort beim Anlegen enthält die neue Reservierung mit Nummer, Status draft, Datum, Zeiten, Betrag und Plätzen:
{"jsonrpc": "2.0", "id": null, "result": {"id": 38, "name": "RES2026-00038", "state": "draft", "date": "2026-10-12", "time_from": 10.0, "time_to": 11.0, "amount": 50.0, "pitch_ids": [65]}}
Die Prüfung der Verfügbarkeit antwortet mit "result": true (frei) oder "result": false (belegt). Das Stornieren antwortet mit dem neuen Status: "result": "cancel", bei abgelaufener Stornofrist "result": "late_cancel".
Fehler
Fehler stehen im Feld result der Antwort in zwei Formen:
| Form | Codes | Beispiel |
|---|---|---|
result, error_code, error |
REQUIRED_VALUE_MISSING, RESERVATION_NOT_FOUND, UPDATE_NOT_ALLOWED |
siehe unten |
error, message (ohne result und error_code) |
PITCH_NOT_FREE, RESERVATION_TIME_IN_PAST |
{"error": "PITCH_NOT_FREE", "message": "..."} |
{
"result": "ERROR",
"error_code": "REQUIRED_VALUE_MISSING",
"error": "The following attributes are required: date, time_from, time_to, pitch_id"
}
Gebäude-Integration (nur mit Jawengo abgestimmt)
Diese Adressen dienen ausschliesslich der Gebäudeautomation und sind nur für die Gebäude-Integration gedacht; setzen Sie sie nur in Abstimmung mit Jawengo ein. Sie sind verfügbar, wenn die Gebäudeautomation installiert ist, und richten sich an eine Steuerung wie Node-RED. Jeder Schlüssel sieht dort nur das eigene Unternehmen.
| Adresse | Aufgabe |
|---|---|
GET /api/building/config |
Konfiguration, Standorte und Plätze abholen |
GET /api/building/overrides |
Aktive manuelle Übersteuerungen abholen |
POST /api/building/status |
Zustand eines Platzes oder Standorts melden |
POST /api/building/alert |
Störung melden |
POST /api/building/heartbeat |
Lebenszeichen der Steuerung melden |
Tipp: Beginnen Sie mit den lesenden Endpunkten. Schreibende Aufrufe ändern echte Reservierungen, testen Sie sie zuerst auf einer Testinstanz.
Achtung:
DELETE /api/reservation/<id>storniert die Reservierung sofort, ohne Rückfrage. Der Benutzer der Kopplung braucht dafür eine E-Mail-Adresse.
In diesem Kapitel
- Authentifizierung – Schlüssel einrichten
- Belegungsdaten – Belegung eines Standorts
- Häufige Fragen API – Fehler und Stolperfallen