{
    "openapi": "3.1.0",
    "info": {
        "title": "Forster-Immobilien.de",
        "version": "1.0.0",
        "description": "Structured public API for FORSTER IMMOBILIEN real estate projects and units. Provides machine-readable access to available property data, canonical detail URLs, and OpenAPI documentation for integrations, crawlers, and AI agents."
    },
    "servers": [
        {
            "url": "https:\/\/forster-immobilien.de\/api"
        }
    ],
    "paths": {
        "\/projects": {
            "get": {
                "operationId": "projects.index",
                "description": "Returns an overview of available real estate projects. Use this endpoint to discover current developments with summarized project, location, status, and offer information.",
                "summary": "List real estate projects",
                "tags": [
                    "Project"
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `ProjectIndexResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/ProjectIndexResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/projects\/{id}": {
            "get": {
                "operationId": "projects.show",
                "description": "Returns detailed information for a single real estate project, including descriptions, location data, media, available units, and structured real estate information.",
                "summary": "Get real estate project details",
                "tags": [
                    "Project"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`ProjectShowResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/ProjectShowResource"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/units": {
            "get": {
                "operationId": "units.index",
                "description": "Returns an overview of available real estate units. Use this endpoint to discover apartments, houses, commercial spaces, or plots with summarized pricing, size, room, availability, and project information.",
                "summary": "List real estate units",
                "tags": [
                    "Unit"
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `UnitIndexResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/UnitIndexResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/units\/{id}": {
            "get": {
                "operationId": "units.show",
                "description": "Returns detailed information for a single real estate unit, including pricing, living space, number of rooms, availability, floor plan data, media, related project information, and structured offer information.",
                "summary": "Get real estate unit details",
                "tags": [
                    "Unit"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`UnitIndexResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/UnitIndexResource"
                                }
                            }
                        }
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "ImageResource": {
                "type": "object",
                "properties": {
                    "title": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "urls": {
                        "type": "object",
                        "properties": {
                            "thumb": {
                                "type": "string",
                                "description": "320x240 px cropped thumbnail image URL for small previews and thumbnails."
                            },
                            "small": {
                                "type": "string",
                                "description": "640x480 px cropped image URL for compact cards and mobile lists."
                            },
                            "medium": {
                                "type": "string",
                                "description": "1024x768 px cropped image URL for standard detail views."
                            },
                            "large": {
                                "type": "string",
                                "description": "1600x1200 px cropped image URL for galleries and large previews."
                            },
                            "cover": {
                                "type": "string",
                                "description": "1200x675 px cropped 16:9 image URL for hero images and wide previews."
                            },
                            "original": {
                                "type": "string",
                                "description": "Original image URL without resizing or cropping."
                            }
                        },
                        "required": [
                            "thumb",
                            "small",
                            "medium",
                            "large",
                            "cover",
                            "original"
                        ]
                    }
                },
                "required": [
                    "title",
                    "urls"
                ],
                "title": "ImageResource"
            },
            "ProjectIndexResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Unique project identifier."
                    },
                    "slug": {
                        "type": "string",
                        "description": "URL-friendly project identifier."
                    },
                    "url": {
                        "type": "string",
                        "description": "Public website URL for the project detail page."
                    },
                    "api_url": {
                        "type": "string",
                        "description": "API URL for retrieving the project details."
                    },
                    "title": {
                        "type": "string",
                        "description": "Project title."
                    },
                    "subtitle": {
                        "type": "string",
                        "description": "Short project subtitle or subheadline."
                    },
                    "hide_address": {
                        "type": "boolean",
                        "description": "Indicates whether the street address should be hidden publicly."
                    },
                    "street": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Street name, or null when the address is hidden."
                    },
                    "house_number": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "House number, or null when the address is hidden."
                    },
                    "zip_code": {
                        "type": "string",
                        "description": "Postal code of the project location."
                    },
                    "region": {
                        "type": "string",
                        "description": "Region or federal state of the project location."
                    },
                    "city": {
                        "type": "string",
                        "description": "City of the project location."
                    },
                    "lat": {
                        "type": "number",
                        "description": "Latitude coordinate of the project location."
                    },
                    "lng": {
                        "type": "number",
                        "description": "Longitude coordinate of the project location."
                    },
                    "address": {
                        "type": "string",
                        "description": "Full formatted project address."
                    },
                    "object_types": {
                        "type": "array",
                        "description": "Unique real estate object types available in this project.",
                        "items": {
                            "$ref": "#\/components\/schemas\/RsType"
                        }
                    },
                    "available_offers": {
                        "type": "integer",
                        "description": "Number of currently available offers displayed for the project."
                    },
                    "purchase_price_from": {
                        "type": "number",
                        "description": "Lowest displayed purchase price."
                    },
                    "purchase_price_to": {
                        "type": "number",
                        "description": "Highest displayed purchase price."
                    },
                    "rooms_from": {
                        "type": "number",
                        "description": "Lowest displayed room count."
                    },
                    "rooms_to": {
                        "type": "number",
                        "description": "Highest displayed room count."
                    },
                    "living_area_from": {
                        "type": "number",
                        "description": "Smallest displayed living area in square meters."
                    },
                    "living_area_to": {
                        "type": "number",
                        "description": "Largest displayed living area in square meters."
                    },
                    "site_coverage_ratio_from": {
                        "type": "number",
                        "description": "Lowest displayed site coverage ratio."
                    },
                    "site_coverage_ratio_to": {
                        "type": "number",
                        "description": "Highest displayed site coverage ratio."
                    },
                    "floor_area_ratio_from": {
                        "type": "number",
                        "description": "Lowest displayed floor area ratio."
                    },
                    "floor_area_ratio_to": {
                        "type": "number",
                        "description": "Highest displayed floor area ratio."
                    },
                    "plot_area_from": {
                        "type": "number",
                        "description": "Smallest displayed plot area in square meters."
                    },
                    "plot_area_to": {
                        "type": "number",
                        "description": "Largest displayed plot area in square meters."
                    },
                    "elevator_available": {
                        "type": "boolean",
                        "description": "Indicates whether at least one displayed unit has an elevator."
                    },
                    "parking_spaces_available": {
                        "type": "boolean",
                        "description": "Indicates whether parking spaces are available."
                    },
                    "description_note": {
                        "type": "string",
                        "description": "Marketing description for the project."
                    },
                    "furnishing_note": {
                        "type": "string",
                        "description": "Furnishing and equipment description for the project."
                    },
                    "location_note": {
                        "type": "string",
                        "description": "Location description for the project."
                    },
                    "main_image": {
                        "description": "Main project image with title and generated image URLs.",
                        "$ref": "#\/components\/schemas\/ImageResource"
                    }
                },
                "required": [
                    "id",
                    "slug",
                    "url",
                    "api_url",
                    "title",
                    "subtitle",
                    "hide_address",
                    "street",
                    "house_number",
                    "zip_code",
                    "region",
                    "city",
                    "lat",
                    "lng",
                    "address",
                    "object_types",
                    "available_offers",
                    "purchase_price_from",
                    "purchase_price_to",
                    "rooms_from",
                    "rooms_to",
                    "living_area_from",
                    "living_area_to",
                    "site_coverage_ratio_from",
                    "site_coverage_ratio_to",
                    "floor_area_ratio_from",
                    "floor_area_ratio_to",
                    "plot_area_from",
                    "plot_area_to",
                    "elevator_available",
                    "parking_spaces_available",
                    "description_note",
                    "furnishing_note",
                    "location_note",
                    "main_image"
                ],
                "title": "ProjectIndexResource"
            },
            "ProjectShowResource": {
                "type": "object",
                "properties": {
                    "project": {
                        "$ref": "#\/components\/schemas\/ProjectIndexResource"
                    },
                    "units": {
                        "type": "array",
                        "items": {
                            "$ref": "#\/components\/schemas\/UnitIndexResource"
                        }
                    },
                    "images": {
                        "type": "array",
                        "items": {
                            "$ref": "#\/components\/schemas\/ImageResource"
                        }
                    }
                },
                "required": [
                    "project"
                ],
                "title": "ProjectShowResource"
            },
            "RsType": {
                "type": "string",
                "description": "| |\n|---|\n| `APARTMENT` <br\/> Use for residential apartment or condominium units. |\n| `HOUSE` <br\/> Use for standalone residential houses, townhouses, or similar house-like properties. |\n| `TRADE_SITE` <br\/> Use for land plots, development sites, or building land. |\n| `GARAGE` <br\/> Use for garages, parking spaces, or other vehicle storage units. |\n| `SHORT_TERM_ACCOMODATION` <br\/> Use for short-term accommodation properties such as furnished temporary rentals. |\n| `OFFICE` <br\/> Use for office, practice, or other workspace properties. |\n| `GASTRONOMY` <br\/> Use for gastronomy properties such as restaurants, cafes, bars, or similar hospitality spaces. |\n| `INDUSTRY` <br\/> Use for industrial, production, warehouse, or logistics properties. |\n| `STORE` <br\/> Use for retail stores, shops, showrooms, or other sales areas. |\n| `SPECIAL_PURPOSE` <br\/> Use for special-purpose properties that do not fit the standard residential or commercial categories. |\n| `INVESTMENT` <br\/> Use for investment properties primarily marketed by their capital investment or yield potential. |",
                "enum": [
                    "APARTMENT",
                    "HOUSE",
                    "TRADE_SITE",
                    "GARAGE",
                    "SHORT_TERM_ACCOMODATION",
                    "OFFICE",
                    "GASTRONOMY",
                    "INDUSTRY",
                    "STORE",
                    "SPECIAL_PURPOSE",
                    "INVESTMENT"
                ],
                "title": "RsType"
            },
            "UnitIndexResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string"
                    },
                    "slug": {
                        "type": "string"
                    },
                    "url": {
                        "type": "string"
                    },
                    "api_url": {
                        "type": "string"
                    },
                    "title": {
                        "type": "string"
                    },
                    "street": {
                        "type": "string"
                    },
                    "zip_code": {
                        "type": "string"
                    },
                    "region": {
                        "type": "string"
                    },
                    "city": {
                        "type": "string"
                    },
                    "lat": {
                        "type": "number"
                    },
                    "lng": {
                        "type": "number"
                    },
                    "rs_type_label": {
                        "type": "string"
                    },
                    "rs_category_label": {
                        "type": "string"
                    },
                    "property_status": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    },
                    "project": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "slug": {
                                "type": "string"
                            },
                            "title": {
                                "type": "string"
                            },
                            "url": {
                                "type": "string"
                            },
                            "api_url": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "id",
                            "slug",
                            "title",
                            "url",
                            "api_url"
                        ]
                    }
                },
                "required": [
                    "id",
                    "slug",
                    "url",
                    "api_url",
                    "title",
                    "street",
                    "zip_code",
                    "region",
                    "city",
                    "lat",
                    "lng",
                    "rs_type_label",
                    "rs_category_label",
                    "property_status",
                    "updated_at"
                ],
                "title": "UnitIndexResource"
            }
        }
    }
}