Die addProject Funktion ist eine API-Funktion, die es externen Systemen ermöglicht, neue Projekte über eine HTTP-Schnittstelle zu importieren. Diese Funktion wird hauptsächlich verwendet, um Projektdaten von externen Quellen (z. B. Websites, Partner-Systemen) automatisiert zu übernehmen.
Die Funktion ermöglicht:
Das Erstellen neuer Projekte mit Gebäude- und Kontaktdaten über eine REST-API
Die sichere Authentifizierung mittels JWT-Token
Die automatische Validierung von Pflichtfeldern
Die Verwendung von Projektvorlagen (Templates)
Die automatische E-Mail-Benachrichtigung bei Fehlern
Die Funktion verwendet JWT (JSON Web Token) zur Authentifizierung. Das Token wird als Query-Parameter token übergeben.
Wichtig: Die Freischaltung eines Tokens kann über den Support ermöglicht werden.
Das Token kann nach Freischaltung hier generiert werden: https://app.grundsteine.com/settings?tab=privacy
Der Endpunkt ist https://eba-api.azurewebsites.net/addProject?token=MEIN_TOKEN.
POST
token (erforderlich): JWT-Token zur Authentifizierung
Der Request Body muss ein JSON-Objekt mit dem Feld data enthalten.
data (oberste Ebene)Parameter
Typ
Pflicht
Standard
Beschreibung
| Objekt | nein | – | Kontaktdaten des Kunden (siehe |
| Objekt | ja | – | Gebäudedaten (siehe |
| string | nein |
| Freie Referenz, z. B. zur Identifikation der Import-Quelle |
| string | nein |
| Interne Notiz zum Projekt |
| enum | nein |
| Status des Projekts (siehe Enum |
| string | nein |
| Projekttyp; überschreibt den Template-Typ, wenn |
| string | nein | – | UUID einer Projektvorlage, deren Struktur und Einstellungen übernommen werden |
client (Kontaktdaten)Parameter
Typ
Pflicht
Beschreibung
| string | nein | Vorname des Kunden |
| string | ja | Nachname des Kunden |
| string | nein | E-Mail-Adresse |
| string | nein | Telefonnummer |
| enum | nein | Kontakttyp (siehe Enum |
| string | nein | Firmenname (relevant bei |
| string | nein | Vertreten durch |
| string | nein | Akademischer Titel, z. B. |
| string | nein | Anrede, z. B. |
| string | nein | Straße |
| string | nein | Hausnummer |
| string | nein | Postleitzahl |
| string | nein | Stadt |
building (Gebäudedaten)Parameter
Typ
Pflicht
Beschreibung
| string | ja | Straße des Gebäudes |
| string | ja | Hausnummer des Gebäudes |
| string | ja | Postleitzahl des Gebäudes |
| string | ja | Stadt des Gebäudes |
| number | nein | Baujahr des Gebäudes (z. B. |
| number | nein | Anzahl der Wohneinheiten im Gebäude |
| number | nein | Anzahl der Stockwerke |
| enum | nein | Primärer Gebäudetyp (siehe Enum |
| enum | nein | Nutzungsart des Gebäudes (siehe Enum |
| string | nein | Breitengrad (z. B. |
| string | nein | Längengrad (z. B. |
ProjectState (Feld: state)Wert
Bedeutung
Frontend-Label (sichtbar)
| Aktives Projekt (Standard) |
|
| Archiviert |
|
| Storniert |
|
ContactType (Feld: client.type)Wert
Bedeutung
Frontend-Label (sichtbar)
| Natürliche Person |
|
| Unternehmen / juristische Person |
|
| Objekt |
|
| Wohnungseigentümergemeinschaft |
|
BuildingType (Feld: building.usageType)Wert
Bedeutung
Frontend-Label (sichtbar)
| Wohngebäude |
|
| Nichtwohngebäude |
|
| Mischgebäude (Wohn- und Nichtwohnnutzung) |
|
UsageKindType (Feld: building.usageKind)Wert
Bedeutung
Frontend-Label (sichtbar)
| Vermietung |
|
| Eigennutzung |
|
| Gemischte Nutzung (Eigennutzung und Vermietung) |
|
Die folgenden Felder sind zwingend erforderlich:
client.lastName
building.address.street
building.address.houseNumber
building.address.zip
building.address.city
Wenn templateId angegeben wird, muss es im UUID-Format vorliegen (z. B. 123e4567-e89b-12d3-a456-426614174000).
{
"data": {
"client": {
"firstName": "Max",
"lastName": "Mustermann",
"email": "[email protected]",
"phone": "+49 123 456789",
"type": "PERSON",
"salutation": "Sehr geehrter"
},
"building": {
"address": {
"street": "Musterstraße",
"houseNumber": "42",
"zip": "12345",
"city": "Berlin"
},
"yearOfCompletion": 1990,
"numberOfFloors": 3,
"usageType": "RESIDENTIAL",
"usageKind": "OWNER_OCCUPIED_BUILDING",
"latitude": "52.520008",
"longitude": "13.404954"
},
"reference": "WEBSITE",
"note": "Importiert via Website",
"state": "ACTIVE",
"templateId": "123e4567-e89b-12d3-a456-426614174000"
}
}
{
"message": "Project added successfully"
}
{
"error": "Unauthorized"
}
{
"error": {
"message": "Missing or invalid mandatory fields: client.lastName, building.address.street, ..."
}
}
{
"error": "Reference: WEBSITE, Error: [Fehlermeldung]"
}
Token-Validierung
Das JWT-Token wird aus den Query-Parametern extrahiert
Die Funktion decodeJwt() verifiziert das Token mit dem APP_SECRET
Bei ungültigem Token wird ein 401-Fehler zurückgegeben
Projekttyp-Bestimmung
Die Funktion determineProjectType() bestimmt den Projekttyp nach folgender Priorität:
Explizit angegebener data.type
Typ aus der Vorlage (Template), falls templateId angegeben
Standardwert: Anfrage/Angebot
Validierung der Pflichtfelder
Alle Pflichtfelder werden überprüft
Die templateId wird auf gültiges UUID-Format geprüft
Bei fehlenden Feldern wird eine detaillierte Fehlermeldung mit allen fehlenden Feldern zurückgegeben
Projekt-Import
Die Daten werden in das interne Format transformiert
Die Funktion importProjects() erstellt das Projekt, den Kontakt und das Gebäude in der Datenbank
Wenn eine templateId angegeben ist, werden die Projektstruktur und Einstellungen von der Vorlage kopiert
Fehlerbehandlung und E-Mail-Benachrichtigung
Bei Fehlern während des Imports wird eine E-Mail an den zugehörigen Benutzer gesendet
Die E-Mail enthält:
Detaillierte Fehlermeldung
Die übermittelten Projektdaten (zur Fehlerbehebung)
Hinweis auf den Support-Chat
Die Fehlerbenachrichtigung wird in die Warteschlange für transaktionale E-Mails eingereiht
curl -X POST "https://eba-api.azurewebsites.net/addProject?token=eyJhbGc..." \
-H "Content-Type: application/json" \
-d '{
"data": {
"client": {
"firstName": "Max",
"lastName": "Mustermann",
"email": "[email protected]",
"phone": "+49 123 456789",
"type": "PERSON",
"salutation": "Sehr geehrter"
},
"building": {
"address": {
"street": "Musterstraße",
"houseNumber": "42",
"zip": "12345",
"city": "Berlin"
},
"yearOfCompletion": 1990,
"numberOfFloors": 3,
"usageType": "RESIDENTIAL",
"usageKind": "OWNER_OCCUPIED_BUILDING",
"latitude": "52.520008",
"longitude": "13.404954"
},
"note": "Import von Website-Formular",
"reference": "WEB-2024-001",
"state": "ACTIVE"
}
}'
Ungültiges Token: Überprüfen Sie, ob das Token korrekt generiert wurde und nicht abgelaufen ist
Fehlende Pflichtfelder: Stellen Sie sicher, dass alle erforderlichen Felder vorhanden sind
Ungültiges UUID-Format: Die templateId muss im korrekten UUID-Format vorliegen
Template nicht gefunden: Die angegebene templateId existiert nicht in der Organisation
Datenbankfehler: Prüfen Sie die Logs für Details zu Datenbankproblemen
Bei Importfehlern wird automatisch eine E-Mail an den Benutzer gesendet, der mit dem Token verknüpft ist. Diese E-Mail enthält:
Eine benutzerfreundliche Fehlerbeschreibung
Die vollständigen übermittelten Daten zur Fehleranalyse
Kontaktinformationen für den Support
Diese Funktion ist ideal für:
Website-Formulare zur Projekterfassung
Partner-Systeme, die Projekte automatisch anlegen möchten
Externe Datenimporte von CRM- oder ERP-Systemen
Mobile Apps für die Projekterfassung
Bei Fragen zur Integration oder Problemen mit der API-Funktion wenden Sie sich bitte an:
Technischer Support: Über den Chat
Token-Freischaltung: Kann über den Support aktiviert werden