{
    "openapi": "3.1.0",
    "info": {
        "title": "Gutachter-Gesellschaft – Anfragen für KI-Assistenten",
        "version": "2.1.0",
        "description": "Kostenlose, unverbindliche Angebotsanfragen bei Sachverständigen – über dieselben Anfragestrecken wie auf der Website. Ablauf: 1. Strecke wählen (GET /api/anfrage/strecken). 2. Fragen abrufen (GET /api/anfrage/strecken/{strecke}) und dem Nutzer stellen; nur Angaben des Nutzers verwenden, nichts erfinden. 3. Den Wortlaut der Einwilligung zeigen; zustimmung_datenschutz erst nach Zustimmung des Nutzers auf true setzen. 4. Mit POST /api/anfrage/pruefen prüfen und dem Nutzer die Zusammenfassung zeigen. 5. Erst nach seiner ausdrücklichen Bestätigung POST /api/anfrage. Eine Anfrage ist kein Auftrag. Anfrage an einen Sachverständigen des Verzeichnisses: Das Team wählt einen passenden (GET /api/gutachter für die Fragen, POST /api/gutachter/pruefen und /api/gutachter/anfrage); das Verzeichnis selbst ist derzeit nicht abrufbar. Direkt anfragen lassen sich die Sachverständigen mit eigener Profilseite: B.Eng. Markus Fehr (nr 29145, https://www.gutachter-gesellschaft.de/gutachter/markus-fehr-kaufungen-29145), Alexander Stumpf (nr 30236, https://www.gutachter-gesellschaft.de/gutachter/alexander-stumpf-zandt-30236), M.Sc. Architekt Andrés Conesa Rosique (nr 30726, https://www.gutachter-gesellschaft.de/gutachter/andres-conesa-rosique-bonn-30726), Ahmet Gül (nr 31376, https://www.gutachter-gesellschaft.de/gutachter/ahmet-guel-budenheim-31376), B.Eng. Amine Ezzaoui (nr 34284, https://www.gutachter-gesellschaft.de/gutachter/amine-ezzaoui-mainz-34284), Sascha Lentfer (nr 34285, https://www.gutachter-gesellschaft.de/gutachter/sascha-lentfer-kollmar-34285), Inan Kaplaner (nr 34286, https://www.gutachter-gesellschaft.de/gutachter/inan-kaplaner-koeln-34286) – GET /api/gutachter/{nr}, dann POST /api/gutachter/{nr}/pruefen und /api/gutachter/{nr}/anfrage. Das Team prüft jede Anfrage und leitet sie per E-Mail an den Sachverständigen weiter. Dieselben Werkzeuge gibt es als MCP-Server unter https://www.gutachter-gesellschaft.de/api/mcp. Ohne Anmeldung, je Absender begrenzt.",
        "contact": {
            "name": "Lindenfield GmbH",
            "email": "info@gutachter-gesellschaft.de",
            "url": "https://www.gutachter-gesellschaft.de/impressum"
        }
    },
    "servers": [
        {
            "url": "https://www.gutachter-gesellschaft.de"
        }
    ],
    "paths": {
        "/api/gutachter": {
            "get": {
                "operationId": "sucheGutachter",
                "summary": "Fragen und Einwilligung der Anfrage ohne gewählten Sachverständigen; das Verzeichnis selbst ist derzeit nicht abrufbar",
                "responses": {
                    "200": {
                        "description": "Hinweis, Themengebiete und die Fragen der Anfrage ohne Wahl.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/gutachter/{nr}": {
            "get": {
                "operationId": "frageGutachter",
                "summary": "Ein Sachverständiger mit „Kurz gesagt“, Fakten, häufigen Fragen und den Fragen der Anfrage an ihn",
                "parameters": [
                    {
                        "name": "nr",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Der Eintrag.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Kein veröffentlichter Eintrag.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Fehler"
                                }
                            }
                        }
                    }
                },
                "description": "Direkt anfragen lassen sich die Sachverständigen mit eigener Profilseite: B.Eng. Markus Fehr (nr 29145, https://www.gutachter-gesellschaft.de/gutachter/markus-fehr-kaufungen-29145), Alexander Stumpf (nr 30236, https://www.gutachter-gesellschaft.de/gutachter/alexander-stumpf-zandt-30236), M.Sc. Architekt Andrés Conesa Rosique (nr 30726, https://www.gutachter-gesellschaft.de/gutachter/andres-conesa-rosique-bonn-30726), Ahmet Gül (nr 31376, https://www.gutachter-gesellschaft.de/gutachter/ahmet-guel-budenheim-31376), B.Eng. Amine Ezzaoui (nr 34284, https://www.gutachter-gesellschaft.de/gutachter/amine-ezzaoui-mainz-34284), Sascha Lentfer (nr 34285, https://www.gutachter-gesellschaft.de/gutachter/sascha-lentfer-kollmar-34285), Inan Kaplaner (nr 34286, https://www.gutachter-gesellschaft.de/gutachter/inan-kaplaner-koeln-34286) – GET /api/gutachter/{nr}, dann POST /api/gutachter/{nr}/pruefen und /api/gutachter/{nr}/anfrage."
            }
        },
        "/api/gutachter/{nr}/pruefen": {
            "post": {
                "operationId": "pruefeGutachterAnfrage",
                "summary": "Anfrage an diesen Sachverständigen prüfen, ohne sie zu senden",
                "parameters": [
                    {
                        "name": "nr",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/GutachterAnfrage"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Vollständig; die Zusammenfassung dem Nutzer zeigen.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Fehlende oder ungültige Angaben, je Feld benannt.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Fehler"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Zu viele Aufrufe.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Fehler"
                                }
                            }
                        }
                    }
                },
                "description": "Direkt anfragen lassen sich die Sachverständigen mit eigener Profilseite: B.Eng. Markus Fehr (nr 29145, https://www.gutachter-gesellschaft.de/gutachter/markus-fehr-kaufungen-29145), Alexander Stumpf (nr 30236, https://www.gutachter-gesellschaft.de/gutachter/alexander-stumpf-zandt-30236), M.Sc. Architekt Andrés Conesa Rosique (nr 30726, https://www.gutachter-gesellschaft.de/gutachter/andres-conesa-rosique-bonn-30726), Ahmet Gül (nr 31376, https://www.gutachter-gesellschaft.de/gutachter/ahmet-guel-budenheim-31376), B.Eng. Amine Ezzaoui (nr 34284, https://www.gutachter-gesellschaft.de/gutachter/amine-ezzaoui-mainz-34284), Sascha Lentfer (nr 34285, https://www.gutachter-gesellschaft.de/gutachter/sascha-lentfer-kollmar-34285), Inan Kaplaner (nr 34286, https://www.gutachter-gesellschaft.de/gutachter/inan-kaplaner-koeln-34286) – GET /api/gutachter/{nr}, dann POST /api/gutachter/{nr}/pruefen und /api/gutachter/{nr}/anfrage."
            }
        },
        "/api/gutachter/{nr}/anfrage": {
            "post": {
                "operationId": "sendeGutachterAnfrage",
                "summary": "Anfrage an diesen Sachverständigen senden – erst nach ausdrücklicher Bestätigung des Nutzers; das Team prüft und leitet per E-Mail weiter",
                "parameters": [
                    {
                        "name": "nr",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/GutachterAnfrage"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Gesendet (status \"gesendet\") oder kurz zuvor schon eingegangen (status \"bereits_eingegangen\").",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Kein veröffentlichter Eintrag.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Fehler"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Fehlende oder ungültige Angaben.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Fehler"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Zu viele Anfragen.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Fehler"
                                }
                            }
                        }
                    }
                },
                "description": "Direkt anfragen lassen sich die Sachverständigen mit eigener Profilseite: B.Eng. Markus Fehr (nr 29145, https://www.gutachter-gesellschaft.de/gutachter/markus-fehr-kaufungen-29145), Alexander Stumpf (nr 30236, https://www.gutachter-gesellschaft.de/gutachter/alexander-stumpf-zandt-30236), M.Sc. Architekt Andrés Conesa Rosique (nr 30726, https://www.gutachter-gesellschaft.de/gutachter/andres-conesa-rosique-bonn-30726), Ahmet Gül (nr 31376, https://www.gutachter-gesellschaft.de/gutachter/ahmet-guel-budenheim-31376), B.Eng. Amine Ezzaoui (nr 34284, https://www.gutachter-gesellschaft.de/gutachter/amine-ezzaoui-mainz-34284), Sascha Lentfer (nr 34285, https://www.gutachter-gesellschaft.de/gutachter/sascha-lentfer-kollmar-34285), Inan Kaplaner (nr 34286, https://www.gutachter-gesellschaft.de/gutachter/inan-kaplaner-koeln-34286) – GET /api/gutachter/{nr}, dann POST /api/gutachter/{nr}/pruefen und /api/gutachter/{nr}/anfrage."
            }
        },
        "/api/gutachter/pruefen": {
            "post": {
                "operationId": "pruefeGutachterAnfrageOhneWahl",
                "summary": "Anfrage ohne gewählten Sachverständigen prüfen (Pflicht: plz, anliegen, name, telefon, email, zustimmung_datenschutz)",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/GutachterAnfrage"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Vollständig.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Fehlende Angaben.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Fehler"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/gutachter/anfrage": {
            "post": {
                "operationId": "sendeGutachterAnfrageOhneWahl",
                "summary": "Anfrage ohne gewählten Sachverständigen senden – das Team der Gutachter-Gesellschaft wählt einen passenden aus dem Verzeichnis",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/GutachterAnfrage"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Gesendet.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Fehlende Angaben.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Fehler"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/anfrage/strecken": {
            "get": {
                "operationId": "listeAnfragestrecken",
                "summary": "Alle Anfragestrecken mit Zweck",
                "responses": {
                    "200": {
                        "description": "Liste der Strecken.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/anfrage/strecken/{strecke}": {
            "get": {
                "operationId": "frageAnfragestrecke",
                "summary": "Fragen, Optionen, Pflichtangaben und Einwilligung einer Strecke",
                "parameters": [
                    {
                        "name": "strecke",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "anfrage-immobiliengutachten",
                                "anfrage-schimmelgutachten",
                                "anfrage-wasserschaden",
                                "anfrage-brandschaden",
                                "anfrage-sturmschaden",
                                "anfrage-ueberspannung",
                                "anfrage-baumaengel",
                                "anfrage-gebaeudeversicherung",
                                "anfrage-asbest",
                                "anfrage-putz-trockenbau",
                                "anfrage-heizung",
                                "anfrage-galabau",
                                "anfrage-unfallgutachten",
                                "anfrage-hausrat",
                                "anfrage-fachgebiet",
                                "gastankpruefung",
                                "anfrage-awsv",
                                "anfrage-kanal",
                                "anfrage-genehmigung",
                                "anfrage-allgemein"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Die Strecke mit allen Fragen.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Unbekannte Strecke.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Fehler"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/anfrage/pruefen": {
            "post": {
                "operationId": "pruefeAnfrage",
                "summary": "Anfrage prüfen, ohne sie zu senden",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/Anfrage"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Vollständig; die Zusammenfassung dem Nutzer zeigen.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Fehlende oder ungültige Angaben, je Feld benannt.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Fehler"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Zu viele Aufrufe.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Fehler"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/anfrage": {
            "post": {
                "operationId": "sendeAnfrage",
                "summary": "Anfrage senden – erst nach ausdrücklicher Bestätigung des Nutzers",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/Anfrage"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Gesendet (status \"gesendet\") oder kurz zuvor schon eingegangen (status \"bereits_eingegangen\").",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Unbekannte Strecke.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Fehler"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Fehlende oder ungültige Angaben, je Feld benannt.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Fehler"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Zu viele Anfragen.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Fehler"
                                }
                            }
                        }
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "Anfrage": {
                "type": "object",
                "required": [
                    "strecke",
                    "antworten"
                ],
                "properties": {
                    "strecke": {
                        "type": "string",
                        "enum": [
                            "anfrage-immobiliengutachten",
                            "anfrage-schimmelgutachten",
                            "anfrage-wasserschaden",
                            "anfrage-brandschaden",
                            "anfrage-sturmschaden",
                            "anfrage-ueberspannung",
                            "anfrage-baumaengel",
                            "anfrage-gebaeudeversicherung",
                            "anfrage-asbest",
                            "anfrage-putz-trockenbau",
                            "anfrage-heizung",
                            "anfrage-galabau",
                            "anfrage-unfallgutachten",
                            "anfrage-hausrat",
                            "anfrage-fachgebiet",
                            "gastankpruefung",
                            "anfrage-awsv",
                            "anfrage-kanal",
                            "anfrage-genehmigung",
                            "anfrage-allgemein"
                        ],
                        "description": "Kennung der Anfragestrecke aus GET /api/anfrage/strecken."
                    },
                    "antworten": {
                        "type": "object",
                        "description": "Antworten des Nutzers. Schlüssel: Feld der Frage (\"f_12\") oder Rolle der Kontaktangabe (name, email, telefon, plz, strasse, ort, firma, zustimmung_datenschutz). Auswahlfragen: Text oder Wert einer Option. zustimmung_datenschutz: true – nur nach ausdrücklicher Zustimmung des Nutzers.",
                        "additionalProperties": {
                            "type": [
                                "string",
                                "number",
                                "boolean"
                            ]
                        }
                    },
                    "ki_assistent": {
                        "type": "string",
                        "description": "Name des Assistenten, z. B. \"ChatGPT\". Wird mit der Anfrage vermerkt."
                    }
                }
            },
            "GutachterAnfrage": {
                "type": "object",
                "required": [
                    "antworten"
                ],
                "properties": {
                    "antworten": {
                        "type": "object",
                        "description": "Antworten des Nutzers mit den Feldern aus GET /api/gutachter/{nr} (\"anfrage.fragen\"): anlass bzw. fachgebiet und anlass_<fachgebiet>, detail_<folgefrage>, name, firma (freiwillig), telefon, email, nachricht, plz, zustimmung_datenschutz. Ohne gewählten Sachverständigen: thema, plz, anliegen, name, firma (freiwillig), telefon, email, zustimmung_datenschutz. zustimmung_datenschutz: true – nur nach ausdrücklicher Zustimmung des Nutzers.",
                        "additionalProperties": {
                            "type": [
                                "string",
                                "number",
                                "boolean"
                            ]
                        }
                    },
                    "ki_assistent": {
                        "type": "string",
                        "description": "Name des Assistenten. Wird mit der Anfrage vermerkt."
                    }
                }
            },
            "Fehler": {
                "type": "object",
                "properties": {
                    "status": {
                        "type": "string",
                        "const": "error"
                    },
                    "code": {
                        "type": "string"
                    },
                    "message": {
                        "type": "string"
                    },
                    "fehler": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "properties": {
                                "feld": {
                                    "type": "string"
                                },
                                "frage": {
                                    "type": "string"
                                },
                                "fehler": {
                                    "type": "string"
                                },
                                "erlaubt": {
                                    "type": "array",
                                    "items": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}