Ab Version 26.2 liefert jeder teamspace-Server eine Beschreibung seiner REST-API im Format OpenAPI. Sie listet alle Adressen mit ihren Methoden, die Filter jeder Liste und die Felder jedes Objekts. Wer eine Anwendung baut oder einen Coding-Agenten damit beauftragt, schlägt dort nach, statt Feldnamen zu raten.
Wo die Beschreibung liegt
Die Beschreibung und zwei Ansichten dafür liegen unter deiner Server-Adresse:
<server>/api/openapi.json Beschreibung als JSON (OpenAPI 3.0.1)
<server>/htdocs/openapi-docs.html Ansicht mit Swagger
<server>/htdocs/api-docs.html Ansicht mit RapiDoc
Alle drei sind ohne Anmeldung lesbar. Die Daten selbst bleiben geschützt: Wer <server>/api/time ohne Zugangsdaten aufruft, bekommt 401.
Die beiden Ansichten zeigen denselben Inhalt zum Durchklicken. Für Programme und Coding-Agenten ist die JSON-Datei die richtige Quelle. Welche Version dein Server hat, steht darin unter info.version, zum Beispiel 2026.2.85.
Welche Server-Adresse gilt
<server> ist die Adresse, unter der du teamspace im Browser öffnest, zum Beispiel https://app1.teamspace.de. An diese Adresse hängst du /api/… an.
⚠ Achtung: Übernimm die Angabe
serversaus der Datei nicht ungeprüft. Bei einer Stichprobe am 2026-09-10 zeigte sie auf einem Server auf die Website statt auf den Server selbst. Verwende immer die Adresse, die der Benutzer eingibt.
Nach der Anmeldung nennt die Geräte-Ressource im Feld apiHost die Basis-Adresse der API. Wie du sie abrufst, zeigt Authentifizieren: Gerätepasswort & API-Token.
Was in der Beschreibung steht
- Pfade und Methoden: jede Collection mit Liste (
GET /api/time), Anlegen (POST /api/time) und dem einzelnen Element (GET,PUT,DELETEauf/api/time/{id}). Nicht jede Collection kennt alle Methoden,timecategoryzum Beispiel nurGET. - Filter: die Query-Parameter jeder Liste. Für
/api/timesind das unter anderemdate,workerundproject, für/api/projectunter anderemisBookable,isActive,isTemplate,isDraftundcustomer. - Matrix-Parameter:
sort,limit(Standard100),offsetundparent. Beisortnennt die Beschreibung je Liste die Felder, nach denen du sortieren kannst. - Schemas: die Felder jedes Objekts mit Typ und kurzer englischer Erklärung. Für Anlegen und Ändern gibt es ein eigenes Schema mit der Endung
Input, zum BeispielTimeInput. - Anmeldung: HTTP Basic Auth. Das Schema
Devicesagt dazu: Benutzername ist die Geräte-ID, Passwort der Token.
So steht ein Feld im Schema Time:
"amount": {
"type": "integer",
"format": "int32",
"description": "in minutes"
}
Verknüpfte Felder wie project oder worker führt die Beschreibung als ApiValuedLink. In der Antwort kommen sie als Link-Objekt mit caption, href und value. Beim Schreiben genügt der value, wie in Aufbau der API-Adressen (URL-Struktur) unter HATEOAS erklärt.
Eigene Felder deines Mandanten
Richtet ein Mandant eigene Felder ein, erscheinen sie in der Beschreibung als zusätzliche Filter an den Listen. Im Schema des Objekts stehen sie nicht als eigenes Feld. Ihre Namen sind auf jedem Server andere.
Für eine Anwendung heißt das: Verlass dich nur auf die Standardfelder. Sie sind bei gleicher Version auf allen Servern gleich. Ein eigener Filter, den du auf einem Server findest, fehlt auf dem nächsten.
Was die Beschreibung nicht enthält
- Pflichtfelder: Nur wenige Schemas nennen sie, zum Beispiel
Contactmitlastname. Die Zeitbuchung nennt keine. Dass nichts markiert ist, heißt aber nicht, dass nichts Pflicht ist: Eine Zeitbuchung ohnedate,project,areaundfieldlehnt der Server ab, und ein Beleg braucht immer die Belegart. Die Pflichtfelder der Belege stehen in der Feldreferenz: Spesen- und Belegfelder, der Stand zur Zeitbuchung in Zeiten über die API anzeigen und buchen. depthundevaluate: Beide Matrix-Parameter kommen in der Beschreibung nicht vor.depthlöst verknüpfte Objekte auf. Was überevaluatebekannt ist, steht in der URL-Struktur.- Filter-Operatoren: „enthält“ (
*=), Bereiche (von..bis), mehrere Werte und leere Felder. Auch diese Schreibweisen erklärt die URL-Struktur. - Fehlerantworten: Meist ist nur der Erfolgsfall beschrieben,
POST /api/timeetwa nur mit201. Ohne gültige Anmeldung antwortet der Server mit401und reinem Text. Andere Fehler kommen als JSON mit den Feldernmessageundstacktrace, eine abgelehnte Zeitbuchung zum Beispiel als403mit den fehlenden Feldern inmessage. - Namen aus der Oberfläche: Die Beschreibung ist englisch und spricht von Collections. Das Modul „Offene Punkte“ ist zum Beispiel die Collection
issue, nichtticket.
Weitere Quellen auf dem Server
<server>/api/api: die Liste aller Collections, ohne Anmeldung lesbar.<server>/api/<collection>/meta: nur mit Anmeldung, ohne antwortet der Server mit500. Nennt die erlaubten Methoden für Liste und Element, alle Filter mit Typ und ob sie sortierbar sind oder einen Bereichvon..biserlauben (searchableRange), teils mit deutscher Beschreibung.<server>/api/<collection>/meta/template: die Vorlage für ein neues Objekt, ebenfalls mit Anmeldung. An Auswahlfeldern steht dort dieoptionsUrlmit den gültigen Werten, bei der Zeitbuchung etwa fürareaundfield.<server>/api/api/dto.ts: die Objekte als TypeScript-Klassen, teils mit Kommentaren. Dort steht zum Beispiel, dass ein Link-Objekt immer einenvaluebraucht.- API-Explorer: die ältere Browser-App zum Erkunden der API. Wo du sie findest, steht in der Einführung in die API.
Typische Fragen & Anforderungen
| Du möchtest … | So geht’s |
|---|---|
| alle Filter einer Liste sehen | In openapi.json unter paths → /api/<collection> → get → parameters nachsehen oder die Liste in der Swagger-Ansicht aufklappen. |
| wissen, welche Felder du beim Anlegen schicken kannst | Das Schema mit der Endung Input lesen, z. B. TimeInput für POST /api/time. |
| die Version deines Servers prüfen | <server>/api/openapi.json öffnen, Feld info.version. |
| einem Coding-Agenten die API erklären | <server>/api/openapi.json und das Thema API im Hilfecenter als Quelle nennen. Die Server-Adresse gibst du selbst vor, statt sie aus servers übernehmen zu lassen. |
Häufige Probleme
Warum landen die Anfragen meiner Anwendung auf einer falschen Adresse?
Prüf, ob sie die Adresse aus servers übernommen hat. Diese Angabe kann von der Adresse abweichen, unter der du teamspace öffnest. Lass die Server-Adresse den Benutzer eingeben.
Warum steht in der Beschreibung ein Filter, den ich nirgends erklärt finde? Wahrscheinlich ist es ein eigenes Feld eines Mandanten auf diesem Server. Solche Filter stehen nicht im Schema des Objekts und fehlen auf anderen Servern. Bau deine Anwendung nicht darauf auf.
Verwandte Themen
- Aufbau der API-Adressen (URL-Struktur) API Konzept
- Authentifizieren: Gerätepasswort & API-Token API Anleitung
- Zeiten über die API anzeigen und buchen API Übungen
- Einführung in die API API Einführung