Web-API
Mit der easyTDD Web-API lassen sich alle in der App erfassten TDD-Daten automatisiert weiterverarbeiten: Liegenschaften, Gebäudeteile, baulicher und haustechnischer Zustand, Mängel und Fotos. Beispiele sind ein Portfolio- oder CAFM-System, Power BI, Excel oder eine eigene Web-Anwendung.
So funktioniert es
easyTDD betreibt dafür keinen eigenen Server. Die Daten liegen im Microsoft-365-Mandanten des Unternehmens, in dessen SharePoint abgelegt wurde. Anmeldung, Zugriffsrechte, Verfügbarkeit und Datenschutz richten sich daher nach Microsoft 365 und den Berechtigungen der jeweiligen SharePoint-Site.
Die Listen
Beim Ablegen legt die App in der SharePoint-Site des gewählten Ablageorts sechs Listen an, falls sie noch fehlen, und hält sie aktuell:
| Liste | Inhalt |
|---|---|
easyTDD Liegenschaften | Name, Adresse, Auftraggeber (Erstellt für), Anzahl Gebäudeteile, Link zum Berichtsordner, Stand der Übertragung |
easyTDD Gebaeudeteile | Gebäudenummer, Mieter, Gebäudeklasse, Nutzungsart, Geschosse, Grundstücksfläche, BGF, NGF |
easyTDD Baulicher Zustand | Kostengruppe nach DIN 276, Bauart, Zustandsbewertung |
easyTDD Haustechnik | Objektart (DIN 276), vorhanden, Anzahl, Baujahr, Zustand, Wartung, Prüfpflicht, Prüfdatum |
easyTDD Maengel | Mangel, Bemerkung, Zuordnung zu Bauteil oder Anlage |
easyTDD Fotos | Dateiname, Kapitel im Bericht, Bildunterschrift, Link zur Originaldatei, Bezug zum Eintrag |
Schlüssel und Aktualisierung
- Jeder Eintrag hat einen stabilen Schlüssel
TddKey. Erneutes Ablegen aktualisiert vorhandene Einträge, statt sie doppelt anzulegen. In der App gelöschte Einträge werden auch aus den Listen entfernt. LiegenschaftKeyverbindet alle Einträge einer Liegenschaft.GebaeudeKeyordnet einen Eintrag seinem Gebäudeteil zu. In der Fotoliste zeigtBezugKeyauf den Eintrag, zu dem das Foto gehört.Standgibt an, wann die Daten zuletzt aus der App übertragen wurden (UTC).SchemaVersionnennt die Version des Datenmodells (derzeit 1). Spätere Versionen ergänzen Spalten, entfernen aber keine.
Zugriff einrichten
Das abrufende System braucht eine eigene App-Registrierung in Microsoft Entra ID, und zwar im Mandanten, dem die SharePoint-Site gehört. Es gibt zwei typische Wege:
a) Partner- oder Kundensystem ohne Benutzeranmeldung
Empfohlen ist die Anwendungsberechtigung Sites.Selected. Damit erhält das System Zugriff auf genau eine Site und nicht auf den gesamten Mandanten.
- App in Entra ID registrieren, Geheimnis oder Zertifikat anlegen.
- Microsoft Graph › Anwendungsberechtigungen ›
Sites.Selectedhinzufügen, Administratorzustimmung erteilen. - Ein Administrator gibt der App Lesezugriff auf die Site:
POST https://graph.microsoft.com/v1.0/sites/{site-id}/permissions
Content-Type: application/json
{ "roles": ["read"],
"grantedToIdentities": [{ "application": { "id": "{client-id}", "displayName": "TDD-Abruf" } }] }
Das Zugriffstoken holt das System per Client-Credentials:
curl -X POST https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token \
-d client_id={client-id} -d client_secret={geheimnis} \
-d grant_type=client_credentials -d scope=https://graph.microsoft.com/.default
b) Eigene Web-Anwendung mit Benutzeranmeldung
Mit den delegierten Berechtigungen Sites.Read.All und, für Fotos, Files.Read.All sieht jede angemeldete Person genau das, was sie auch in SharePoint sehen darf.
Alle Anfragen senden das Token im Kopf Authorization: Bearer {token}.
Beispielabfragen
Site und Listen finden
GET https://graph.microsoft.com/v1.0/sites/{firma}.sharepoint.com:/sites/{site}?$select=id
GET https://graph.microsoft.com/v1.0/sites/{site-id}/lists?$select=id,displayName&$filter=startswith(displayName,'easyTDD')
Alle Liegenschaften
GET https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{liegenschaften-id}/items?$expand=fields&$top=200
Alle Mängel einer Liegenschaft
GET https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{maengel-id}/items?$expand=fields&$filter=fields/LiegenschaftKey eq '{liegenschaft-key}'
Nur Änderungen seit dem letzten Abruf
GET https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}/items/delta
Den zurückgegebenen @odata.deltaLink speichern und beim nächsten Abruf verwenden. Gelöschte Einträge werden dabei als gelöscht gemeldet. Alternativ benachrichtigt Microsoft Graph per Webhook (/subscriptions), sobald sich eine Liste ändert.
Foto herunterladen
Die Liste easyTDD Fotos enthält in der Spalte Url den SharePoint-Link der Originaldatei:
GET https://graph.microsoft.com/v1.0/shares/u!{base64url(Url)}/driveItem/content
Beispielantwort (Haustechnik)
{
"id": "17",
"fields": {
"Title": "Aufzugsanlage",
"TddKey": "7d1c3a4e-…|technical:1",
"LiegenschaftKey": "7d1c3a4e-…",
"GebaeudeKey": "7d1c3a4e-…|building:7",
"Gebaeude": "Gebäude 1",
"DIN276": 460,
"Vorhanden": true,
"Anzahl": 2,
"Baujahr": 1998,
"Zustandsbewertung": "2: Geringe Abnutzung",
"Wartung": "jährlich",
"Pruefungsverpflichtung": "BetrSichV",
"Datum": "12.03.2025",
"Mieter": "Muster GmbH"
}
}
Ohne Programmierung: Excel und Power BI
Die Listen lassen sich auch direkt in Excel oder Power BI einlesen: Daten abrufen › Online-Dienste › SharePoint Online-Liste und die Adresse der Site angeben.
Gut zu wissen
- Aktualität: Die Listen zeigen den Stand der letzten Ablage aus der App, nicht den aktuellen Stand auf dem Gerät.
- Kundensites: Wird im SharePoint eines Kunden abgelegt, entstehen die Listen dort. Der Kunde behält damit die volle Kontrolle über seine Daten.
- Rechte zum Anlegen: Beim ersten Ablegen in einer Site braucht das Konto in der App das Recht Listen verwalten (Mitglied oder Besitzer). Fehlt es, werden Bericht und Fotos trotzdem abgelegt, und die App meldet einen Hinweis.
- Datenschutz: Die Listen können personenbezogene Daten enthalten, z. B. Mieternamen. Den Zugriff bitte bewusst vergeben, am besten über
Sites.Selected.