API updadte
This commit is contained in:
134
README.md
134
README.md
@@ -98,6 +98,8 @@ Die vollständige API-Dokumentation mit allen Endpunkten, Beispielen und interak
|
||||
Wichtigste Endpunkte:
|
||||
- **Immobilien**: `/api/immobilies` (GET, POST, PATCH, DELETE)
|
||||
- **Benutzer**: `/api/users` (GET, POST, PUT, DELETE)
|
||||
- **Bundesländer**: `/api/bundeslands` (GET, POST, PUT, DELETE)
|
||||
- **Heizungstypen**: `/api/heizungstyps` (GET, POST, PUT, DELETE)
|
||||
|
||||
## Datenbank-Schema
|
||||
|
||||
@@ -111,6 +113,30 @@ Wichtigste Endpunkte:
|
||||
| role | ENUM | Benutzerrolle (user, admin, moderator) |
|
||||
| created_at | DATETIME | Erstellungsdatum |
|
||||
|
||||
### Bundesland-Tabelle
|
||||
|
||||
| Feld | Typ | Beschreibung |
|
||||
|------|-----|--------------|
|
||||
| id | INT | Primärschlüssel (Auto-Increment) |
|
||||
| name | VARCHAR(100) | Name des Bundeslandes (Unique) |
|
||||
| grunderwerbsteuer | DECIMAL(4,2) | Grunderwerbsteuer in Prozent |
|
||||
|
||||
**Grunderwerbsteuer-Sätze (Stand 2025):**
|
||||
- Baden-Württemberg, Bremen, Niedersachsen, Rheinland-Pfalz, Sachsen-Anhalt, Thüringen: 5,0%
|
||||
- Bayern: 3,5%
|
||||
- Hamburg, Sachsen: 5,5%
|
||||
- Berlin, Hessen, Mecklenburg-Vorpommern: 6,0%
|
||||
- Brandenburg, Nordrhein-Westfalen, Saarland, Schleswig-Holstein: 6,5%
|
||||
|
||||
### Heizungstyp-Tabelle
|
||||
|
||||
| Feld | Typ | Beschreibung |
|
||||
|------|-----|--------------|
|
||||
| id | INT | Primärschlüssel (Auto-Increment) |
|
||||
| name | VARCHAR(100) | Name des Heizungstyps (Unique) |
|
||||
|
||||
**Beispiele:** Gasheizung, Wärmepumpe, Ölheizung, Fernwärme, etc.
|
||||
|
||||
### Immobilien-Tabelle
|
||||
|
||||
| Feld | Typ | Beschreibung |
|
||||
@@ -118,25 +144,27 @@ Wichtigste Endpunkte:
|
||||
| id | INT | Primärschlüssel (Auto-Increment) |
|
||||
| verwalter_id | INT | Foreign Key zu User (Verwalter der Immobilie) |
|
||||
| adresse | VARCHAR(255) | Vollständige Adresse (5-255 Zeichen) |
|
||||
| preis | DECIMAL | Kaufpreis oder Miete |
|
||||
| flaeche | DECIMAL | Wohnfläche in m² |
|
||||
| wohnflaeche | INT | Wohnfläche in m² (ganze Zahl) |
|
||||
| nutzflaeche | INT | Nutzfläche in m² (ganze Zahl) |
|
||||
| garage | BOOLEAN | Hat Garage? (Standard: false) |
|
||||
| zimmer | INT | Anzahl Zimmer (> 0) |
|
||||
| baujahr | INT | Baujahr (1800-2100, optional) |
|
||||
| typ | ENUM | Immobilientyp (wohnung, haus, grundstueck, gewerbe, buero) |
|
||||
| beschreibung | TEXT | Freitextbeschreibung (optional) |
|
||||
| verfuegbar | BOOLEAN | Verfügbarkeit (Standard: true) |
|
||||
| balkon_flaeche | INT | Balkonfläche in m² (optional) |
|
||||
| keller_flaeche | INT | Kellerfläche in m² (optional) |
|
||||
| etage | INT | Stockwerk (optional) |
|
||||
| heizungstyp | VARCHAR(255) | Art der Heizung (optional) |
|
||||
| nebenkosten | DECIMAL | Monatliche Nebenkosten (optional) |
|
||||
| etage | INT | Stockwerk (0-10, optional) |
|
||||
| heizungstyp_id | INT | Foreign Key zu Heizungstyp (optional) |
|
||||
| abschreibungszeit | INT | Abschreibungszeit in Jahren (0-100, optional) |
|
||||
| bundesland_id | INT | Foreign Key zu Bundesland (optional) |
|
||||
| kaufpreis | INT | Kaufpreis in Euro (ganze Zahl, optional) |
|
||||
| created_at | DATETIME | Erstellungsdatum |
|
||||
| updated_at | DATETIME | Letzte Aktualisierung |
|
||||
|
||||
**Berechnete Felder (nicht in DB gespeichert):**
|
||||
- `preis_pro_qm`: Preis / Fläche
|
||||
- `gesamtflaeche`: Fläche + Balkon + Keller
|
||||
- `gesamtflaeche`: Wohnfläche + Nutzfläche
|
||||
- `kaufnebenkosten`: Objekt mit Notar, Grundbuch, Grunderwerbsteuer und Gesamtsumme
|
||||
- Notarkosten: ca. 1,5% des Kaufpreises
|
||||
- Grundbuchkosten: ca. 0,5% des Kaufpreises
|
||||
- Grunderwerbsteuer: abhängig vom Bundesland (3,5% - 6,5%)
|
||||
|
||||
## Entwicklung
|
||||
|
||||
@@ -444,8 +472,49 @@ curl -H "Accept: application/ld+json" http://localhost:8080/api/users
|
||||
| PUT | `/api/users/{id}` | User vollständig ersetzen |
|
||||
| DELETE | `/api/users/{id}` | User löschen |
|
||||
|
||||
#### Bundesland-Endpunkte
|
||||
|
||||
| Methode | Endpoint | Beschreibung |
|
||||
|---------|----------|--------------|
|
||||
| GET | `/api/bundeslands` | Alle Bundesländer abrufen (mit Pagination) |
|
||||
| GET | `/api/bundeslands/{id}` | Einzelnes Bundesland abrufen |
|
||||
| POST | `/api/bundeslands` | Neues Bundesland erstellen |
|
||||
| PUT | `/api/bundeslands/{id}` | Bundesland vollständig ersetzen |
|
||||
| DELETE | `/api/bundeslands/{id}` | Bundesland löschen |
|
||||
|
||||
#### Heizungstyp-Endpunkte
|
||||
|
||||
| Methode | Endpoint | Beschreibung |
|
||||
|---------|----------|--------------|
|
||||
| GET | `/api/heizungstyps` | Alle Heizungstypen abrufen (mit Pagination) |
|
||||
| GET | `/api/heizungstyps/{id}` | Einzelnen Heizungstyp abrufen |
|
||||
| POST | `/api/heizungstyps` | Neuen Heizungstyp erstellen |
|
||||
| PUT | `/api/heizungstyps/{id}` | Heizungstyp vollständig ersetzen |
|
||||
| DELETE | `/api/heizungstyps/{id}` | Heizungstyp löschen |
|
||||
|
||||
### Beispiele
|
||||
|
||||
#### Bundesland erstellen
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:8080/api/bundeslands \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"name": "Bayern",
|
||||
"grunderwerbsteuer": 3.5
|
||||
}'
|
||||
```
|
||||
|
||||
#### Heizungstyp erstellen
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:8080/api/heizungstyps \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"name": "Wärmepumpe"
|
||||
}'
|
||||
```
|
||||
|
||||
#### Immobilie erstellen
|
||||
|
||||
```bash
|
||||
@@ -454,13 +523,17 @@ curl -X POST http://localhost:8080/api/immobilies \
|
||||
-d '{
|
||||
"verwalter": "/api/users/1",
|
||||
"adresse": "Hauptstraße 123, 12345 Musterstadt",
|
||||
"preis": "250000",
|
||||
"flaeche": "85.5",
|
||||
"wohnflaeche": 85,
|
||||
"nutzflaeche": 15,
|
||||
"zimmer": 3,
|
||||
"typ": "wohnung",
|
||||
"garage": true,
|
||||
"balkonFlaeche": 8,
|
||||
"baujahr": 2020
|
||||
"baujahr": 2020,
|
||||
"heizungstyp": "/api/heizungstyps/1",
|
||||
"bundesland": "/api/bundeslands/1",
|
||||
"kaufpreis": 350000,
|
||||
"abschreibungszeit": 50,
|
||||
"etage": 3
|
||||
}'
|
||||
```
|
||||
|
||||
@@ -492,8 +565,9 @@ curl http://localhost:8080/api/immobilies?page=2
|
||||
curl -X PATCH http://localhost:8080/api/immobilies/1 \
|
||||
-H "Content-Type: application/merge-patch+json" \
|
||||
-d '{
|
||||
"preis": "260000",
|
||||
"verfuegbar": false
|
||||
"wohnflaeche": 90,
|
||||
"kaufpreis": 360000,
|
||||
"heizungstyp": "/api/heizungstyps/2"
|
||||
}'
|
||||
```
|
||||
|
||||
@@ -501,11 +575,35 @@ curl -X PATCH http://localhost:8080/api/immobilies/1 \
|
||||
|
||||
Die Immobilien-Entity bietet automatisch berechnete Felder:
|
||||
|
||||
- **preisProQm**: Berechnet automatisch den Preis pro Quadratmeter
|
||||
- **gesamtflaeche**: Summiert Wohnfläche + Balkonfläche + Kellerfläche
|
||||
- **gesamtflaeche**: Berechnet die Gesamtfläche (Wohnfläche + Nutzfläche)
|
||||
- **kaufnebenkosten**: Berechnet die Kaufnebenkosten basierend auf Kaufpreis und Bundesland
|
||||
- Enthält: Notarkosten (1,5%), Grundbuchkosten (0,5%), Grunderwerbsteuer (abhängig vom Bundesland) und Gesamtsumme
|
||||
|
||||
Diese Felder sind schreibgeschützt (read-only) und werden automatisch bei jeder Abfrage berechnet.
|
||||
|
||||
### Enums
|
||||
|
||||
Die API verwendet folgende Enums:
|
||||
|
||||
**ImmobilienTyp:**
|
||||
- `wohnung` - Wohnung
|
||||
- `haus` - Haus
|
||||
- `grundstueck` - Grundstück
|
||||
- `gewerbe` - Gewerbe
|
||||
- `buero` - Büro
|
||||
|
||||
**UserRole:**
|
||||
- `user` - Benutzer
|
||||
- `admin` - Administrator
|
||||
- `moderator` - Moderator
|
||||
|
||||
### Relationen
|
||||
|
||||
**Bundesland und Heizungstyp** sind eigene Entities, die über Foreign Keys mit Immobilien verknüpft sind:
|
||||
- Bei der Erstellung einer Immobilie muss eine IRI verwendet werden (z.B. `/api/bundeslands/1`)
|
||||
- Diese Entities können über ihre eigenen Endpunkte verwaltet werden
|
||||
- Bundesländer enthalten die Grunderwerbsteuer-Sätze für die Kaufnebenkosten-Berechnung
|
||||
|
||||
### Hydra-Unterstützung
|
||||
|
||||
Bei Verwendung des JSON-LD Formats (Standard) bietet die API Hydra-Unterstützung:
|
||||
|
||||
Reference in New Issue
Block a user