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

1. ErfassenDaten und Fotos werden vor Ort in der easyTDD-App erfasst.
2. Ablegen„In SharePoint ablegen“ lädt Bericht und Fotos hoch und schreibt die Daten in SharePoint-Listen.
3. AbrufenAndere Systeme lesen die Listen über die Microsoft Graph API.

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:

ListeInhalt
easyTDD LiegenschaftenName, Adresse, Auftraggeber (Erstellt für), Anzahl Gebäudeteile, Link zum Berichtsordner, Stand der Übertragung
easyTDD GebaeudeteileGebäudenummer, Mieter, Gebäudeklasse, Nutzungsart, Geschosse, Grundstücksfläche, BGF, NGF
easyTDD Baulicher ZustandKostengruppe nach DIN 276, Bauart, Zustandsbewertung
easyTDD HaustechnikObjektart (DIN 276), vorhanden, Anzahl, Baujahr, Zustand, Wartung, Prüfpflicht, Prüfdatum
easyTDD MaengelMangel, Bemerkung, Zuordnung zu Bauteil oder Anlage
easyTDD FotosDateiname, 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.
  • LiegenschaftKey verbindet alle Einträge einer Liegenschaft. GebaeudeKey ordnet einen Eintrag seinem Gebäudeteil zu. In der Fotoliste zeigt BezugKey auf den Eintrag, zu dem das Foto gehört.
  • Stand gibt an, wann die Daten zuletzt aus der App übertragen wurden (UTC). SchemaVersion nennt die Version des Datenmodells (derzeit 1). Spätere Versionen ergänzen Spalten, entfernen aber keine.
[Screenshot: SharePoint-Liste „easyTDD Maengel“ im Browser]

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.

  1. App in Entra ID registrieren, Geheimnis oder Zertifikat anlegen.
  2. Microsoft Graph › Anwendungsberechtigungen › Sites.Selected hinzufügen, Administratorzustimmung erteilen.
  3. 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.
Eine vollständige Feldreferenz mit allen Spalten und Datentypen gibt es auf Anfrage über das Kontaktformular. Mehr zur App: Funktionsweise der Android-App.