Schäden
Schadensfälle quer durch alle Customer-Verträge — Stammdaten, Status, beteiligte Personen. Full-CRUD top-level über `/v3/damages/{id}` plus parent-scoped Listing/Create unter `/v3/customers/{kid}/damages`.
Zuletzt geprüft: 14. Mai 2026
Übersicht
Ein Schaden (Damage) ist ein Versicherungs- oder Garantiefall — z. B. KFZ-Unfall, Wohngebäudeschaden, Berufsunfähigkeit. Schäden hängen am Customer und können über vid einen Produktpartner referenzieren. Eine Vertragsverknüpfung ist eine eigene Beziehung über den Links-Endpunkt.
Der Schaden hat eine global eindeutige id — alle CRUD-Operationen laufen daher top-level über /v3/damages/{id}, ohne Detour über den Customer:
- Top-Level Full-CRUD —
/v3/damages(List, Create) und/v3/damages/{id}(Read, Update, Delete). Eignet sich für Schadens-Reports, Reklamations-Analyse, Provisions-Stornos und für Workflow-Knoten, die mit der Schaden-idarbeiten. - Parent-scoped Listing + Create —
GET /v3/customers/{kid}/damages(Schäden eines Kunden) undPOST /v3/customers/{kid}/damages(Schaden unter einem Kunden anlegen). Path-kidist Source-of-Truth; Body darf keinkid-Feld tragen (sonst400 body_kid_forbidden).
Beide Patterns nutzen denselben Scope v3:damages:* — Schäden haben eine eigene Scope-Familie, unabhängig von Verträgen und Customers. Der Scope hängt an den Daten, nicht am URL-Pfad.
Scopes
| Endpoint | Scope |
|---|---|
GET /v3/damages | v3:damages:read |
POST /v3/damages | v3:damages:write |
GET /v3/damages/<id> | v3:damages:read |
PATCH /v3/damages/<id> | v3:damages:write |
DELETE /v3/damages/<id> | v3:damages:write |
GET /v3/customers/<kid>/damages | v3:damages:read |
POST /v3/customers/<kid>/damages | v3:damages:write |
Auth-Mechanik siehe Authentifizierung. Vollständige Scope-Referenz: Scopes.
Pagination & Limits
Standard wie bei Customers.
Schema
DB-Tabelle: crm_schaeden. Schreibbare Body-Felder werden anhand der konfigurierten Spalten und Formularfelder geprüft. Unbekannte oder geschützte Felder führen zu HTTP 400.
{
"id": 22,
"kid": 12345, // Customer-ID (Pfad bei POST unter customer)
"vid": 1300201989, // optional: KID eines Produktpartners (crm_kontakte.kid, kontakt_bereich=2)
"art": "Haftpflichtschaden", // Freitext-Schadenart
"nummer": "S-2024-00123", // Schaden-Nummer (extern)
"nummer_intern": "INT-00045", // Schaden-Nummer (intern)
"anschrift_strasse": "A8 km 132",
"anschrift_plz": "85540",
"anschrift_ort": "Haar",
"datum_schaden": "2024-05-10",
"datum_meldung_makler": "2024-05-12",
"datum_meldung_gesellschaft": "2024-05-14",
"datum_erledigt": null,
"polizei_dienststelle": "PI München-Ost",
"polizei_nummer": "AZ-2024-7842",
"betrag": "7500.00", // Schaden-Höhe (numeric)
"reserve": "0.00", // Schaden-Reserve
"leistung": "0.00", // bisher gezahlte Leistung
"serviceportal": 0, // 0/1 Flag
"draft": 0, // 0/1 Draft-Flag
"insert_datum": "2024-05-12 10:00:00",
"edit_datum": "2024-06-02 11:00:00"
}
Es gibt keinen dokumentierten status/sparte-Filter am Schaden. Diese Angaben liegen am Vertrag, der bei Bedarf separat verknüpft wird.
Endpoints
Schäden org-weit abfragen
Liefert paginierte Liste aller Schäden deiner Organisation, optional auf einen Customer gefiltert.
Query-Parameter: page, limit, kid (Filter auf Customer), with_schema, plus Custom-Filter auf Schema-Spalten (z. B. art=Haftpflichtschaden).
# Alle Schäden der Sparte "Haftpflicht" — Filter über die echte Spalte `art`
curl "https://www.api.i-planner.app/v3/damages?art=Haftpflichtschaden&limit=100" \
-H "Authorization: Bearer $IPLANNER_API_TOKEN"
Einzelnen Schaden abrufen
Liefert einen einzelnen Schaden über seine numerische id. 404 not_found falls nicht existent.
curl https://www.api.i-planner.app/v3/damages/81001 \
-H "Authorization: Bearer $IPLANNER_API_TOKEN"
Schaden top-level anlegen
Legt einen oder mehrere Schäden an. Der Customer-kid darf optional im Body stehen — das ordnet den Schaden direkt einem Customer zu.
curl -X POST 'https://www.api.i-planner.app/v3/damages' \
-H "Authorization: Bearer $IPLANNER_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"kid": 12345,
"vid": 1300201989,
"art": "Haftpflichtschaden",
"datum_schaden": "2026-04-21",
"datum_meldung_makler": "2026-04-22",
"anschrift_ort": "München",
"betrag": 1250.00,
"nummer_intern": "INT-00045"
}'
Response: 201 mit { success, id }; Batch 200 mit inserted[] + failed[]-Envelope.
Schaden am Kunden anlegen
Legt einen Schaden unter einem konkreten Customer an. Der kid steht im Pfad — kid im Body ist verboten und führt zu 400 body_kid_forbidden.
curl -X POST 'https://www.api.i-planner.app/v3/customers/12345/damages' \
-H "Authorization: Bearer $IPLANNER_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"vid": 1300201989,
"art": "Haftpflichtschaden",
"datum_schaden": "2026-04-21",
"betrag": 1250.00,
"nummer_intern": "INT-00045"
}'
Schäden eines Kunden listen
Paginierte Liste aller Schäden eines Customers. kid steht im Pfad — kein zusätzlicher Query-Filter.
Schaden aktualisieren
PATCH-Semantik (nur die mitgeschickten Felder werden überschrieben).
curl -X PATCH 'https://www.api.i-planner.app/v3/damages/81001' \
-H "Authorization: Bearer $IPLANNER_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "vid": 1300201989 }'
Schaden löschen
Soft-Delete. Wiederholter Aufruf antwortet mit 404 not_found (idempotent). Volle Error-Tabelle in Fehler.
Annotations
Comments, Followers, Tags und Documents hängen top-level an der Schaden-id. Schäden sind eine der wenigen Sektionen mit direkten Documents (eigener Document-FK im DB-Modell):
/v3/damages/<id>/comments[/<rid>] # 5-op: list, get, create, patch, delete
/v3/damages/<id>/followers[/<rid>] # 3-op: list, create, delete
/v3/damages/<id>/tags[/<rid>] # 3-op: list, create, delete
/v3/damages/<id>/documents[/<rid>] # Full-CRUD inkl. File-Upload
/v3/damages/<id>/links[/<rid>] # 3-op: list, create, delete
Felder, Methods und Response-Bodies entsprechen den Customer-Level-Pendants — kein kid-Body-Feld, kein kid-Query-Param, beides ergibt sich aus dem Pfad.