{
    "openapi": "3.0.3",
    "info": {
        "title": "Angebotsanfrage — Mallorca Haus Kaufen",
        "version": "1.0.0",
        "description": "Über diesen Endpunkt kann ein KI-Assistent im Auftrag eines Interessenten eine kostenlose und unverbindliche Makler-Empfehlung für eine Immobilie auf Mallorca anfordern.\n\nDie Anfrage wird serverseitig an den Lindenfield Leadmanager übergeben; ein Zugangsschlüssel wird dafür nicht benötigt und darf clientseitig auch nicht mitgeschickt werden.\n\nDer Endpunkt ist offen erreichbar und je Aufrufer auf 5 Anfragen in 10 Minuten begrenzt.",
        "contact": {
            "name": "Lindenfield GmbH",
            "email": "info@mallorca-haus-kaufen.de",
            "url": "https://www.mallorca-haus-kaufen.de/anfrage-3/"
        }
    },
    "servers": [
        {
            "url": "https://www.mallorca-haus-kaufen.de"
        }
    ],
    "paths": {
        "/api/anfrage": {
            "post": {
                "operationId": "createInquiry",
                "summary": "Angebotsanfrage im Auftrag eines Interessenten einreichen",
                "description": "Legt eine Anfrage an und übergibt sie an den Leadmanager. Es genügt, „address“ und „answers“ zu füllen; „consent“ ist Pflicht und belegt die Einwilligung des Interessenten.",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/InquiryRequest"
                            },
                            "example": {
                                "ai_agent": "Beispiel-Assistent 2.1",
                                "consent": true,
                                "address": {
                                    "name": "Maria Beispiel",
                                    "email": "maria@example.com",
                                    "phone": "+49 170 0000000",
                                    "street": "Eupener Str. 124",
                                    "postcode": "50933",
                                    "city": "Köln"
                                },
                                "answers": {
                                    "nutzung": "Kaufen",
                                    "anliegen": "Besichtigungstermine vor Ort",
                                    "preisklasse": "500.000 - 1 Mio. €",
                                    "immobilientyp": "Finca auf dem Land",
                                    "flaeche": "201 - 300 m²",
                                    "region": "Norden",
                                    "ausstattung": [
                                        "Meerblick",
                                        "Pool"
                                    ],
                                    "zeitpunkt": "In den nächsten 12 Monaten",
                                    "finanzierung": "Ja, bitte auch Informationen zur Finanzierung.",
                                    "anfrageart": "Privat"
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Anfrage angelegt",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/SuccessResponse"
                                }
                            }
                        }
                    },
                    "202": {
                        "description": "Anfrage angenommen und vorgemerkt — sie wird gleich übergeben. Nicht erneut senden, das erzeugte ein Duplikat.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/AcceptedResponse"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Zugang verweigert",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Ungültige Angaben — „errors“ nennt Feld und Grund",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Zu viele Anfragen",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "502": {
                        "description": "Anfrage konnte nicht verarbeitet werden",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/anfrage/schema": {
            "get": {
                "operationId": "getInquirySchema",
                "summary": "Diese Beschreibung abrufen",
                "security": [],
                "responses": {
                    "200": {
                        "description": "OpenAPI-Beschreibung",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "InquiryRequest": {
                "type": "object",
                "required": [
                    "address",
                    "consent"
                ],
                "properties": {
                    "consent": {
                        "type": "boolean",
                        "const": true,
                        "description": "Bestätigung, dass der Interessent der Datenverarbeitung und der Weitergabe an Partnerfirmen zugestimmt hat: „Ich habe die Datenschutzbestimmungen und Impressum zur Kenntnis genommen. Ich stimme zu, dass die Lindenfield GmbH meine Daten zur Erstellung von Angeboten an Partnerfirmen weiterleitet und ich von diesen per E-Mail und Telefon kontaktiert werde. Auf Grundlage des Geschäftszwecks erhalten Sie auf Ihr Anliegen ausgerichtete Informationen. Die Erhebung erfolgt auf Grundlage von Art. 6, Abs. 1 lit. a), b), f) (DSGVO) und ist freiwillig. Abmeldung jederzeit möglich.“ Ohne diese Bestätigung wird die Anfrage abgelehnt."
                    },
                    "lead_type_id": {
                        "type": "integer",
                        "description": "Kennung der LeadArt. Ohne Angabe wird die Makler-Anfrage verwendet (28).",
                        "default": 28
                    },
                    "domain": {
                        "type": "string",
                        "format": "uri",
                        "description": "Herkunft der Anfrage — die Seite, auf der der Interessent nach einer Empfehlung gesucht hat. Ohne Angabe https://www.mallorca-haus-kaufen.de."
                    },
                    "form_name": {
                        "type": "string",
                        "maxLength": 120,
                        "description": "Bezeichnung der Anfragestrecke. Ohne Angabe „KI-Anfrage“."
                    },
                    "ai_agent": {
                        "type": "string",
                        "maxLength": 120,
                        "description": "Name und Version des anfragenden Assistenten, etwa „Beispiel-Assistent 2.1“. Die Anfrage wird damit als KI-Anfrage gekennzeichnet."
                    },
                    "address": {
                        "type": "object",
                        "description": "Kontaktdaten des Interessenten. Mindestens E-Mail-Adresse oder Telefonnummer sowie ein Name sind nötig, damit ein Angebot zugestellt werden kann. Straße, Postleitzahl und Ort werden serverseitig geokodiert — bitte möglichst vollständig.",
                        "properties": {
                            "salutation": {
                                "type": "string",
                                "maxLength": 255,
                                "description": "Anrede, „Herr“ oder „Frau“ — optional, wird sonst automatisch ermittelt"
                            },
                            "name": {
                                "type": "string",
                                "maxLength": 255,
                                "description": "Vollständiger Name; wird serverseitig in Vor- und Nachname getrennt"
                            },
                            "first_name": {
                                "type": "string",
                                "maxLength": 255,
                                "description": "Vorname"
                            },
                            "last_name": {
                                "type": "string",
                                "maxLength": 255,
                                "description": "Nachname"
                            },
                            "company_name": {
                                "type": "string",
                                "maxLength": 255,
                                "description": "Firmenname bei gewerblichen Anfragen"
                            },
                            "email": {
                                "type": "string",
                                "maxLength": 255,
                                "description": "E-Mail-Adresse des Interessenten",
                                "format": "email"
                            },
                            "phone": {
                                "type": "string",
                                "maxLength": 255,
                                "description": "Telefonnummer des Interessenten"
                            },
                            "street": {
                                "type": "string",
                                "maxLength": 255,
                                "description": "Straße und Hausnummer; zusammen mit Postleitzahl und Ort angeben, damit der Lead einer Region zugeordnet werden kann"
                            },
                            "postcode": {
                                "type": "string",
                                "maxLength": 255,
                                "description": "Postleitzahl, vier bis fünf Ziffern; nur gemeinsam mit dem Ort gültig",
                                "pattern": "^\\d{4,5}$"
                            },
                            "city": {
                                "type": "string",
                                "maxLength": 255,
                                "description": "Ort; nur gemeinsam mit der Postleitzahl gültig"
                            }
                        },
                        "additionalProperties": false
                    },
                    "answers": {
                        "type": "object",
                        "description": "Antworten auf die Fragen des Anfrageformulars in Klartext. Empfohlener Weg: Die Werte werden serverseitig auf die Feldkennungen und option_id-Werte der LeadArt abgebildet.",
                        "properties": {
                            "nutzung": {
                                "description": "Möchten Sie eine Immobile mieten oder kaufen?",
                                "type": "string",
                                "enum": [
                                    "Mieten",
                                    "Kaufen"
                                ]
                            },
                            "anliegen": {
                                "description": "Worum geht es Ihnen?",
                                "type": "string",
                                "enum": [
                                    "Informationsgespräch",
                                    "Telefon & Online-Beratung zu konkreten Immobilien",
                                    "Besichtigungstermine vor Ort"
                                ]
                            },
                            "preisklasse": {
                                "description": "In welcher Preisklasse suchen Sie?",
                                "type": "string",
                                "enum": [
                                    "unter 200.000 €",
                                    "200.000 - 500.000 €",
                                    "500.000 - 1 Mio. €",
                                    "1-3 Mio. €",
                                    "4-10 Mio. €",
                                    "über 10 Mio. €"
                                ]
                            },
                            "immobilientyp": {
                                "description": "Welcher Immobilientyp spricht Sie in erster Linie an?",
                                "type": "string",
                                "enum": [
                                    "Wohnung",
                                    "Stadtvilla",
                                    "Finca auf dem Land",
                                    "Neubau",
                                    "Verschiedene Immobilientypen"
                                ]
                            },
                            "flaeche": {
                                "description": "Welche Fläche ungefähr?",
                                "type": "string",
                                "enum": [
                                    "bis 100 m²",
                                    "101 - 200 m²",
                                    "201 - 300 m²",
                                    "größer 300 m²"
                                ]
                            },
                            "region": {
                                "description": "Welche Region bevorzugen Sie?",
                                "type": "string",
                                "enum": [
                                    "Norden",
                                    "Osten",
                                    "Süden",
                                    "Palma",
                                    "Süd Westen",
                                    "Mitte",
                                    "Mehrere Regionen"
                                ]
                            },
                            "ausstattung": {
                                "description": "Welche Dinge sind Ihnen wichtig? (Mehrfachauswahl)",
                                "type": "array",
                                "items": {
                                    "type": "string",
                                    "enum": [
                                        "Meerblick",
                                        "Pool",
                                        "Garage",
                                        "Heizung"
                                    ]
                                }
                            },
                            "zeitpunkt": {
                                "description": "Wie schnell wollen Sie sich entscheiden?",
                                "type": "string",
                                "enum": [
                                    "Mallorca ist nur eine Option",
                                    "In den nächsten 3 Monaten",
                                    "In den nächsten 12 Monaten",
                                    "In den kommenden Jahren"
                                ]
                            },
                            "finanzierung": {
                                "description": "Finanzierungsberatung gewünscht?",
                                "type": "string",
                                "enum": [
                                    "Ja, bitte auch Informationen zur Finanzierung.",
                                    "Nein, da kümmere ich mich selber drum."
                                ]
                            },
                            "anfrageart": {
                                "description": "Ist die Anfrage privat oder gewerblich?",
                                "type": "string",
                                "enum": [
                                    "Privat",
                                    "Gewerblich",
                                    "Öffentliche Einrichtung",
                                    "Weiß nicht"
                                ]
                            }
                        },
                        "additionalProperties": false
                    },
                    "fields": {
                        "type": "object",
                        "description": "Felder der LeadArt direkt gesetzt. Schlüssel sind die Feldkennungen; bei Optionslisten ist immer die option_id zu übertragen, niemals der Name. Angaben hier haben Vorrang vor „answers“.",
                        "properties": {
                            "349": {
                                "description": "Miete oder Kauf (Optionsliste) — option_id übertragen, niemals den Namen.",
                                "type": "integer",
                                "enum": [
                                    1,
                                    2
                                ]
                            },
                            "350": {
                                "description": "Worum geht es Ihnen? (Immobilien) (Optionsliste) — option_id übertragen, niemals den Namen.",
                                "type": "integer",
                                "enum": [
                                    1,
                                    2,
                                    3
                                ]
                            },
                            "351": {
                                "description": "Wie schnell wollen Sie sich entscheiden? (Immobilien) (Optionsliste) — option_id übertragen, niemals den Namen.",
                                "type": "integer",
                                "enum": [
                                    1,
                                    2,
                                    3,
                                    4
                                ]
                            },
                            "352": {
                                "description": "Preisklasse (Immobilien) (Optionsliste) — option_id übertragen, niemals den Namen.",
                                "type": "integer",
                                "enum": [
                                    1,
                                    2,
                                    3,
                                    4,
                                    5,
                                    6,
                                    7
                                ]
                            },
                            "353": {
                                "description": "Privat / gewerblich (Optionsliste) — option_id übertragen, niemals den Namen.",
                                "type": "integer",
                                "enum": [
                                    1,
                                    2,
                                    3,
                                    4
                                ]
                            },
                            "356": {
                                "description": "Immobilientyp (Optionsliste) — option_id übertragen, niemals den Namen.",
                                "type": "integer",
                                "enum": [
                                    1,
                                    2,
                                    3,
                                    4,
                                    5
                                ]
                            },
                            "357": {
                                "description": "Fläche (Immobilien) (Optionsliste) — option_id übertragen, niemals den Namen.",
                                "type": "integer",
                                "enum": [
                                    1,
                                    2,
                                    3,
                                    4
                                ]
                            },
                            "358": {
                                "description": "Finanzierungsberatung (Immobilien) (Optionsliste) — option_id übertragen, niemals den Namen.",
                                "type": "integer",
                                "enum": [
                                    1,
                                    2
                                ]
                            },
                            "359": {
                                "description": "Budget in € (Einzeiliges Textfeld)",
                                "type": "string",
                                "maxLength": 255
                            },
                            "360": {
                                "description": "Wann das nächste Mal auf Mallorca? (Einzeiliges Textfeld)",
                                "type": "string",
                                "maxLength": 255
                            },
                            "361": {
                                "description": "Welche Region / Stadt? (Einzeiliges Textfeld)",
                                "type": "string",
                                "maxLength": 255
                            },
                            "362": {
                                "description": "Wann das nächste Mal auf Mallorca? (Einzeiliges Textfeld)",
                                "type": "string",
                                "maxLength": 255
                            },
                            "363": {
                                "description": "Welche Region? (Optionsliste) — option_id übertragen, niemals den Namen.",
                                "type": "integer",
                                "enum": [
                                    1,
                                    2,
                                    3,
                                    4,
                                    5,
                                    6,
                                    7
                                ]
                            }
                        },
                        "additionalProperties": false
                    }
                }
            },
            "SuccessResponse": {
                "type": "object",
                "properties": {
                    "status": {
                        "type": "string",
                        "enum": [
                            "success"
                        ]
                    },
                    "leadId": {
                        "type": "string",
                        "description": "Kennung des angelegten Leads"
                    },
                    "leadNumber": {
                        "type": "string",
                        "description": "Lead-Nummer für Rückfragen"
                    },
                    "hash": {
                        "type": "string"
                    }
                },
                "required": [
                    "status"
                ]
            },
            "AcceptedResponse": {
                "type": "object",
                "properties": {
                    "status": {
                        "type": "string",
                        "enum": [
                            "accepted"
                        ]
                    },
                    "message": {
                        "type": "string",
                        "description": "Allgemein verständlicher Hinweis"
                    }
                },
                "required": [
                    "status",
                    "message"
                ]
            },
            "ErrorResponse": {
                "type": "object",
                "properties": {
                    "status": {
                        "type": "string",
                        "enum": [
                            "error"
                        ]
                    },
                    "message": {
                        "type": "string",
                        "description": "Allgemein verständlicher Hinweis"
                    },
                    "errors": {
                        "type": "object",
                        "description": "Nur bei 422: betroffenes Feld und Grund.",
                        "additionalProperties": {
                            "type": "string"
                        }
                    }
                },
                "required": [
                    "status",
                    "message"
                ]
            }
        }
    },
    "x-lead-type": {
        "lead_type_id": 28,
        "name": "Immobilien",
        "fields": [
            {
                "id": 349,
                "name": "Miete oder Kauf",
                "type": 5,
                "type_name": "Optionsliste",
                "options": [
                    {
                        "option_id": 1,
                        "name": "Mieten"
                    },
                    {
                        "option_id": 2,
                        "name": "Kaufen"
                    }
                ]
            },
            {
                "id": 350,
                "name": "Worum geht es Ihnen? (Immobilien)",
                "type": 5,
                "type_name": "Optionsliste",
                "options": [
                    {
                        "option_id": 1,
                        "name": "Informationsgespräch"
                    },
                    {
                        "option_id": 2,
                        "name": "Telefon & Online-Beratung zu konkreten Immobilien"
                    },
                    {
                        "option_id": 3,
                        "name": "Besichtigungstermine vor Ort"
                    }
                ]
            },
            {
                "id": 351,
                "name": "Wie schnell wollen Sie sich entscheiden? (Immobilien)",
                "type": 5,
                "type_name": "Optionsliste",
                "options": [
                    {
                        "option_id": 1,
                        "name": "Mallorca ist nur eine Option"
                    },
                    {
                        "option_id": 2,
                        "name": "In den nächsten 3 Monaten"
                    },
                    {
                        "option_id": 3,
                        "name": "In den nächsten 12 Monaten"
                    },
                    {
                        "option_id": 4,
                        "name": "In den kommenden Jahren"
                    }
                ]
            },
            {
                "id": 352,
                "name": "Preisklasse (Immobilien)",
                "type": 5,
                "type_name": "Optionsliste",
                "options": [
                    {
                        "option_id": 1,
                        "name": "unter 1 Mio. €"
                    },
                    {
                        "option_id": 2,
                        "name": "1 - 3 Mio. €"
                    },
                    {
                        "option_id": 3,
                        "name": "4 - 10 Mio. €"
                    },
                    {
                        "option_id": 4,
                        "name": "über 10 Mio. €"
                    },
                    {
                        "option_id": 5,
                        "name": "unter 200.000 €"
                    },
                    {
                        "option_id": 6,
                        "name": "200.000 - 500.000 €"
                    },
                    {
                        "option_id": 7,
                        "name": "500.000 - 1 Mio. €"
                    }
                ]
            },
            {
                "id": 353,
                "name": "Privat / gewerblich",
                "type": 5,
                "type_name": "Optionsliste",
                "options": [
                    {
                        "option_id": 1,
                        "name": "Privat"
                    },
                    {
                        "option_id": 2,
                        "name": "Gewerblich"
                    },
                    {
                        "option_id": 3,
                        "name": "Öffentliche Einrichtung"
                    },
                    {
                        "option_id": 4,
                        "name": "Weiß nicht"
                    }
                ]
            },
            {
                "id": 356,
                "name": "Immobilientyp",
                "type": 5,
                "type_name": "Optionsliste",
                "options": [
                    {
                        "option_id": 1,
                        "name": "Wohnung"
                    },
                    {
                        "option_id": 2,
                        "name": "Stadtvilla"
                    },
                    {
                        "option_id": 3,
                        "name": "Finca auf dem Land"
                    },
                    {
                        "option_id": 4,
                        "name": "Neubau"
                    },
                    {
                        "option_id": 5,
                        "name": "Verschiedene Immobilientypen"
                    }
                ]
            },
            {
                "id": 357,
                "name": "Fläche (Immobilien)",
                "type": 5,
                "type_name": "Optionsliste",
                "options": [
                    {
                        "option_id": 1,
                        "name": "bis 100 m²"
                    },
                    {
                        "option_id": 2,
                        "name": "101 - 200 m²"
                    },
                    {
                        "option_id": 3,
                        "name": "201 - 300 m²"
                    },
                    {
                        "option_id": 4,
                        "name": "größer 300 m²"
                    }
                ]
            },
            {
                "id": 358,
                "name": "Finanzierungsberatung (Immobilien)",
                "type": 5,
                "type_name": "Optionsliste",
                "options": [
                    {
                        "option_id": 1,
                        "name": "Ja, bitte auch Informationen zur Finanzierung."
                    },
                    {
                        "option_id": 2,
                        "name": "Nein, da kümmere ich mich selber drum."
                    }
                ]
            },
            {
                "id": 359,
                "name": "Budget in €",
                "type": 1,
                "type_name": "Einzeiliges Textfeld"
            },
            {
                "id": 360,
                "name": "Wann das nächste Mal auf Mallorca?",
                "type": 1,
                "type_name": "Einzeiliges Textfeld"
            },
            {
                "id": 361,
                "name": "Welche Region / Stadt?",
                "type": 1,
                "type_name": "Einzeiliges Textfeld"
            },
            {
                "id": 362,
                "name": "Wann das nächste Mal auf Mallorca?",
                "type": 1,
                "type_name": "Einzeiliges Textfeld"
            },
            {
                "id": 363,
                "name": "Welche Region?",
                "type": 5,
                "type_name": "Optionsliste",
                "options": [
                    {
                        "option_id": 1,
                        "name": "Norden"
                    },
                    {
                        "option_id": 2,
                        "name": "Osten"
                    },
                    {
                        "option_id": 3,
                        "name": "Süden"
                    },
                    {
                        "option_id": 4,
                        "name": "Palma"
                    },
                    {
                        "option_id": 5,
                        "name": "Süd-Westen"
                    },
                    {
                        "option_id": 6,
                        "name": "Mitte"
                    },
                    {
                        "option_id": 7,
                        "name": "Mehrere Regionen"
                    }
                ]
            }
        ]
    }
}